0 Replies Latest reply on May 1, 2017 12:24 PM by Korbi Anis

    PROBLEM WITH MACRO TO CREATE MOVEFACE(ROTATION) AND AFTER ROTATE THIS MOVE FACE

    Korbi Anis

      Hello my friends . I hae a problem and I need your help ! I am beginner with VBA solidwroks and I tried to write a macro to insert move face by rotation angle in part and After try to rotate this move face. but It does not work especiaaly in  [ SUB MOVEFACE() ].thanks a lot

       

       

       

       

       

       

       

       

       

       

       

       

      Dim swApp As SldWorks.SldWorks

       

       

      Dim swModel As SldWorks.ModelDoc2

       

       

      Dim swModelDocExt As SldWorks.ModelDocExtension

       

       

      Dim swSelMgr As SldWorks.SelectionMgr

       

       

      Dim swFeat As SldWorks.Feature

       

       

      Dim swMoveFaceFeatData As SldWorks.MoveFaceFeatureData

       

       

      Dim varPara As Variant

       

       

      Dim newPara(5) As Double

       

       

      Dim newVarPara As Variant

       

       

      Dim boolstatus As Boolean

       

       

      Dim PI As Double

       

       

      Dim i As Long

      Dim swFeatMgr As SldWorks.FeatureManager

       

       

      Sub main()

      moveface

      rotatemoveface

      End Sub

      Sub moveface()

       

       

      Set swApp = Application.SldWorks

       

       

          Set swModel = swApp.ActiveDoc

       

       

          Set swModelDocExt = swModel.Extension

       

       

          Set swFeatMgr = swModel.FeatureManager

       

       

      boolstatus = swModelDocExt.SelectByID2("", "FACE", -5.14647149738039E-02, 7.74281150177103E-03, 2.45759830993393E-02, False, 1, Nothing, 0)

      Set swFeat = swFeatMgr.InsertMoveFace(1, False, 0, 0.05)

       

       

          swModel.ViewZoomtofit2

      End Sub

      Sub rotatemoveface()

      ' Set PI

       

       

      PI = 4 * Atn(1)

       

       

      ' Select, get, and access Move Face feature

       

       

      boolstatus = swModelDocExt.SelectByID2("Move Face1", "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0)

       

       

      Set swFeat = swSelMgr.GetSelectedObject6(1, -1)

       

       

      Set swMoveFaceFeatData = swFeat.GetDefinition

       

       

      swMoveFaceFeatData.AccessSelections swModel, Nothing

       

       

       

       

       

      ' Get current XYZ origin and rotation angles of Move Face feature

       

       

      Debug.Print "Before rotating Move Face feature..."

       

       

      ' 1 radian = 180º/p = 57.295779513º or approximately 57.3º

       

       

      Debug.Print "  Draft angle of Move Face feature: " & swMoveFaceFeatData.Angle * 57.3 & " degrees"

       

       

      Debug.Print "  XYZ origin (first 3) and rotation angles (last 3)"

       

       

      varPara = swMoveFaceFeatData.TriadRotationParameters

       

       

      For i = LBound(varPara) To UBound(varPara)

       

       

          Debug.Print "    " & (varPara(i))

       

       

      Next i

       

       

       

       

       

      ' New XYZ location and rotation angles for Move Face feature

       

       

      newPara(0) = 0#

       

       

      newPara(1) = 0#

       

       

      newPara(2) = 0#

       

       

      newPara(3) = 0 ' Convert radians to degrees

       

       

      newPara(4) = 2 * PI / 180 ' Convert radians to degrees

       

       

      newPara(5) = 0#

       

       

      newVarPara = newPara

       

       

       

       

       

      ' Rotate the Move Face feature

       

       

      swMoveFaceFeatData.TriadRotationParameters = newVarPara

       

       

      Debug.Print " "

       

       

      Debug.Print "After rotating Move Face feature..."

       

       

      Debug.Print "  Draft angle of Move Face feature: " & swMoveFaceFeatData.Angle * 57.3 & " degrees"

       

       

      Debug.Print "  XYZ origin (first 3) and rotation angles (last 3)"

       

       

      newVarPara = swMoveFaceFeatData.TriadRotationParameters

       

       

      For i = LBound(newVarPara) To UBound(newVarPara)

       

       

          Debug.Print "    " & (newVarPara(i))

       

       

      Next i

       

       

       

       

       

      ' Modify the Move Face feature

       

       

      swFeat.ModifyDefinition swMoveFaceFeatData, swModel, Nothing

       

       

       

       

       

      End Sub