Compare commits

...

2 Commits

Author SHA1 Message Date
Leni Aniva 9d78bf604a
feat: Add tripod attachment point 2025-01-28 17:15:38 -08:00
Leni Aniva 596311f326
feat: Improve spacing 2025-01-23 13:52:37 -08:00
1 changed files with 27 additions and 2 deletions

View File

@ -13,7 +13,11 @@ class LightPanel(Model):
length: float = 300.0
width: float = 200.0
grid_height: float = 30.0
attach_height: float = 20.0
attach_diam: float = 8.0
attach_depth: float = 12.7
grid_height: float = 20.0
grid_top_height: float = 5.0
# Distance from grid to edge
grid_margin: float = 20.0
@ -33,6 +37,10 @@ class LightPanel(Model):
assert self.grid_holes >= 2
super().__init__(name="light-panel")
@property
def grid_spacing_y(self) -> float:
return (self.width - 2 * self.grid_margin - self.grid_thickness) / (self.grid_layers - 1)
@target(name="grid", kind=TargetKind.DXF)
def grid_profile(self):
w = self.length - self.grid_margin * 2
@ -87,6 +95,21 @@ class LightPanel(Model):
thickness=self.base_thickness,
)
@target(name="attachment")
def attachment(self) -> Cq.Workplane:
l = self.length / 2
w = self.width / 2
return (
Cq.Workplane('XY')
.box(
l, w, self.attach_height,
centered=(True, True, False),
)
.faces(">Z")
.hole(self.attach_diam, self.attach_depth)
)
def assembly(self) -> Cq.Assembly:
assembly = (
Cq.Assembly()
@ -99,7 +122,7 @@ class LightPanel(Model):
)
# Grid thickness t is fixed, so the spacing of the grid satisfies
# margin + t + (n-1) * spacing + margin = width
spacing = (self.width - 2 * self.grid_margin - self.grid_thickness) / (self.grid_layers - 1)
spacing = self.grid_spacing_y
shift = self.grid_margin + self.grid_thickness / 2
for i in range(self.grid_layers):
assembly = assembly.addS(
@ -116,6 +139,8 @@ if __name__ == '__main__':
import sys
p = LightPanel()
print(p.grid_spacing_y)
if len(sys.argv) == 1:
p.build_all()
sys.exit(0)