-
Notifications
You must be signed in to change notification settings - Fork 2
/
coupling.py
51 lines (41 loc) · 1.23 KB
/
coupling.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
"""
Generic Coupling
"""
import cadquery as cq
import cqparts
from cadquery import Solid
from cqparts.params import *
from cqparts.display import render_props, display
from cqparts.constraint import Fixed, Coincident
from cqparts.constraint import Mate
from cqparts.utils.geometry import CoordSystem
class Coupling(cqparts.Part):
length = PositiveFloat(24)
outer_diam = PositiveFloat(9)
inner_diam_A = PositiveFloat(5)
inner_diam_B = PositiveFloat(5)
gap = PositiveFloat(3)
_render = render_props(color=(75, 75, 50))
def make(self):
lm = (
cq.Workplane("XY")
.workplane(offset=-self.length / 2)
.circle(self.outer_diam / 2)
.circle(self.inner_diam_A / 2)
.extrude(self.length)
)
return lm
def mate_input(self, offset=0):
return Mate(
self,
CoordSystem(origin=(0, 0, -self.gap / 2), xDir=(1, 0, 0), normal=(0, 0, 1)),
)
def mate_output(self, offset=0):
return Mate(
self,
CoordSystem(origin=(0, 0, self.gap / 2), xDir=(1, 0, 0), normal=(0, 0, 1)),
)
if __name__ == "__main__":
from cqparts.display import display
B = Coupling()
display(B)