 |
CLIP Score: 30.8
from AIDL import *
# Define basic unit conversions, assuming 1 unit equals 1mm
inch = 25.4 # 1 inch = 25.4 mm
mm = 1
def vintage_camera(
body_width: float = 6*inch,
body_height: float = 4*inch,
lens_radius: float = 1.5*inch,
film_advance_knob_radius: float = 0.5*inch,
shutter_button_radius: float = 0.2*inch,
viewfinder_width: float = 1*inch,
viewfinder_height: float = 0.5*inch
):
"""
Model a simple vintage camera with a main body, central lens,
film advance knob, shutter button, and viewfinder.
"""
camera = Solid()
camera.body = Rectangle((0, 0), body_width, body_height)
camera.lens = Solid()
camera.lens.circle = Circle((0, 0), lens_radius)
camera.film_advance_knob = Solid(shift=(body_width/2 - 1*inch, body_height/2 - 0.5*inch))
camera.film_advance_knob.circle = Circle((0, 0), film_advance_knob_radius)
camera.shutter_button = Solid(shift=(body_width/2 - 0.8*inch, body_height/2 - 0.5*inch))
camera.shutter_button.circle = Circle((0, 0), shutter_button_radius)
camera.viewfinder = Solid(shift=(-body_width/2 + 1*inch, body_height/2 - 0.6*inch))
camera.viewfinder.rectangle = Rectangle((0, 0), viewfinder_width, viewfinder_height)
return camera
with AIDL_2D:
model = vintage_camera()
print(model.Solve())
model.Render()
|
Please write an AIDL program to generate a vintage camera
Alright, let's proceed step-by-step to create a vintage camera. I'll start by outlining the major components we might include for a simplified 2D model of a vintage camera and then we'll build the program incrementally.
### Components for a Vintage Camera
1. **Body**: Rectangular main body.
2. **Lens**: Circular lens in the center.
3. **Film Advance Knob**: Circular knob on the top right.
4. **Shutter Button**: Small circle on the top near the film advance knob.
5. **Viewfinder**: Rectangle on the top left.
6. **Camera Back Cover**: Rectangular cover on the back side.
We'll use a combination of `Solid`, `Hole`, and `Drawing` nodes, with primitives like `Rectangle` and `Circle`.
### Step 1: Define the Camera Body
We'll start by defining the camera body as a `Solid` rectangle.
```python
from AIDL import *
def vintage_camera(
body_width: float = 6*inches,
body_height: float = 4*inches,
lens_radius: float = 1.5*inches,
film_advance_knob_radius: float = 0.5*inches,
shutter_button_radius: float = 0.2*inches,
viewfinder_width: float = 1*inch,
viewfinder_height: float = 0.5*inch
):
"""
Model a simple vintage camera with a main body, central lens,
film advance knob, shutter button, and viewfinder.
"""
# Main body of the camera as a solid rectangle
camera = Solid()
camera_body = Rectangle((0, 0), body_width, body_height)
camera.body = camera_body
return camera
with AIDL_2D:
model = vintage_camera()
print(model.Solve())
model.Render()
```
### Step 2: Add Lens
Next, we'll add the lens in the center of the camera body as a `Solid` circle.
```python
def vintage_camera(
body_width: float = 6*inches,
body_height: float = 4*inches,
lens_radius: float = 1.5*inches,
film_advance_knob_radius: float = 0.5*inches,
shutter_button_radius: float = 0.2*inches,
viewfinder_width: float = 1*inch,
viewfinder_height: float = 0.5*inch
):
"""
Model a simple vintage camera with a main body, central lens,
film advance knob, shutter button, and viewfinder.
"""
# Main body of the camera
camera = Solid()
camera.body = Rectangle((0, 0), body_width, body_height)
# Lens as a solid circle at the center
camera.lens = Solid()
camera.lens.circle = Circle((0, 0), lens_radius)
return camera
with AIDL_2D:
model = vintage_camera()
print(model.Solve())
model.Render()
```
### Step 3: Add Film Advance Knob and Shutter Button
We'll add the film advance knob and shutter button as solid circles.
```python
def vintage_camera(
body_width: float = 6*inches,
body_height: float = 4*inches,
lens_radius: float = 1.5*inches,
film_advance_knob_radius: float = 0.5*inches,
shutter_button_radius: float = 0.2*inches,
viewfinder_width: float = 1*inch,
viewfinder_height: float = 0.5*inch
):
"""
Model a simple vintage camera with a main body, central lens,
film advance knob, shutter button, and viewfinder.
"""
camera = Solid()
camera.body = Rectangle((0, 0), body_width, body_height)
camera.lens = Solid()
camera.lens.circle = Circle((0, 0), lens_radius)
# Film advance knob on the top right
camera.film_advance_knob = Solid(shift=(body_width/2 - 1*inch, body_height/2 - 0.5*inch))
camera.film_advance_knob.circle = Circle((0, 0), film_advance_knob_radius)
# Shutter button near the film advance knob
camera.shutter_button = Solid(shift=(body_width/2 - 0.8*inch, body_height/2 - 0.5*inch))
camera.shutter_button.circle = Circle((0, 0), shutter_button_radius)
return camera
with AIDL_2D:
model = vintage_camera()
print(model.Solve())
model.Render()
```
### Step 4: Add Viewfinder
Finally, we'll add the viewfinder as a rectangular `Solid`.
```python
def vintage_camera(
body_width: float = 6*inches,
body_height: float = 4*inches,
lens_radius: float = 1.5*inches,
film_advance_knob_radius: float = 0.5*inches,
shutter_button_radius: float = 0.2*inches,
viewfinder_width: float = 1*inch,
viewfinder_height: float = 0.5*inch
):
"""
Model a simple vintage camera with a main body, central lens,
film advance knob, shutter button, and viewfinder.
"""
camera = Solid()
camera.body = Rectangle((0, 0), body_width, body_height)
camera.lens = Solid()
camera.lens.circle = Circle((0, 0), lens_radius)
camera.film_advance_knob = Solid(shift=(body_width/2 - 1*inch, body_height/2 - 0.5*inch))
camera.film_advance_knob.circle = Circle((0, 0), film_advance_knob_radius)
camera.shutter_button = Solid(shift=(body_width/2 - 0.8*inch, body_height/2 - 0.5*inch))
camera.shutter_button.circle = Circle((0, 0), shutter_button_radius)
# Viewfinder as a small rectangle on the top left
camera.viewfinder = Solid(shift=(-body_width/2 + 1*inch, body_height/2 - 0.6*inch))
camera.viewfinder.rectangle = Rectangle((0, 0), viewfinder_width, viewfinder_height)
return camera
with AIDL_2D:
model = vintage_camera()
print(model.Solve())
model.Render()
```
### Step 5: Add Camera Back Cover (optional)
If needed, the back cover can be added as a `Drawing` to represent an engraved line, or as part of the structure if it has cutout details.
```python
def vintage_camera(
body_width: float = 6*inches,
body_height: float = 4*inches,
lens_radius: float = 1.5*inches,
film_advance_knob_radius: float = 0.5*inches,
shutter_button_radius: float = 0.2*inches,
viewfinder_width: float = 1*inch,
viewfinder_height: float = 0.5*inch
):
"""
Model a simple vintage camera with a main body, central lens,
film advance knob, shutter button, and viewfinder.
"""
camera = Solid()
camera.body = Rectangle((0, 0), body_width, body_height)
camera.lens = Solid()
camera.lens.circle = Circle((0, 0), lens_radius)
camera.film_advance_knob = Solid(shift=(body_width/2 - 1*inch, body_height/2 - 0.5*inch))
camera.film_advance_knob.circle = Circle((0, 0), film_advance_knob_radius)
camera.shutter_button = Solid(shift=(body_width/2 - 0.8*inch, body_height/2 - 0.5*inch))
camera.shutter_button.circle = Circle((0, 0), shutter_button_radius)
camera.viewfinder = Solid(shift=(-body_width/2 + 1*inch, body_height/2 - 0.6*inch))
camera.viewfinder.rectangle = Rectangle((0, 0), viewfinder_width, viewfinder_height)
return camera
with AIDL_2D:
model = vintage_camera()
print(model.Solve())
model.Render()
```
This script provides a solid start for a vintage camera model with primary components. You can further enhance it with more intricate details or additional components as you see fit. Let me know if you need more specific features or changes!
Traceback (most recent call last):
File "/net/projects/ranalab/jz/aidl/AIDL/generation/backend.py", line 21, in dumbrun
exec(code, env)
File "", line 3, in
NameError: name 'inches' is not defined
It appears that the utility constants such as `inches` aren't defined in the provided script. We need to define `inch` and `mm` (if needed) before using them in our AIDL script.
Here's the updated script with necessary conversions defined:
```python
from AIDL import *
# Define basic unit conversions, assuming 1 unit equals 1mm
inch = 25.4 # 1 inch = 25.4 mm
mm = 1
def vintage_camera(
body_width: float = 6*inch,
body_height: float = 4*inch,
lens_radius: float = 1.5*inch,
film_advance_knob_radius: float = 0.5*inch,
shutter_button_radius: float = 0.2*inch,
viewfinder_width: float = 1*inch,
viewfinder_height: float = 0.5*inch
):
"""
Model a simple vintage camera with a main body, central lens,
film advance knob, shutter button, and viewfinder.
"""
camera = Solid()
camera.body = Rectangle((0, 0), body_width, body_height)
camera.lens = Solid()
camera.lens.circle = Circle((0, 0), lens_radius)
camera.film_advance_knob = Solid(shift=(body_width/2 - 1*inch, body_height/2 - 0.5*inch))
camera.film_advance_knob.circle = Circle((0, 0), film_advance_knob_radius)
camera.shutter_button = Solid(shift=(body_width/2 - 0.8*inch, body_height/2 - 0.5*inch))
camera.shutter_button.circle = Circle((0, 0), shutter_button_radius)
camera.viewfinder = Solid(shift=(-body_width/2 + 1*inch, body_height/2 - 0.6*inch))
camera.viewfinder.rectangle = Rectangle((0, 0), viewfinder_width, viewfinder_height)
return camera
with AIDL_2D:
model = vintage_camera()
print(model.Solve())
model.Render()
```
With these constants defined, the script should now recognize the `inch` unit and execute without any issues. Please run the updated script, and let me know if you encounter any further issues!
|