 |
CLIP Score: 23.89
from AIDL import *
def butterfly(
wing_width: float = 3*inches,
wing_height: float = 1.5*inches,
body_length: float = 4*inches,
body_width: float = 0.5*inches
):
"""
Creates a simple symmetrical butterfly model.
"""
butterfly = Assembly()
# Butterfly body
body = Solid()
butterfly.body = body
body.center_part = RoundedRectangle((0, 0), body_width, body_length, body_width / 4)
# Left wing (top)
left_wing_top = Solid(shift=(-body_width*1.5,-body_length/4))
butterfly.left_top_wing = left_wing_top
left_wing_top.shape = [
Arc((0, 0), (0, wing_height), (-wing_width, 0)),
Arc((0, 0), 30, 150, wing_width - 0.25*inches),
Arc((0, 0), (-wing_width, 0), (0, wing_height/2))
]
# Right wing (top)
right_wing_top = Solid(shift=(body_width*1.5,-body_length/4))
butterfly.right_top_wing = right_wing_top
right_wing_top.shape = [
Arc((0, 0), (0, wing_height), (wing_width, 0)),
Arc((0, 0), 210, 330, wing_width - 0.25*inches),
Arc((0, 0), (wing_width, 0), (0, wing_height/2))
]
# Left wing (bottom)
left_wing_bottom = Solid(shift=(-body_width * 1.5, body_length/4))
butterfly.left_bottom_wing = left_wing_bottom
left_wing_bottom.shape = [
Arc((0, 0), (0, wing_height / 1.5), (-wing_width * 0.8, 0)),
Arc((0, 0), 20, 160, wing_width - 0.5*inches),
Arc((0, 0), (-wing_width * 0.8, 0), (0, wing_height / 3))
]
# Right wing (bottom)
right_wing_bottom = Solid(shift=(body_width * 1.5, body_length/4))
butterfly.right_bottom_wing = right_wing_bottom
right_wing_bottom.shape = [
Arc((0, 0), (0, wing_height / 1.5), (wing_width * 0.8, 0)),
Arc((0, 0), 200, 340, wing_width - 0.5*inches),
Arc((0, 0), (wing_width * 0.8, 0), (0, wing_height / 3))
]
return butterfly
with AIDL_2D:
model = butterfly()
print(model.Solve())
model.Render()
|
Please write an AIDL program to generate a butterfly
Sure, let's create an AIDL program to model a butterfly. For simplicity, we'll create a symmetrical design with wings and a body. We'll use a combination of primitive and compound geometries to shape the wings and body.
Here’s a basic plan:
1. The butterfly will consist of a central body and two pairs of wings.
2. We'll use composite geometry such as triangles and arcs to create the wings with some detail.
3. We'll use a rectangle for the body.
Here’s how the AIDL program might look like:
```python
from AIDL import *
def butterfly(
wing_width: float = 3*inches,
wing_height: float = 1.5*inches,
body_length: float = 4*inches,
body_width: float = 0.5*inches
):
"""
Creates a simple symmetrical butterfly model.
"""
butterfly = Assembly()
# Butterfly body
body = Solid()
butterfly.body = body
body.center_part = RoundedRectangle((0, 0), body_width, body_length, body_width / 4)
# Left wing (top)
left_wing_top = Solid(shift=(-body_width*1.5,-body_length/4))
butterfly.left_top_wing = left_wing_top
left_wing_top.shape = [
Arc((0, 0), (0, wing_height), (-wing_width, 0)),
Arc((0, 0), 30, 150, wing_width - 0.25*inches),
Arc((0, 0), (-wing_width, 0), (0, wing_height/2))
]
# Right wing (top)
right_wing_top = Solid(shift=(body_width*1.5,-body_length/4))
butterfly.right_top_wing = right_wing_top
right_wing_top.shape = [
Arc((0, 0), (0, wing_height), (wing_width, 0)),
Arc((0, 0), 210, 330, wing_width - 0.25*inches),
Arc((0, 0), (wing_width, 0), (0, wing_height/2))
]
# Left wing (bottom)
left_wing_bottom = Solid(shift=(-body_width * 1.5, body_length/4))
butterfly.left_bottom_wing = left_wing_bottom
left_wing_bottom.shape = [
Arc((0, 0), (0, wing_height / 1.5), (-wing_width * 0.8, 0)),
Arc((0, 0), 20, 160, wing_width - 0.5*inches),
Arc((0, 0), (-wing_width * 0.8, 0), (0, wing_height / 3))
]
# Right wing (bottom)
right_wing_bottom = Solid(shift=(body_width * 1.5, body_length/4))
butterfly.right_bottom_wing = right_wing_bottom
right_wing_bottom.shape = [
Arc((0, 0), (0, wing_height / 1.5), (wing_width * 0.8, 0)),
Arc((0, 0), 200, 340, wing_width - 0.5*inches),
Arc((0, 0), (wing_width * 0.8, 0), (0, wing_height / 3))
]
return butterfly
with AIDL_2D:
model = butterfly()
print(model.Solve())
model.Render()
```
In this program:
1. The `butterfly` function defines the dimensions of the butterfly’s body and wings.
2. We create a central `body` from a `RoundedRectangle`.
3. We then create two pairs of wings (top and bottom). Each wing pair is constructed using the `Arc` primitive for a more curved and organic shape.
4. The wings are attached with positional shifts from the body.
Feel free to adjust the arcs and wings for a more refined design or to add more details. Would you like to add any specific feature or detail to this model?
|