| | |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
|
Autor
|
Thema: API-Verknuepfung (2053 mal gelesen)
|
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur

 Beiträge: 3743 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 01. Dez. 2008 09:55 <-- editieren / zitieren --> Unities abgeben:         
Moin, ich versuche hier über ein Makro eine Symmetrie-Verknüpfung zwischen drei Ebenen von drei Komponenten zu erstellen. Kleiner Code-Schnipsel: 'Dritte Verknüpfung MateName = strCompName + "_Symetrie" FirstSelection = "Ebene4@" + rahmenname(1) & "@" + baugruppenname SecondSelection = "Ebene2@" + strCompName & "@" + baugruppenname ThirdSelection = "Ebene2@" + steuername & "@" + baugruppenname Set swDocExt = swModel.Extension swModel.ClearSelection2 (True) boolstat = swDocExt.SelectByID2(FirstSelection, "PLANE", 0, 0, 0, True, 1, Nothing, swSelectOptionDefault) boolstat = swDocExt.SelectByID2(SecondSelection, "PLANE", 0, 0, 0, True, 1, Nothing, swSelectOptionDefault) boolstat = swDocExt.SelectByID2(ThirdSelection, "PLANE", 0, 0, 0, True, 4, Nothing, swSelectOptionDefault) MsgBox (mateError) Set matefeature = swAssy.AddMate3(swMateSYMMETRIC, swMateAlignALIGNED, False, 0, 0, 0, 0, 0, 0, 0, 0, False, mateError) MsgBox (mateError) matefeature.Name = MateName Funktioniert leider nicht. Das Makro bleibt in der letzten Zeile mit Fehler stehen. Die erste MSG-Box zeigt "1" (kein Fehler), die zweite "0" (unbek. Fehler). Im SW-Fenster sind zu diesem Zeitpunkt die richtigen drei Ebenen ausgewählt. Händisch funktioniert die Zuweisung der Verknüpfung ohne Probleme. Auch andere Verknüpfungen, die durch das Makro gesetzt werden, klappen problemlos. Nur nicht diese verd.... Symmetrie... Suche hier im Forum ergibt leider nicht viel. Google liefert hauptsächlich chinesisch. Makro aufzeichnen bringt auch nicht viel, da dort AddMate2 benutzt wird, was dann aber auch nicht funzt. Erkennt von Euch vielleicht jemand einen offensichtlichen Fehler oder könnte einen Code-Auszug posten, wo erfolgreich eine Symmetrie-Verknüpfung über ein Makro gesetzt wird? SW-Office 2007 SP5 Danke. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Baumjäger Mitglied CAD/PDM Administrator
 
 Beiträge: 339 Registriert: 21.06.2006 SW2017 - S5.0 AutoCAD Mechanical 2018 Win10 Intel Xeon E3-1240 V2 3,4GHz 16GB RAM NVIDIA Quadro 4000
|
erstellt am: 01. Dez. 2008 10:51 <-- editieren / zitieren --> Unities abgeben:          Nur für Torsten Niemeier
mal so ein ahnungsloser Schuss ins blaue... (aus der Hilfe) (long) Mark Value that you want to use as a mark; this value is used by other functions that require ordered selection nach X,Y,Z, true kommt diese Zahl. Du verwendest zweimal die eins einmal die vier. Vielleicht musst du diese Zahlen ändern? Möglicherweise gibst du damit die mittlere Ebene an? viele Grüße Andy
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur

 Beiträge: 3743 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 01. Dez. 2008 11:33 <-- editieren / zitieren --> Unities abgeben:         
Hallo Andy, genauso ist es. Mit dem Marker "4" wird die gewünschte Symmetrieebene gekennzeichnet. Passiert so beim Makro-Aufzeichnen und steht irgendwo auch so in der Hilfe. Ich hatte aber trotzdem schon alle Werte zwischen 1 und 8 ausprobiert, aber davon wird es leider nicht besser. Trotzdem Danke. Gruß, Torsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Liebezeit Mitglied Dipl.-Ing. Maschinenbau, CSWP
 
 Beiträge: 114 Registriert: 01.07.2005 2007 SP5.0 2008 SP4.0 2009 SP3.0
|
erstellt am: 01. Dez. 2008 13:32 <-- editieren / zitieren --> Unities abgeben:          Nur für Torsten Niemeier
Hallo Torsten, kommt denn beim selektieren bei der Variable "boolstat" auch true zurück? Wenn nein, dann wird schon nicht richtig selektiert und die Verknüpfung geht schief. HTH, Thomas ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur

 Beiträge: 3743 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 01. Dez. 2008 14:26 <-- editieren / zitieren --> Unities abgeben:         
Hallo Thomas, kann ich mir mal anzeigen lassen. Ich bin mir aber sehr sicher, daß die Auswahl klappt, denn nach dem Abbruch des Makros sind im SW-Fenster die richtigen drei Ebenen ausgewählt. Falls ich mich sonst bei der Benennung verschreibe, dann fehlt in SW normalerweise die Markierung der Ebene, die ich falsch benannt habe. Gruß, Torsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HaPe Mitglied Dipl. Ing Maschinenbau, Konstrukteur, CAD-Admin
   
 Beiträge: 1096 Registriert: 27.11.2001 i7 CPU 960@3.20GHz 8GB Ram Quadro 2000 4GB 70GB Raid 0 WIN7 prof. SP1 64 bit SWX 2010 SP5.0 SWX 2012 SP5.0 SWX 2013 SP5.0
|
erstellt am: 01. Dez. 2008 14:35 <-- editieren / zitieren --> Unities abgeben:          Nur für Torsten Niemeier
|
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur

 Beiträge: 3743 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 01. Dez. 2008 14:42 <-- editieren / zitieren --> Unities abgeben:         
|
Baumjäger Mitglied CAD/PDM Administrator
 
 Beiträge: 339 Registriert: 21.06.2006 SW2017 - S5.0 AutoCAD Mechanical 2018 Win10 Intel Xeon E3-1240 V2 3,4GHz 16GB RAM NVIDIA Quadro 4000
|
erstellt am: 01. Dez. 2008 15:27 <-- editieren / zitieren --> Unities abgeben:          Nur für Torsten Niemeier
was mir noch einfällt, setz mal nach "Set matefeature = swAssy.AddMate3(swMateSYMMETRIC, swMateAlignALIGNED, False, 0, 0, 0, 0, 0, 0, 0, 0, False, mateError)" ein swmodel.clearselection2(true). Das hat bei mir glaub ich mal geholfen, warum auch immer das nötig ist. viele Grüße Andy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur

 Beiträge: 3743 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 01. Dez. 2008 16:24 <-- editieren / zitieren --> Unities abgeben:         
|
Thomas Liebezeit Mitglied Dipl.-Ing. Maschinenbau, CSWP
 
 Beiträge: 114 Registriert: 01.07.2005 2007 SP5.0 2008 SP4.0 2009 SP3.0
|
erstellt am: 02. Dez. 2008 10:46 <-- editieren / zitieren --> Unities abgeben:          Nur für Torsten Niemeier
Hallo Zusammen, habe mal versucht das Problem nachzustellen. Habe es immerhin geschafft, daß kein "MateError" kommt, aber eine Verknüpfung wird auch nicht erstellt. Aber evtl. kann jemand darauf aufbauen. Die Selektion funktioniert (es wird true zurück gegeben). Aber dennoch wird kein Objekt bei AddMate3 erzeugt. Durch das fehlende Objekt kommt es dann zu einem Fehler. Die dazugehörige Baugruppe und das Makro ist auch im Anhang. Code:
Option ExplicitSub main() Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swAssemblyDoc As SldWorks.AssemblyDoc Dim boolstat As Boolean Dim MateName As String Dim FirstSelection As String Dim SecondSelection As String Dim ThirdSelection As String Dim swDocExt As SldWorks.ModelDocExtension Dim mateError As Long Dim baugruppenname As String Dim matefeature As SldWorks.Mate2 Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc Set swAssemblyDoc = swApp.ActiveDoc Set swDocExt = swModel.Extension baugruppenname = "Assem" swModel.ClearSelection2 True FirstSelection = "Ebene vorne@" & "Part-1" & "@" & baugruppenname SecondSelection = "Ebene vorne@" & "Part-2" & "@" & baugruppenname ThirdSelection = "Ebene vorne@" & "Part-3" & "@" & baugruppenname boolstat = swDocExt.SelectByID2(FirstSelection, "PLANE", 0, 0, 0, True, 1, Nothing, swSelectOptionDefault) boolstat = swDocExt.SelectByID2(SecondSelection, "PLANE", 0, 0, 0, True, 1, Nothing, swSelectOptionDefault) boolstat = swDocExt.SelectByID2(ThirdSelection, "PLANE", 0, 0, 0, True, 4, Nothing, swSelectOptionDefault) 'MsgBox (mateError) Set matefeature = swAssemblyDoc.AddMate3(swMateSYMMETRIC, swMateAlignALIGNED, False, 0, 0, 0, 0, 0, 0, 0, 0, False, mateError) swModel.ClearSelection2 True matefeature.Name = "Symmetrie CAD.de" MsgBox (mateError) End Sub
Grüße, Thomas ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur

 Beiträge: 3743 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 02. Dez. 2008 10:54 <-- editieren / zitieren --> Unities abgeben:         
Hallo Thomas, vielen Dank für die Mühe und für die Bestätigung des Problems. Bekommst Du wirklich keinen MateError? Bei mir ist MateError zu diesem Zeitpunkt jedesmal 0-also UnknownError, während 1 wohl das Ziel ist. Es scheint aber wohl erstmal nicht möglich zu sein, über ein Makro eine Symmetrie-Verknüpfung zu setzen. Ich habe gestern noch ein wenig mit den Markern und einigen Haltepunkten nach der Selektion herumgespielt, bin aber noch nicht weitergekommen. Gruß, Torsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Baumjäger Mitglied CAD/PDM Administrator
 
 Beiträge: 339 Registriert: 21.06.2006 SW2017 - S5.0 AutoCAD Mechanical 2018 Win10 Intel Xeon E3-1240 V2 3,4GHz 16GB RAM NVIDIA Quadro 4000
|
erstellt am: 02. Dez. 2008 12:22 <-- editieren / zitieren --> Unities abgeben:          Nur für Torsten Niemeier
bei mir kommt mit diesem Makro nach der Auswahl schon der Fehler 0 (also unbekannt), Markiert wird trotzdem. am Ende kommt dann Fehler 4. Edit: sorry, Fehler 4 kommt nur wenn ich matename ausklammere, ansonsten objekt oder with block variable nicht festgelegt...
[Diese Nachricht wurde von Baumjäger am 02. Dez. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Liebezeit Mitglied Dipl.-Ing. Maschinenbau, CSWP
 
 Beiträge: 114 Registriert: 01.07.2005 2007 SP5.0 2008 SP4.0 2009 SP3.0
|
erstellt am: 02. Dez. 2008 13:43 <-- editieren / zitieren --> Unities abgeben:          Nur für Torsten Niemeier
Oh ja, sorry. Bekomme 0 zurück, hatte dies für Fehlerfrei gehalten. Kannst auch mal beim API Support nachfragen. Dann kannst Du Dir sicher sein, ob oder ob es nicht funktioniert. Grüße, Thomas ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Baumjäger Mitglied CAD/PDM Administrator
 
 Beiträge: 339 Registriert: 21.06.2006 SW2017 - S5.0 AutoCAD Mechanical 2018 Win10 Intel Xeon E3-1240 V2 3,4GHz 16GB RAM NVIDIA Quadro 4000
|
erstellt am: 02. Dez. 2008 13:56 <-- editieren / zitieren --> Unities abgeben:          Nur für Torsten Niemeier
|
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur

 Beiträge: 3743 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 02. Dez. 2008 16:53 <-- editieren / zitieren --> Unities abgeben:         
|
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur

 Beiträge: 3743 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 04. Dez. 2008 18:29 <-- editieren / zitieren --> Unities abgeben:         
Hier die versprochene Antwort (und die Frage): Summary : Problems with swMatSYMMETRIC
Dear Support, I am trying to add a symmetric mate to an assembly with the following code-segment: 'Dritte Verknüpfung MateName = strCompName + "_Symmetrie" FirstSelection = "Ebene4@" + rahmenname(1) & "@" + baugruppenname SecondSelection = "Ebene2@" + strCompName & "@" + baugruppenname ThirdSelection = "Ebene2@" + steuername & "@" + baugruppenname Set swDocExt = swModelExtension swModel.ClearSelection2 (True) boolstat = swDocExt.SelectByID2(FirstSelection, "PLANE", 0, 0, 0, True, 1, Nothing, swSelectOptionDefault) boolstat = swDocExt.SelectByID2(SecondSelection, "PLANE", 0, 0, 0, True, 1, Nothing, swSelectOptionDefault) boolstat = swDocExt.SelectByID2(ThirdSelection, "PLANE", 0, 0, 0, True, 4, Nothing, swSelectOptionDefault) 'MsgBox (mateError) Set matefeature = swAssy.AddMate3(swMateSYMMETRIC, swMateAlignALIGNED, False, 0, 0, 0, 0, 0, 0, 0, 0, False, mateError) 'MsgBox (mateError) matefeature.Name = MateName This doesn't work. The Macro stops in the last line with the runtime-error '91'. In the SolidWorks-Window I can see, that the correct planes are selected when the macro stops. Adding the same mate manualy is no problem. Other mates (coincident), that are added to the assembly by the macro work fine, but not the 'swmatesymmetric'. Is it simply not possible to add a symmetric-mate via a VB-Macro? Even a recorded macro with a symmetric mate doesn't work. My System: SW-Office 2007 SP5 Thanks. (sorry for the bad english) Mit freundlichen Grüßen / Kind regards BKK / Konstruktion Torsten Niemeier __________________________________________________________________ Dear Torsten,
Unfortunally this is the known issue. The AssemblyDoc::AddMate3 fails to create symmetric mate for reference planes and the corresponding SPR is opened (FYI SPR 336894). You are getting the runtime error 91 since you try to call method of null object (in this case Feature::Name). The macro recording tool is also fails with this mate. It records excess parameters for the AssemblyDoc::AddMate2 method. This issue is also known (FYI SPR 438454). The possible workarounds to are: 1) Using of faces as "Entities to mate" instead of reference planes: ... boolstat = swDocExt.SelectByID2("", "FACE", <Face1X>, <Face1Y>, <Face1Z>, True, 1, Nothing, swSelectOptionDefault) boolstat = swDocExt.SelectByID2("", "FACE", <Face2X>, <Face2Y>, <Face2Z>, True, 1, Nothing, swSelectOptionDefault) boolstat = swDocExt.SelectByID2(ThirdSelection, "PLANE", 0, 0, 0, True, 4, Nothing, swSelectOptionDefault) ... 2) Using different mate types which can position the models the same as Symmetric mate. For example "Distance" mate: a) calculate the distance between two planes (for example using measure tool API) b) add mate using half the distance gotten before. Regards, Igor Kryuchkov SolidWorks API Support Gruß, Torsten
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur

 Beiträge: 3743 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 04. Dez. 2008 18:40 <-- editieren / zitieren --> Unities abgeben:         
BTW  , obwohl die Antwort letztendlich negativ ist, halte ich die ganze Sache für eine wirklich ordentliche Support-Leistung: - schnelle Bestätigung des Service-Request - schnelle Antwort - zwei mögliche Workarounds ... da fühlt man sich doch irgendwie geborgen... Gruß, Torsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |