Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API Makro Programmierung // - Aufzeichnung

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
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


Sehen Sie sich das Profil von Zitruswalter an!   Senden Sie eine Private Message an Zitruswalter  Schreiben Sie einen Gästebucheintrag für Zitruswalter

Beiträge: 15
Registriert: 15.01.2010

erstellt am: 15. Jan. 2010 15:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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)



Sehen Sie sich das Profil von StefanBerlitz an!   Senden Sie eine Private Message an StefanBerlitz  Schreiben Sie einen Gästebucheintrag für StefanBerlitz

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Zitruswalter 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Zitruswalter an!   Senden Sie eine Private Message an Zitruswalter  Schreiben Sie einen Gästebucheintrag für Zitruswalter

Beiträge: 15
Registriert: 15.01.2010

erstellt am: 18. Jan. 2010 13:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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)



Sehen Sie sich das Profil von StefanBerlitz an!   Senden Sie eine Private Message an StefanBerlitz  Schreiben Sie einen Gästebucheintrag für StefanBerlitz

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Zitruswalter 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von nahe an!   Senden Sie eine Private Message an nahe  Schreiben Sie einen Gästebucheintrag für nahe

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Zitruswalter 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Zitruswalter an!   Senden Sie eine Private Message an Zitruswalter  Schreiben Sie einen Gästebucheintrag für Zitruswalter

Beiträge: 15
Registriert: 15.01.2010

erstellt am: 18. Jan. 2010 13:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von nahe an!   Senden Sie eine Private Message an nahe  Schreiben Sie einen Gästebucheintrag für nahe

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Zitruswalter 10 Unities + Antwort hilfreich

Ja, Du kannst jedem Element einen Namen geben
einfach Element anwählen Rechts-Klick und
dann Flächeneigenschaften oder Kanteneigenschaften

------------------
Grüße
Heinz

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

nahe
Ehrenmitglied



Sehen Sie sich das Profil von nahe an!   Senden Sie eine Private Message an nahe  Schreiben Sie einen Gästebucheintrag für nahe

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Zitruswalter 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Zitruswalter an!   Senden Sie eine Private Message an Zitruswalter  Schreiben Sie einen Gästebucheintrag für Zitruswalter

Beiträge: 15
Registriert: 15.01.2010

erstellt am: 18. Jan. 2010 14:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

habe ich schon versucht... funktioniert leider auch nicht !

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz