 |
CLIP Score: 27.57
from AIDL import *
def old_school_telephone(
base_width: float=10*inches,
base_height: float=6*inches,
base_corner_radius: float=1*inch,
handset_length: float=8*inches,
earpiece_radius: float=1*inch,
mouthpiece_radius: float=1*inch,
dial_radius: float=2.5*inches,
dial_hole_radius: float=0.3*inch,
dial_hole_distance: float=1.5*inches
):
"""
Create an old-school telephone with a base, handset, and rotary dial.
"""
# Main telephone structure
telephone = Solid()
# Base structure
base = Solid()
base.body = RoundedRectangle((0, 0), base_width, base_height, base_corner_radius)
telephone.base = base
# Handset Structure
handset = Solid(shift=(0, base_height / 2 + 1.5 * handset_length / 2))
earpiece = Solid(shift=(-handset_length / 2, 0))
mouthpiece = Solid(shift=(handset_length / 2, 0))
connection = Solid(shift=(0, 0))
# Earpiece and mouthpiece geometry
earpiece.body = Circle((0, 0), earpiece_radius)
mouthpiece.body = Circle((0, 0), mouthpiece_radius)
# Connection piece between earpiece and mouthpiece
connection.body = Rectangle((0, 0), handset_length - 2 * earpiece_radius, 0.4 * earpiece_radius)
handset.earpiece = earpiece
handset.mouthpiece = mouthpiece
handset.connection = connection
telephone.handset = handset
# Rotary dial structure
dial = Solid(shift=(0, -base_height / 4))
dial_body = Solid()
dial_holes = Hole()
dial.body = dial_body
dial.holes = dial_holes
# Dial body geometry
dial_body.circle = Circle((0, 0), dial_radius)
# Dial holes geometry
dial_holes.holes = [
Circle(
(dial_hole_distance * cos((i + 1) * pi / 6), dial_hole_distance * sin((i + 1) * pi / 6)),
dial_hole_radius
) for i in range(10)
]
telephone.dial = dial
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
Great, let's create a model for an old-school telephone. We'll consider the major components of the telephone in the design: the handset, the base, and the rotary dial.
Here’s the plan:
1. **Handset**: Composed of two cylinders for the earpiece and mouthpiece, connected by a rectangular body.
2. **Base**: A rounded rectangular structure for the telephone's body.
3. **Rotary Dial**: Circular with perforated numbers.
Let's go step-by-step:
### Step 1: Define Basic Parameters
We will start by importing the necessary components from AIDL and defining the function that creates the model.
### Step 2: Create the Base
The base will be a rounded rectangle.
### Step 3: Create the Handset
The handset will have the earpiece, mouthpiece, and connection piece.
### Step 4: Create the Rotary Dial
The rotary dial will be a circle with cutouts for numbers.
### Final Step: Assemble Everything
Connect all the components together in a single assembly.
Let's start with the program.
```python
from AIDL import *
def old_school_telephone(
base_width: float=10*inches,
base_height: float=6*inches,
base_corner_radius: float=1*inch,
handset_length: float=8*inches,
earpiece_radius: float=1*inch,
mouthpiece_radius: float=1*inch,
dial_radius: float=2.5*inches,
dial_hole_radius: float=0.3*inch,
dial_hole_distance: float=1.5*inches
):
"""
Create an old-school telephone with a base, handset, and rotary dial.
"""
# Main telephone structure
telephone = Solid()
# Base structure
base = Solid()
base.body = RoundedRectangle((0, 0), base_width, base_height, base_corner_radius)
telephone.base = base
# Handset Structure
handset = Solid(shift=(0, base_height / 2 + 1.5 * handset_length / 2))
earpiece = Solid(shift=(-handset_length / 2, 0))
mouthpiece = Solid(shift=(handset_length / 2, 0))
connection = Solid(shift=(0, 0))
# Earpiece and mouthpiece geometry
earpiece.body = Circle((0, 0), earpiece_radius)
mouthpiece.body = Circle((0, 0), mouthpiece_radius)
# Connection piece between earpiece and mouthpiece
connection.body = Rectangle((0, 0), handset_length - 2 * earpiece_radius, 0.4 * earpiece_radius)
handset.earpiece = earpiece
handset.mouthpiece = mouthpiece
handset.connection = connection
telephone.handset = handset
# Rotary dial structure
dial = Solid(shift=(0, -base_height / 4))
dial_body = Solid()
dial_holes = Hole()
dial.body = dial_body
dial.holes = dial_holes
# Dial body geometry
dial_body.circle = Circle((0, 0), dial_radius)
# Dial holes geometry
dial_holes.holes = [
Circle(
(dial_hole_distance * cos((i + 1) * pi / 6), dial_hole_distance * sin((i + 1) * pi / 6)),
dial_hole_radius
) for i in range(10)
]
telephone.dial = dial
return telephone
with AIDL_2D:
model = old_school_telephone()
print(model.Solve())
model.Render()
```
### Explanation
1. **Base**: A rounded rectangle representing the base of the phone.
2. **Handset**: Comprised of two circles (earpiece and mouthpiece) and a rectangle for the connection.
3. **Rotary Dial**: A circle with holes distributed around its perimeter.
Feel free to customize any parameters or structures as needed. If you have any adjustments or additional components in mind, let me know and I will make the necessary updates!
|