| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| HEDELIUS Hausmesse 2024 |
Autor
|
Thema: Komponente einfügen mit Makro (5256 mal gelesen)
|
General Engineer Mitglied Konstrukteur
Beiträge: 122 Registriert: 02.08.2006 Solid Works 2014 SP4 HPZ 800 Xeon 3,33;12 GB RAM Quadro 4000;SSD Dell M4700 I5-2,8;Quadro K2000;8GB Ram;SSD
|
erstellt am: 18. Dez. 2011 10:48 <-- editieren / zitieren --> Unities abgeben:
Hallo Solid Works Gemeinde, ich möchte mehr direkt Zugriffe auf Kaufteile Ordner. Aus diesem Grund habe ich ein Makro erzeugt, dass per Komponenete einfügen in den gewünschten Ordner wechselt und das gewählte Teil an Koordinate XYZ einfügt. Dann habe ich einfach im Pfad von addcomponent den Dateinamen und die Koordinaten gelöscht. Jetzt zeigt der Pfad nur noch auf den Ordner und ich kann jedes im Ordner beliebige Teil wählen und wo ich will einbauen. Dachte ich !!! Leider nicht! Das Makro funktioniert nicht mehr. Ich habe jetzt seit 3h rumprobiert, wie ich es schaffe das nicht immer das gleiche Teil gewählt und an die gleichen Koordinaten gehängt wird. Leider kein Erfolg. Hat jemand von euch einen Tipp was meienm Makro fehlt und kann den Sonntag retten ? Schönen Sonntag. Gruß GE
------------------ Solid Works 2010 SP5 Keytech Pro 11 HP Workstation Xeon 3,06;8 GB Ram, FX 1800 Xeon 3,33;12 GB RAM Quadro 4000;SSD 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: 19. Dez. 2011 09:26 <-- editieren / zitieren --> Unities abgeben: Nur für General Engineer
Was funktioniert nun nicht?! Du mußt für jede nächste Komponente wieder den Pfad+Dateinamen komplett haben. Dann sollte auch das AddComponent gehen. Weißt Du die Dateinamen oder holst Du sie erst noch (mit Dir-Befehl o.ä.)? ------------------ Lutz Federbusch Mein Gästebuch Der Mensch, Herr oder Sklave der Technik? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3189 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 19. Dez. 2011 10:05 <-- editieren / zitieren --> Unities abgeben: Nur für General Engineer
Hallo, da gibt es doch irgendwie einen Datei-Auswahl-Dialog. für mich hört es sich so an, als würde versucht, bei AddComponent den Dateiname am Ende zu löschen, und damit schon den Auswahl-Dialog zu bekommen. Dafür sollte es aber Beispiele geben auf der Tauschbörse ... Gruß, Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
General Engineer Mitglied Konstrukteur
Beiträge: 122 Registriert: 02.08.2006 Solid Works 2014 SP4 HPZ 800 Xeon 3,33;12 GB RAM Quadro 4000;SSD Dell M4700 I5-2,8;Quadro K2000;8GB Ram;SSD
|
erstellt am: 19. Dez. 2011 11:50 <-- editieren / zitieren --> Unities abgeben:
Hallo, vielen Dank für eure Antworten. @L.Federbusch: Ich möchte nicht immer ein bestimmtes Teilan eine fixe Position einbauen,sondern die Auswahlbox wie beim Befehl Komponente einfügen. Damit ich aus allen Teilen dieses Ordners z.B. Festo wählen und neu plazieren kann. @Christian W. : Genau so ein Beispiel mit einem Auswahlfenster wie beim Befehl "Komponente einfügen > Durchsuchen" gibt es nicht. Habe sowohl die deutschen als auch die us Makroseiten (z.B. Lenny abgegrast. Aus diesem Grund würde ich mich ja über einen Tipp wie diese Auswahlbox programmiert wird, extrem freuen. Gruß GE
------------------ Solid Works 2010 SP5 Keytech Pro 11 HP Workstation Xeon 3,06;8 GB Ram, FX 1800 Xeon 3,33;12 GB RAM Quadro 4000;SSD 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: 19. Dez. 2011 12:05 <-- editieren / zitieren --> Unities abgeben: Nur für General Engineer
|
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: 19. Dez. 2011 15:37 <-- editieren / zitieren --> Unities abgeben: Nur für General Engineer
Hallo GE anbei so eine Listenbefüllung Du musst halt in Dein Formular eine Listbox einfügen Das mit der Koordinateneingabe wird wohl etwas schwierig, zumindest hab ich nur die Lösung, vor dem Makrostart einen Punkt auszuwählen an den das Teil "gehängt" wird. Private Sub UserForm_Initialize() ListBox1.Clear Pfad1 = "C:\Users\USERNAME\Documents\*.sldprt" Name1 = Dir(Pfad1, vbNormal) Do While Name1 <> "" If Name1 <> "." And Name1 <> ".." Then ListBox1.AddItem Name1 End If Name1 = Dir Loop End Sub
------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3189 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 19. Dez. 2011 16:05 <-- editieren / zitieren --> Unities abgeben: Nur für General Engineer
Hallo Asche auf mein Haupt ... hätt ich mal genauer nachgeschaut ... bei uns ist es auch ein Makro mit Listbox fürs Blöcke einfügen. und für den fileopen Dialog mit SWX hab ich auf die Schnelle auch kein Beispiel gefunden. Das war wohl mit excel ... Gruß, Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
General Engineer Mitglied Konstrukteur
Beiträge: 122 Registriert: 02.08.2006 Solid Works 2014 SP4 HPZ 800 Xeon 3,33;12 GB RAM Quadro 4000;SSD Dell M4700 I5-2,8;Quadro K2000;8GB Ram;SSD
|
erstellt am: 23. Dez. 2011 11:03 <-- editieren / zitieren --> Unities abgeben:
@Heinz: Danke für Dein Beispiel. Ich komme damit auch nicht zum Ziel. Habe in das Einfüge Makro ein User Form mit List Box und entsprechenden Pfad mit sldprts eingefügt. Habe dann im Modul Allgemein Main den beim Aufzeichnen des Makros angelegten Pfad gegen die Variable Pfad 1 getauscht. Sub main () Set swApp Application.Sld.Works Set Part = sw.App.ActiveDoc boolstatus = Part.AddComponent (Pfad1) Das Makro wird zwar ohne Fehler gestartet aber es passiert nichts.
------------------ Solid Works 2010 SP5 Keytech Pro 11 HP Workstation Xeon 3,06;8 GB Ram, FX 1800 Xeon 3,33;12 GB RAM Quadro 4000;SSD 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: 23. Dez. 2011 11:27 <-- editieren / zitieren --> Unities abgeben: Nur für General Engineer
|
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: 23. Dez. 2011 11:42 <-- editieren / zitieren --> Unities abgeben: Nur für General Engineer
so kann es meiner Meinung auch nicht funktionieren Pfad1 ist ja nur dazu da das zu durchsuchende Verzeichnis zu definieren meine Befüllungsroutine füllt nur die Listbox mit Dateinamen
Du musst eine Datei aus der Listbox auswählen und diese kann dann z.B.: mit einem Doppelklick in der Liste eingefügt werden. Dazu musst Du natürlich einen Programmteil für das Doppelklick Ereignis der Listbox schreiben.
------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
General Engineer Mitglied Konstrukteur
Beiträge: 122 Registriert: 02.08.2006 Solid Works 2014 SP4 HPZ 800 Xeon 3,33;12 GB RAM Quadro 4000;SSD Dell M4700 I5-2,8;Quadro K2000;8GB Ram;SSD
|
erstellt am: 23. Dez. 2011 17:47 <-- editieren / zitieren --> Unities abgeben:
Puh das ist ja Kompliziert. Warum kann ich denn nicht den Einfuegebrowser von Solid Works ansprechen. Pfad1 ist der Pfad wie in dem Beispiel von Heinz beschrieben. Mit Suche nach *.sldprt. Ich verstehe die Verbindung zwischen UserForm ListBox und dem Hauptmakro noch nicht. Gruß GE Gruß GE.
------------------ Solid Works 2010 SP5 Keytech Pro 11 HP Workstation Xeon 3,06;8 GB Ram, FX 1800 Xeon 3,33;12 GB RAM Quadro 4000;SSD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
General Engineer Mitglied Konstrukteur
Beiträge: 122 Registriert: 02.08.2006 Solid Works 2014 SP4 HPZ 800 Xeon 3,33;12 GB RAM Quadro 4000;SSD Dell M4700 I5-2,8;Quadro K2000;8GB Ram;SSD
|
erstellt am: 02. Jan. 2012 15:09 <-- editieren / zitieren --> Unities abgeben:
Gutes neues Jahr allen CAD.DE Usern. Gibts etwas neues zu meiner Frage vor Weihnachten wie ich User Form Befüllmakro und Hauptmakro "verheirate". Gruß GE ------------------ Solid Works 2010 SP5 Keytech Pro 11 HP Workstation Xeon 3,06;8 GB Ram, FX 1800 Xeon 3,33;12 GB RAM Quadro 4000;SSD 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: 03. Jan. 2012 08:30 <-- editieren / zitieren --> Unities abgeben: Nur für General Engineer
Hallo General Engineer, Zitat: Original erstellt von General Engineer: Puh das ist ja Kompliziert.
Nein, eigentlich nicht. Du brauchst für die (alte) Methode AddComponent den vollständigen Pfad zu der Dokumentendatei, die du einfügen willst. Den musst du dir vorher selber zusammenbasteln. nahe hat dir eine Möglichkeit gezeigt, wie du z.B. mit Hilfe einer Userform dir für ein fest eingestelltes Verzeichnis einen vollständigen Pfad für ein Einzelteil holen kannst. Ich argwöhne allerdings, dass du nicht genug Erfahrung und Wille hast, die notwendigen Grundlagen der (VBA-)Programmierung zu erlernen. Das macht die Sache für dich kompliziert - aber das ist oft beim programmieren so, dass man viele kleine Schritte selbst tun muss. Zitat: Original erstellt von General Engineer: Warum kann ich denn nicht den Einfuegebrowser von Solid Works ansprechen.
Nun, weil es in Standard-VBA, was SolidWorks verwendet, keinen Dateiauswahldialog wie in VB gibt. Man kann das wieder selbst stricken und dafür die Win32 API nutzen, habe ich z.B. in meinem Makro auf "3D Punktwolke einlesen" auf http://solidworks.cad.de/mm_24.htm gemacht, um eine Textdatei auszuwählen. Die Nutzung der Win32 API ist alelrdings noch eine ganz andere Nummer als einfaches VBA ... Zitat: Original erstellt von General Engineer: Ich verstehe die Verbindung zwischen UserForm ListBox und dem Hauptmakro noch nicht.
Da liegt wohl der Hase im Pfeffer. Du hast ja dein bisheriges Makro nicht hochgeladen, ich vermute, du hattest ein Makro aufgezeichnet, da eben die Pfadangaben rausgelöscht, dann eine Userform eingefügt und den Code von Heinz da hineinkopiert und wunderst dich jetzt, warum diese Userform nicht auftaucht. Erste Regel für Programmierer: erwarte nicht, das etwas einfach so funktioniert sondern sag dem dummen Blechhaufen in ganz kleinen Schritten, was er tun soll. Soll heißen: du musst dem Depp schon sagen, dass er die Userform aufrufen und anzeigen soll. Und wenn da dann irgendwas bestimmtest getan wird (z.B. per Doppelklick ein Eintrag ausgewählt wird) musst du den selektierten Eintrag auslesen und den so erhaltenen Pfad für den Befehl AddComponent nutzen; das würde ich dann in der DoubleClick Funktion der Listbox machen. Wenn dir das alles nichts sagt fehlen dir die Grundlagen von VBA, nicht der SolidWorks Programmierung. Die absoluten Grundlagen einer Sprache, ein paar Vokabeln und zumindest die einfache Grammatik sind aber notwendig, um sich in der SPrache ausdrücken zu können, egal ob deutsch, englisch, swahili oder VBA. Es gibt einige sehr gute Stellen mit kostenlosen Onlinekursen zu VB/VBA, z.B. hier ein VB Kurs. Für die Grundlagen ist der Unterschied nicht wichtig, VBA hat einige Einschränkungen und einige wenige andere Art der Anwendung, aber für die Grundlagen ist das dieselbe Suppe. Ciao, Stefan PS: ein ganz anderer Schnack: warum hängst du dir dein Verzeichnis nicht einfach in die Konstruktionsbibliothek und ziehst deine Teile von dort per Dragdrop in deine Baugruppe? ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de 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: 03. Jan. 2012 15:32 <-- editieren / zitieren --> Unities abgeben: Nur für General Engineer
Hallo GE anbei ein Makro das funktionieren sollte. Du musst nur die Konstante für den Pfad im Modul "Teil_Einf1" anpassen. Das Teil wird mit einem Doppelklick in der Auswahlliste am Punkt 0,0,0 in eine Baugruppe eingefügt. PS ich hab absichtlich auf Kommentare verzichtet. Du solltest Dir auch mal die API Onlinehilfe zu den verwendeten Funktionen anschauen ------------------ Grüße Heinz [Diese Nachricht wurde von nahe am 03. Jan. 2012 editiert.] 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: 05. Jan. 2012 14:54 <-- editieren / zitieren --> Unities abgeben: Nur für General Engineer
|
General Engineer Mitglied Konstrukteur
Beiträge: 122 Registriert: 02.08.2006 Solid Works 2014 SP4 HPZ 800 Xeon 3,33;12 GB RAM Quadro 4000;SSD Dell M4700 I5-2,8;Quadro K2000;8GB Ram;SSD
|
erstellt am: 05. Jan. 2012 15:43 <-- editieren / zitieren --> Unities abgeben:
Hallo Heinz und Stefan, vielen Dank für eure Unterstützung, besonders für das Makro. Ich bin leider noch nicht dazu gekommen es auszuprobieren bzw. meinen Horizont beim Programmieren zu erweitern. Haben ne Menge Projekte. Ich schau es mir morgen mal an und melde mich Montag. Gruß GE ------------------ Solid Works 2010 SP5 Keytech Pro 11 HP Workstation Xeon 3,06;8 GB Ram, FX 1800 Xeon 3,33;12 GB RAM Quadro 4000;SSD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
L.Schröter Mitglied Projektierung
Beiträge: 263 Registriert: 29.03.2007 Aus dem Stein der Weisen macht der Dumme Schotter. (Deutsches Sprichwort)
|
erstellt am: 06. Jan. 2012 11:00 <-- editieren / zitieren --> Unities abgeben: Nur für General Engineer
Hallo Hoffe ich habs richtig verstanden. Wie wäre es denn mit einem ganz anderen Ansatz (ohne Programmieren). Wir benutzen seit längerem FlashFolder (Win XP) bzw. bei FileBoxExtender (Win7). Dadurch hat man schnell zugriff auf vorher definierte Ordner. Das gute ist, dieses kann man mit allen anderen Programmen auch nutzen ------------------ MfG L. Schröter Diskutiere nie mit einem Idioten, erst zieht er dich auf sein Niveau runter und dann schlägt er dich aufgrund seiner Erfahrung. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
General Engineer Mitglied Konstrukteur
Beiträge: 122 Registriert: 02.08.2006 Solid Works 2014 SP4 HPZ 800 Xeon 3,33;12 GB RAM Quadro 4000;SSD Dell M4700 I5-2,8;Quadro K2000;8GB Ram;SSD
|
erstellt am: 12. Jan. 2012 15:25 <-- editieren / zitieren --> Unities abgeben:
@ L.Schröter: Vielen Dank für den Tipp mit File Box Extender. Gefällt mit sehr gut. Werde ich sicher weiter einsetzen. Für Solid Works möchte ich aber eine noch optimalere Lösung programmieren. Box öffnen aus Solid Works Teil wählen und platzieren. Außerdem steige ich so weiter ins VB Programmieren ein. @nahe as Makro funktioniert leider nicht. Bricht mit Fehlermeldung ab (s.Bild). Den Pfad habe ich auf meinen Rechner angepasst. Danke GE ------------------ Solid Works 2010 SP5 Keytech Pro 11 HP Workstation Xeon 3,06;8 GB Ram, FX 1800 Xeon 3,33;12 GB RAM Quadro 4000;SSD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
General Engineer Mitglied Konstrukteur
Beiträge: 122 Registriert: 02.08.2006 Solid Works 2014 SP4 HPZ 800 Xeon 3,33;12 GB RAM Quadro 4000;SSD Dell M4700 I5-2,8;Quadro K2000;8GB Ram;SSD
|
erstellt am: 25. Jan. 2012 09:43 <-- editieren / zitieren --> Unities abgeben:
Hi VB/VBA Profis, ich habe jetzt die letzten Wochen immer wieder versucht den Fehler im Makro zu finden. Aber ich komme nach start des Makros immer in den Debugger. Habe auch mit anderen Makros verglichen.Jetzt bin ich ratlos. Hat von euch einer einen Tipp. Ich wäre echt dankbar. Gruß GE ------------------ Solid Works 2010 SP5 Keytech Pro 11 HP Workstation Xeon 3,06;8 GB Ram, FX 1800 Xeon 3,33;12 GB RAM Quadro 4000;SSD 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: 25. Jan. 2012 10:06 <-- editieren / zitieren --> Unities abgeben: Nur für General Engineer
Das klingt eher so, als ob hier der Dir-Befehl nicht gefunden wird. Hast Du mal, wenn der Debugger da ist unter Extras-Verweise geschaut, welche Verweise angekreuzt sind? Die müssen zu Deinem System/Office Version o.ä. passen. "Visual Basic for Applications" sollte dabei sein und "OLE Automation". Was steht da noch? ------------------ Lutz Federbusch Mein Gästebuch Der Mensch, Herr oder Sklave der Technik? 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: 25. Jan. 2012 10:41 <-- editieren / zitieren --> Unities abgeben: Nur für General Engineer
Hab mir das Makro mal angeschaut: Ist für SW2011 gemacht. Also mußt Du in den Verweisen jeweils gleichlautend die für Dein 2010 anwählen und die für 2011 deaktivieren, dann sollte es gehen. Ich habe es mal für 2009 umgebaut, dabei muß man allerdings auf AddComponent4 ausweichen, da es das AddComponent5 noch nicht gibt. Da lob ich mir doch eher die versionsunabhängige Programmierung... ------------------ Lutz Federbusch Mein Gästebuch Der Mensch, Herr oder Sklave der Technik? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
General Engineer Mitglied Konstrukteur
Beiträge: 122 Registriert: 02.08.2006 Solid Works 2014 SP4 HPZ 800 Xeon 3,33;12 GB RAM Quadro 4000;SSD Dell M4700 I5-2,8;Quadro K2000;8GB Ram;SSD
|
erstellt am: 26. Jan. 2012 11:53 <-- editieren / zitieren --> Unities abgeben:
Hi Lutz, vielen Dank für Deine Tipps, jetzt hat es funktioniert. Ich mußte unter Extras Verweise 3 Einträge auf Solid Works 2010 stellen. Jetzt mache ich die ganze Box noch ein bischen "hübsch". Also Vorschaubild, Suchleiste wie beim Öffnen und OK Button. Gruß GE ------------------ Solid Works 2010 SP5 Keytech Pro 11 HP Workstation Xeon 3,06;8 GB Ram, FX 1800 Xeon 3,33;12 GB RAM Quadro 4000;SSD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
General Engineer Mitglied Konstrukteur
Beiträge: 122 Registriert: 02.08.2006 Solid Works 2014 SP4 HPZ 800 Xeon 3,33;12 GB RAM Quadro 4000;SSD Dell M4700 I5-2,8;Quadro K2000;8GB Ram;SSD
|
erstellt am: 27. Jan. 2012 08:14 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen Lutz, ich habe das User Form jetzt etwas umgestaltet. Außerdem möchte ich nicht nur sldprt´s sondern auch sldasm´s oder nur sldasm´s herausfiltern und in der Liste auswählen. Kannst Du mir bitte noch mal einen Tipp geben wie ich die "Filterung" von sldprt auf sldasm ändere. Ich habe nur eine Filterung auf sldprt gefunden und auf sldasm umgesetzt, aber das allein reicht nicht. Vielen Dank Gruß GE ------------------ Solid Works 2010 SP5 Keytech Pro 11 HP Workstation Xeon 3,06;8 GB Ram, FX 1800 Xeon 3,33;12 GB RAM Quadro 4000;SSD 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: 27. Jan. 2012 10:49 <-- editieren / zitieren --> Unities abgeben: Nur für General Engineer
Du könntest in Dein Formular noch eine Option einbauen, welchen Dateityp Du aufgelistet haben möchtest (oder beide) und dann nacheinander die Dir-Abfragen machen für Teile und Baugruppen und die gefundenen Einträge jeweils an die Listbox-Item-Liste anhängen. ------------------ Lutz Federbusch Mein Gästebuch Der Mensch, Herr oder Sklave der Technik? 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: 30. Jan. 2012 12:19 <-- editieren / zitieren --> Unities abgeben: Nur für General Engineer
Hallo GE am Besten machst Du es so wie Lutz es beschrieben hat. zwei zusätzliche Optionsfelder für Teile und Baugruppen und für diese erstellst Du einfach die entsprechende Abfrage und füllst die Liste entsprechend. In etwa so Private Sub OptionButton1_Click() ListBox1.Clear Name1 = Dir(Teil_Einf1.pfad & "*.sldasm", vbNormal) Do While Name1 <> "" If Name1 <> "." And Name1 <> ".." Then ListBox1.AddItem Name1 End If Name1 = Dir Loop End Sub Private Sub OptionButton2_Click() ListBox1.Clear Name1 = Dir(Teil_Einf1.pfad & "*.sldprt", vbNormal) Do While Name1 <> "" If Name1 <> "." And Name1 <> ".." Then ListBox1.AddItem Name1 End If Name1 = Dir Loop End Sub ------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
General Engineer Mitglied Konstrukteur
Beiträge: 122 Registriert: 02.08.2006 Solid Works 2014 SP4 HPZ 800 Xeon 3,33;12 GB RAM Quadro 4000;SSD Dell M4700 I5-2,8;Quadro K2000;8GB Ram;SSD
|
erstellt am: 20. Mrz. 2013 09:08 <-- editieren / zitieren --> Unities abgeben:
Hallo Heinz,
etwas spät, aber trotzdem nochmals vielen Dank für die Hilfe. Ich habe leider nochmals zum gleichen Thema ein Thread eröffnet (Makro Makro) den ich aber beenden werde. Ich habe die beiden Optionen ins Proggi eingefügt. Leider werden trotzdem nur sldprt Dateien in der Listbox aufgeführt. Wenn ich die Endung auf sldasm ändere, erscheinen diese zwar in der Listbox aber nach einem doppelklick erscheint die Fehlermeldung Falsche Datei. Private Sub UserForm_Initialize() ListBox1.Clear Name1 = Dir(Teil_Einf1.pfad & "*.sldasm", vbNormal) Do While Name1 <> "" If Name1 <> "." And Name1 <> ".." Then ListBox1.AddItem Name1 End If Name1 = Dir Loop End Sub Private Sub UserForm_Click() End Sub Private Sub OptionButton1_Click() ListBox1.Clear Name1 = Dir(Teil_Einf1.pfad & "*.sldasm", vbNormal) Do While Name1 <> "" If Name1 <> "." And Name1 <> ".." Then ListBox1.AddItem Name1 End If Name1 = Dir Loop End Sub Private Sub OptionButton2_Click() ListBox1.Clear Name1 = Dir(Teil_Einf1.pfad & "*.sldprt", vbNormal) Do While Name1 <> "" If Name1 <> "." And Name1 <> ".." Then ListBox1.AddItem Name1 End If Name1 = Dir Loop End Sub Für Tipps wäre ich sehr dankbar. Gibt es eigentlich eine Liste mit den VBA Objekten von Solid Works und deren Optionen ? Nochmals vielen Dank. Gruß GE 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: 20. Mrz. 2013 09:16 <-- editieren / zitieren --> Unities abgeben: Nur für General Engineer
In der API-Hilfe aus dem Hilfemenü von SolidWorks findest Du alle Befehle und Objekte und auch ein paar Beispiele. Dein jetziges Problem mit der falschen Datei klingt so, als würdest Du eine Baugruppe als Teil öffnen wollen. Welchen Befehl benutzt Du genau? Bei den OpenDoc-Befehlen muß man den Dateinamen und den zu öffnenden Dokumenttyp übergeben. ------------------ Lutz Federbusch Mein Gästebuch Der Mensch, Herr oder Sklave der Technik? 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: 20. Mrz. 2013 09:49 <-- editieren / zitieren --> Unities abgeben: Nur für General Engineer
Hallo GE Du musst nur die Zeile für das Einfügen ändern auf If UCase(Right(ListBox1.Text, 6)) = "SLDPRT" Then Set tmpObj = swApp.OpenDoc6(Teil_Einf1.pfad & ListBox1.Text, swDocPART, 0, "", errors, warnings) ElseIf UCase(Right(ListBox1.Text, 6)) = "SLDASM" Then Set tmpObj = swApp.OpenDoc6(Teil_Einf1.pfad & ListBox1.Text, swDocASSEMBLY, 0, "", errors, warnings) Else MsgBox "Falscher Dateityp!", vbOKOnly, "Fehler" End End If
------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
General Engineer Mitglied Konstrukteur
Beiträge: 122 Registriert: 02.08.2006 Solid Works 2014 SP4 HPZ 800 Xeon 3,33;12 GB RAM Quadro 4000;SSD Dell M4700 I5-2,8;Quadro K2000;8GB Ram;SSD
|
erstellt am: 20. Mrz. 2013 10:30 <-- editieren / zitieren --> Unities abgeben:
Hallo Heinz, vielen Dank für die Hilfe. Aber irgendwie raffe ich in VBA nicht was in welcher Reihenfolge kommt. In AutoLisp war das irgendwie eindeutiger. Ich habe die beiden Optionen wieder entfernt und die neue If Anweisung an die Stelle der alten If Anweisung hinein kopiert. Exit Sub End If swAsm_titel = swModel.GetTitle Set tmpObj = swApp.OpenDoc6(Teil_Einf1.pfad & ListBox1.Text, swDocPART, 0, "", errors, warnings) If tmpObj Is Nothing Then MsgBox "Datei konnte nicht geladen werden!", vbOKOnly, "Fehler" Exit Sub End If Set swModel = swApp.ActivateDoc2(swAsm_titel, True, errors) Set swAsm = swModel Set swComp = swAsm.AddComponent5(Teil_Einf1.pfad & ListBox1.Text, swAddComponentConfigOptions_CurrentSelectedConfig, "", False, "", 0, 0, 0) Set swAsm = Nothing Set tmpObj = Nothing Set swModel = Nothing Set swApp = Nothing End End Sub Private Sub UserForm_Initialize() ListBox1.Clear Do If UCase(Right(ListBox1.Text, 6)) = "SLDPRT" Then Set tmpObj = swApp.OpenDoc6(Teil_Einf1.pfad & ListBox1.Text, swDocPART, 0, "", errors, warnings) ElseIf UCase(Right(ListBox1.Text, 6)) = "SLDASM" Then Set tmpObj = swApp.OpenDoc6(Teil_Einf1.pfad & ListBox1.Text, swDocASSEMBLY, 0, "", errors, warnings) Else MsgBox "Falscher Dateityp!", vbOKOnly, "Fehler" End End If Name1 = Dir Loop End Sub Private Sub UserForm_Click() End Sub Jetzt bekomme ich immer die Meldung "Falscher Dateityp". Gruß GE 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: 21. Mrz. 2013 06:36 <-- editieren / zitieren --> Unities abgeben: Nur für General Engineer
Hallo sorry, aber Du musst das natürlich in die Sub "ListBox1_DblClick" einbauen und nicht in "UserForm_Initialize" ich dachte das wäre klar hier nochmals das Makro Private Sub CommandButton1_Click() End End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swAsm As SldWorks.AssemblyDoc Dim saAsm_titel As String Dim swComp As SldWorks.Component2 Dim tmpObj As SldWorks.ModelDoc2 Dim errors As Long Dim warnings As Long Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc If swModel Is Nothing Then MsgBox "Keine Datei geöffnet!", vbOKOnly, "Fehler" Exit Sub End If If swModel.GetType <> swDocASSEMBLY Then MsgBox "Keine Baugruppe geöffnet!", vbOKOnly, "Fehler" Exit Sub End If swAsm_titel = swModel.GetTitle If UCase(Right(ListBox1.Text, 6)) = "SLDPRT" Then Set tmpObj = swApp.OpenDoc6(Teil_Einf1.pfad & ListBox1.Text, swDocPART, 0, "", errors, warnings) ElseIf UCase(Right(ListBox1.Text, 6)) = "SLDASM" Then Set tmpObj = swApp.OpenDoc6(Teil_Einf1.pfad & ListBox1.Text, swDocASSEMBLY, 0, "", errors, warnings) Else MsgBox "Falscher Dateityp!", vbOKOnly, "Fehler" End End If If tmpObj Is Nothing Then MsgBox "Datei konnte nicht geladen werden!", vbOKOnly, "Fehler" Exit Sub End If Set swModel = swApp.ActivateDoc2(swAsm_titel, True, errors) Set swAsm = swModel Set swComp = swAsm.AddComponent5(Teil_Einf1.pfad & ListBox1.Text, swAddComponentConfigOptions_CurrentSelectedConfig, "", False, "", 0, 0, 0) Set swAsm = Nothing Set tmpObj = Nothing Set swModel = Nothing Set swApp = Nothing End End Sub Private Sub OptionButton1_Click() ListBox1.Clear Name1 = Dir(Teil_Einf1.pfad & "*.sldasm", vbNormal) Do While Name1 <> "" If Name1 <> "." And Name1 <> ".." Then ListBox1.AddItem Name1 End If Name1 = Dir Loop End Sub Private Sub OptionButton2_Click() ListBox1.Clear Name1 = Dir(Teil_Einf1.pfad & "*.sldprt", vbNormal) Do While Name1 <> "" If Name1 <> "." And Name1 <> ".." Then ListBox1.AddItem Name1 End If Name1 = Dir Loop End Sub Private Sub UserForm_Initialize() ListBox1.Clear Name1 = Dir(Teil_Einf1.pfad & "*.sldprt", vbNormal) Do While Name1 <> "" If Name1 <> "." And Name1 <> ".." Then ListBox1.AddItem Name1 End If Name1 = Dir Loop End Sub
------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
General Engineer Mitglied Konstrukteur
Beiträge: 122 Registriert: 02.08.2006 Solid Works 2014 SP4 HPZ 800 Xeon 3,33;12 GB RAM Quadro 4000;SSD Dell M4700 I5-2,8;Quadro K2000;8GB Ram;SSD
|
erstellt am: 21. Mrz. 2013 12:57 <-- editieren / zitieren --> Unities abgeben:
Hallo Heinz, ich habs jetzt die ganze Pause probiert. Die Listbox zeigt immer nur sldprt Dateien an. Sldasm werden nicht aufgelistet. Scheint wohl mit VBA nicht zu gehen. Ich gebs auf. Trotzdem nochmal vielen Dank. Gruß GE
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: 21. Mrz. 2013 13:55 <-- editieren / zitieren --> Unities abgeben: Nur für General Engineer
Geht doch => Die Initialisierung des Formulars muß so aussehen: Private Sub UserForm_Initialize() ListBox1.Clear Name1 = Dir(Teil_Einf1.pfad & "*.sldasm", vbNormal) Do While Name1 <> "" If Name1 <> "." And Name1 <> ".." Then ListBox1.AddItem Name1 End If Name1 = Dir Loop Name1 = Dir(Teil_Einf1.pfad & "*.sldprt", vbNormal) Do While Name1 <> "" If Name1 <> "." And Name1 <> ".." Then ListBox1.AddItem Name1 End If Name1 = Dir Loop End Sub ------------------ Lutz Federbusch Mein Gästebuch Der Mensch, Herr oder Sklave der Technik? [Diese Nachricht wurde von Lutz Federbusch am 21. Mrz. 2013 editiert.] 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: 21. Mrz. 2013 22:08 <-- editieren / zitieren --> Unities abgeben: Nur für General Engineer
|
General Engineer Mitglied Konstrukteur
Beiträge: 122 Registriert: 02.08.2006 Solid Works 2014 SP4 HPZ 800 Xeon 3,33;12 GB RAM Quadro 4000;SSD Dell M4700 I5-2,8;Quadro K2000;8GB Ram;SSD
|
erstellt am: 24. Mrz. 2013 10:41 <-- editieren / zitieren --> Unities abgeben:
Hallo Lutz, Hallo Heinz, vielen,vielen Dank für eure Hilfe. Durch die zwei unterschiedlichen Vorgehensweisen habe ich schon einiges über die Syntax in VBA gelernt. Das kleine Proggi läuft jetzt. Gruß GE
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |