 |
CLIP Score: 29.96
from AIDL import *
def stained_glass_window(
width: float = 24*inches,
height: float = 36*inches,
corner_radius: float = 1*inch,
frame_thickness: float = 0.5*inch
):
"""
Create a model of a rectangular stained glass window with rounded corners
and several glass sections.
"""
window = Assembly()
# Define the frame structure (outer and inner shapes)
frame = Solid()
inner_frame_hole = Hole()
frame.inner_frame_hole = inner_frame_hole
# Outer frame geometry
frame.outer = RoundedRectangle((0, 0), width, height, corner_radius)
# Inner frame geometry (for cutting out the inside)
inner_frame_hole.inner = RoundedRectangle((0, 0), width - 2 * frame_thickness, height - 2 * frame_thickness, corner_radius-frame_thickness)
# Define sections for the glass
glass_sections = Solid()
window.glass_sections = glass_sections
# Large central section
glass_sections.central = Rectangle((0, 0), width - 2*frame_thickness, height - 2*frame_thickness)
# Four smaller corner sections (as simplified triangles)
glass_sections.top_left = Triangle((-width/4+frame_thickness, height/4-frame_thickness), width/2 - frame_thickness*2, height/2 - frame_thickness*2)
glass_sections.top_right = Triangle((width/4-frame_thickness, height/4-frame_thickness), width/2 - frame_thickness*2, height/2 - frame_thickness*2)
glass_sections.bottom_left = Triangle((-width/4+frame_thickness, -height/4+frame_thickness), width/2 - frame_thickness*2, height/2 - frame_thickness*2)
glass_sections.bottom_right = Triangle((width/4-frame_thickness, -height/4+frame_thickness), width/2 - frame_thickness*2, height/2 - frame_thickness*2)
# Optional: Add horizontal and vertical lines to create more sections
# For example, dividing the central part further
glass_sections.dividers = [Line((0, -height/2 + frame_thickness), (0, height/2 - frame_thickness)),
Line((-width/2 + frame_thickness, 0), (width/2 - frame_thickness, 0))]
# Add frame structure to window assembly
window.frame = frame
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 proceed step-by-step to create an AIDL program for a stained glass window.
A stained glass window typically consists of a frame and several colored glass sections (solids) organized within that frame. Let's outline a basic design:
1. **Frame:** A rectangular frame with rounded corners.
2. **Glass Sections:**
- One large central section.
- Four smaller sections at each corner.
- Optionally, additional subdivisions within the sections.
To start, we'll create the different sections of the window using Solids and attach them to the main Assembly node `window`. Each section can be a different color (symbolically represented here since AIDL doesn't handle colors directly).
Let's define the basic parameters for the window:
- **Width:** Default to 24 inches.
- **Height:** Default to 36 inches.
- **Corner Radius:** Default to 1 inch.
- **Frame Thickness:** Default to 0.5 inches.
Here’s how a stained glass window AIDL program can look:
```python
from AIDL import *
def stained_glass_window(
width: float = 24*inches,
height: float = 36*inches,
corner_radius: float = 1*inch,
frame_thickness: float = 0.5*inch
):
"""
Create a model of a rectangular stained glass window with rounded corners
and several glass sections.
"""
window = Assembly()
# Define the frame structure (outer and inner shapes)
frame = Solid()
inner_frame_hole = Hole()
frame.inner_frame_hole = inner_frame_hole
# Outer frame geometry
frame.outer = RoundedRectangle((0, 0), width, height, corner_radius)
# Inner frame geometry (for cutting out the inside)
inner_frame_hole.inner = RoundedRectangle((0, 0), width - 2 * frame_thickness, height - 2 * frame_thickness, corner_radius-frame_thickness)
# Define sections for the glass
glass_sections = Solid()
window.glass_sections = glass_sections
# Large central section
glass_sections.central = Rectangle((0, 0), width - 2*frame_thickness, height - 2*frame_thickness)
# Four smaller corner sections (as simplified triangles)
glass_sections.top_left = Triangle((-width/4+frame_thickness, height/4-frame_thickness), width/2 - frame_thickness*2, height/2 - frame_thickness*2)
glass_sections.top_right = Triangle((width/4-frame_thickness, height/4-frame_thickness), width/2 - frame_thickness*2, height/2 - frame_thickness*2)
glass_sections.bottom_left = Triangle((-width/4+frame_thickness, -height/4+frame_thickness), width/2 - frame_thickness*2, height/2 - frame_thickness*2)
glass_sections.bottom_right = Triangle((width/4-frame_thickness, -height/4+frame_thickness), width/2 - frame_thickness*2, height/2 - frame_thickness*2)
# Optional: Add horizontal and vertical lines to create more sections
# For example, dividing the central part further
glass_sections.dividers = [Line((0, -height/2 + frame_thickness), (0, height/2 - frame_thickness)),
Line((-width/2 + frame_thickness, 0), (width/2 - frame_thickness, 0))]
# Add frame structure to window assembly
window.frame = frame
return window
with AIDL_2D:
model = stained_glass_window()
print(model.Solve())
model.Render()
```
Here's a breakdown of each part:
1. **Frame:** An outer and inner rounded rectangle for the frame.
2. **Glass Sections:**
- A central rectangular section.
- Four triangular sections for the corners.
- Optionally, additional dividers to create more sections within the central area.
This configuration is a basic representation and can be extended with more detailed sections and decorative elements as required. Let me know if you need any modifications or additional details!
|