 |
CLIP Score: 32.25
from AIDL import *
def lighthouse(
base_width: float = 6*inches,
base_height: float = 1*inch,
tower_bottom_width: float = 4*inches,
tower_top_width: float = 3*inches,
tower_height: float = 12*inches,
lantern_width: float = 2*inches,
lantern_height: float = 3*inches
):
"""
Generates a simple lighthouse model with a base, tower, and lantern room.
"""
lighthouse = Solid()
# Define base
base = Solid()
lighthouse.base = base
base.rect = Rectangle((0,0), base_width, base_height)
# Define tower
tower = Solid(shift=(0, base_height))
lighthouse.tower = tower
# Create a trapezoidal shape for the tower using lines and constraints
tower.bottom_left = Point(-tower_bottom_width/2, 0)
tower.bottom_right = Point(tower_bottom_width/2, 0)
tower.top_left = Point(-tower_top_width/2, tower_height)
tower.top_right = Point(tower_top_width/2, tower_height)
tower.left_side = Line(tower.bottom_left, tower.top_left)
tower.right_side = Line(tower.bottom_right, tower.top_right)
tower.bottom = Line(tower.bottom_left, tower.bottom_right)
tower.top = Line(tower.top_left, tower.top_right)
# Define lantern
lantern = Solid(shift=(0, tower_height + base_height))
lighthouse.lantern = lantern
lantern.rect = Rectangle((0,0), lantern_width, lantern_height)
# Constraints to ensure the shapes are correct
tower.AddConstraint(HorizontallySymmetric(tower.left_side.start, tower.right_side.start))
tower.AddConstraint(HorizontallySymmetric(tower.left_side.end, tower.right_side.end))
tower.AddConstraint(HorizontallySymmetric(tower.top.start, tower.top.end))
lighthouse.AddConstraint(base.bb.horizontal_center == tower.bb.horizontal_center)
lighthouse.AddConstraint(tower.bb.horizontal_center == lantern.bb.horizontal_center)
return lighthouse
with AIDL_2D:
model = lighthouse()
print(model.Solve())
model.Render()
|
Please write an AIDL program to generate a lighthouse
Sure! Let's start by defining the general structure and components of the lighthouse. Typically, a lighthouse would have the following parts:
1. **Base**: A broad and stable base for support.
2. **Tower**: The main vertical structure.
3. **Lantern Room**: The top part where the light is situated.
4. **Windows and Doors**: Openings in the tower for aesthetics.
5. **Details**: Engraved details and decoration lines.
Now, I'll create a step-by-step plan.
### Step 1: Define the Base Structure
We'll create a solid base which will be a simple rectangle.
### Step 2: Define the Tower Structure
The tower will be a tapering rectangular solid connected to the base.
### Step 3: Define the Lantern Room
This would be a small rectangular solid on top of the tower.
### Step 4: Add Windows and Doors
We’ll add holes to represent the windows and doors.
### Step 5: Add Decorative Details
Using the Drawing structure, we’ll add lines representing decorative details.
Let's start with the first step. I'll write the basic structure for the lighthouse with the base, tower, and lantern room.
```python
from AIDL import *
def lighthouse(
base_width: float = 6*inches,
base_height: float = 1*inch,
tower_bottom_width: float = 4*inches,
tower_top_width: float = 3*inches,
tower_height: float = 12*inches,
lantern_width: float = 2*inches,
lantern_height: float = 3*inches
):
"""
Generates a simple lighthouse model with a base, tower, and lantern room.
"""
lighthouse = Solid()
# Define base
base = Solid()
lighthouse.base = base
base.rect = Rectangle((0,0), base_width, base_height)
# Define tower
tower = Solid(shift=(0, base_height))
lighthouse.tower = tower
# Create a trapezoidal shape for the tower using lines and constraints
tower.bottom_left = Point(-tower_bottom_width/2, 0)
tower.bottom_right = Point(tower_bottom_width/2, 0)
tower.top_left = Point(-tower_top_width/2, tower_height)
tower.top_right = Point(tower_top_width/2, tower_height)
tower.left_side = Line(tower.bottom_left, tower.top_left)
tower.right_side = Line(tower.bottom_right, tower.top_right)
tower.bottom = Line(tower.bottom_left, tower.bottom_right)
tower.top = Line(tower.top_left, tower.top_right)
# Define lantern
lantern = Solid(shift=(0, tower_height + base_height))
lighthouse.lantern = lantern
lantern.rect = Rectangle((0,0), lantern_width, lantern_height)
# Constraints to ensure the shapes are correct
tower.AddConstraint(HorizontallySymmetric(tower.left_side.start, tower.right_side.start))
tower.AddConstraint(HorizontallySymmetric(tower.left_side.end, tower.right_side.end))
tower.AddConstraint(HorizontallySymmetric(tower.top.start, tower.top.end))
lighthouse.AddConstraint(base.bb.horizontal_center == tower.bb.horizontal_center)
lighthouse.AddConstraint(tower.bb.horizontal_center == lantern.bb.horizontal_center)
return lighthouse
with AIDL_2D:
model = lighthouse()
print(model.Solve())
model.Render()
```
Let's run the script and render this basic structure.
Once this is validated, we can start adding the windows, door, and decorative details. Please let me know if you have any specific preferences or additional features you'd like to include in the lighthouse!
|