Your commited on
Commit
09bcf95
·
1 Parent(s): 0327197

clear cache

Browse files
Files changed (1) hide show
  1. generated/result_script.py +90 -58
generated/result_script.py CHANGED
@@ -1,72 +1,104 @@
1
  import FreeCAD as App
2
  import FreeCADGui as Gui
3
- from FreeCAD import Vector
 
4
  import math
5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
 
7
- def createFlangeAssembly():
8
- doc = App.newDocument("Flange")
9
-
10
- FLANGE_OUTER_DIAMETER = 100.0
11
- FLANGE_THICKNESS = 7.5
12
- BORE_INNER_DIAMETER = 50.0
13
- NECK_HEIGHT = 15.0
14
- NECK_OUTER_DIAMETER = 60.0
15
- NUM_BOLT_HOLES = 6
16
- BOLT_HOLE_DIAMETER = 12.0
17
- PCD = 75.0
18
-
19
- total_height = FLANGE_THICKNESS + NECK_HEIGHT
20
-
21
- flange = doc.addObject("Part::Cylinder", "Flange")
22
- flange.Radius = FLANGE_OUTER_DIAMETER / 2
23
- flange.Height = FLANGE_THICKNESS
24
-
25
- bore = doc.addObject("Part::Cylinder", "CentralBore")
26
- bore.Radius = BORE_INNER_DIAMETER / 2
27
- bore.Height = FLANGE_THICKNESS
28
- bore_cut = doc.addObject("Part::Cut", "FlangeWithBore")
29
- bore_cut.Base = flange
30
- bore_cut.Tool = bore
31
 
32
- neck_outer = doc.addObject("Part::Cylinder", "NeckOuter")
33
- neck_outer.Radius = NECK_OUTER_DIAMETER / 2
34
- neck_outer.Height = NECK_HEIGHT
35
- neck_outer.Placement.Base = Vector(0, 0, FLANGE_THICKNESS)
36
 
37
- neck_inner = doc.addObject("Part::Cylinder", "NeckInner")
38
- neck_inner.Radius = BORE_INNER_DIAMETER / 2
39
- neck_inner.Height = NECK_HEIGHT
40
- neck_inner.Placement.Base = Vector(0, 0, FLANGE_THICKNESS)
41
 
42
- neck_hollow = doc.addObject("Part::Cut", "HollowNeck")
43
- neck_hollow.Base = neck_outer
44
- neck_hollow.Tool = neck_inner
 
45
 
46
- fused = doc.addObject("Part::Fuse", "FlangeAndNeck")
47
- fused.Base = bore_cut
48
- fused.Tool = neck_hollow
49
 
50
- current_shape = fused
51
- bolt_radius = BOLT_HOLE_DIAMETER / 2
52
- bolt_circle_radius = PCD / 2
53
 
54
- for i in range(NUM_BOLT_HOLES):
55
- angle_deg = 360 * i / NUM_BOLT_HOLES
56
  angle_rad = math.radians(angle_deg)
57
- x = bolt_circle_radius * math.cos(angle_rad)
58
- y = bolt_circle_radius * math.sin(angle_rad)
59
-
60
- hole = doc.addObject("Part::Cylinder", f"BoltHole_{i+1:02d}")
61
- hole.Radius = bolt_radius
62
- hole.Height = total_height
63
- hole.Placement.Base = Vector(x, y, 0)
64
-
65
- cut = doc.addObject("Part::Cut", f"Cut_Bolt_{i+1:02d}")
66
- cut.Base = current_shape
67
- cut.Tool = hole
68
- current_shape = cut
69
-
 
 
 
70
  doc.recompute()
71
  Gui.activeDocument().activeView().viewAxometric()
72
  Gui.SendMsgToActiveView("ViewFit")
@@ -74,7 +106,7 @@ def createFlangeAssembly():
74
  return doc
75
 
76
  if __name__ == "__main__":
77
- createFlangeAssembly()
78
 
79
 
80
  import FreeCADGui
 
1
  import FreeCAD as App
2
  import FreeCADGui as Gui
3
+ from FreeCAD import Vector, Placement, Rotation
4
+ import Part
5
  import math
6
 
7
+ def createBearing():
8
+ doc = App.newDocument("Bearing")
9
+
10
+ INNER_RING_INNER_DIAMETER = 25.0
11
+ INNER_RING_OUTER_DIAMETER = 35.0
12
+ OUTER_RING_INNER_DIAMETER = 45.0
13
+ OUTER_RING_OUTER_DIAMETER = 52.0
14
+ BEARING_WIDTH = 15.0
15
+ BALL_DIAMETER = 7.0
16
+ NUMBER_OF_BALLS = 8
17
+
18
+ INNER_RING_RADIUS_INNER = INNER_RING_INNER_DIAMETER / 2
19
+ INNER_RING_RADIUS_OUTER = INNER_RING_OUTER_DIAMETER / 2
20
+ OUTER_RING_RADIUS_INNER = OUTER_RING_INNER_DIAMETER / 2
21
+ OUTER_RING_RADIUS_OUTER = OUTER_RING_OUTER_DIAMETER / 2
22
+ BALL_RADIUS = BALL_DIAMETER / 2
23
+ PCD_BALLS = (INNER_RING_RADIUS_OUTER + OUTER_RING_RADIUS_INNER) / 2
24
+
25
+ outer_ring_outer_cyl = doc.addObject("Part::Cylinder", "OuterRing_OuterCylinder")
26
+ outer_ring_outer_cyl.Radius = OUTER_RING_RADIUS_OUTER
27
+ outer_ring_outer_cyl.Height = BEARING_WIDTH
28
+ outer_ring_outer_cyl.Placement.Base = Vector(0, 0, 0)
29
+
30
+ outer_ring_inner_cyl = doc.addObject("Part::Cylinder", "OuterRing_InnerBore")
31
+ outer_ring_inner_cyl.Radius = OUTER_RING_RADIUS_INNER
32
+ outer_ring_inner_cyl.Height = BEARING_WIDTH
33
+ outer_ring_inner_cyl.Placement.Base = Vector(0, 0, 0)
34
+
35
+ outer_ring_cut = doc.addObject("Part::Cut", "OuterRing")
36
+ outer_ring_cut.Base = outer_ring_outer_cyl
37
+ outer_ring_cut.Tool = outer_ring_inner_cyl
38
+
39
+ inner_ring_outer_cyl = doc.addObject("Part::Cylinder", "InnerRing_OuterCylinder")
40
+ inner_ring_outer_cyl.Radius = INNER_RING_RADIUS_OUTER
41
+ inner_ring_outer_cyl.Height = BEARING_WIDTH
42
+ inner_ring_outer_cyl.Placement.Base = Vector(0, 0, 0)
43
+
44
+ inner_ring_inner_cyl = doc.addObject("Part::Cylinder", "InnerRing_InnerBore")
45
+ inner_ring_inner_cyl.Radius = INNER_RING_RADIUS_INNER
46
+ inner_ring_inner_cyl.Height = BEARING_WIDTH
47
+ inner_ring_inner_cyl.Placement.Base = Vector(0, 0, 0)
48
+
49
+ inner_ring_cut = doc.addObject("Part::Cut", "InnerRing")
50
+ inner_ring_cut.Base = inner_ring_outer_cyl
51
+ inner_ring_cut.Tool = inner_ring_inner_cyl
52
+
53
+ for i in range(NUMBER_OF_BALLS):
54
+ angle_deg = 360 * i / NUMBER_OF_BALLS
55
+ angle_rad = math.radians(angle_deg)
56
+ x = PCD_BALLS * math.cos(angle_rad)
57
+ y = PCD_BALLS * math.sin(angle_rad)
58
 
59
+ ball = doc.addObject("Part::Sphere", f"Ball_{i+1:02d}")
60
+ ball.Radius = BALL_RADIUS
61
+ ball.Placement.Base = Vector(x, y, BEARING_WIDTH / 2)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
62
 
63
+ CAGE_THICKNESS = BALL_DIAMETER * 0.5
64
+ CAGE_INNER_RADIUS_EFFECTIVE = PCD_BALLS - CAGE_THICKNESS / 2
65
+ CAGE_OUTER_RADIUS_EFFECTIVE = PCD_BALLS + CAGE_THICKNESS / 2
 
66
 
67
+ cage_base_outer = doc.addObject("Part::Cylinder", "Cage_BodyOuter")
68
+ cage_base_outer.Radius = CAGE_OUTER_RADIUS_EFFECTIVE
69
+ cage_base_outer.Height = BEARING_WIDTH
70
+ cage_base_outer.Placement.Base = Vector(0, 0, 0)
71
 
72
+ cage_base_inner = doc.addObject("Part::Cylinder", "Cage_BodyInner")
73
+ cage_base_inner.Radius = CAGE_INNER_RADIUS_EFFECTIVE
74
+ cage_base_inner.Height = BEARING_WIDTH
75
+ cage_base_inner.Placement.Base = Vector(0, 0, 0)
76
 
77
+ cage_ring = doc.addObject("Part::Cut", "Cage_RingBase")
78
+ cage_ring.Base = cage_base_outer
79
+ cage_ring.Tool = cage_base_inner
80
 
81
+ current_cage_shape = cage_ring
 
 
82
 
83
+ for i in range(NUMBER_OF_BALLS):
84
+ angle_deg = 360 * i / NUMBER_OF_BALLS
85
  angle_rad = math.radians(angle_deg)
86
+ x = PCD_BALLS * math.cos(angle_rad)
87
+ y = PCD_BALLS * math.sin(angle_rad)
88
+
89
+ pocket_radius = BALL_RADIUS * 1.05
90
+ pocket_height = BEARING_WIDTH * 1.1
91
+
92
+ ball_pocket = doc.addObject("Part::Cylinder", f"CagePocket_{i+1:02d}")
93
+ ball_pocket.Radius = pocket_radius
94
+ ball_pocket.Height = pocket_height
95
+ ball_pocket.Placement.Base = Vector(x, y, (BEARING_WIDTH - pocket_height) / 2)
96
+
97
+ cut_cage = doc.addObject("Part::Cut", f"Cage_Slotted_{i+1:02d}")
98
+ cut_cage.Base = current_cage_shape
99
+ cut_cage.Tool = ball_pocket
100
+ current_cage_shape = cut_cage
101
+
102
  doc.recompute()
103
  Gui.activeDocument().activeView().viewAxometric()
104
  Gui.SendMsgToActiveView("ViewFit")
 
106
  return doc
107
 
108
  if __name__ == "__main__":
109
+ createBearing()
110
 
111
 
112
  import FreeCADGui