 |
CLIP Score: 28.5
from AIDL import *
def stained_glass_window(height: float = 24*inches, width: float = 18*inches, edge_width: float = 1*inch):
"""
Create a simple rectangular stained glass window with a leaded frame and inner dividers
forming smaller panes of glass.
"""
# Define the main window structure and the substructures for the frame and inner dividers
window = Solid()
frame = Solid()
dividers = Hole()
window.frame = frame
frame.dividers = dividers
# Set the outer dimensions of the window frame
window.AddConstraint(window.bb.height == height)
window.AddConstraint(window.bb.width == width)
# Define the frame with rounded corners
frame.body = RoundedRectangle((0, 0), width - 2*edge_width, height - 2*edge_width, edge_width/2)
# Create inner dividers as vertical and horizontal lines, forming a grid pattern
num_dividers_vertical = 3
num_dividers_horizontal = 4
vertical_spacing = (width - 2*edge_width) / (num_dividers_vertical + 1)
horizontal_spacing = (height - 2*edge_width) / (num_dividers_horizontal + 1)
# Vertical dividers
dividers.vertical_lines = [Line((i * vertical_spacing, -height/2 + edge_width), (i * vertical_spacing, height/2 - edge_width))
for i in range(1, num_dividers_vertical + 1)]
# Horizontal dividers
dividers.horizontal_lines = [Line((-width/2 + edge_width, j * horizontal_spacing), (width/2 - edge_width, j * horizontal_spacing))
for j in range(1, num_dividers_horizontal + 1)]
return window
with AIDL_2D:
model = stained_glass_window()
print(model.Solve())
model.Render()
|
Please write an AIDL program to generate a stained glass window
Sure! Let's start by defining the general structure and constraints for the stained glass window. We can break down such a window into several key components:
1. **Frame**: The outer boundary of the window.
2. **Inner Dividers**: The lattices or lead lines that support the colored glass pieces.
The window could be composed of a rectangular frame with internal geometries for the individual glass pieces, aligned vertically or horizontally to form a pattern.
Let's walk through the creation of this model step-by-step.
### **Step 1: Defining Structures and Initial Constraints**
We will define the structure of the window as a whole, including the frame and inner dividers. The inner dividers can be constructed as holes inside the frame.
```python
from AIDL import *
def stained_glass_window(height: float = 24*inches, width: float = 18*inches, edge_width: float = 1*inch):
"""
Create a simple rectangular stained glass window with a leaded frame and inner dividers
forming smaller panes of glass.
"""
# Define the main window structure and the substructures for the frame and inner dividers
window = Solid()
frame = Solid()
dividers = Hole()
window.frame = frame
frame.dividers = dividers
# Set the outer dimensions of the window frame
window.AddConstraint(window.bb.height == height)
window.AddConstraint(window.bb.width == width)
# Define the frame with rounded corners
frame.body = RoundedRectangle((0, 0), width - 2*edge_width, height - 2*edge_width, edge_width/2)
# Create inner dividers as vertical and horizontal lines, forming a grid pattern
num_dividers_vertical = 3
num_dividers_horizontal = 4
vertical_spacing = (width - 2*edge_width) / (num_dividers_vertical + 1)
horizontal_spacing = (height - 2*edge_width) / (num_dividers_horizontal + 1)
# Vertical dividers
dividers.vertical_lines = [Line((i * vertical_spacing, -height/2 + edge_width), (i * vertical_spacing, height/2 - edge_width))
for i in range(1, num_dividers_vertical + 1)]
# Horizontal dividers
dividers.horizontal_lines = [Line((-width/2 + edge_width, j * horizontal_spacing), (width/2 - edge_width, j * horizontal_spacing))
for j in range(1, num_dividers_horizontal + 1)]
return window
with AIDL_2D:
model = stained_glass_window()
print(model.Solve())
model.Render()
```
#### Explanation:
1. **Main Window Structure**: We create a main window structure and substructure for the frame and dividers.
2. **Frame Dimensions and Shape**: The frame is created as a rounded rectangle, with rounded corners.
3. **Inner Dividers**: We create vertical and horizontal lines forming a grid pattern inside the frame, properly spaced to form smaller panes.
### **Step 2: Detailed Constraints and Geometry**
In the actual glass making, you would want to constraint the dividers to be symmetric and properly positioned within the frame.
Adding inner dividers with constraints:
```python
def stained_glass_window(height: float = 24*inches, width: float = 18*inches, edge_width: float = 1*inch):
window = Solid()
frame = Solid()
dividers = Hole()
window.frame = frame
frame.dividers = dividers
window.AddConstraint(window.bb.height == height)
window.AddConstraint(window.bb.width == width)
frame.body = RoundedRectangle((0, 0), width - 2*edge_width, height - 2*edge_width, edge_width/=2)
# Creating dividers
num_dividers_vertical = 3
num_dividers_horizontal = 4
vertical_spacing = (width - 2*edge_width) / (num_dividers_vertical + 1)
horizontal_spacing = (height - 2*edge_width) / (num_dividers_horizontal + 1)
# Vertical dividers
dividers.vertical_lines = [Line((i * vertical_spacing - width/2 + edge_width, -height/2 + edge_width),
(i * vertical_spacing - width/2 + edge_width, height/2 - edge_width))
for i in range(1, num_dividers_vertical + 1)]
for line in dividers.vertical_lines:
dividers.AddConstraint(Vertical(line))
# Horizontal dividers
dividers.horizontal_lines = [Line((-width/2 + edge_width, j * horizontal_spacing - height/2 + edge_width),
(width/2 - edge_width, j * horizontal_spacing - height/2 + edge_width))
for j in range(1, num_dividers_horizontal + 1)]
for line in dividers.horizontal_lines:
dividers.AddConstraint(Horizontal(line))
return window
with AIDL_2D:
model = stained_glass_window()
print(model.Solve())
model.Render()
```
### Conclusion:
In this AIDL program, we created a basic stained glass window with a surrounding frame and internal dividers forming a grid of glass panes. The constraints ensure that the dividers are aligned and symmetric within the frame. You can further expand upon this design by adding more intricate patterns or designs within each pane if required.
I hope this helps! Is there any specific detail or feature you would like to add or modify in this stained glass window design?
|