问题描述
希望大家一切都好。
我正在使用一个 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}
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
但是此代码使用零件轴作为旋转点进行旋转。 我想制作一个使用装配轴旋转零件的宏,但零件位置仍然不会移动其位置,只会旋转。 我希望有人能帮助我回答如何使这个零件在装配轴上旋转。
解决方法
通过使用:
Set swPoint = swPoint.MultiplyTransform(compTransform)
您将旋转点定义为零件的中心。 删除它,它会起作用。
注意:您可能也有同样的问题:
Set swVect = swVect.MultiplyTransform(compTransform)
旋转轴的位置取决于零件的方向。