Optimize angle joint geometry; Mirror stub
This commit is contained in:
parent
b88d52f4be
commit
5b5ccee94e
|
@ -2,12 +2,14 @@ from dataclasses import dataclass, field
|
||||||
import cadquery as Cq
|
import cadquery as Cq
|
||||||
from nhf.build import Model, TargetKind, target, assembly, submodel
|
from nhf.build import Model, TargetKind, target, assembly, submodel
|
||||||
import nhf.touhou.yasaka_kanako.onbashira as MO
|
import nhf.touhou.yasaka_kanako.onbashira as MO
|
||||||
|
import nhf.touhou.yasaka_kanako.mirror as MM
|
||||||
import nhf.utils
|
import nhf.utils
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class Parameters(Model):
|
class Parameters(Model):
|
||||||
|
|
||||||
onbashira: MO.Onbashira = field(default_factory=lambda: MO.Onbashira())
|
onbashira: MO.Onbashira = field(default_factory=lambda: MO.Onbashira())
|
||||||
|
mirror: MM.Mirror = field(default_factory=lambda: MM.Mirror())
|
||||||
|
|
||||||
def __post_init__(self):
|
def __post_init__(self):
|
||||||
super().__init__(name="yasaka-kanako")
|
super().__init__(name="yasaka-kanako")
|
||||||
|
@ -15,6 +17,9 @@ class Parameters(Model):
|
||||||
@submodel(name="onbashira")
|
@submodel(name="onbashira")
|
||||||
def submodel_onbashira(self) -> Model:
|
def submodel_onbashira(self) -> Model:
|
||||||
return self.onbashira
|
return self.onbashira
|
||||||
|
@submodel(name="mirror")
|
||||||
|
def submodel_mirror(self) -> Model:
|
||||||
|
return self.mirror
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
from dataclasses import dataclass, field
|
||||||
|
import cadquery as Cq
|
||||||
|
from nhf.build import Model, TargetKind, target, assembly, submodel
|
||||||
|
import nhf.touhou.yasaka_kanako.onbashira as MO
|
||||||
|
import nhf.utils
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Mirror(Model):
|
||||||
|
"""
|
||||||
|
Kanako's mirror, made of three levels.
|
||||||
|
"""
|
||||||
|
width: float = 50.0
|
||||||
|
height: float = 70.0
|
||||||
|
|
||||||
|
wall_thickness: float = 10.0
|
||||||
|
|
||||||
|
@target(name="core", kind=TargetKind.DXF)
|
||||||
|
def profile_core(self) -> Cq.Sketch:
|
||||||
|
return Cq.Sketch().ellipse(self.width/2, self.height/2)
|
||||||
|
|
||||||
|
@target(name="casing-bot", kind=TargetKind.DXF)
|
||||||
|
def profile_casing(self) -> Cq.Sketch:
|
||||||
|
"""
|
||||||
|
Base of the casing with no holes carved out
|
||||||
|
"""
|
||||||
|
dx = self.wall_thickness
|
||||||
|
return (
|
||||||
|
Cq.Sketch()
|
||||||
|
.ellipse(self.width/2+dx, self.height/2+dx)
|
||||||
|
)
|
||||||
|
@target(name="casing-top", kind=TargetKind.DXF)
|
||||||
|
def profile_casing_top(self) -> Cq.Sketch:
|
||||||
|
"""
|
||||||
|
Base of the casing with no holes carved out
|
||||||
|
"""
|
||||||
|
return (
|
||||||
|
self.profile_casing()
|
||||||
|
.ellipse(self.width/2, self.height/2, mode="s")
|
||||||
|
)
|
||||||
|
|
||||||
|
@assembly()
|
||||||
|
def assembly(self) -> Cq.Assembly:
|
||||||
|
pass
|
|
@ -277,10 +277,10 @@ class Onbashira(Model):
|
||||||
self.side_width,
|
self.side_width,
|
||||||
self.n_side
|
self.n_side
|
||||||
)
|
)
|
||||||
.regularPolygon(
|
#.regularPolygon(
|
||||||
self.side_width_inner,
|
# self.side_width_inner,
|
||||||
self.n_side, mode="s",
|
# self.n_side, mode="s",
|
||||||
)
|
#)
|
||||||
)
|
)
|
||||||
slot = (
|
slot = (
|
||||||
Cq.Workplane()
|
Cq.Workplane()
|
||||||
|
@ -476,6 +476,7 @@ class Onbashira(Model):
|
||||||
)
|
)
|
||||||
return a
|
return a
|
||||||
|
|
||||||
|
@assembly()
|
||||||
def assembly(self) -> Cq.Assembly:
|
def assembly(self) -> Cq.Assembly:
|
||||||
a = Cq.Assembly()
|
a = Cq.Assembly()
|
||||||
a = (
|
a = (
|
||||||
|
|
Loading…
Reference in New Issue