Hallo SWX

Gemeinde,
ich komme irgendwie mit der Selektion von 2 Flächen mittels VBA nicht klar...
Habe da Verständnisprobleme mit dem Selectionmanager...
Evtl. kann mir ja einer der Experten weiterhelfen...
Nun zu meinem Code (Ist aus der Api Hilfe abgeleitet..)
Variablendeklarationen sind alle global im Modul
und habe ich der Lesbarkeit wegen hier weggelassen.
In der Sub Messen will ich den eigentlichen Messvorgang erledigen.
In der Sub SelectComponentFaceByName soll die Selektion der Flächen erfolgen
Sub Messen()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set Measure = swModel.Extension.CreateMeasure
SelectComponentFaceByName "Antrieb1-2", "F_1grün"
SelectComponentFaceByName "Gestell-1", "F1_Gestell"
boolstatus = Measure.Calculate(Nothing)
If (Not (Measure.Angle = -1)) Then
'Debug.Print "Angle: " & Measure.Angle
phi = Measure.Angle * 180 / Pi
End If
End Sub
Sub SelectComponentFaceByName(CompName As String, FaceName As String)
Const swSelCOMPONENTS = 20
Set swApp = CreateObject("SldWorks.Application")
' Get active Assembly document
Set AssyDoc = swApp.ActiveDoc()
Set SelMgr = AssyDoc.SelectionManager()
Set Comp = AssyDoc.GetComponentByName(CompName)
Set Body = Comp.GetBody() ' Get the Component Body
If (Body Is Nothing) Then
swApp.SendMsgToUser "Component Body Unavailable."
swApp.SendMsgToUser "Make sure not lightweight or suppressed"
Exit Sub
End If
Set Face = Body.GetFirstFace
' Traverse thru all body faces
Do While Not Face Is Nothing
' Call ModelDoc.GetEntityName.
CurFaceName = AssyDoc.GetEntityName(Face)
If (CurFaceName = FaceName) Then
Face.Select (0) ' Select the face
Exit Do
End If
Debug.Print CurFaceName
Set Face = Face.GetNextFace
Loop
End Sub
Mir ist schon klar was passiert, wenn ich die Sub zum selektieren
das zweite Mal aufrufe, wird natürlich die erste Selektion aufgehoben,
und genau an dieser Stelle hakt es bei mir...
Hier habe ich nocht nicht begriffen, wie man sowas über den selectionmanager löst.
Ich wäre dankbar für ein wenig Hilfe.
Gruß Harald
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP