chore: Initial commit

This commit is contained in:
2026-08-15 23:24:21 +01:00
commit 73663d861b
5 changed files with 118 additions and 0 deletions
View File
+13
View File
@@ -0,0 +1,13 @@
# noqa: D100
from solid2 import scad_render_to_file
from tag_3d.proto import gen_tag
def _main() -> None:
tag = gen_tag()
scad_render_to_file(tag, "out.scad")
if __name__ == "__main__":
_main()
+65
View File
@@ -0,0 +1,65 @@
"""Prototype model for scooby tag."""
import solid2 as sp
TAG_DEPTH = 25.00
BONE_CORE_WIDTH = 55.00
BONE_CORE_HEIGHT = 45.00
BONE_JOINT_R = 18.00
BONE_JOINT_DIST_RATIO = .6
DISP_OUT_HEIGHT = 31.80
DISP_OUT_WIDTH = 37.32
DISP_VIS_HEIGHT = 28.40
DISP_VIS_WIDTH = 28.40
DISP_VIS_THICK = 1.00
DISP_THICK = 1.00
SEP_THICK = 3.00
MICRO_DEPTH = 16.00
MICRO_WIDTH = 47.00
MICRO_HEIGHT = 23.00
XX = .2
def gen_bone() -> sp.OpenSCADObjectPlus:
core = sp.up(TAG_DEPTH/2)(sp.cube([BONE_CORE_WIDTH, BONE_CORE_HEIGHT, TAG_DEPTH], center=True))
joint = sp.cylinder(TAG_DEPTH, r=BONE_JOINT_R, center=False)
joint2 = sp.union()(
sp.forward(+BONE_JOINT_R*BONE_JOINT_DIST_RATIO)(joint),
sp.forward(-BONE_JOINT_R*BONE_JOINT_DIST_RATIO)(joint),
)
joint_l = sp.left(BONE_CORE_WIDTH/2)(joint2)
joint_r = sp.right(BONE_CORE_WIDTH/2)(joint2)
bone = sp.union()(
core,
joint_l,
joint_r,
)
return bone
def gen_display_mask() -> sp.OpenSCADObjectPlus:
visible = sp.up(DISP_VIS_THICK/2)(sp.cube([DISP_VIS_WIDTH, DISP_VIS_HEIGHT, DISP_VIS_THICK+XX], center=True))
visible = sp.up(DISP_THICK)(visible)
fit = sp.up(DISP_THICK/2)(sp.cube([DISP_OUT_WIDTH, DISP_OUT_HEIGHT, DISP_THICK], center=True))
fit = sp.left((DISP_OUT_WIDTH-DISP_VIS_WIDTH)/2)(fit)
mask = sp.union()(visible, fit)
mask = sp.forward((DISP_OUT_HEIGHT-DISP_VIS_HEIGHT)/4)(mask)
return mask
def gen_tag() -> sp.OpenSCADObjectPlus:
bone = gen_bone()
positive = sp.union()(
bone
)
mask = gen_display_mask()
mask = sp.up(TAG_DEPTH-DISP_THICK-DISP_VIS_THICK)(mask)
final = positive - mask
return final