 |
CLIP Score: 27.78
from AIDL import *
def macbook_chair(
base_width: float = 12*inches,
base_depth: float = 10*inches,
seat_height: float = 2*inches,
backrest_height: float = 15*inches,
leg_length: float = 15*inches,
leg_width: float = 1*inch
):
"""
Model a simple MacBook chair with a base, backrest, seat, and legs.
"""
# Define the top-level structure
chair = Solid()
# Define substructures
chair.base = Solid()
chair.backrest = Solid()
chair.seat = Solid()
chair.legs = Solid()
chair.legs.front_left = Solid()
chair.legs.front_right = Solid()
chair.legs.back_left = Solid()
chair.legs.back_right = Solid()
# Define geometry for base
chair.base.platform = Rectangle((0,0), base_width, base_depth)
# Define geometry for backrest
chair.backrest.panel = Rectangle((0, backrest_height / 2), base_width, backrest_height)
# Define geometry for seat
chair.seat.cushion = Rectangle((0, seat_height / 2), base_width, base_depth / 2)
# Define geometry for each leg
chair.legs.front_left.leg = Rectangle((-base_width / 2 + leg_width / 2, -leg_length / 2), leg_width, leg_length)
chair.legs.front_right.leg = Rectangle((base_width / 2 - leg_width / 2, -leg_length / 2), leg_width, leg_length)
chair.legs.back_left.leg = Rectangle((-base_width / 2 + leg_width / 2, -leg_length / 2), leg_width, leg_length)
chair.legs.back_right.leg = Rectangle((base_width / 2 - leg_width / 2, -leg_length / 2), leg_width, leg_length)
# Constraints to position the base, backrest, seat, and legs
chair.AddConstraint(chair.backrest.bb.bottom == chair.base.bb.top) # Backrest sits atop base
chair.AddConstraint(chair.backrest.bb.left == chair.base.bb.left) # Align backrest and base
chair.AddConstraint(chair.backrest.bb.right == chair.base.bb.right)
chair.AddConstraint(chair.seat.bb.bottom == chair.base.bb.top + seat_height) # Seat positioned above base
chair.AddConstraint(chair.seat.bb.left == chair.base.bb.left)
chair.AddConstraint(chair.seat.bb.right == chair.base.bb.right)
# Legs position: front-left, front-right, back-left, back-right
chair.AddConstraint(chair.legs.front_left.bb.bottom == chair.base.bb.bottom - leg_length)
chair.AddConstraint(chair.legs.front_right.bb.bottom == chair.base.bb.bottom - leg_length)
chair.AddConstraint(chair.legs.back_left.bb.bottom == chair.base.bb.bottom - leg_length)
chair.AddConstraint(chair.legs.back_right.bb.bottom == chair.base.bb.bottom - leg_length)
chair.AddConstraint(chair.legs.front_left.bb.left == chair.base.bb.left)
chair.AddConstraint(chair.legs.front_right.bb.right == chair.base.bb.right)
chair.AddConstraint(chair.legs.back_left.bb.left == chair.base.bb.left)
chair.AddConstraint(chair.legs.back_right.bb.right == chair.base.bb.right)
chair.AddConstraint(chair.legs.front_left.bb.back == chair.base.bb.back)
chair.AddConstraint(chair.legs.front_right.bb.back == chair.base.bb.back)
chair.AddConstraint(chair.legs.back_left.bb.front == chair.base.bb.front)
chair.AddConstraint(chair.legs.back_right.bb.front == chair.base.bb.front)
return chair
with AIDL_2D:
model = macbook_chair()
print(model.Solve())
model.Render()
|
Please write an AIDL program to generate a macbook chair
To get started with the AIDL program for a MacBook chair, let's first break down the structural components and their hierarchical relationships. A MacBook chair may have the following components:
1. **Base**: The bottom platform on which the chair stands.
2. **Backrest**: The vertical part of the chair that supports the back.
3. **Seat**: The horizontal part of the chair.
4. **Legs**: Four legs that support the base.
We'll create the hierarchical relationship for these components, define constraints to relate them spatially, and add the necessary geometry. Let's assume a simple chair structure with the following assumptions:
- The base is a rectangle.
- The backrest is a rectangle attached to the back edge of the base.
- The seat is a rectangle positioned above the base.
- Each leg is a rectangle extending downwards from the corners of the base.
Here's the AIDL program to create this chair:
```python
from AIDL import *
def macbook_chair(
base_width: float = 12*inches,
base_depth: float = 10*inches,
seat_height: float = 2*inches,
backrest_height: float = 15*inches,
leg_length: float = 15*inches,
leg_width: float = 1*inch
):
"""
Model a simple MacBook chair with a base, backrest, seat, and legs.
"""
# Define the top-level structure
chair = Solid()
# Define substructures
chair.base = Solid()
chair.backrest = Solid()
chair.seat = Solid()
chair.legs = Solid()
chair.legs.front_left = Solid()
chair.legs.front_right = Solid()
chair.legs.back_left = Solid()
chair.legs.back_right = Solid()
# Define geometry for base
chair.base.platform = Rectangle((0,0), base_width, base_depth)
# Define geometry for backrest
chair.backrest.panel = Rectangle((0, backrest_height / 2), base_width, backrest_height)
# Define geometry for seat
chair.seat.cushion = Rectangle((0, seat_height / 2), base_width, base_depth / 2)
# Define geometry for each leg
chair.legs.front_left.leg = Rectangle((-base_width / 2 + leg_width / 2, -leg_length / 2), leg_width, leg_length)
chair.legs.front_right.leg = Rectangle((base_width / 2 - leg_width / 2, -leg_length / 2), leg_width, leg_length)
chair.legs.back_left.leg = Rectangle((-base_width / 2 + leg_width / 2, -leg_length / 2), leg_width, leg_length)
chair.legs.back_right.leg = Rectangle((base_width / 2 - leg_width / 2, -leg_length / 2), leg_width, leg_length)
# Constraints to position the base, backrest, seat, and legs
chair.AddConstraint(chair.backrest.bb.bottom == chair.base.bb.top) # Backrest sits atop base
chair.AddConstraint(chair.backrest.bb.left == chair.base.bb.left) # Align backrest and base
chair.AddConstraint(chair.backrest.bb.right == chair.base.bb.right)
chair.AddConstraint(chair.seat.bb.bottom == chair.base.bb.top + seat_height) # Seat positioned above base
chair.AddConstraint(chair.seat.bb.left == chair.base.bb.left)
chair.AddConstraint(chair.seat.bb.right == chair.base.bb.right)
# Legs position: front-left, front-right, back-left, back-right
chair.AddConstraint(chair.legs.front_left.bb.bottom == chair.base.bb.bottom - leg_length)
chair.AddConstraint(chair.legs.front_right.bb.bottom == chair.base.bb.bottom - leg_length)
chair.AddConstraint(chair.legs.back_left.bb.bottom == chair.base.bb.bottom - leg_length)
chair.AddConstraint(chair.legs.back_right.bb.bottom == chair.base.bb.bottom - leg_length)
chair.AddConstraint(chair.legs.front_left.bb.left == chair.base.bb.left)
chair.AddConstraint(chair.legs.front_right.bb.right == chair.base.bb.right)
chair.AddConstraint(chair.legs.back_left.bb.left == chair.base.bb.left)
chair.AddConstraint(chair.legs.back_right.bb.right == chair.base.bb.right)
chair.AddConstraint(chair.legs.front_left.bb.back == chair.base.bb.back)
chair.AddConstraint(chair.legs.front_right.bb.back == chair.base.bb.back)
chair.AddConstraint(chair.legs.back_left.bb.front == chair.base.bb.front)
chair.AddConstraint(chair.legs.back_right.bb.front == chair.base.bb.front)
return chair
with AIDL_2D:
model = macbook_chair()
print(model.Solve())
model.Render()
```
Let me know if this matches your expectations or if you would like to make any adjustments!
|