-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathAsBuiltJoints.py
More file actions
73 lines (56 loc) · 3.03 KB
/
AsBuiltJoints.py
File metadata and controls
73 lines (56 loc) · 3.03 KB
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import adsk.core, adsk.fusion
# Script to save AsBuiltJoint info
# This is needed as designType needs to be 0 which breaks asBuiltJoints
savedJointInfo = {}
def saveJointInfo():
class LimitInfo:
pass
class MotionInfo:
def __init__(self):
self.rotationLimits = LimitInfo()
self.slideLimits = LimitInfo()
class JointInfo:
def __init__(self):
self.jointMotion = MotionInfo()
# Gather all asBuiltJoints
app = adsk.core.Application.get()
ui = app.userInterface
design = adsk.fusion.Design.cast(app.activeProduct)
rootComp = design.rootComponent
asBuiltJoints = rootComp.allAsBuiltJoints
for asBuiltJoint in asBuiltJoints:
# Check if Valid and Not Supressed
if asBuiltJoint.isSuppressed:
continue
try:
asBuiltJoint.occurrenceOne
asBuiltJoint.occurrenceTwo
except:
continue
# Stores all Joint Info for Use Later
jointInfo = JointInfo()
jointInfo.jointMotion.jointType = int(asBuiltJoint.jointMotion.jointType)
if asBuiltJoint.jointMotion.jointType == 1:
jointInfo.jointMotion.rotationAxisVector = asBuiltJoint.jointMotion.rotationAxisVector.copy()
jointInfo.jointMotion.rotationLimits.isMaximumValueEnabled = asBuiltJoint.jointMotion.rotationLimits.isMaximumValueEnabled
jointInfo.jointMotion.rotationLimits.isMinimumValueEnabled = asBuiltJoint.jointMotion.rotationLimits.isMinimumValueEnabled
jointInfo.jointMotion.rotationLimits.maximumValue = asBuiltJoint.jointMotion.rotationLimits.maximumValue
jointInfo.jointMotion.rotationLimits.minimumValue = asBuiltJoint.jointMotion.rotationLimits.minimumValue
jointInfo.jointMotion.rotationValue = asBuiltJoint.jointMotion.rotationValue
elif asBuiltJoint.jointMotion.jointType == 2:
jointInfo.jointMotion.slideDirectionVector = asBuiltJoint.jointMotion.slideDirectionVector.copy()
jointInfo.jointMotion.slideLimits.isMaximumValueEnabled = asBuiltJoint.jointMotion.slideLimits.isMaximumValueEnabled
jointInfo.jointMotion.slideLimits.isMinimumValueEnabled = asBuiltJoint.jointMotion.slideLimits.isMinimumValueEnabled
jointInfo.jointMotion.slideLimits.maximumValue = asBuiltJoint.jointMotion.slideLimits.maximumValue
jointInfo.jointMotion.slideLimits.minimumValue = asBuiltJoint.jointMotion.slideLimits.minimumValue
jointInfo.jointMotion.slideValue = asBuiltJoint.jointMotion.slideValue
asBuiltJoint.timelineObject.rollTo(True)
jointInfo.occurrenceOne = asBuiltJoint.occurrenceOne
jointInfo.occurrenceTwo = asBuiltJoint.occurrenceTwo
jointInfo.geometryOrOriginOne = asBuiltJoint.geometry
jointInfo.geometryOrOriginTwo = asBuiltJoint.geometry
jointInfo.name = asBuiltJoint.name
design.timeline.moveToEnd()
# Store Info
jointInfo.storedJoint = True
savedJointInfo[asBuiltJoint.entityToken] = jointInfo