Get Physical Simulation Elements and Transforms Example (VBA)
This example shows how to get the physical elements and transforms for
an assembly for which simulation has been recorded.
'-----------------------------------------------------
'
' Preconditions: Assembly for which simulation has been
' recorded
is open.
'
' Postconditions: None
'
'-----------------------------------------------------
Option Explicit
Sub main()
Dim
swApp As
SldWorks.SldWorks
Dim
swModel As
SldWorks.ModelDoc2
Dim
swAssy As
SldWorks.AssemblyDoc
Dim
nCount As
Long
Dim
vCompArr As
Variant
Dim
swComp As
SldWorks.Component2
Dim
vXformArr As
Variant
Dim
swXform As
SldWorks.MathTransform
Dim
vStepStartTimeArr As
Variant
Dim
vStepDurArr As
Variant
Dim
nTotalTime As
Double
Dim
i As
Long
Set
swApp = Application.SldWorks
Set
swModel = swApp.ActiveDoc
Set
swAssy = swModel
swAssy.GetPhysicalSimulationComponents 1#,
_
nCount,
vCompArr, vXformArr, vStepStartTimeArr, vStepDurArr, nTotalTime
Debug.Assert
UBound(vCompArr) = nCount - 1
Debug.Assert
UBound(vXformArr) = nCount - 1
Debug.Assert
UBound(vStepStartTimeArr) = nCount - 1
Debug.Assert
UBound(vStepDurArr) = nCount - 1
Debug.Print
"File = " & swModel.GetPathName
Debug.Print
" Total
time = " & nTotalTime & " s"
For
i = 0 To nCount - 1
Set
swComp = vCompArr(i)
Set
swXform = vXformArr(i)
'Debug.Print
" Start:
" & vStepStartTimeArr(i) & " s [" & vStepDurArr(i)
* 1000# & " ms]"
Debug.Print
" "
& vStepStartTimeArr(i) & " --> " & (vStepStartTimeArr(i)
+ vStepDurArr(i)) & " s"
Debug.Print
" "
& swComp.Name2 & "
[" & swComp.ReferencedConfiguration
& "]"
Debug.Print
" Origin
= (" & -1# * swXform.ArrayData(9)
* 1000# & ", " & -1# * swXform.ArrayData(10)
* 1000# & ", " & -1# * swXform.ArrayData(11)
* 1000# & ") mm"
Debug.Print
" Rot1
=
(" & swXform.ArrayData(0)
& ", " & swXform.ArrayData(1)
& ", " & swXform.ArrayData(2)
& ")"
Debug.Print
" Rot2
=
(" & swXform.ArrayData(3)
& ", " & swXform.ArrayData(4)
& ", " & swXform.ArrayData(5)
& ")"
Debug.Print
" Rot3
=
(" & swXform.ArrayData(6)
& ", " & swXform.ArrayData(7)
& ", " & swXform.ArrayData(8)
& ")"
Debug.Print
" Trans
= ("
& swXform.ArrayData(9) * 1000#
& ", " & swXform.ArrayData(10)
* 1000# & ", " & swXform.ArrayData(11)
* 1000# & ") mm"
'
Scale is always unity
'Debug.Print
" Scale
= "
& swXform.ArrayData(12)
Next
i
End Sub
'-----------------------------------------------------