 |
CLIP Score: 27.12
from AIDL import *
def sunglasses(
lens_diameter: float = 2.5*inches,
bridge_width: float = 0.5*inches,
frame_thickness: float = 0.2*inches,
temple_length: float = 5*inches
):
"""
Model of simple sunglasses with two circular lenses, a connecting bridge, and two temples.
"""
sunglasses = Solid()
left_lens = Solid()
right_lens = Solid()
bridge = Solid()
left_temple = Solid()
right_temple = Solid()
# Set positions
sunglasses.left_lens = left_lens
sunglasses.right_lens = right_lens
sunglasses.bridge = bridge
sunglasses.left_temple = left_temple
sunglasses.right_temple = right_temple
# Lens Geometry
left_lens.geometry = Circle((0, 0), lens_diameter / 2)
right_lens.geometry = Circle((bridge_width + lens_diameter, 0), lens_diameter / 2)
# Frame around Lenses
left_lens.frame_outer = Circle((0, 0), (lens_diameter / 2) + frame_thickness)
left_lens.frame_inner = Circle((0, 0), lens_diameter / 2)
right_lens.frame_outer = Circle((bridge_width + lens_diameter, 0), (lens_diameter / 2) + frame_thickness)
right_lens.frame_inner = Circle((bridge_width + lens_diameter, 0), lens_diameter / 2)
# Bridge Geometry
bridge.geometry_top = Line(
(lens_diameter / 2, frame_thickness),
(lens_diameter / 2 + bridge_width, frame_thickness)
)
bridge.geometry_bottom = Line(
(lens_diameter / 2, -frame_thickness),
(lens_diameter / 2 + bridge_width, -frame_thickness)
)
# Temple Geometry
left_temple.geometry = Rectangle(
(-lens_diameter / 2 - frame_thickness, 0),
temple_length,
frame_thickness,
axis_aligned=True
)
right_temple.geometry = Rectangle(
(lens_diameter / 2 + bridge_width + lens_diameter + frame_thickness, 0),
temple_length,
frame_thickness,
axis_aligned=True
)
return sunglasses
with AIDL_2D:
model = sunglasses()
print(model.Solve())
model.Render()
|
Please write an AIDL program to generate a sunglasses
Sure! Let's break down the task of creating sunglasses into manageable components. Sunglasses typically consist of several parts: the lenses, the frame that holds the lenses, and the temples (arms) that rest on the ears.
Here's a step-by-step plan for modeling the sunglasses:
1. **Lens**: Create two circular lenses.
2. **Frame**: Create a frame around the lenses.
3. **Bridge**: Add a bridge connecting the two lenses.
4. **Temples**: Create two temples (arms) attached to the sides of the frame.
We'll start with a simple design that includes these components. Let's define some parameters for the sunglasses:
- Lens diameter
- Bridge width
- Frame thickness
- Temple length
Below is the complete AIDL program for the sunglasses:
```python
from AIDL import *
def sunglasses(
lens_diameter: float = 2.5*inches,
bridge_width: float = 0.5*inches,
frame_thickness: float = 0.2*inches,
temple_length: float = 5*inches
):
"""
Model of simple sunglasses with two circular lenses, a connecting bridge, and two temples.
"""
sunglasses = Solid()
left_lens = Solid()
right_lens = Solid()
bridge = Solid()
left_temple = Solid()
right_temple = Solid()
# Set positions
sunglasses.left_lens = left_lens
sunglasses.right_lens = right_lens
sunglasses.bridge = bridge
sunglasses.left_temple = left_temple
sunglasses.right_temple = right_temple
# Lens Geometry
left_lens.geometry = Circle((0, 0), lens_diameter / 2)
right_lens.geometry = Circle((bridge_width + lens_diameter, 0), lens_diameter / 2)
# Frame around Lenses
left_lens.frame_outer = Circle((0, 0), (lens_diameter / 2) + frame_thickness)
left_lens.frame_inner = Circle((0, 0), lens_diameter / 2)
right_lens.frame_outer = Circle((bridge_width + lens_diameter, 0), (lens_diameter / 2) + frame_thickness)
right_lens.frame_inner = Circle((bridge_width + lens_diameter, 0), lens_diameter / 2)
# Bridge Geometry
bridge.geometry_top = Line(
(lens_diameter / 2, frame_thickness),
(lens_diameter / 2 + bridge_width, frame_thickness)
)
bridge.geometry_bottom = Line(
(lens_diameter / 2, -frame_thickness),
(lens_diameter / 2 + bridge_width, -frame_thickness)
)
# Temple Geometry
left_temple.geometry = Rectangle(
(-lens_diameter / 2 - frame_thickness, 0),
temple_length,
frame_thickness,
axis_aligned=True
)
right_temple.geometry = Rectangle(
(lens_diameter / 2 + bridge_width + lens_diameter + frame_thickness, 0),
temple_length,
frame_thickness,
axis_aligned=True
)
return sunglasses
with AIDL_2D:
model = sunglasses()
print(model.Solve())
model.Render()
```
### Explanation
- **Lenses**: Two circular lenses with a given diameter.
- **Frame**: An outer frame created as another circle around each lens. We subtract the inner frame from the outer frame to get the actual frame.
- **Bridge**: A connection between the two lenses using lines.
- **Temples**: Created using rectangles starting from the side of the lenses.
This is a simple and generic model of sunglasses. You can customize the measurements and structure further based on your design needs. Let me know if you need any adjustments or additional features!
|