Folge 19 – Benutzer Auswahl auswerten: Grundlage

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

Kommentare 2

  • 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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert