In diesem Video werde ich euch zeigen, wie eine Auswahl des Benutzers identifiziert werden kann.
Und an dieser Stelle der Code der im Makro vorhanden ist.
Option Explicit
Sub main()
Dim swApp As SldWorks.SldWorks
Set swApp = Application.SldWorks
Dim swModel As ModelDoc2
Set swModel = swApp.ActiveDoc
If swModel Is Nothing Then
swApp.SendMsgToUser2 "Keine Datei geladen.", swMessageBoxIcon_e.swMbStop, swMessageBoxBtn_e.swMbOk
Exit Sub
End If
Dim swSelMgr As SelectionMgr
Set swSelMgr = swModel.SelectionManager
If swSelMgr.GetSelectedObjectCount2(-1) < 1 Then
swApp.SendMsgToUser2 "Keine Auswahl getroffen.", swMessageBoxIcon_e.swMbStop, swMessageBoxBtn_e.swMbOk
Exit Sub
End If
Dim swSelectType As swSelectType_e
swSelectType = swSelMgr.GetSelectedObjectType3(1, -1)
Debug.Print swSelectType
Select Case swSelectType
Case swSelectType_e.swSelFACES
Debug.Print "Fläche ausgewählt"
Case swSelectType_e.swSelEDGES
Debug.Print "Kante ausgewählt"
Case Else
swApp.SendMsgToUser2 "Keine unterstützte Auswahl getroffen.", _
swMessageBoxIcon_e.swMbInformation, _
swMessageBoxBtn_e.swMbOk
End Select
End Sub
Hallo Herr Hornemann,
als Solidworks-Ein(Um)steiger bin ich auf der Suche nach geeigneten Quellen zur Einarbeitung in die Solidworks-API.
Mit ihren Videos und Code-Beispielen habe das gefunden und kann ihre Arbeit nur loben.
Zu meinem Problem/Wunsch:
Ich möchte während einer Makro-Ausführung durch den User eine Auswahl eines bestimmten Objekts (z. B. Punkt einer Skizze) ermöglichen, der nicht immer der selbe ist und dessen Eigenschaften dann weiterverarbeiten.
Das Makro läuft nach dem Setzen der Nachricht (SendMsgToUser2) aber weiter, ohne dass ich eine Selektion vornehmen kann.
Ich kann das Objekt leider nicht vor dem Start des Makros bereits selektieren.
Wie könnte ich das am geschicktesten lösen?
Habe noch keine passende Methode gefunden, die auf eine entsprechende Eingabe wartet.
Mir würde nur eine Schleifenkonstruktion einfallen, die regelmäßig den Rückgabewert GetSelectedObjectCount2 prüft bis eine Auswahl erfolgt ist.
Hallo Herr Weber,
es freut mich sehr, dass meine Arbeit Ihnen helfen konnte.
Ein Makro zu pausieren oder unterbrechen und an der Stelle fortsetzen zu lassen, ist meines Wissens nach nicht möglich. Da müsste man schon auf die Programmierung eines Addins oder Stand-Alone setzen. Zu diesen beiden Möglichkeiten werde ich auch noch irgend wann einmal kommen, aber das liegt noch in recht weiter Ferne. Mein vorrangiges Anliegen ist erstmal die Programmierung von Makros und das bereitstellen der Grundlagen. Das Gute ist allerdings, wenn die Makroprogrammierung gut verstanden wurde und umgesetzt werden kann, dann ist die Programmierung von einem Addin oder Stand-Alone nicht mehr schwer.
Ich würde dieses Problem, welches Sie beschrieben haben, durch zwei Makros erstmal lösen. Das erste Makro läuft dann bis zu dem Punkt an dem der User den Punkt auswählt und das zweite Makro ab diesem Punkt.
Gerne können wir bei weiteren Problemen auch ein Online Meeting dazu machen.
Gruß
Bernd Hornemann