| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | | |  | Im Fokus: CAD Automation & CPQE Hamburg, eine Veranstaltung am 11.09.2025
|
Autor
|
Thema: API Makro Programmierung // - Aufzeichnung (1234 mal gelesen)
|
Zitruswalter Mitglied Student DHBW

 Beiträge: 15 Registriert: 15.01.2010
|
erstellt am: 15. Jan. 2010 15:14 <-- editieren / zitieren --> Unities abgeben:         
Hallo Zusammen, im Rahmen einer Studienarbeit soll ich die Konstruktion einer größeren Baugruppe auf ihre "Automatisierbarkeit" hin untersuchen. Versuche momentan, mich in VBA zurechtzufinden. Testweise zeichne ich hierfür immer wieder Makros auf mit dem Makrorekorder. Insbesondere die Makros, die dazu dienen sollen Einzelteile zu verknüpfen führen dabei zu Fehlern ("Laufzeitfehler 13: Typen unvertäglich"). Die fehlerhaften Zeilen sehen dabei immer gleich aus: Set myMate = Part.AddMate2(5, 1, False, 0.004, 0.004, 0.004, 0.001, 0.001, 0.001, 0, 0.5235987755983, 0.5235987755983, longstatus, 0, 0, 0, 0, 0, 1, False, False, False, False) Nun habe ich hier bereits gelesen, dass das wohl auf die Anzahl der Parameter von Set myMate zurückzuführen sei, habe aber keine Lösung gefunden. Kann mir jemand weiter helfen ? Vielen Dank Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)

 Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 15. Jan. 2010 15:41 <-- editieren / zitieren --> Unities abgeben:          Nur für Zitruswalter
Hallo Zitruswalter, und herzlich willkommen im SolidWorks Brett auf CAD.de  Hast du diesen Beitrag hier zum selben Thema gefunden und durchgelesen? Wenn ja, was hast du daran nicht verstanden? Und was hast du jetzt versucht und nicht hinbekommen? Die Lösung ist eigentlich recht simpel: AddMate2 hat genau 12 Paraeter, diese stehen in de APi Hilfe beschrieben, da brauchst du nur nachlesen. Zur aktuellen AddMate3 gibt es sogar Beispiele in der API Hilfe. Immer dran denken: der Makrorecorder ist ein Betrüger, die API Hilfe ist dein Freund  Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Stefans SolidWorks Blog Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Zitruswalter Mitglied Student DHBW

 Beiträge: 15 Registriert: 15.01.2010
|
erstellt am: 18. Jan. 2010 13:29 <-- editieren / zitieren --> Unities abgeben:         
Vielen Dank für den Hinweis, die angegebenen Beiträge habe ich wie bereits erwähnt gelesen. Habe mir nun mal das Beispiel aus der API Hilfe angeschaut ("Add Distance Mates Example"). Hierbei ist durch "SelectByID" die Möglichkeit gegeben, direkt auf Kanten ... usw zuzugreifen. Jedoch bekomme ich auch dieses Makro nicht zum laufen... Das Problem liegt wohl an der Zeile boolStat = swApp.ActiveDoc.Extension.SelectByID2("Fläche<1>@PLATINE", "PLANE", 0, 0, 0, True, mateSelMark, Nothing, swSelectOptionDefault) Ist der Fehler für jemand ersichtlich ? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)

 Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 18. Jan. 2010 13:48 <-- editieren / zitieren --> Unities abgeben:          Nur für Zitruswalter
Hallo Zitruswalter, ohne den kompletten Code und vor allem die Fehlermeldung bleibt nur Glaskugel: Zitat: Original erstellt von Zitruswalter: Das Problem liegt wohl an der Zeile boolStat = swApp.ActiveDoc.Extension.SelectByID2("Fläche<1>@PLATINE", "PLANE", 0, 0, 0, True, mateSelMark, Nothing, swSelectOptionDefault)Ist der Fehler für jemand ersichtlich ?
Ich vermute, dass dein aktives Teil nicht PLATINE heißt und/oder die Ebene, die du selektieren willst nicht "Fläche". Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Stefans SolidWorks Blog Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
    
 Beiträge: 1764 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 18. Jan. 2010 13:52 <-- editieren / zitieren --> Unities abgeben:          Nur für Zitruswalter
Hallo Zitruswalter also ich hab mich mal ein wenig mit dem Thema Beugruppen autom. zu erstellen gespielt. Meine Meinung dazu ist, dass es am Besten ist, wenn Du den Elementen die Du zum Verknüpfen benötigst eindeutige Namen zuordnest. Damit erschlägst Du zwei Fliegen mit einer Klappe 1. ist die Ausrichtung immer gleich 2. kannst Du die Elemente einfach über den Namen selektieren ------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Zitruswalter Mitglied Student DHBW

 Beiträge: 15 Registriert: 15.01.2010
|
erstellt am: 18. Jan. 2010 13:56 <-- editieren / zitieren --> Unities abgeben:         
Ja, nun fällt mir auch auf, dass der Beitrag etwas unvollständig ist Code:
ption Explicit Dim swApp As SldWorks.SldWorks Dim assy As SldWorks.AssemblyDoc Dim longstatus As Long Dim mateFeature As Object Dim mateSelMark As Long Dim boolStat As Boolean Dim numberOfMatesCreated As Long Sub main() Set swApp = Application.SldWorks Set assy = swApp.ActiveDoc mateSelMark = 1 numberOfMatesCreated = 0 ' Frame #1 ' Front plane Mate assy.ClearSelection2 True boolStat = swApp.ActiveDoc.Extension.SelectByID2("Fläche<1>@PLATINE", "PLANE", 0, 0, 0, True, mateSelMark, Nothing, swSelectOptionDefault) If Not boolStat Then MsgBox "Selection error! " & "Platine" boolStat = swApp.ActiveDoc.Extension.SelectByID2("Fläche<2>@rohling-1", "PLANE", 0, 0, 0, True, mateSelMark, Nothing, swSelectOptionDefault) If Not boolStat Then MsgBox "Selection error! " & "Rohling" Set mateFeature = assy.AddMate3(5, 0, False, 2.54000000001016E-02, 0, 0, 0, 0, 0, 0, 0, False, longstatus) If mateFeature Is Nothing Then MsgBox "Frame #1 : Front plane mate failed! " Else numberOfMatesCreated = numberOfMatesCreated + 1 End If assy.ClearSelection2 True Dim strMessage As String strMessage = "Number of mates created = " strMessage = strMessage + CStr(numberOfMatesCreated) MsgBox strMessage End Sub Das Makro bricht folgendermaßen ab: ... Selection Error Platine ... ... Selection Error Rohling ... ... Front Plane Mate failed ... Quasi das volle Programm. Der Tipp mit den Namen ist sicherlicht nicht schlecht. Ich versuche ja im prinzip zwei Flächen mit Abstand zu verknüpfen. Kann ich auch Flächen einen bestimmten Namen geben? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
    
 Beiträge: 1764 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 18. Jan. 2010 14:22 <-- editieren / zitieren --> Unities abgeben:          Nur für Zitruswalter
|
nahe Ehrenmitglied
    
 Beiträge: 1764 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 18. Jan. 2010 14:30 <-- editieren / zitieren --> Unities abgeben:          Nur für Zitruswalter
ich würde mal meinen, dass die Option "PLANE" nicht stimmt "Fläche<1>@PLATINE", "PLANE" weil damit, so wie ich das in der Hilfe lese, eine Referenzebene und keine Fläche gemeint ist meiner Meinung nach müsste dort "FACE" stehen. ------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Zitruswalter Mitglied Student DHBW

 Beiträge: 15 Registriert: 15.01.2010
|
erstellt am: 18. Jan. 2010 14:32 <-- editieren / zitieren --> Unities abgeben:         
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |