 |
CLIP Score: 26.32
from AIDL import *
def castle(wall_length: float = 12*inches, wall_height: float = 6*inches, wall_thickness: float = 0.5*inches, tower_radius: float = 1*inch, keep_length: float = 4*inches, keep_height: float = 3*inches, door_width: float = 1*inch, door_height: float = 2*inches, window_radius: float = 0.25*inch):
"""
Create a simple castle with a rectangular main wall, four corner towers, a central keep, and a main door with windows.
"""
castle = Solid()
# Define the outer walls as a rectangle
castle.walls = RoundedRectangle((0, 0), wall_length, wall_height, wall_thickness)
# Define towers at the four corners
castle.towers = [
Circle((-wall_length/2, wall_height/2), tower_radius), # Top-left tower
Circle((wall_length/2, wall_height/2), tower_radius), # Top-right tower
Circle((-wall_length/2, -wall_height/2), tower_radius), # Bottom-left tower
Circle((wall_length/2, -wall_height/2), tower_radius) # Bottom-right tower
]
# Define the central keep as a rectangle
castle.keep = Rectangle((0, 0), keep_length, keep_height)
# Define the door as a rectangular hole at the bottom center of the walls
castle.door = Hole()
castle.door.rect = Rectangle((0, -wall_height/2 + door_height/2), door_width, door_height)
# Define some windows as circular holes on the keep
castle.keep.windows = [
Circle((0, 1*inch), window_radius),
Circle((-1*inch, 0), window_radius),
Circle((1*inch, 0), window_radius)
]
return castle
with AIDL_2D:
model = castle()
print(model.Solve())
model.Render()
|
Please write an AIDL program to generate a castle
Sure! Let's design a basic castle structure step-by-step. We'll start with a basic outline and add details progressively. Here's the plan:
1. **Create the main walls**: We'll start with a simple rectangle to represent the walls of the castle.
2. **Add towers**: Add circular towers at the four corners of the castle.
3. **Add a central keep**: A rectangle in the center for the main keep.
4. **Add door and windows**: Holes for the entrance door and some windows.
Let's start with step 1:
### Step 1: Create the main walls
```python
from AIDL import *
def castle(wall_length: float = 12*inches, wall_height: float = 6*inches, wall_thickness: float = 0.5*inches):
"""
Create a simple castle with a rectangular main wall.
"""
castle = Solid()
# Define the outer walls as a rectangle
castle.walls = RoundedRectangle((0, 0), wall_length, wall_height, wall_thickness)
return castle
with AIDL_2D:
model = castle()
print(model.Solve())
model.Render()
```
### Step 2: Add towers
Now let's add circular towers at each corner.
```python
from AIDL import *
def castle(wall_length: float = 12*inches, wall_height: float = 6*inches, wall_thickness: float = 0.5*inches, tower_radius: float = 1*inch):
"""
Create a simple castle with a rectangular main wall and four corner towers.
"""
castle = Solid()
# Define the outer walls as a rectangle
castle.walls = RoundedRectangle((0, 0), wall_length, wall_height, wall_thickness)
# Define towers at the four corners
castle.towers = [
Circle((-wall_length/2, wall_height/2), tower_radius), # Top-left tower
Circle((wall_length/2, wall_height/2), tower_radius), # Top-right tower
Circle((-wall_length/2, -wall_height/2), tower_radius), # Bottom-left tower
Circle((wall_length/2, -wall_height/2), tower_radius) # Bottom-right tower
]
return castle
with AIDL_2D:
model = castle()
print(model.Solve())
model.Render()
```
### Step 3: Add a central keep
Next, we'll add a rectangular keep in the center of the castle.
```python
from AIDL import *
def castle(wall_length: float = 12*inches, wall_height: float = 6*inches, wall_thickness: float = 0.5*inches, tower_radius: float = 1*inch, keep_length: float = 4*inches, keep_height: float = 3*inches):
"""
Create a simple castle with a rectangular main wall, four corner towers, and a central keep.
"""
castle = Solid()
# Define the outer walls as a rectangle
castle.walls = RoundedRectangle((0, 0), wall_length, wall_height, wall_thickness)
# Define towers at the four corners
castle.towers = [
Circle((-wall_length/2, wall_height/2), tower_radius), # Top-left tower
Circle((wall_length/2, wall_height/2), tower_radius), # Top-right tower
Circle((-wall_length/2, -wall_height/2), tower_radius), # Bottom-left tower
Circle((wall_length/2, -wall_height/2), tower_radius) # Bottom-right tower
]
# Define the central keep as a rectangle
castle.keep = Rectangle((0, 0), keep_length, keep_height)
return castle
with AIDL_2D:
model = castle()
print(model.Solve())
model.Render()
```
### Step 4: Add door and windows
Finally, let's add a main entrance door and some windows.
```python
from AIDL import *
def castle(wall_length: float = 12*inches, wall_height: float = 6*inches, wall_thickness: float = 0.5*inches, tower_radius: float = 1*inch, keep_length: float = 4*inches, keep_height: float = 3*inches, door_width: float = 1*inch, door_height: float = 2*inches, window_radius: float = 0.25*inch):
"""
Create a simple castle with a rectangular main wall, four corner towers, a central keep, and a main door with windows.
"""
castle = Solid()
# Define the outer walls as a rectangle
castle.walls = RoundedRectangle((0, 0), wall_length, wall_height, wall_thickness)
# Define towers at the four corners
castle.towers = [
Circle((-wall_length/2, wall_height/2), tower_radius), # Top-left tower
Circle((wall_length/2, wall_height/2), tower_radius), # Top-right tower
Circle((-wall_length/2, -wall_height/2), tower_radius), # Bottom-left tower
Circle((wall_length/2, -wall_height/2), tower_radius) # Bottom-right tower
]
# Define the central keep as a rectangle
castle.keep = Rectangle((0, 0), keep_length, keep_height)
# Define the door as a rectangular hole at the bottom center of the walls
castle.door = Hole()
castle.door.rect = Rectangle((0, -wall_height/2 + door_height/2), door_width, door_height)
# Define some windows as circular holes on the keep
castle.keep.windows = [
Circle((0, 1*inch), window_radius),
Circle((-1*inch, 0), window_radius),
Circle((1*inch, 0), window_radius)
]
return castle
with AIDL_2D:
model = castle()
print(model.Solve())
model.Render()
```
Run this finalized model function to generate a castle with walls, towers, a keep, a door, and some windows. If you have additional features you'd like to add or any adjustments, please let me know!
|