| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| PLM TechnologieForum Essen |
Autor
|
Thema: VBA Makro: STEP eines abgewickelten Kantteils/Baugruppe (301 / mal gelesen)
|
GrischaBr Mitglied Maschinenbautechniker
Beiträge: 6 Registriert: 07.02.2024 SW2012 SW2020 SP1.0 SW2022 SP5.0
|
erstellt am: 07. Feb. 2024 11:37 <-- editieren / zitieren --> Unities abgeben:
Hallo liebe Leute, habe das Forum ein wenig nach dem Thema durchsucht, aber finde nur die andere Vorgehensrichtung. Mich würde interessieren, ob es VBA Funktionen gibt um alle Teile einer Baugruppe die nicht bereits abgewickelt sind, abzuwickeln und daraus einzelne STEP-Dateien zu generieren. Alle Teile die nur ein flaches Blech sind ebenfalls als STEP exportieren. Danach kann der ganze kladaradatsch wieder geschlossen werden. Grund hierfür ist, dass die Teile per TailorSteel bestellt werden sollen, aber eben nicht gekantet. (Die lieben Damen und Herren von TailorSteel bieten es leider nicht an nur die Bleche zu schneiden, ohne zu kanten) Und Gravuren können per STEP direkt integriert werden ohne hier mit der DXF und Layern rumzufuchsen. Ich bin kein VBA Typ aber hab mich bis jetzt immer irgendwie durchgeschlagen anhand von halben Templates. Finde aber auch in der VBA Anleitung nicht wirklich Funktionen die danach aussehen. SW: Solidworks 2020 SP1.0 (wird später eingesetzt: SW2022 SP5.0) Falls jemand bereits ne Lösung hat, immer her damit. Danke schon einmal für alle Infos, Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
R3vo Mitglied staatl. gepr. Techniker, Konstrukteur
Beiträge: 107 Registriert: 03.11.2021 Programme: CAD: SolidWorks 2021 SP5.1 PDM: SpeedyPDM 7.5 ------------------------ CPU: i7 10700 GPU: Nvidia Quadro RTX4000 RAM: 64 Gbyte Datenträger: SSD
|
erstellt am: 07. Feb. 2024 14:52 <-- editieren / zitieren --> Unities abgeben: Nur für GrischaBr
|
GrischaBr Mitglied Maschinenbautechniker
Beiträge: 6 Registriert: 07.02.2024 SW2012 SW2020 SP1.0 SW2022 SP5.0
|
erstellt am: 07. Feb. 2024 16:31 <-- editieren / zitieren --> Unities abgeben:
Hi, naja ich hab schon das ein oder andere gemacht. Aber Erfahrung würd ichs tatsächlich nicht nennen, joa. Sowas wie hier würde mir schon reichen, wenn es noch eine Funktion gibt die das Blech vorher abwickelt. Code:
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 Step As Long Dim saveFileName As String Sub main() Set swApp = Application.SldWorksSet Part = swApp.ActiveDoc Set SelMgr = Part.SelectionManager 'Abfrage ob Name vergeben wurde If (swApp.ActiveDoc.GetPathName = "") Then MsgBox ("Bitte zuerst Teil speichern!") Exit Sub End If 'Abfrage ob es eine Zeichnung ist If Part.GetType = SwConst.swDocumentTypes_e.swDocDRAWING Then MsgBox ("Dieses Makro kann nicht für Zeichnungen ausgeführt werden") Exit Sub End If Step = swApp.SetUserPreferenceIntegerValue(swStepAP, 214) 'Ansicht Isometrisch (zoomt automatisch auf Fenstergröße) Part.ShowNamedView2 "*Isometrisch", 7 'Als STEP speichern FilePath = Part.GetPathName FilePath = Left(FilePath, (Len(FilePath) - 7)) NewFilePath = FilePath & ".STEP" longstatus = Part.SaveAs3(NewFilePath, 0, 0) MsgBox ("Gespeichert unter " & NewFilePath) End Sub
Wäre nett wenn jemand was weiss. Grüße. 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: 08. Feb. 2024 09:41 <-- editieren / zitieren --> Unities abgeben: Nur für GrischaBr
Moin, sind denn die Blechteile auch alle auf Knopfdruck abwickelbar? bei uns ist die Abwicklung in der Regel in einer eigenen Konfiguration (oft diese abhängigen xxxSM_FLAT_PATTERN, aber nicht immer) und dann gibt es: - Blechteile wo die Funktion Abwickeln genutzt wird. - Blechteile wo die Abwicklung mit "Abbiegen" erzeugt ist (wurde früher von SWX z.T. sogar so gemacht, sogar mit Einfügemodus) - Blechteile wo gar kein "Blech" drin ist (z.B. manuell als Konfiguration erstellte "Abwicklung" ich empfehle auf jeden Fall "scharf anschauen" (z.B. auch ob die Optionen passend gesetzt sind ...) Gruß, Christian
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GrischaBr Mitglied Maschinenbautechniker
Beiträge: 6 Registriert: 07.02.2024 SW2012 SW2020 SP1.0 SW2022 SP5.0
|
erstellt am: 08. Feb. 2024 11:43 <-- editieren / zitieren --> Unities abgeben:
Hallo, ja ist als "natives" Blech in Solidworks, eben per abwickeln (siehe Bild) auch so machbar. Eine Flat Pattern Konfiguration hat dieses Teil jetzt nicht. Erst sobald eine Zeichnung mit Abwicklung erstellt wird, wird eine StandardSM-FLAT-PATTERN erzeugt. Im Grunde genommen will ich das Blech nur per VBA abwickeln, wie als ob ich den Knopf drücken würde. Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
R3vo Mitglied staatl. gepr. Techniker, Konstrukteur
Beiträge: 107 Registriert: 03.11.2021 Programme: CAD: SolidWorks 2021 SP5.1 PDM: SpeedyPDM 7.5 ------------------------ CPU: i7 10700 GPU: Nvidia Quadro RTX4000 RAM: 64 Gbyte Datenträger: SSD
|
erstellt am: 08. Feb. 2024 12:33 <-- editieren / zitieren --> Unities abgeben: Nur für GrischaBr
Anscheinend muss du das Abwicklungs-Feature auswählen und dann die Unterdrückung aufheben mit Code: IModelDoc2.EditSuppress2
Das Abwicklungsfeature würde ich auswählen indem ich eine Schleife über alle Features laufen lassen und prüfe wann es ein Abwicklungsfeature ist. Vielleicht gibt es noch bessere Methoden aber auf die schnelle finde ich nichts.
[Diese Nachricht wurde von R3vo am 08. Feb. 2024 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GrischaBr Mitglied Maschinenbautechniker
Beiträge: 6 Registriert: 07.02.2024 SW2012 SW2020 SP1.0 SW2022 SP5.0
|
erstellt am: 08. Feb. 2024 13:33 <-- editieren / zitieren --> Unities abgeben:
Hallo nochmal, bin jetzt erst auf die Idee gekommen, mal den recorder zu nutzen und hab folgendes dann natürlich schnell gefunden: Code:
Part.SetBendState(2)
Ich schau mal ob ich das auch auf die Baugruppe anwenden kann. Aber falls mir das jemand abnehmen kann, hätte ich nichts dagegen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
R3vo Mitglied staatl. gepr. Techniker, Konstrukteur
Beiträge: 107 Registriert: 03.11.2021 Programme: CAD: SolidWorks 2021 SP5.1 PDM: SpeedyPDM 7.5 ------------------------ CPU: i7 10700 GPU: Nvidia Quadro RTX4000 RAM: 64 Gbyte Datenträger: SSD
|
erstellt am: 08. Feb. 2024 15:57 <-- editieren / zitieren --> Unities abgeben: Nur für GrischaBr
Du wirst erst durch alle Komponenten der Baugruppe gehen müssen, dann durch alle Features der Komponente um zu prüfen ob es eine Abwicklung gibt, dann Abwickeln und schlussendlich die Step erstellen. setBendState is glaube ich eine alte Methode. Keine Ahnung ob die noch so zuverlässig funktioniert. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GrischaBr Mitglied Maschinenbautechniker
Beiträge: 6 Registriert: 07.02.2024 SW2012 SW2020 SP1.0 SW2022 SP5.0
|
erstellt am: 09. Feb. 2024 09:03 <-- editieren / zitieren --> Unities abgeben:
Moin, da ich die Funktionen dafür nicht kenne und in Kombination mit FOR-Schleifen bei meinen kleinen Baugruppen das übersteigen würde bleibe ich bei der jetzigen Lösung. Sollte jemand n kurzes Template haben, wie ich durch die einzelnen Parts in der Baugruppe gehe und diese als active document schalte, gerne her damit. Ja die SetBendState geht auch nicht wirklich musste ich dann feststellen. Habe es folgendermaßen gemacht: Code:
boolstatus = Part.Extension.SelectByID2("Abwicklung1", "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0) Part.EditUnsuppress2
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |