 |
CLIP Score: 27.03
from AIDL import *
def old_school_telephone(
base_length: float = 8 * inches,
base_width: float = 6 * inches,
handset_length: float = 6 * inches,
handset_width: float = 1 * inch,
dial_radius: float = 1.5 * inches,
dial_hole_radius: float = 0.1 * inch,
num_dial_holes: int = 10
):
"""
Model an old-school telephone with a base unit, a handset, and a dial.
"""
# Create the main structure node
telephone = Assembly()
base = Solid()
handset = Solid(shift=(0, 1.5 * inches)) # Shift the handset upwards above the base
dial = Solid()
telephone.base = base
telephone.handset = handset
base.dial = dial
# Base Geometry
base.body = RoundedRectangle((0, 0), base_length, base_width, base_width/10)
# Handset Geometry
handset.main = RoundedRectangle((0, 0), handset_length, handset_width, handset_width/2)
# Dial Geometry
dial.main = Circle((0, 0), dial_radius)
# Dial holes (arranged in a circular pattern)
angle_increment = 360 / num_dial_holes
dial.holes = []
for i in range(num_dial_holes):
angle = angle_increment * i
u = dial_radius * 0.8 * cos(radians(angle))
v = dial_radius * 0.8 * sin(radians(angle))
dial.holes.append(Circle((u, v), dial_hole_radius))
return telephone
with AIDL_2D:
model = old_school_telephone()
print(model.Solve())
model.Render()
|
Please write an AIDL program to generate a old-school telephone
Sure! Let's break down the old-school telephone into its main components for the AIDL model. An old-school telephone typically consists of:
1. **Handset**: The part you hold to your ear and mouth.
2. **Base Unit**: The main body where the handset rests.
3. **Dial**: The circular dial with numbered holes.
For simplicity, let's assume the handset and base unit are relatively simple shapes, and we'll add a circular dial on the base unit.
### Step-by-Step Breakdown:
1. **Define the Handset**:
- Main body: a long rectangle with rounded ends.
- Each rounded end can be approximated using two semicircles.
2. **Define the Base Unit**:
- Main body: a larger rectangle with rounded corners.
- Dial: a circle at the center of the rectangle.
3. **Define the Dial**:
- Main part: a large circle.
- Holes: small circles arranged in a circular pattern.
4. **Assembly**:
- The handset will rest on top of the base unit.
- The dial will be placed at the center of the base unit.
### AIDL Implementation:
```python
from AIDL import *
def old_school_telephone(
base_length: float = 8 * inches,
base_width: float = 6 * inches,
handset_length: float = 6 * inches,
handset_width: float = 1 * inch,
dial_radius: float = 1.5 * inches,
dial_hole_radius: float = 0.1 * inch,
num_dial_holes: int = 10
):
"""
Model an old-school telephone with a base unit, a handset, and a dial.
"""
# Create the main structure node
telephone = Assembly()
base = Solid()
handset = Solid(shift=(0, 1.5 * inches)) # Shift the handset upwards above the base
dial = Solid()
telephone.base = base
telephone.handset = handset
base.dial = dial
# Base Geometry
base.body = RoundedRectangle((0, 0), base_length, base_width, base_width/10)
# Handset Geometry
handset.main = RoundedRectangle((0, 0), handset_length, handset_width, handset_width/2)
# Dial Geometry
dial.main = Circle((0, 0), dial_radius)
# Dial holes (arranged in a circular pattern)
angle_increment = 360 / num_dial_holes
dial.holes = []
for i in range(num_dial_holes):
angle = angle_increment * i
u = dial_radius * 0.8 * cos(radians(angle))
v = dial_radius * 0.8 * sin(radians(angle))
dial.holes.append(Circle((u, v), dial_hole_radius))
return telephone
with AIDL_2D:
model = old_school_telephone()
print(model.Solve())
model.Render()
```
### Explanation:
1. **Base Unit**: Defined as a rounded rectangle.
2. **Handset**: Defined as a smaller rounded rectangle, shifted upwards to rest above the base.
3. **Dial**:
- Main part is a large circle.
- Holes are smaller circles arranged in a circular pattern around the center.
4. **Assembly**: Composed of basic compositional constraints to position the handset relative to the base and constructing the dial with regular pattern holes.
Now you can customize values like the sizes and number of dial holes as needed. This model should give you a good representation of an old-school telephone. Let me know if any adjustments are required!
|