Initial test
This commit is contained in:
commit
762c84e813
6 changed files with 2120 additions and 0 deletions
10
.gitignore
vendored
Normal file
10
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
# Python-generated files
|
||||||
|
__pycache__/
|
||||||
|
*.py[oc]
|
||||||
|
build/
|
||||||
|
dist/
|
||||||
|
wheels/
|
||||||
|
*.egg-info
|
||||||
|
|
||||||
|
# Virtual environments
|
||||||
|
.venv
|
||||||
1
.python-version
Normal file
1
.python-version
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
3.11
|
||||||
0
README.md
Normal file
0
README.md
Normal file
76
opel_pin.py
Normal file
76
opel_pin.py
Normal file
|
|
@ -0,0 +1,76 @@
|
||||||
|
from build123d import *
|
||||||
|
from ocp_vscode import show
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# --- MASTER PARAMETER ---
|
||||||
|
# Defines the outer diameter in mm.
|
||||||
|
# Change this single value to scale the entire model!
|
||||||
|
model_size = 35.0
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
# --- Derived Parameters ---
|
||||||
|
# All dimensions are calculated as fractions of the original 35mm baseline
|
||||||
|
outer_diameter = model_size
|
||||||
|
inner_diameter = model_size * (29.0 / 35.0)
|
||||||
|
thickness = model_size * (2.0 / 35.0)
|
||||||
|
|
||||||
|
# Pin dimensions
|
||||||
|
pin_diameter = model_size * (2.0 / 35.0)
|
||||||
|
pin_length = model_size * (5.0 / 35.0)
|
||||||
|
pin_spacing = model_size * (14.0 / 35.0) # Distance from center to each pin
|
||||||
|
|
||||||
|
# --- Lightning Bolt Proportions ---
|
||||||
|
# W is a safe overhang width (guaranteed to be outside the ring for clean intersection)
|
||||||
|
W = outer_diameter * 1.2
|
||||||
|
|
||||||
|
# Vertical (Y) heights for the horizontal bars
|
||||||
|
y_top_outer = model_size * (4.0 / 35.0)
|
||||||
|
y_top_inner = model_size * (2.0 / 35.0)
|
||||||
|
y_bot_outer = model_size * (-4.0 / 35.0)
|
||||||
|
y_bot_inner = model_size * (-2.0 / 35.0)
|
||||||
|
|
||||||
|
# Horizontal (X) positions mapping the central diagonal cut
|
||||||
|
x_inner_left = model_size * (-2.0 / 35.0)
|
||||||
|
x_diag_bot = model_size * (-6.0 / 35.0)
|
||||||
|
x_inner_right = model_size * (2.0 / 35.0)
|
||||||
|
x_diag_top = model_size * (6.0 / 35.0)
|
||||||
|
|
||||||
|
|
||||||
|
with BuildPart() as opel_pin:
|
||||||
|
# 1. Base Ring
|
||||||
|
with BuildSketch() as ring_sketch:
|
||||||
|
Circle(outer_diameter / 2)
|
||||||
|
Circle(inner_diameter / 2, mode=Mode.SUBTRACT)
|
||||||
|
extrude(amount=thickness)
|
||||||
|
|
||||||
|
# 2. Lightning Bolt Profile (Fully Parametric)
|
||||||
|
with BuildSketch() as bolt_sketch:
|
||||||
|
# Drawing the Z-shape using our dynamic variables
|
||||||
|
pts = [
|
||||||
|
(-W, y_top_outer), # 1. Top-left outer edge
|
||||||
|
(-W, y_bot_inner), # 2. Bottom-left outer edge
|
||||||
|
(x_inner_left, y_bot_inner), # 3. Inner bottom-left corner
|
||||||
|
(x_diag_bot, y_bot_outer), # 4. Diagonal drop to the lower bar
|
||||||
|
(W, y_bot_outer), # 5. Bottom-right outer edge
|
||||||
|
(W, y_top_inner), # 6. Top-right outer edge
|
||||||
|
(x_inner_right, y_top_inner), # 7. Inner top-right corner
|
||||||
|
(x_diag_top, y_top_outer) # 8. Diagonal rise back to the upper bar
|
||||||
|
]
|
||||||
|
Polygon(*pts)
|
||||||
|
|
||||||
|
# Cleanly slice off the overhangs using the outer circle
|
||||||
|
Circle(outer_diameter / 2, mode=Mode.INTERSECT)
|
||||||
|
extrude(amount=thickness)
|
||||||
|
|
||||||
|
# 3. Mounting Pins (on the back face)
|
||||||
|
bottom_face = opel_pin.faces().sort_by(Axis.Z)[0]
|
||||||
|
|
||||||
|
with BuildSketch(bottom_face) as pin_sketch:
|
||||||
|
# Place pins dynamically based on the scale
|
||||||
|
with Locations((-pin_spacing, 0), (pin_spacing, 0)):
|
||||||
|
Circle(pin_diameter / 2)
|
||||||
|
|
||||||
|
extrude(amount=pin_length)
|
||||||
|
|
||||||
|
# --- Send to OCP CAD Viewer ---
|
||||||
|
show(opel_pin)
|
||||||
10
pyproject.toml
Normal file
10
pyproject.toml
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
[project]
|
||||||
|
name = "opel-cad"
|
||||||
|
version = "0.1.0"
|
||||||
|
description = "Add your description here"
|
||||||
|
readme = "README.md"
|
||||||
|
requires-python = ">=3.11"
|
||||||
|
dependencies = [
|
||||||
|
"build123d>=0.11.0",
|
||||||
|
"ocp-vscode>=3.4.0",
|
||||||
|
]
|
||||||
Loading…
Add table
Reference in a new issue