-
Notifications
You must be signed in to change notification settings - Fork 0
/
Solenoid.py
42 lines (32 loc) · 1.41 KB
/
Solenoid.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
import FreeCAD, FreeCADGui, Draft, Part
from FreeCAD import Base
import time
Sample_n = 120
Sample_t = 0.1
ii = iib = FreeCAD.getDocument("Solenoid").getObject("Helix001").Pitch.Value
a = i = ib = FreeCAD.getDocument("Solenoid").getObject("Helix001").Height.Value
pas = 1
for ii2 in range(int(Sample_n)):
if pas == 0:
if ii > iib-1:
pas = 1
else:
ii += 1
i = (ii * 10)
else:
if ii < 2:
pas = 0
else:
ii -= 1
i = (ii * 10)
FreeCAD.getDocument("Solenoid").getObject("Helix001").Pitch = ii
FreeCAD.getDocument("Solenoid").getObject("Helix001").Height = i
displacement = i-a
FreeCAD.getDocument("Solenoid").getObject("Cut001").Placement.Base.z = displacement
App.getDocument("Solenoid").Cut002.Placement=App.Placement(App.Vector(0,0,displacement),
App.Rotation(App.Vector(0,0,1),ii2*10), App.Vector(0,0,0))
App.getDocument("Solenoid").Extrude001.Placement=App.Placement(App.Vector(0,0,0),
App.Rotation(App.Vector(0,0,1),ii2*10), App.Vector(0,0,0))
App.Console.PrintMessage("SimTime [sec]: "+str(round(ii2*Sample_t,2))+" Plunger displacement [mm]: " + str(displacement)+"\n")
Gui.updateGui()
time.sleep(Sample_t)