SolidWorks MakroMania - Alle Komponenten fixieren

SolidWorks MakroMania ist eine Beispielsammlung einiger Makros, die Ihnen eine Vorstellung davon geben soll, was man auch schon mit Makros in SolidWorks alles anstellen kann. Der Code des Makros sollte so gut dokumentiert sein, dass Sie damit ohne weitere Anleitung verstehen, was gemacht wird.

< voriges
MakroMania
Übersicht


nächstes >

Nummer 06
Alle Komponenten fixieren

Download
ZIP, 1 KB

Ich übernehme keine Haftung für die korrekte Funktion der Routinen oder irgendwelcher Schäden bei der Anwendung dieser Beispiele. Das gesamte Risiko trägt der Benutzer selbst. - Sorry, muss sein.

Wenn Sie schon einmal eine größere Baugruppe per IGES oder STEP bekommen haben kennen Sie das Problem: alle Komponenten sind gegeneinander ausgerichtet, aber es kommen keinerlei Verknüpfungen mit. Und da SolidWorks nicht in der Lage ist mehrere Komponenten gleichzeitig zu fixieren geht eine wahre Rechts-Klick-Orgie los.

Hier kann ein Makro helfen, das einfach alle Komponenten auf der obersten Ebene fixiert.

Update für SolidWorks 2003

Das unten stehende Makro ist ab SolidWorks 2003 nicht mehr notwendig. Jetzt können einfach auf oberster Ebene mehreren Komponenten wie gewohnt selektiert werden und alle gleichzeitig fixiert / entfixiert werden.

Aber für "ältere" Versionen oder als Beispiel wie man die oberste Ebene einer Baugruppe durchläuft bleibt das hier noch stehen. 

' **********************************************************************
' * Makro fixiert alle Komponenten der obersten Ebene in einer Baugruppe
' * Dies kann insbesondere bei importierten Baugruppen hilfreich sein,
' * wenn alle Komponenten korrekt gegeneinander ausgerichtet sind und
' * in genau diesem Zustand bleiben sollen. SolidWorks selbst kann eine
' * Mehrfachselektion von Komponenten nicht fixieren sondern fixiert
' * immer nur die erste selektierte Komponente.
' *
' * 07.04.2001 Stefan Berlitz (stefan.berlitz@solidworks.cad.de)
' * http://solidworks.cad.de
' * http://swtools.cad.de
' **********************************************************************

Dim SwApp As Object
Dim AssemblyDoc As Object
Dim Component As Object
Dim ComponentName As String

Dim Titel As String
Dim Selection As String

Const swDocPART = 1
Const swDocASSEMBLY = 2
Const swDocDRAWING = 3

Sub Main()
    ' an SolidWorks anklinken (als Makro läuft's im selben Przess-Space)
    Set SwApp = CreateObject("SldWorks.Application")
    Set AssemblyDoc = SwApp.ActiveDoc

    If AssemblyDoc Is Nothing Then
        ' dann war gar kein Dokument geöffnet, wie soll da was funktionieren
        MsgBox "Kein Dokument geöffnet"
        Exit Sub
    End If
    If (AssemblyDoc.GetType <> swDocASSEMBLY) Then
        ' wenn keine Assembly aktiv ist wird das Makro wieder beendet
        MsgBox "Nur für Baugruppen geeignet"
        Exit Sub
    End If

    Titel = AssemblyDoc.GetTitle
    ' und die Endung mit dem .sldasm abschneiden, wenn vorhanden. Bei alten
    ' Baugruppennamen mit *.asm entsprechend anpassen
    If (InStr(Titel, ".sldasm") > 0) Then
       Titel = Left(Titel, InStr(Titel, ".sldasm") - 1)
    End If

    ' dann eine Komponente nach der anderen in der Baugruppe durchgehen.
    Set Component = AssemblyDoc.FirstFeature
    Do While Not Component Is Nothing
        ' den Namen der Komponente zusammenstellen und selektieren
        ComponentName = Component.Name
        Selection = ComponentName & "@" & Titel
        If (AssemblyDoc.SelectByID(Selection, "COMPONENT", 0, 0, 0)) Then
            ' wenn die Selektion geklappt hat wird die Komponente unterdrückt
            AssemblyDoc.FixComponent
        End If
        Set Component = Component.GetNextFeature
    Loop

End Sub

Zurück zum Seitenanfang

hr.gif (4491 Byte)

counter Kritik und Anregungen bitte an Stefan Berlitz. Letzte Änderung dieser Seite am Donnerstag, 01. Februar 2007 17:40