 |
CLIP Score: 29.98
from AIDL import *
def fancy_teapot(
body_width: float = 6*inches,
body_height: float = 4*inches,
lid_radius: float = 2*inches,
spout_height: float = 6*inches,
handle_height: float = 3*inches,
handle_width: float = 1.2*inches,
handle_thickness: float = 0.2*inches
):
"""
Creates a fancy teapot with a rounded body, a circular lid, a cylindrical
spout, and a semi-circular handle.
"""
teapot = Solid()
# Main Body
body = Solid()
teapot.body = body
body.shape = RoundedRectangle((0, 0), body_width, body_height, corner_radius=body_width/6)
# Define Lid and its hole on the body
lid = Solid(shift=(0, body_height/2))
body.lid = lid
top_circle = Solid(shift=(0, -0.2*inches))
top_circle.circle = Circle((0,0), lid_radius)
# The hole for the lid in the body
lid_hole = Hole()
body.lid_hole = lid_hole
lid_hole.shape = Circle((0, body_height/2), lid_radius)
# Spout
spout = Solid(shift = (body_width/2, body_height/3))
teapot.spout = spout
spout_cylinder = Solid(shift = (0, spout_height/2))
spout.cylinder = spout_cylinder
spout_cylinder.shape = RoundedRectangle((0,0), lid_radius/2, spout_height, lid_radius/4)
# Handle
handle = Solid(shift = (-body_width/2, -body_height/4))
teapot.handle = handle
inner_handle = Solid(shift = (0,-handle_height/3))
outer_handle = Solid(shift = (0,-handle_height/3))
handle.inner = inner_handle
handle.outer = outer_handle
outer_handle.shape = RoundedRectangle((0,0), handle_width, handle_height, handle_thickness)
inner_handle.shape = RoundedRectangle((0,0), handle_width - handle_thickness, handle_height - handle_thickness, handle_thickness/2)
return teapot
with AIDL_2D:
model = fancy_teapot()
print(model.Solve())
model.Render()
|
Please write an AIDL program to generate a fancy teapot
Sure, let's start formulating the design for a fancy teapot. Before diving into the code, we should outline the key components and features of the teapot:
1. **Body**: This will be the main part of the teapot, usually shaped like an ellipsoid or a rounded rectangle.
2. **Lid**: A circular or domed lid that can fit on top of the body.
3. **Spout**: A cylindrical or tapered cylindrical spout for pouring the tea.
4. **Handle**: A semi-circular or rounded rectangle handle attached to the body.
5. **Hole for the lid**: This will be a circular hole where the lid will sit on the body.
Given this outline, we'll break down the design into structures (solids and holes) accordingly for each component.
Here's the AIDL program to generate a fancy teapot:
```python
from AIDL import *
def fancy_teapot(
body_width: float = 6*inches,
body_height: float = 4*inches,
lid_radius: float = 2*inches,
spout_height: float = 6*inches,
handle_height: float = 3*inches,
handle_width: float = 1.2*inches,
handle_thickness: float = 0.2*inches
):
"""
Creates a fancy teapot with a rounded body, a circular lid, a cylindrical
spout, and a semi-circular handle.
"""
teapot = Solid()
# Main Body
body = Solid()
teapot.body = body
body.shape = RoundedRectangle((0, 0), body_width, body_height, corner_radius=body_width/6)
# Define Lid and its hole on the body
lid = Solid(shift=(0, body_height/2))
body.lid = lid
top_circle = Solid(shift=(0, -0.2*inches))
top_circle.circle = Circle((0,0), lid_radius)
# The hole for the lid in the body
lid_hole = Hole()
body.lid_hole = lid_hole
lid_hole.shape = Circle((0, body_height/2), lid_radius)
# Spout
spout = Solid(shift = (body_width/2, body_height/3))
teapot.spout = spout
spout_cylinder = Solid(shift = (0, spout_height/2))
spout.cylinder = spout_cylinder
spout_cylinder.shape = RoundedRectangle((0,0), lid_radius/2, spout_height, lid_radius/4)
# Handle
handle = Solid(shift = (-body_width/2, -body_height/4))
teapot.handle = handle
inner_handle = Solid(shift = (0,-handle_height/3))
outer_handle = Solid(shift = (0,-handle_height/3))
handle.inner = inner_handle
handle.outer = outer_handle
outer_handle.shape = RoundedRectangle((0,0), handle_width, handle_height, handle_thickness)
inner_handle.shape = RoundedRectangle((0,0), handle_width - handle_thickness, handle_height - handle_thickness, handle_thickness/2)
return teapot
with AIDL_2D:
model = fancy_teapot()
print(model.Solve())
model.Render()
```
### Explanation:
1. **Body**: I used a `RoundedRectangle` here to give a fancy rounded body for the teapot.
2. **Lid**: The lid is represented as a simple circle and positioned on top of the teapot body. Additionally, the hole where the lid fits is cut out.
3. **Spout**: A rounded rectangle is used to shape the spout vertically centered relative to where it attaches the body.
4. **Handle**: The handle is represented with an inner and outer rounded rectangle to define its hollow structure.
If you have any specific modifications or further details you would like to add, let me know, and I can adjust the design accordingly!
|