Anwenden von Abhängigkeitsreferenzen in VBA

Hallo ihr alle

Im Rahmen eines Projekts bin ich gefordert, die Montage unserer Produkte in Solidworks so weit wie möglich zu automatisieren.

Die Idee ist, von unserer Excel-Datei auszugehen, die den Namen und den Pfad der zu montierenden Komponenten enthält.

Ich habe ein erstes Makro erstellt, das diese 2 Spalten extrahiert, um sie zu einer leeren Excel-Datei hinzuzufügen (die ich als "Software" für Benutzer des Programms verwende)

Sobald diese Informationen hinzugefügt wurden, wird Solidworks durch Klicken geöffnet und jedes der Teile in der Liste zu einer neuen Baugruppendatei hinzugefügt.

So weit so gut!

Um die Baugruppe, wie ich erklärt habe, zu optimieren, habe ich jeder Komponente Abhängigkeitsreferenzen hinzugefügt, damit sie sich gegenseitig "erkennen" und auf die gewünschte Weise zusammenbauen. Wenn ich jedoch mein Programm starte, sind die Teile einfach übereinander geöffnet... Ich habe versucht, die Manipulation manuell durchzuführen, indem ich das Makro aufzeichnete, aber in der erhaltenen Datei habe ich den Eindruck, dass der Klick auf "Smartmates" oder "Alt"+Gezogen nicht erkannt wird.

Haben Sie eine Idee, welchen Code ich dafür verwenden könnte?

Vielen Dank im Voraus,

Anthony M. 

Hallo Anthony;

Es gibt ein Beispiel für ein Makro (VB) zum Hinzufügen eines Teils in einer Baugruppe, um es zu erzwingen, anzupassen....

->http://help.solidworks.com/2020/English/api/sldworksapi/Add_Component_and_Mate_Example_VB.htm?verRedirect=1

(Achtung, für dieses Makro ist ein Klassenmodul erforderlich)

Andernfalls wird hier die VB-Zeile zum Hinzufügen von Constraints kommentiert:

http://help.solidworks.com/2016/English/api/sldworksapi/SOLIDWORKS.Interop.sldworks~SOLIDWORKS.Interop.sldworks.IAssemblyDoc~AddMate5.html

Herzliche Grüße.

1 „Gefällt mir“

Hallo und vielen Dank für diese Antwort.

Mit dieser Methode ist es möglich, Abhängigkeiten zwischen Teilen auf der Grundlage von Referenzen wie Achsen und Ebenen hinzuzufügen.

Meine ursprüngliche Idee war, jedem Bauteil eine "Spannungsreferenz" zuzuweisen und diese automatisch in der Baugruppe zu verwenden.

Ist das möglich?

Hallo

Ich für meinen Teil konnte in den APIs nichts finden, um dies zu tun.

Herzliche Grüße

Hallo

Vielen Dank für Ihre Nachricht, also werde ich nach anderen Lösungen suchen.

Herzliche Grüße

Ich habe etwas Ähnliches gemacht

Ich habe meinen Teilen Koordinatensysteme hinzugefügt

dann habe ich die addmate API verwendet

 

    Teil1 = AuswählenPcNameIece1 + "@" + Teilname1 + "@" + Baugruppe
    Teil2 = AuswählenPcNameIece2 + "@" + Teilname2 + "@" + Baugruppe
    
    Hinzugefügte Einschränkung
    swModel.Extension.SelectByID2 Piece1, "COORDSYS", 0, 0, 0, True, 0, Nichts, 0
    swModel.Extension.SelectByID2 Piece2, "COORDSYS", 0, 0, 0, True, 0, Nichts, 0
    swModel.AddMate5 20, -1, False, 0, 0, 0, 0, 0, 0, 0, 0, 0, False, False, 0, longstatus
    Part.ClearSelection2 Wahr
    Teil.EditRebuild3

Hallo gdm,

Vielen Dank für diese Antwort. 

Wenn ich das richtig verstehe, verwendet dieses Programm keine Smartmates, sondern besteht darin, für jedes Teil unterschiedliche Koordinatensysteme an den Verbindungsstellen zu definieren und dann diese Systeme miteinander zusammenfallen zu lassen, um die Baugruppe zu erstellen. Stimmt das?

Ich gehe davon aus, dass diese Funktion die magnetischen Einschränkungen verwendet:

https://www.youtube.com/watch?v=IZCqdfRWyqs

A.Mastromauro

Absolut, einfacher zu verwalten, unpraktisch ist es notwendig, die Koordinatensysteme vorzubereiten

 

 

Okay danke, ich werde alle meine Teile modifizieren, um sie mit dieser Methode kompatibel zu machen.

Auf der anderen Seite, wenn ich das richtig verstehe, blockiert das Erstellen einer Baugruppe auf diese Weise alle Relativbewegungen der Teile?