【问题标题】:Solidworks macro to rotate parts with respect to the assembly axisSolidworks 宏,用于相对于装配轴旋转零件
【发布时间】:2021-04-18 18:14:26
【问题描述】:

希望大家都好。

我正在使用一个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

但此代码使用零件轴作为旋转点进行旋转。 我想制作一个使用装配轴旋转零件的宏,但零件位置仍然不会移动其位置,只会旋转。 我希望有人能帮我解答如何让这个零件在装配轴上旋转。

【问题讨论】:

    标签: vba solidworks solidworksapi


    【解决方案1】:

    通过使用:

    Set swPoint = swPoint.MultiplyTransform(compTransform)
    

    您将旋转点定义为零件的中心。 删除它,它会工作。

    注意:您可能也有同样的问题:

    Set swVect = swVect.MultiplyTransform(compTransform)
    

    旋转轴取决于零​​件的方向。

    【讨论】:

    • 嗨。感谢您对我的代码的反馈。还有一种方法可以沿装配轴旋转,但零件仍然不会在其位置上移动,只是旋转?我希望你明白我的意思。
    • 其实我不确定你的意思。如果您希望零件旋转和平移,您可以使用:help.solidworks.com/2017/English/api/sldworksapi/…
    猜你喜欢
    • 1970-01-01
    • 2023-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    相关资源
    最近更新 更多