AnsweredAssumed Answered

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

Question asked by Korbi Anis on May 1, 2017

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

Outcomes