 |
CLIP Score: 27.76
from AIDL import *
def fountain_pen(
total_length: float = 5.5 * inches,
body_diameter: float = 0.5 * inches,
cap_length: float = 2.5 * inches,
grip_length: float = 1.0 * inches,
nib_width: float = 0.25 * inches,
nib_length: float = 1.0 * inches
):
"""
Model of a simple fountain pen with cap, body, grip section, and nib.
"""
# Compute some common dimensions
grip_diameter = 0.4 * inches
body_length = total_length - cap_length - nib_length - grip_length
# Initialize the pen structure
pen = Solid()
# Create the cap, body, grip section, and nib as substructures
cap = Solid(shift=(0, total_length - cap_length))
body = Solid(shift=(0, nib_length + grip_length))
grip = Solid(shift=(0, nib_length))
nib = Solid()
pen.cap = cap
pen.body = body
pen.grip = grip
pen.nib = nib
# Define the geometry of each part
# Cap geometry
cap.main = Rectangle((0,0), body_diameter, cap_length)
# Body geometry
body.main = Rectangle((0,0), body_diameter, body_length)
# Grip section geometry
grip.main = Rectangle((0,0), grip_diameter, grip_length)
# Nib geometry - triangular shape
nib.tip = Triangle((0, nib_length/2), nib_width, nib_length)
return pen
with AIDL_2D:
model = fountain_pen()
print(model.Solve())
model.Render()
|
Please write an AIDL program to generate a fountain pen
Sure! Let's break down the general structure of a fountain pen into a 2D model suitable for laser cutting. A basic fountain pen consists of several parts:
1. **Cap**: The protective cover for the nib.
2. **Nib**: The writing part.
3. **Body**: The main cylindrical part of the pen.
4. **Grip Section**: Connects the nib to the body and provides a comfortable grip.
5. **Inner Components**: Optionally, this could include small details if relevant.
For the sake of simplicity, we will focus on the essential parts.
We will:
- Use a combination of `Solid` structures for the pen body and cap.
- Use `Hole` for any inner cuts or to depict the nib shape.
Here's the AIDL program to achieve this:
```python
from AIDL import *
def fountain_pen(
total_length: float = 5.5 * inches,
body_diameter: float = 0.5 * inches,
cap_length: float = 2.5 * inches,
grip_length: float = 1.0 * inches,
nib_width: float = 0.25 * inches,
nib_length: float = 1.0 * inches
):
"""
Model of a simple fountain pen with cap, body, grip section, and nib.
"""
# Compute some common dimensions
grip_diameter = 0.4 * inches
body_length = total_length - cap_length - nib_length - grip_length
# Initialize the pen structure
pen = Solid()
# Create the cap, body, grip section, and nib as substructures
cap = Solid(shift=(0, total_length - cap_length))
body = Solid(shift=(0, nib_length + grip_length))
grip = Solid(shift=(0, nib_length))
nib = Solid()
pen.cap = cap
pen.body = body
pen.grip = grip
pen.nib = nib
# Define the geometry of each part
# Cap geometry
cap.main = Rectangle((0,0), body_diameter, cap_length)
# Body geometry
body.main = Rectangle((0,0), body_diameter, body_length)
# Grip section geometry
grip.main = Rectangle((0,0), grip_diameter, grip_length)
# Nib geometry - triangular shape
nib.tip = Triangle((0, nib_length/2), nib_width, nib_length)
return pen
with AIDL_2D:
model = fountain_pen()
print(model.Solve())
model.Render()
```
Explanation:
- We start by defining the function `fountain_pen` with suitable default parameters.
- We compute some dimensions based on the total length and individual part lengths.
- We define the main pen structure and add substructures for the cap, body, grip, and nib.
- Each substructure is defined with its geometry using `Rectangle` and `Triangle` to denote the parts.
This forms a basic 2D model outline of a fountain pen appropriate for laser cutting. You can adjust the dimensions or add more details as needed. Let me know if you need any refinements or additional features.
|