みんなが元気であることを願っています。
アセンブリ軸を回転点としてアセンブリ構成部品を回転させる Solidworks マクロを使用しています。私は以下のコードを持っています:
Sub RotateX()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSelMgr As SldWorks.SelectionMgr
Dim swMath As SldWorks.MathUtility
Dim swComp As SldWorks.Component2
Dim compTransform As SldWorks.MathTransform
Dim swVect As MathVector
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swSelMgr = swModel.SelectionManager
Set swComp = swSelMgr.GetSelectedObjectsComponent2(1)
Set swMath = swApp.GetMathUtility
'==============================
On Error Resume Next
'==============================
Set compTransform = swComp.Transform2
Dim dirArr(2) As Double
dirArr(0) = 1
dirArr(1) = 0#
dirArr(2) = 0#
'Rotate about x axis {1,0,0}
Set swVect = swMath.CreateVector((dirArr))
Set swVect = swVect.MultiplyTransform(compTransform)
'rotate the x axis into the component's reference frame
Dim vData As Variant
dirArr(0) = 0#
dirArr(1) = 0#
dirArr(2) = 0#
'rotate about origin
vData = dirArr
Dim swPoint As SldWorks.MathPoint
Set swPoint = swMath.CreatePoint(vData)
Set swPoint = swPoint.MultiplyTransform(compTransform)
Dim swXform As SldWorks.MathTransform
Set swXform = swMath.CreateTransformRotateAxis(swPoint, swVect, 90# * RadPerDeg)
swComp.Transform2 = compTransform.Multiply(swXform)
swModel.EditRebuild3
End Sub
ただし、このコードはパーツの軸を回転点として使用して回転します。アセンブリ軸を使用して部品を回転させるマクロを作成したいのですが、部品の位置はまだ移動せず、回転するだけです。このパーツをアセンブリ軸上で回転させる方法について誰かが答えてくれることを願っています。