| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| Daten-Desaster adé: Mit PDM as a Service (PDMaaS) nie wieder Daten überschreiben – Rettung durch Versionskontrolle! |
Autor
|
Thema: Mehrkörperblechteile per Makro abwickeln (1674 mal gelesen)
|
TechNick Mitglied Konstrukteur
Beiträge: 12 Registriert: 19.11.2018
|
erstellt am: 19. Nov. 2018 13:48 <-- editieren / zitieren --> Unities abgeben:
Hallo liebe Forengemeinschaft, bisher habe ich des Öfteren still und heimlich mitgelesen. Nun komme ich allerdings nicht mehr ohne Rat weiter. Ich hoffe, dass es diesen Beitrag noch nicht gegeben hat. Nun zum Sachverhalt. Wir haben viele Mehrkörperblechteile mit unterschiedlichsten Konfigurationen. Nun gab es bei uns in der Firma bereits einige schlaue Köpfe und es entstand ein Makro, um per Klick alle Konfigurationen nacheinander als DXF zu exportieren. Dabei wird jede DXF unter der angegebenen Artikelnummer+Index in einem festgelegten Pfad abgespeichert. Das funktioniert wunderbar. Allerdings funktioniert dieses Makro nur bei einfachen Blechteilen. Wenn ich ein Bauteil habe, was aus mehreren Blechteilen zusammengesetzt ist, muss ich jede Abwicklung separat aktivieren und händisch unter "Artikelnummer+Index_fortlaufende Nummer" speichern. Das ist mühselig. Gibt es eine Möglichkeit das Makro so anzupassen, dass es automatisch alle Blechteile in einem Bauteil erkennt und nach dem genannten Speicherschema fortlaufend als DXF abspeichert? Um nicht alle Konfigurationen erneut als DXF abzuspeichern, wäre es ausreichend wenn nur von der aktuellen Konfigurationen alle Blechteile automatisch exportiert werden könnten. Ich bedanke mich schon mal im Voraus Hier der Code Option Explicit
Sub main() Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim vConfNameArr As Variant Dim sConfigName As String Dim nStart As Single Dim i As Long Dim bShowConfig As Boolean Dim bRebuild As Boolean Dim bRet As Boolean Dim Index As String Set swApp = CreateObject("SldWorks.Application") Set swModel = swApp.ActiveDoc If swModel.GetCustomInfoValue("", "PDB_Version") = "-" Then Index = "#" Else Index = swModel.GetCustomInfoValue("", "PDB_Version") End If
vConfNameArr = swModel.GetConfigurationNames For i = 0 To UBound(vConfNameArr) sConfigName = vConfNameArr(i) bShowConfig = swModel.ShowConfiguration2(sConfigName) bRebuild = swModel.ForceRebuild3(False) 'Export Flat Pattern bRet = swModel.ExportFlatPatternView("\\Pfad\" & Mid$(sConfigName, 5, 7) & Index & ".DXF", 1)
Next i End Sub [Diese Nachricht wurde von TechNick am 19. Nov. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
M.Nagel Mitglied
Beiträge: 15 Registriert: 03.01.2009
|
erstellt am: 19. Nov. 2018 17:00 <-- editieren / zitieren --> Unities abgeben: Nur für TechNick
|
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: 20. Nov. 2018 02:50 <-- editieren / zitieren --> Unities abgeben: Nur für TechNick
Zitat: Original erstellt von TechNick: ... Wir haben viele Mehrkörperblechteile mit unterschiedlichsten Konfigurationen. Nun gab es bei uns in der Firma bereits einige schlaue Köpfe und es entstand ein Makro, um per Klick alle Konfigurationen nacheinander als DXF zu exportieren. ... Wenn ich ein Bauteil habe, was aus mehreren Blechteilen zusammengesetzt ist, muss ich jede Abwicklung separat aktivieren und händisch unter "Artikelnummer+Index_fortlaufende Nummer" speichern. Das ist mühselig. Gibt es eine Möglichkeit das Makro so anzupassen, dass es automatisch alle Blechteile in einem Bauteil erkennt und nach dem genannten Speicherschema fortlaufend als DXF abspeichert? ...
Hallo TechNick, Da gibt es bestimmt 1 .. 2 Möglichkeiten - vielleicht genügt ja schon das Makro des Kollegen ... Was mich der Vollständigkeit halber mal interessiert, ist die Frage - was zeigen die Konfigurationen? (abgeleitete Konfigurationen mit den Einzelteilabwicklungen sind das jetzt eher nicht?) - wie ist das mit der Artikelnummer - bezieht die sich auf das Mehrkörperteil komplett, oder kriegt jeder Körper seine eigene Nummer? alternativ könnt ich mir vorstellen, eine Zeichnung (SWX) davon zu machen mit mehreren Blättern und die dann exportieren ...
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TechNick Mitglied Konstrukteur
Beiträge: 12 Registriert: 19.11.2018
|
erstellt am: 20. Nov. 2018 08:48 <-- editieren / zitieren --> Unities abgeben:
Hallo M.Nagel, vielen Dank für dein Makro. Ich muss es wahrscheinlich noch ein wenig anpassen damit etwas passiert? Sprich Speicherpfad usw. definieren. @Christian: Also zur Vollständigkeit noch sei erwähnt, dass jede Konfiguration einen Typ Kiste definiert. Sprich: Länge, Breite, Höhe, Türtyp,....... variieren und sind anhand ihrer Artikelnummer und einem Codesystem eindeutig beschrieben. Jedoch besteht jede Kiste aus mehreren Blechzuschnitten( Boden, Rückwand, Seitenteil), sprich streng genommen aus 4 Artikeln. Bei einer Vielzahl an Kisten hätte man eine noch größere Anzahl an Artikelnummern ( X Kisten x 4 Bauteile). Um das zu vermeiden besteht jede Kiste aus einem Teilesatz und somit beinhaltet die Konfiguration XYZ mit der Artikelnummer 0815 einen Teilesatz von 4 Bauteilen und so wird pro Kiste nur eine Artikelnummer statt 4 verwendet. Ist auch für den Lasermann von Vorteil wenn er nicht 4 verschiedene Artikelnummern zusammensuchen muss sondern nur eine Artikelnummer hat und dazu gleich alle 4 Abwicklungen geliefert bekommt. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
M.Nagel Mitglied
Beiträge: 15 Registriert: 03.01.2009
|
erstellt am: 20. Nov. 2018 10:20 <-- editieren / zitieren --> Unities abgeben: Nur für TechNick
Guten Morgen, das Makro sollte so funktionieren. Bei mir legt es die Abwicklungen im gleichen Ordner ab. Die DXF's behalten die Dateiname + Zähler. Es läuft aber nicht stabil. Keine Ahnung warum. Wenn du Bei Google "Batch export to DXF Solidworks" eingibst gibt es einige Ergebnise wo Du vielleicht was mit anfangen kannst. Gruß Jan 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: 20. Nov. 2018 12:38 <-- editieren / zitieren --> Unities abgeben: Nur für TechNick
Hallo TechNick, danke für die ausführlichere Beschreibung - wollte sichergehen, dass ich dich richtig verstanden habe, und nicht die Konfigurationen schon da sind. Das Makro scheint auch davon auszugehen, dass es jeweils eine abgeleitete Konfiguration xyzSM-FLAT-PATTERN[1/2/3...n] gibt. Denn das geht einfach alle Konfigurationen durch und speichert "die" Abwicklung als dxf. dabei erwischt es bei mehreren vorhandenen Blechkörpern nur einen. und bei gar keinem Blechkörper wird auch gar nix exportiert. d.h. du müsstest a) die Blechkörper auf jeden Fall tatsächlich als Blechkörper modelliert haben. b) das Makro noch etwas umstricken, da hab ich aber keine komplette Lösung parat, nur 2 Ansätze. - Körper selektieren um gezielt abzuwickeln und exportieren - abgeleitete Konfigurationen hinzufügen und die Export-Schleife auf Kind-Konfigurationen beschränken. Gruß, Christian
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: 20. Nov. 2018 13:01 <-- editieren / zitieren --> Unities abgeben: Nur für TechNick
Zitat: ... Es läuft aber nicht stabil. Keine Ahnung warum...
Hallo Jan, das liegt bestimmt an - den merkwürdigen Einrückungen - weil 2x "Dim swApp" drinsteht - weil einige Deklarationen in der For-Schleife mehrfach aufgerufen werden oder .. (SCNR - freut mich zu sehen, dass andere auch Spaghetti-Code Schreiben Man könnte es sicher etwas optimieren - aber das wird an der Funktion nichts grundsätzliches ändern. Dass es manchmal nicht das tut, was erwartet wird könnte an der Funktion des Programms / den SWX-Dateien liegen. - die Körper müssen als Blechkörper erkennbar sein (flache Körper als Basisblech modelliert?) - die Körper müssen einzeln in einer Konfiguration vorliegen - da in der Schleife ein Rebuild drin ist sollte der möglichst funktionieren Es könnte sein, dass der erste Blechkörper 2x Exportiert wird - einmal aus der Standard-Konfiguration und einmal aus seiner SM-FLAT-PATTERN. Das wären die Punkte, die mir dazu einfallen. Gruß, Christian (und danke für's einstellen!!) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TechNick Mitglied Konstrukteur
Beiträge: 12 Registriert: 19.11.2018
|
erstellt am: 20. Nov. 2018 13:15 <-- editieren / zitieren --> Unities abgeben:
Also ich habe dein Makro ausprobiert, dennoch erstellt er die Abwicklungen nur wenn vorher die Flatpattern als Unterkonfigurationen erstellt wurden. Allerdings rechnet er sich dabei zu Tode. Ziel ist es allerdings nicht vorher Unterkonfigurationen zu erstellen, denn das wäre vom Aufwand her kontraproduktiv. Trotzdem vielen Dank für deinen Beitrag! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
M.Nagel Mitglied
Beiträge: 15 Registriert: 03.01.2009
|
erstellt am: 20. Nov. 2018 20:52 <-- editieren / zitieren --> Unities abgeben: Nur für TechNick
Hallo, ich hab da jetzt auch mal ein bisschen mit gespielt. Taugt nicht wirklich... Vielleicht lässt sich ja was draus machen..... Ich arbeite auch viel mit Multibody. Die Abwicklungen mach ich dann mit (RMT) als DXF exportieren. Bei export: als Blech Klicke dann alle Teile an. Option "Separate Dateien" aktivieren. Alle Abwicklungen werden dann exportiert in einzelne DXFs. Solidworks schreibt "Abwicklung(Zahl)-" vor der Dateiname. Ich hab eine alternatve Explorer (Total Commander). Hiermit benenne ich die einzelne Dateien in einen Rutsch um mit Zähler. Nettes zusatz Feature bei TC ist die Miniaturvorschau bei DXF's. Eine "Einknopfdrück" Lösung wär natürlich schöner. Gruß Jan
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: 20. Nov. 2018 23:05 <-- editieren / zitieren --> Unities abgeben: Nur für TechNick
Zitat: ... Vielleicht lässt sich ja was draus machen..... ... Nettes zusatz Feature bei TC ist die Miniaturvorschau bei DXF's.
Hallo Jan, ich glaub da sind wir auch schnell bei ein paar Fallunterscheidungen. gibt es eine Zuschnittsliste und in den Ordnern mehrere Körper - dann nur einen jeweils nehmen. was passiert bei Unterordnern (macht das jemand?) was ist mit den Flachen Körpern, die einfach so modelliert sind, aber nicht als Blech? und denen, die als Blech modellier sind, aber sich nicht sauber abwickeln, sondern nur von Hand? oder meine Spezies, die Konusbleche in 2 Konfigurationen aufbauen und Konus und "Abwicklung" per Konfigurationstabelle mit den alten Formeln steuern ... Reizvolle Aufgabe, find ich Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |