Makro zum Extrahieren von Bemaßungen aus Solidworks

Hallo ihr alle

Ich arbeite an der Automatisierung eines CAD/CAM-Prozesses und möchte in der Lage sein, aus einem Teil oder einer Solidworks-Baugruppe die Abmessungen und ihre Abmessungen (für jede Funktion des Teils/der Teile) in eine externe Datei zu extrahieren.

Dank Herrn Boutherand an einem alten Artikel von ''myCadblog'' habe ich ein Makro gefunden, das es Ihnen ermöglicht, diese Daten über eine Excel-Datei zu extrahieren. Nur dieses Makro scheint veraltet zu sein (siehe Code unten).

Können Sie mir helfen, es zu aktualisieren? (Zu Ihrer Information: Ich bin auf Solidworks 2014)

Vielen Dank im Voraus für Ihr Feedback!

Römisch

 

  • Sub AddAllDimensions()
  • Dim swDisplayDimension As SldWorks.DisplayDimension
  • Dim swDimension als SldWorks.Dimension
  • Dim swFeature als SldWorks.Feature
  • Bei Fehler GoTo SiErr
  • 'Ruft die SolidWorks Anwendung ab
  • Set swApp = CreateObject("SldWorks.Application")
  • "Wir erhalten das aktive Dokument
  • Festlegen von swDoc = swApp.ActiveDoc
  • 'Ruft die erste Funktion ab
  • Festlegen von swFeature = swDoc.FirstFeature
  •     
  • Wenn swFeature nichts ist, dann
  • MsgBox "Das Dokument ist leer", vbExclamation
  • Sub beenden
  • Ende, wenn
  •  
  • Tun
  • "Bei jeder Funktion rufen wir die Dimensionen ab
  • Set swDisplayDimension = swFeature.GetFirstDisplayDimension
  • Wenn nicht, ist swDisplayDimension nichts, dann
  • Tun
  • Set swDimension = swDisplayDimension.GetDimension
  • Zur Liste hinzufügen
  • Aufrufen von AddDimToSheet(swDisplayDimension)
  • Set swDisplayDimension = swFeature.GetNextDisplayDimension(swDisplayDimension)
  • Schleife, bis swDisplayDimension nichts ist
  • Ende, wenn
  • Set swFeature = swFeature.GetNextFeature
  • Schleife, bis swFeature nichts ist
  •  
  • Sub beenden
  •  
  • SiErr:
  • Festlegen von swDisplayDimension = Nichts
  • Zusammenfassung Weiter
  • Ende Sub

 

 

1 „Gefällt mir“

Möglicherweise handelt es sich um ein Problem mit der 32-Bit- bis 64-Bit- oder VBA-Makrosprache

http://help.solidworks.com/2013/French/WhatsNew/c_application_programming_interface_wn2012.htm?format=P

@+ ;-)

1 „Gefällt mir“

Ich habe das Makro leicht verändert, es listet jetzt die Quoten und deren Werte auf

Alles, was Sie tun müssen, ist, Ihre Behandlungen hinzuzufügen

Da ist sie 

 


macro1.zip
8 „Gefällt mir“

@gt22: Danke  , ich werde mir das Dokument genau ansehen.

 

@jfaradon: Vielen Dank für die Makroänderung, in der Tat stellt es die Abmessungen wieder her, aber nur unter Solidworks, indem es eine msgbox anzeigt, oder?

Grundsätzlich läuft das Makro in einer Excel-Datei, um die Dimensionen in Zellen extrahieren zu können.

 

Ist es möglich, es in Excel auszuführen? 

 

Vielen Dank für Ihre schnellen Antworten!

Guten Abend

 

Nur eine kurze Frage, extrahieren Sie die Werte, ok, aber wenn Sie Toleranzen haben, wie wird es mit der CAD/CAM-Bearbeitung sein?

Weil ich die Frage sehr interessant finde, aber dieser Punkt über die Toleranzen macht mich turlupinisch!

 

Vielen Dank.

2 „Gefällt mir“

Guten Abend Matthieu, 

 

Toleranzen spielen in unserem industriellen Prozess keine Rolle (seltsame Aussage aus dem Zusammenhang gerissen:) ), aber es ist so. Die Anwendung ist etwas ganz Besonderes, weit entfernt von den klassischen mechanischen Präzisionen...

Was ich bei der Konstruktion brauche, ist dank einer Bibliothek von Funktionen, in der die Bearbeitung in ihren Formen standardisiert ist (Skizze + Materialabtragsfunktion) und für die ich die Abmessungen der Abmessungen jedes Mal neu definiere, um meine Teile zu zeichnen und zusammenzubauen. 

Aus der Zeichnung jedes Teils oder der Baugruppe möchte ich eine Nomenklatur für jedes Teil, die auf jedes Teil angewendeten Funktionen (die Bearbeitung in der Produktion) und die Abmessungen, die ich für jede Funktion verwendet habe, extrahieren. Das Fertigungsprogramm benötigt nur die Namen der Teile, die auf diese Teile angewendeten Merkmale und einige der Bemaßungen, die die Positionierung der Merkmale auf dem Teil definieren (die Position der Bearbeitung in der Produktion).

 

Das ist die Geschichte. :)

 

Gute Nacht. 

2 „Gefällt mir“

Hallo ihr alle

Ich habe es endlich geschafft, das Makro zum Laufen zu bringen! 

Das Ergebnis finden Sie im Anhang...

Auf der anderen Seite scheint es nur für Teile und nicht für Baugruppen zu funktionieren, während es keine .part-Spezifikation im Makrocode gibt, ist das normal?

 

Schönen Tag!

 

 


extraction_test.jpg

Römisch

 

Hier ist eine Änderung, um die Baugruppen zu berücksichtigen

Der Code für das Feature Value Retrieve Part ist derselbe

 

 

 

Dim swApp als SldWorks.SldWorks

Dim swDoc As SldWorks.ModelDoc2

Dim swAss As SldWorks.AssemblyDoc

Dim swPart als SldWorks.PartDoc

Dim swFeature als SldWorks.Feature

 

Sub main()

 

 

    Bei Fehler GoTo SiErr

    'Ruft die SolidWorks Anwendung ab

    Set swApp = CreateObject("SldWorks.Application")

    "Wir erhalten das aktive Dokument

    Festlegen von swDoc = swApp.ActiveDoc

    

    Case swDoc.GetType auswählen

        Box swDocumentTypes_e.swDocPART

            Legen Sie swPart = swDoc fest

            Aufrufen von TraverseFeature(swPart)

        Box swDocumentTypes_e.swDocASSEMBLY

            Setze swAss = swDoc

            Dim swKomponenten als Variante

            swComponents = swAss.GetComponents(Falsch)

            Für i = 0 TB UBound(swComponents)

                Rufen Sie TraverseFeature(swComponents(i) auf. GetModelDoc)

            Weiter i

        Feld swDocumentTypes_e.swDocDRAWING

            MsgBox "Nicht geplant", vbExclamation

            Ende

    Ende Auswahl

    

 

SiErr:

    MsgBox Err.Description, vbCritical

    Ende

Ende Sub

 

Sub TraverseFeature(ByRef swDoc As SldWorks.ModelDoc2)

    Dim swDisplayDimension As SldWorks.DisplayDimension

    Dim swDimension als SldWorks.Dimension

    Dim swFeature als SldWorks.Feature

 

    ' Wenn das Dokument nicht existiert (z. B. nicht verfügbar, Komponente gelöscht)

    Wenn swDoc nichts ist, dann sub beenden

    

    

    'Ruft die erste Funktion ab

    Festlegen von swFeature = swDoc.FirstFeature

    

    Wenn swFeature nichts ist, dann

        MsgBox "Das Dokument ist leer", vbExclamation

        Sub beenden

    Ende, wenn

 

    Tun

        "Bei jeder Funktion rufen wir die Dimensionen ab

        Set swDisplayDimension = swFeature.GetFirstDisplayDimension

        Wenn nicht, ist swDisplayDimension nichts, dann

            Tun

                Set swDimension = swDisplayDimension.GetDimension

                Zur Liste hinzufügen

                If MsgBox(swDimension.FullName & " = " & swDimension.GetValue2(""), vbOKCancel, swDoc.GetTitle) = vbCancel then End

                Set swDisplayDimension = swFeature.GetNextDisplayDimension(swDisplayDimension)

            Schleife, bis swDisplayDimension nichts ist

        Ende, wenn

        Set swFeature = swFeature.GetNextFeature

    Schleife, bis swFeature nichts ist

 

    Sub beenden

 

SiErr:

    MsgBox Err.Description, vbCritical

    Ende

Ende Sub

9 „Gefällt mir“

Guten Abend Jfaradon, 

 

Tut mir leid, ich habe gerade festgestellt, dass du es warst, der das ursprüngliche Makro und die zugehörige Excel-Datei entwickelt hat... :S

 

Vielen Dank für Ihren neuen Code, aber ich habe Probleme, ihn in den aktuellen Satz von Makros in der Excel-Datei zu integrieren. Muss ich den gesamten ''Sub AddAlldimensions()'' Code durch den neuen ersetzen? Ich war heute nicht im BE, um zu testen...

 

Vielen Dank.

 

Gute Nacht. 

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Hallo!

 

Ich habe das Ganze heute Morgen integriert, es funktioniert!!

Ich habe ''i'' als Ganzzahl deklariert und das ist in Ordnung. 

 

Auf der anderen Seite habe ich nur einen Fehler msgbox am Ende (siehe beigefügtes Bild) Ich kann nicht sehen, woher es kommt...

 

Vielen Dank auf jeden Fall. Ich hatte nicht den Reflex von Foren, wenn es um Design geht, und Ihre Fähigkeiten und Reaktionsfähigkeit sind außergewöhnlich.

 

Schönen Tag!

 

Römisch


msgbox_error.jpg

Hallo, was müssen Sie hinzufügen, um es in einer Excel-Datei zu extrahieren? Oder TXT? 

2 „Gefällt mir“

Hallo und vielen Dank für diesen Code. Ich habe versucht, es als Inspiration zu verwenden, um Dimensionen als Anmerkungen in einer Baugruppe zu extrahieren. Deshalb stelle ich hier meine Frage, die mir vernünftiger erscheint.

Die Bemaßungen (zwischen 2 Komponenten) haben einen Namen des Typs RD1@annotations. Ist es möglich, über ein Makro auf ihre Werte zuzugreifen? Ich habe in der API nachgesehen, aber ich trockne aus (FeatureByName?)

Zweite Frage in der gleichen Reihenfolge: Ich möchte den Wert eines Contarrinte in der Montage kontrollieren.

Ziel ist es, einen Winkel zu variieren und die gemessenen Bemaßungen durch Anmerkungen direkt in Excel abzurufen.

Danke für Ihre Hilfe.

1 „Gefällt mir“
Hallo, die alten Fragen werden in diesem Forum nur sehr wenig befolgt, da es keine Möglichkeit gibt, nach letzter Aktivität zu sortieren. Wenn Sie eine Frage haben, zögern Sie nicht, sie im Forum zu stellen, und dort haben Sie schnelle Antworten!