feat: Gap in bayonet mount

This commit is contained in:
Leni Aniva 2024-07-09 22:30:29 -07:00
parent dcb3c31c1d
commit 056f6bb085
Signed by: aniva
GPG Key ID: 4D9B1C8D10EA4C50
1 changed files with 10 additions and 4 deletions

View File

@ -73,6 +73,8 @@ class BayonetMount(Mount):
# Angular span (in degrees) of the slider
pin_span: float = 15
pin_height: float = 5
# Wall at the bottom of the slot
gap: float = 3
# Angular span (in degrees) of the slot
slot_span: float = 90
@ -80,6 +82,7 @@ class BayonetMount(Mount):
# Number of pins equally distributed along a circle
n_pin: int = 2
def __post_init__(self):
assert self.diam_outer > self.diam_inner
assert self.n_pin * self.slot_span < 360
@ -91,7 +94,7 @@ class BayonetMount(Mount):
return self.diam_inner
def external_thread(self, length: float):
assert length > self.pin_height
assert length > self.pin_height + self.gap
pin = (
Cq.Workplane('XY')
.cylinder(
@ -109,17 +112,18 @@ class BayonetMount(Mount):
)
result = (
Cq.Workplane('XY')
.workplane(offset=self.gap)
.polarArray(radius=0, startAngle=0, angle=360, count=self.n_pin)
.eachpoint(lambda loc: pin.located(loc), combine='a')
.clean()
)
return result
def internal_thread(self, length: float):
assert length > self.pin_height
assert length > self.pin_height + self.gap
slot = (
Cq.Workplane('XY')
.cylinder(
height=length,
height=length - self.gap,
radius=self.diam_outer / 2,
angle=self.pin_span,
centered=(True, True, False)
@ -140,7 +144,9 @@ class BayonetMount(Mount):
radius=self.diam_outer / 2,
centered=(True, True, False),
)
.polarArray(radius=0, startAngle=-self.slot_span+self.pin_span, angle=360, count=self.n_pin)
.copyWorkplane(Cq.Workplane('XY'))
.workplane(offset=self.gap)
.polarArray(radius=0, startAngle=self.slot_span, angle=360, count=self.n_pin)
.cutEach(lambda loc: slot.located(loc))
.clean()
.copyWorkplane(Cq.Workplane('XY'))