| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| Mission 3D-Druck – die Zukunft der Fertigung Mai |
Autor
|
Thema: Makro Frage (1643 mal gelesen)
|
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 31. Okt. 2005 14:38 <-- editieren / zitieren --> Unities abgeben:
Ich habe ein Marko aufgezeichnet um mir das Leben zu errleichtern. Doch das Gegenteil schein der Fall zu sein!!! Wenn ich eine Beziehung Abstand Null per Knopf "Verknüpfung" mache und dort "0" eingege, dann nimmt SWX die best mögliche Variante! Doch wenn ich nun ein Makro aufzeichne, nimmt das Makro genau DIESE an, welche aufgezeichnet wurde! Bis vor kurzem war das nie ein Problem... wieso jetzt? Code:
' ****************************************************************************** ' C:\DOKUME~1\4126\LOKALE~1\Temp\swx1424\Macro1.swb - macro recorded on 07/13/04 by 4126 ' ****************************************************************************** Dim swApp As Object Dim Part As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Dim FeatureData As Object Dim Feature As Object Dim Component As Object Sub main()Set swApp = Application.SldWorks Set Part = swApp.ActiveDoc Set Feature = Part.AddMate2(5, -1, True, 0, 0, 0, 1, 1, 0, 0.5235987755983, 0.5235987755983, longstatus) Part.ClearSelection2 True End Sub
------------------ you can't change the world but you can leave a dent ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Müller Mitglied Masch. Ing. HTL / Betriebsing. STV
Beiträge: 1151 Registriert: 11.04.2001
|
erstellt am: 31. Okt. 2005 15:52 <-- editieren / zitieren --> Unities abgeben: Nur für G. Dawg
Hmmm... viel kann ich nicht dazu sagen. Was mir aber auffällt ist, dass in der API-Help kein "AddMate2" mehr vorhanden ist (SWX 2006). In SWX 2005 SP2 wurde offenbar "AddMate3" neu eingeführt. Dieses benötigt aber 13 Parameter und nicht nur 12 (wenn ich richtig gezählt habe ). Vielleicht führt das nun zu Problemen? ------------------ Gruss Andreas A+E Müller AG Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 31. Okt. 2005 15:56 <-- editieren / zitieren --> Unities abgeben:
Öööhm?! Was Du da sagst, heisst eigentlich, dass ich das Makro neu Aufnehmen sollte? Werde das gleich mal versuchen....! Vielen Dank für den Hinweis! ------------------ you can't change the world but you can leave a dent ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 31. Okt. 2005 16:08 <-- editieren / zitieren --> Unities abgeben:
Code:
' ****************************************************************************** ' C:\Temp\swx2688\Macro1.swb - macro recorded on 10/31/05 by fuerer_g ' ****************************************************************************** Dim swApp As Object Dim Part As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Dim FeatureData As Object Dim Feature As Object Dim Component As Object Sub main()Set swApp = Application.SldWorks Set Part = swApp.ActiveDoc swApp.ActiveDoc.ActiveView.FrameState = 1 Set Feature = Part.AddMate2(5, 1, True, 0, 0, 0, 1, 1, 0, 0.5235987755983, 0.5235987755983, longstatus) Part.ClearSelection2 True End Sub
Es hat sich wirklich was geändert. Aber nicht AddMate2 zu AddMate3... Was ich gleich sehe, ist, dass es nun 5, 1 heisst und nicht mehr 5, -1!! Wenn ich nun 2 Flächen mit dem Abstand 0 versehen will, wird mein Teil rotiert und nicht die nächst möglich Lösung angewandt! GRRRRR!!! In der API-Help steht: Zitat: when the mate is applied to the closest position that meets the mate condition specified by dist or angle, then setting flip to TRUE jumps the assembly to the other possible mate position.
Naja... TRUE steht ja im Makro... aber steht es an der richtigen Stelle??? Keine Ahnung!Ich finde es nur komisch, dass es letzte Woche noch 100% funktioniert hat und nun nicht mehr!!! Ist da der Faktor WXP darin begraben? Vielen Dank schon mal für Euren Input! ------------------ you can't change the world but you can leave a dent ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 31. Okt. 2005 16:17 <-- editieren / zitieren --> Unities abgeben:
|
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 01. Nov. 2005 07:54 <-- editieren / zitieren --> Unities abgeben:
|
Andreas Müller Mitglied Masch. Ing. HTL / Betriebsing. STV
Beiträge: 1151 Registriert: 11.04.2001
|
erstellt am: 01. Nov. 2005 08:20 <-- editieren / zitieren --> Unities abgeben: Nur für G. Dawg
|
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 01. Nov. 2005 08:31 <-- editieren / zitieren --> Unities abgeben:
Hm?! So auf den ersten Blick scheint dies zu funkionieren...! Ich werde diese Option mal auf den Teststand setzen!!! Vielen Dank Andreas! ------------------ you can't change the world but you can leave a dent ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Müller Mitglied Masch. Ing. HTL / Betriebsing. STV
Beiträge: 1151 Registriert: 11.04.2001
|
erstellt am: 01. Nov. 2005 08:34 <-- editieren / zitieren --> Unities abgeben: Nur für G. Dawg
|
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 02. Nov. 2005 07:58 <-- editieren / zitieren --> Unities abgeben:
...keine Ahnung an was es liegt!!!! Aber ich habe immernoch, zwischendurch, fehlerhafte Verknüpfungen! Ich muss dan jedesmal die Verknüpfung bearbeiten und den Status "auf andere Seite" ändern... mühsam... wirklich mühsam! ------------------ you can't change the world but you can leave a dent ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jens_oliver Mitglied Softwareentwickler
Beiträge: 114 Registriert: 28.06.2005
|
erstellt am: 02. Nov. 2005 10:26 <-- editieren / zitieren --> Unities abgeben: Nur für G. Dawg
Hallo, hier ein paar Anmerkungen. AddMate verknüpft die beiden selektierten Feature. Im Makro vielleicht die beiden Feature selektieren Konstanten über den Namen ansprechen swMateCOINCIDENT und nicht den Integer Wert (Wert kann sich bei Versionswechsel vielleicht ändern) Bauteile zuerst positionieren wenn man swMateAlignCLOSEST (flip=FALSE) benutzt. (z.B. zwei Koordinatensysteme zur Deckung bringen) Wenn man die Bauteile (Instanzen) nicht positioniert gibt es zwei Lösungen (flip=FLASE oder TRUE). Welche Richtig ist hängt davon ab wie die Bauteile im Raum liegen. Mal kann TRUE richtig sein Mal FALSE. Daher zuerst positionieren und dann flip auf FALSE setzten. Gruß Oliver Knepper ---------- Software nach Maß für Ihr CAD System www.ib-knepper.de
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Müller Mitglied Masch. Ing. HTL / Betriebsing. STV
Beiträge: 1151 Registriert: 11.04.2001
|
erstellt am: 02. Nov. 2005 10:34 <-- editieren / zitieren --> Unities abgeben: Nur für G. Dawg
Noch eine Idee: Baue in Dein Makro ein Form ein. Da kannst Du wählen, ob die Verknüpfung gereht werden soll oder nicht. Dazu müsste die Verknüpfung (vor der Abfrage) erst als reine Positionierung eingefügt werden. ------------------ Gruss Andreas A+E Müller AG Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 02. Nov. 2005 10:38 <-- editieren / zitieren --> Unities abgeben:
Hallo, Oliver! Vielen Dank für Dein Input! "AddMate verknüpft die beiden selektierten Feature." ->Meine zwei Features (Flächen) sind bereits selektiert, wenn ich das Makro abrufe. "Konstanten über den Namen ansprechen. swMateCOINCIDENT und nicht den Integer Wert " -> geht das denn genau gleich wie mit dem AddMate? Wie Du siehst, ich habe das Makro aufgezeichnet. Ich persönlich kann keine Makros schreiben (totale Niete in VB -> unlogisch für mich! PHP geht mir einfacher ). Zitat: Original erstellt von jens_oliver: Hallo,hier ein paar Anmerkungen. AddMate verknüpft die beiden selektierten Feature. Im Makro vielleicht die beiden Feature selektieren Konstanten über den Namen ansprechen swMateCOINCIDENT und nicht den Integer Wert (Wert kann sich bei Versionswechsel vielleicht ändern) Bauteile zuerst positionieren wenn man swMateAlignCLOSEST (flip=FALSE) benutzt. (z.B. zwei Koordinatensysteme zur Deckung bringen) Wenn man die Bauteile (Instanzen) nicht positioniert gibt es zwei Lösungen (flip=FLASE oder TRUE). Welche Richtig ist hängt davon ab wie die Bauteile im Raum liegen. Mal kann TRUE richtig sein Mal FALSE. Daher zuerst positionieren und dann flip auf FALSE setzten. Gruß Oliver Knepper ---------- Software nach Maß für Ihr CAD System www.ib-knepper.de
------------------ you can't change the world but you can leave a dent ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 02. Nov. 2005 10:41 <-- editieren / zitieren --> Unities abgeben:
Andreas, Wie ich schon gesagt habe: ich kann keine Makros schreiben! Dazu bin ich nicht geeignet! Bis jetzt, hat irgend jemand immer vor mir das Problem schon gelöst bekommen und ich konnte nur noch übernehmen. Doch das hier geht über mich hinaus. Wenn es so kompliziert ist, dann lass ich das lieber sein! Trotzdem! Vielen, vielen Dank! Zitat: Original erstellt von Andreas Müller: Noch eine Idee: Baue in Dein Makro ein Form ein. Da kannst Du wählen, ob die Verknüpfung gereht werden soll oder nicht. Dazu müsste die Verknüpfung (vor der Abfrage) erst als reine Positionierung eingefügt werden.
------------------ you can't change the world but you can leave a dent ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Müller Mitglied Masch. Ing. HTL / Betriebsing. STV
Beiträge: 1151 Registriert: 11.04.2001
|
erstellt am: 02. Nov. 2005 11:48 <-- editieren / zitieren --> Unities abgeben: Nur für G. Dawg
Ich meinte, so sollte es gehen: Option Explicit ' ****************************************************************************** ' C:\Temp\swx2688\Macro1.swb - macro recorded on 10/31/05 by fuerer_g ' Edited 02.11.2005 by Andreas Müller ' ****************************************************************************** Dim swApp As Object 'Dim swApp As SldWorks.SldWorks Dim Part As Object 'Dim Part As SldWorks.ModelDoc2 Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Dim FeatureData As Object Dim Feature As Object 'Dim Component As Object Sub main() Set swApp = Application.SldWorks Dim Retval As Integer Dim Alignment As Long Alignment = 1 Set Part = swApp.ActiveDoc swApp.ActiveDoc.ActiveView.FrameState = 1 Set Feature = Part.AddMate3(5, Alignment, False, 0, 0, 0, 1, 1, 0, 0.5235987755983, 0.5235987755983, True, longstatus) Do Until Retval = vbNo Retval = MsgBox("drehen ? ", vbYesNo, "Positionierung") If Retval = vbYes Then If Alignment = 0 Then Alignment = 1 Else Alignment = 0 End If Set Feature = Part.AddMate3(5, Alignment, False, 0, 0, 0, 1, 1, 0, 0.5235987755983, 0.5235987755983, True, longstatus) End If Loop Set Feature = Part.AddMate3(5, Alignment, False, 0, 0, 0, 1, 1, 0, 0.5235987755983, 0.5235987755983, False, longstatus) Part.ForceRebuild Part.ClearSelection2 True End Sub
------------------ Gruss Andreas A+E Müller AG Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 02. Nov. 2005 11:55 <-- editieren / zitieren --> Unities abgeben:
Funktioniert EINWANDFREI!!!! Doch nochmals zu meiner Frage: WIESO findet das doofe VB nicht selber heraus, welche Art Verknüpgung es braucht, wenn schon 2 Flächen angewählt und grob ausgerichtet sind? Das verstehe ich nicht!! Bis vor Kurzem hat noch alles funktioniert....?! Naja! So geht es auch! VIELEN UNDENDLICHEN DANK!!!!! ------------------ you can't change the world but you can leave a dent ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Müller Mitglied Masch. Ing. HTL / Betriebsing. STV
Beiträge: 1151 Registriert: 11.04.2001
|
erstellt am: 02. Nov. 2005 12:05 <-- editieren / zitieren --> Unities abgeben: Nur für G. Dawg
|
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 02. Nov. 2005 13:01 <-- editieren / zitieren --> Unities abgeben:
[edit] ok! habe etwas kaputt gemacht! Ich dachte, ich könnte einfach nur die DO LOOP herausnehmen um dies zu übergehen... FALSCH! So wie es aussieht, brauche ich diese Abfrage... [/edit] [Diese Nachricht wurde von G. Dawg am 02. Nov. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 02. Nov. 2005 13:30 <-- editieren / zitieren --> Unities abgeben:
OK!!!! Habe es mit unserem VB-Spezi herausgefunden!! (Ohne Andreas' Müller und Andreas Wegmüller (heheheee! der heisst wirklich so!!) hätte ich es nie geschafft!! Hier ist das "New and Improved" Makro:Code:
' ****************************************************************************** ' C:\Temp\swx2688\Macro1.swb - macro recorded on 10/31/05 by fuerer_g ' Edited 02.11.2005 by Andreas Müller ' ****************************************************************************** Dim swApp As Object 'Dim swApp As SldWorks.SldWorks Dim Part As Object 'Dim Part As SldWorks.ModelDoc2 Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Dim FeatureData As Object Dim Feature As Object 'Dim Component As ObjectSub main() Set swApp = Application.SldWorks Dim Retval As Integer Dim Alignment As Long Set Part = swApp.ActiveDoc swApp.ActiveDoc.ActiveView.FrameState = 1 Set Feature = Part.AddMate3(5, 2, False, 0, 0, 0, 1, 1, 0, 0.5235987755983, 0.5235987755983, False, longstatus) Part.ForceRebuild Part.ClearSelection2 True End Sub
PS: Käch: duesch de das Makro no ustusche bi Dir ufem Server!! Du Forum-Geist! Edit: Andreas Müller: Kann ich Dir irgendwie so 1000 Unities überweisen????? Denn diese Makro erpart mir soooooo viel Arbeit!!! [Diese Nachricht wurde von G. Dawg am 02. Nov. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Müller Mitglied Masch. Ing. HTL / Betriebsing. STV
Beiträge: 1151 Registriert: 11.04.2001
|
erstellt am: 02. Nov. 2005 13:58 <-- editieren / zitieren --> Unities abgeben: Nur für G. Dawg
Zitat: Original erstellt von G. Dawg: ...Edit: Andreas Müller: Kann ich Dir irgendwie so 1000 Unities überweisen????? Denn diese Makro erpart mir soooooo viel Arbeit!!!
Bei Überweisungen in dieser Grössenordnung müsstest Du schon mit unserem Admin Stefan spechen. Das gibt sonst eine Wahnsinnsklickerei ! Aber auch ohne Unit's: freut mich, dass ich Dir helfen konnte :freu: ! ------------------ Gruss Andreas A+E Müller AG Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |