noconstraints/sunglasses/sunglasses0


CLIP Score: 27.12

Image

Program

Conversation

sunglasses0 image
                
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!