 |
CLIP Score: 28.38
from AIDL import *
def sofa(width: float = 84*inches, depth: float = 36*inches, armrest_width: float = 5*inches, backrest_height: float = 10*inches):
sofa = Assembly()
main_seating = Solid()
left_armrest = Solid()
right_armrest = Solid()
backrest = Solid()
sofa.main_seating = main_seating
sofa.left_armrest = left_armrest
sofa.right_armrest = right_armrest
sofa.backrest = backrest
left_armrest.shift = (-width/2 - armrest_width/2, 0)
right_armrest.shift = (width/2 + armrest_width/2, 0)
backrest.shift = (0, depth/2 + backrest_height/2)
# Add constraints for main seating area dimensions
main_seating.body = Rectangle((0, 0), width, depth)
# Armrests are vertically aligned with the main seating area
left_armrest.body = Rectangle((0, 0), armrest_width, depth)
right_armrest.body = Rectangle((0, 0), armrest_width, depth)
# Backrest is horizontally aligned with the main seating area
backrest.body = Rectangle((0, 0), width, backrest_height)
return sofa
with AIDL_2D:
model = sofa()
print(model.Solve())
model.Render()
|
Please write an AIDL program to generate a aerial view of sofa
Sure, let's break down the task of modeling a sofa from an aerial view step-by-step. The sofa's top view will consist of various parts such as the main seating area, armrests, and possibly a backrest. In this example, we'll create a simplistic aerial view with emphasis on the main components:
1. **Main Seating Area**: A rectangle.
2. **Armrests**: Rectangles positioned at the sides of the seating area.
3. **Backrest**: A rectangle positioned at the back of the seating area.
### Step 1: Define Structures and Hierarchy
Let's define the main structure and its subcomponents:
```python
from AIDL import *
def sofa(width: float = 84*inches, depth: float = 36*inches, armrest_width: float = 5*inches, backrest_height: float = 10*inches):
sofa = Assembly()
main_seating = Solid()
left_armrest = Solid()
right_armrest = Solid()
backrest = Solid()
# Adding components to the sofa structure
sofa.main_seating = main_seating
sofa.left_armrest = left_armrest
sofa.right_armrest = right_armrest
sofa.backrest = backrest
# Define the shifts (translations) for positioning the components
left_armrest.shift = (-width/2 - armrest_width/2, 0)
right_armrest.shift = (width/2 + armrest_width/2, 0)
backrest.shift = (0, depth/2 + backrest_height/2)
return sofa
```
### Step 2: Add Constraints for Position and Dimension
Next, let's add the constraints to ensure the components are in the correct position relative to each other:
```python
def sofa(width: float = 84*inches, depth: float = 36*inches, armrest_width: float = 5*inches, backrest_height: float = 10*inches):
sofa = Assembly()
main_seating = Solid()
left_armrest = Solid()
right_armrest = Solid()
backrest = Solid()
sofa.main_seating = main_seating
sofa.left_armrest = left_armrest
sofa.right_armrest = right_armrest
sofa.backrest = backrest
left_armrest.shift = (-width/2 - armrest_width/2, 0)
right_armrest.shift = (width/2 + armrest_width/2, 0)
backrest.shift = (0, depth/2 + backrest_height/2)
# Add constraints for main seating area dimensions
main_seating.body = Rectangle((0, 0), width, depth)
# Armrests are vertically aligned with the main seating area
left_armrest.body = Rectangle((0, 0), armrest_width, depth)
right_armrest.body = Rectangle((0, 0), armrest_width, depth)
# Backrest is horizontally aligned with the main seating area
backrest.body = Rectangle((0, 0), width, backrest_height)
return sofa
```
### Step 3: Finalize the Model with Geometry and Render
Finally, we add the geometry nodes and render the model:
```python
from AIDL import *
def sofa(width: float = 84*inches, depth: float = 36*inches, armrest_width: float = 5*inches, backrest_height: float = 10*inches):
sofa = Assembly()
main_seating = Solid()
left_armrest = Solid()
right_armrest = Solid()
backrest = Solid()
sofa.main_seating = main_seating
sofa.left_armrest = left_armrest
sofa.right_armrest = right_armrest
sofa.backrest = backrest
left_armrest.shift = (-width/2 - armrest_width/2, 0)
right_armrest.shift = (width/2 + armrest_width/2, 0)
backrest.shift = (0, depth/2 + backrest_height/2)
# Add constraints for main seating area dimensions
main_seating.body = Rectangle((0, 0), width, depth)
# Armrests are vertically aligned with the main seating area
left_armrest.body = Rectangle((0, 0), armrest_width, depth)
right_armrest.body = Rectangle((0, 0), armrest_width, depth)
# Backrest is horizontally aligned with the main seating area
backrest.body = Rectangle((0, 0), width, backrest_height)
return sofa
with AIDL_2D:
model = sofa()
print(model.Solve())
model.Render()
```
You can adjust the parameters (`width`, `depth`, `armrest_width`, `backrest_height`) to fit different design specifications. This model aims to provide a basic aerial view of a sofa focusing on key structural components: the main seating area, armrests, and backrest.
|