| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| Profitieren Sie von 3DEXPERIENCE® und beschleunigen Sie Ihre Simulationen |
Autor
|
Thema: Assembly über API(VB) (1050 mal gelesen)
|
joohwa Mitglied studentin
Beiträge: 13 Registriert: 06.03.2006
|
erstellt am: 09. Mrz. 2006 15:07 <-- editieren / zitieren --> Unities abgeben:
Hallo habe ein Problem, und zwar Assembly über API.schon ein sldprt-datei in solidworks geladen. da kommt immer eine Meldung. Das heißt, objektvariable nicht festgelegt. oder manchmal syntaxfehler. wie kann ich tun weiter. das ist mein Macro.(visual basic) ----------------------------------------------------------------- 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 Dim AssemblyDoc As Object
Sub main() Const x = 0 Const y = 10 Const z = 10 Set swApp = CreateObject("SldWorks.Application") Set Part = swApp.ActiveDoc swApp.Visible = True retval = AssemblyDoc.AddComponent("C\Dokumente und Einstellungen\MA\Eigene Dateien\HIWI\SolidWorks\Greifer1.sldprt", x, y, z) End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lutz Federbusch Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau
Beiträge: 3094 Registriert: 03.12.2001 alle SW seit 97+ AutoCAD2016-2022 ERP ProAlpha + CA-Link Intel Core i7-7820K 32GB Win10x64 Quadro K5000 SpacePilot
|
erstellt am: 09. Mrz. 2006 15:17 <-- editieren / zitieren --> Unities abgeben: Nur für joohwa
|
joohwa Mitglied studentin
Beiträge: 13 Registriert: 06.03.2006
|
erstellt am: 09. Mrz. 2006 15:23 <-- editieren / zitieren --> Unities abgeben:
hallo lutz danke für deinen Hinweis. nach dem c : habe ich zugeführt. aber ich weiss nicht wie man retval definiert. oddr ohne retval kann ich assembly führen? Kannst du noch mal ein Tipp geben? Danke aus Stutt [Diese Nachricht wurde von joohwa am 09. Mrz. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lutz Federbusch Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau
Beiträge: 3094 Registriert: 03.12.2001 alle SW seit 97+ AutoCAD2016-2022 ERP ProAlpha + CA-Link Intel Core i7-7820K 32GB Win10x64 Quadro K5000 SpacePilot
|
erstellt am: 09. Mrz. 2006 15:31 <-- editieren / zitieren --> Unities abgeben: Nur für joohwa
Schreibe mal unter die anderen Dim-Zeilen noch diese: Dim retval as boolean Damit definierst Du eine boolsche Variable, die die Werte True oder False haben kann und Dein AddComponent gibt solch einen Wert je nach Erfolg der Operation zurück. Bekommst Du nun eine andere Meldung oder geht es jetzt?! ------------------ Lutz Federbusch Mein Gästebuch [Diese Nachricht wurde von Lutz Federbusch am 09. Mrz. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joohwa Mitglied studentin
Beiträge: 13 Registriert: 06.03.2006
|
erstellt am: 09. Mrz. 2006 15:34 <-- editieren / zitieren --> Unities abgeben:
danke Lutz aber bei retval bekomme eine Meldung. objektvariable nich festgelegt. wie kann ich weiter? danke für deine sofortige antwort!! Gruss joohwa ------------------------------------------ retval = AssemblyDoc.AddComponent("C:\Dokumente und Einstellungen\MA\Eigene Dateien\HIWI\SolidWorks\Greifer1.sldprt", x, y, z) -----------------------------
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Oberparleiter Mitglied Konstrukteur
Beiträge: 706 Registriert: 06.06.2000 Celsius R630, P4 Xeon 3,2 3GB Ram, 2x24" an FX3500 U320 SCSI, SWX 2011 SP4.0 WinXP SP3 Nicht weil es schwer ist, wagen wir es nicht, sondern weil wirs nicht wagen, ist es schwer.
|
erstellt am: 09. Mrz. 2006 15:51 <-- editieren / zitieren --> Unities abgeben: Nur für joohwa
Hallo Entweder noch das "AssemblyDoc" durch "Part" ersetzen oder das "Part" durch "AssemblyDoc" Dann natürlich noch einen Neuaufbau (retval = ModelDoc2.EditRebuild3 ( )) damit die Änderungen angezeigt werden. Müsste dann so aussehen: 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 Dim AssemblyDoc As Object Dim retval as Boolean Sub main() Const x = 0 Const y = 10 Const z = 10 Set swApp = CreateObject("SldWorks.Application") Set Part = swApp.ActiveDoc swApp.Visible = True retval = Part.AddComponent("C:\Dokumente und Einstellungen\MA\Eigene Dateien\HIWI\SolidWorks\Greifer1.sldprt", x, y, z) retval = Part.EditRebuild3 () End Sub ------------------ Gruss Frank O.
[Diese Nachricht wurde von Oberparleiter am 09. Mrz. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joohwa Mitglied studentin
Beiträge: 13 Registriert: 06.03.2006
|
erstellt am: 09. Mrz. 2006 16:02 <-- editieren / zitieren --> Unities abgeben:
|
Oberparleiter Mitglied Konstrukteur
Beiträge: 706 Registriert: 06.06.2000 Celsius R630, P4 Xeon 3,2 3GB Ram, 2x24" an FX3500 U320 SCSI, SWX 2011 SP4.0 WinXP SP3 Nicht weil es schwer ist, wagen wir es nicht, sondern weil wirs nicht wagen, ist es schwer.
|
erstellt am: 09. Mrz. 2006 16:05 <-- editieren / zitieren --> Unities abgeben: Nur für joohwa
Also genau dieses Proggi geht bei mir. Es muss eine neue Baugruppe offen und Activ sein. Der Greifer muss auch im Hintergrund offen sein. x,y und z würde ich aber zuerst auf 0 setzen da das Teil ausserhalb der Anzeige eingefügt wird. Stimmt der Pfad von dem Greifer vielleicht nicht? ------------------ Gruss Frank O. [Diese Nachricht wurde von Oberparleiter am 09. Mrz. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joohwa Mitglied studentin
Beiträge: 13 Registriert: 06.03.2006
|
erstellt am: 09. Mrz. 2006 16:22 <-- editieren / zitieren --> Unities abgeben:
danke für deine Hilfe. Endlich erfolgriech gegangen. Jetzt würde ich 2 Teile in Baugruppe laden. Da habe ich hinter retval von addcomponet. retval = Part.AddComponent("C:\Dokumente und Einstellungen\MA\Eigene Dateien\HIWI\SolidWorks\bitte_schokoeier1.sldprt", x, y, z) auch dazu geschrieben. aber der zuerst genannte Teil d.h Pulver ist nicht sichtbar. aber die 2 Teile sind geladen. wie kann ich wieter tun? gruss Joohwa Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
Beiträge: 1747 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: 10. Mrz. 2006 07:51 <-- editieren / zitieren --> Unities abgeben: Nur für joohwa
Hallo Joohwa versuch es mal mit dem angefügten Code Du musst nur den Dateinamen anpassen Zur Erklärung: in Deinem Makro wird der Variablen "AssemblyDoc" kein Wert zugeordnet, also kannst Du sie auch nicht bei "AssemblyDoc.AddComponent" verwenden. Grüße Heinz ' Teil in Baugruppe einfügen ' Voraussetzungen: ' Eine Baugruppendatei ist geöffnet und aktiv ' Das Bauteil ist geladen
Sub main() Dim swApp As Object Dim boolstatus As Boolean Dim AssemblyDoc As Object Const x = 0 Const y = 10 Const z = 10 Set swApp = CreateObject("SldWorks.Application") swApp.Visible = True Set AssemblyDoc = swApp.ActiveDoc boolstatus = AssemblyDoc.AddComponent("E:\dd\00012437.SLDPRT", x, y, z) If boolstatus = False Then MsgBox "Teil konnte nicht eingefügt werden!", vbOKOnly, "Fehler" Set AssemblyDoc = Nothing Set swApp = Nothing Exit Sub End If ' Rebuild (damit das einfeügte Teil sichtbar wird) boolstatus = AssemblyDoc.ForceRebuild3(False) ' Zoom to Fit AssemblyDoc.ViewZoomtofit2 End Sub
------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |