 |
CLIP Score: 33.35
from AIDL import *
def house_elevation(
house_width: float = 30 * feet,
house_height: float = 20 * feet,
garage_width: float = 15 * feet,
garage_height: float = 12 * feet,
window_width: float = 4 * feet,
window_height: float = 4 * feet,
garage_door_width: float = 12 * feet,
garage_door_height: float = 8 * feet
):
"""
Model a simple architect's elevation of a residential house with a garage and windows.
"""
# Create the root of the model structure
house = Solid()
# Define the main body of the house as a rectangle
house.body = Rectangle((0, 0), house_width, house_height)
# Define the garage as a smaller rectangle attached to the right of the house
garage_shift_x = house_width / 2 - garage_width / 2
garage = Solid(shift=(garage_shift_x, -house_height / 2 + garage_height / 2))
house.garage = garage
garage.structure = Rectangle((0, 0), garage_width, garage_height)
# Add a garage door as a hole in the garage structure
garage_door_y = -garage_height / 2 + garage_door_height / 2
garage_door = Hole()
garage.garage_door = garage_door
garage_door.cutout = Rectangle((0, garage_door_y), garage_door_width, garage_door_height)
# Define windows as holes in the house and garage
windows_hole = Hole()
house.windows = windows_hole
# House windows: create a grid of windows
num_house_windows_x = int(house_width // (2 * window_width))
num_house_windows_y = int(house_height // (2 * window_height))
window_gap_x = (house_width - num_house_windows_x * window_width) / (num_house_windows_x + 1)
window_gap_y = (house_height - num_house_windows_y * window_height) / (num_house_windows_y + 1)
for i in range(num_house_windows_x):
for j in range(num_house_windows_y):
window_x = -house_width / 2 + (i + 1) * window_gap_x + i * window_width + window_width / 2
window_y = -house_height / 2 + (j + 1) * window_gap_y + j * window_height + window_height / 2
window_name = f'window_{i}_{j}'
windows_hole.__setattr__(window_name, Rectangle((window_x, window_y), window_width, window_height))
# Garage windows: create a single window centered on the garage door
garage_window_y = garage_door_y + garage_door_height / 2 + window_height / 2 + 1 * feet
windows_hole.garage_window = Rectangle((garage_shift_x, garage_window_y), window_width, window_height)
return house
with AIDL_2D:
model = house_elevation()
print(model.Solve())
model.Render()
|
Please write an AIDL program to generate a architect's elevation of a residential house with garage and windows
Sure, let's start by outlining the main components of the residential house elevation. For simplicity, we will divide the model into a few key parts:
1. **Overall Structure**: The main rectangular body of the house.
2. **Garage**: A rectangular extension with a garage door.
3. **Windows**: Rectangular window cutouts placed on the house's body and garage.
Assuming standard rectangular shapes for the house, garage, and windows, let's begin with the basic structure and then add the details progressively. Here is an initial version of the AIDL program to generate the elevation of a residential house:
```python
from AIDL import *
def house_elevation(
house_width: float = 30 * feet,
house_height: float = 20 * feet,
garage_width: float = 15 * feet,
garage_height: float = 12 * feet,
window_width: float = 4 * feet,
window_height: float = 4 * feet,
garage_door_width: float = 12 * feet,
garage_door_height: float = 8 * feet
):
"""
Model a simple architect's elevation of a residential house with a garage and windows.
"""
# Create the root of the model structure
house = Solid()
# Define the main body of the house as a rectangle
house.body = Rectangle((0, 0), house_width, house_height)
# Define the garage as a smaller rectangle attached to the right of the house
garage_shift_x = house_width / 2 - garage_width / 2
garage = Solid(shift=(garage_shift_x, -garage_height))
house.garage = garage
garage.structure = Rectangle((0, 0), garage_width, garage_height)
# Add a garage door as a hole in the garage structure
garage_door_y = -garage_height / 2 + garage_door_height / 2
garage_door = Hole()
garage.garage_door = garage_door
garage_door.cutout = Rectangle((0, garage_door_y), garage_door_width, garage_door_height)
# Define windows as holes in the house and garage
window_hole = Hole()
house.windows = window_hole
# House windows: create a grid of windows
num_house_windows_x = int(house_width // (2 * window_width))
num_house_windows_y = int(house_height // (2 * window_height))
window_gap_x = (house_width - num_house_windows_x * window_width) / (num_house_windows_x + 1)
window_gap_y = (house_height - num_house_windows_y * window_height) / (num_house_windows_y + 1)
for i in range(num_house_windows_x):
for j in range(num_house_windows_y):
window_x = -house_width / 2 + (i + 1) * window_gap_x + i * window_width + window_width / 2
window_y = -house_height / 2 + (j + 1) * window_gap_y + j * window_height + window_height / 2
window_hole.windows = Hole()
window_hole.windows.append(Rectangle((window_x, window_y), window_width, window_height))
# Garage windows: create a single window centered on the garage door
garage_window_y = garage_door_y + garage_door_height / 2 + window_height / 2 + 1 * feet
window_hole.garage_window = Rectangle((0, garage_window_y), window_width, window_height)
return house
with AIDL_2D:
model = house_elevation()
print(model.Solve())
model.Render()
```
This code defines a simple house with the following features:
1. A basic rectangular house body.
2. A garage attached to the right.
3. A cutout for the garage door as a hole in the garage structure.
4. A grid of windows on the house body.
5. A single window centered above the garage door.
Feel free to let me know if you need any modifications or additional details to be added to the house elevation.
Traceback (most recent call last):
File "/net/projects/ranalab/jz/aidl/AIDL/generation/backend.py", line 21, in dumbrun
exec(code, env)
File "", line 60, in
File "", line 51, in house_elevation
File "/net/projects/ranalab/jz/aidl/AIDL/structure.py", line 1242, in __getattr__
return self.bb.__getattribute__(name)
AttributeError: 'BoundingBox' object has no attribute 'append'
The error you're encountering indicates that I've mistakenly tried to use `append` on an object that doesn't support this method. Instead, we should ensure that the windows are defined correctly and added as individual elements to the `windows` hole structure.
I'll correct the program accordingly. Here is the revised AIDL program:
```python
from AIDL import *
def house_elevation(
house_width: float = 30 * feet,
house_height: float = 20 * feet,
garage_width: float = 15 * feet,
garage_height: float = 12 * feet,
window_width: float = 4 * feet,
window_height: float = 4 * feet,
garage_door_width: float = 12 * feet,
garage_door_height: float = 8 * feet
):
"""
Model a simple architect's elevation of a residential house with a garage and windows.
"""
# Create the root of the model structure
house = Solid()
# Define the main body of the house as a rectangle
house.body = Rectangle((0, 0), house_width, house_height)
# Define the garage as a smaller rectangle attached to the right of the house
garage_shift_x = house_width / 2 - garage_width / 2
garage = Solid(shift=(garage_shift_x, -house_height / 2 + garage_height / 2))
house.garage = garage
garage.structure = Rectangle((0, 0), garage_width, garage_height)
# Add a garage door as a hole in the garage structure
garage_door_y = -garage_height / 2 + garage_door_height / 2
garage_door = Hole()
garage.garage_door = garage_door
garage_door.cutout = Rectangle((0, garage_door_y), garage_door_width, garage_door_height)
# Define windows as holes in the house and garage
windows_hole = Hole()
house.windows = windows_hole
# House windows: create a grid of windows
num_house_windows_x = int(house_width // (2 * window_width))
num_house_windows_y = int(house_height // (2 * window_height))
window_gap_x = (house_width - num_house_windows_x * window_width) / (num_house_windows_x + 1)
window_gap_y = (house_height - num_house_windows_y * window_height) / (num_house_windows_y + 1)
for i in range(num_house_windows_x):
for j in range(num_house_windows_y):
window_x = -house_width / 2 + (i + 1) * window_gap_x + i * window_width + window_width / 2
window_y = -house_height / 2 + (j + 1) * window_gap_y + j * window_height + window_height / 2
window_name = f'window_{i}_{j}'
windows_hole.__setattr__(window_name, Rectangle((window_x, window_y), window_width, window_height))
# Garage windows: create a single window centered on the garage door
garage_window_y = garage_door_y + garage_door_height / 2 + window_height / 2 + 1 * feet
windows_hole.garage_window = Rectangle((garage_shift_x, garage_window_y), window_width, window_height)
return house
with AIDL_2D:
model = house_elevation()
print(model.Solve())
model.Render()
```
In this revised program, each window is assigned a unique name using `__setattr__`, which correctly adds the windows as attributes to the `windows_hole` object.
Please run this updated version and let me know if it resolves the issue or if further adjustments are needed.
|