| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | | | | Innovationstag mit SolidCAM und Plogmann bei HEDELIUS in Meppen |
Autor
|
Thema: Umbenennen von Volumenkörpern (2291 mal gelesen)
|
jositz Mitglied Konstrukteur
Beiträge: 31 Registriert: 04.12.2003 Schneider Digital Intel Xeon CPU E5-1620v3 3,50GHz 32,00GB RAM Windows 7 Professional x64 SP1 AMD FirePro W7100 Solid Works 2016 x64 SP 5.0
|
erstellt am: 24. Aug. 2007 08:44 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, wir müssen immmer wieder Baugruppen zu Simulationszwecken an andere Firmen weiterleiten, dabei wollen wir natürlich möglichst wenig Informationen preisgeben und lediglich die genaue Außenkontur der Baugruppe liefern. Momentan gehe ich so vor, dass ich in der Baugruppe das "Innenleben" ausblende und dann daraus einen Part erzeuge. Soweit so gut, aber die einzelnen Volumenkörper des so erzeugten Parts, heißen in diesem Part jeweils so wie das entsprechende Bauteil aus der ursprünglichen Baugruppe. d.h. es kann auf Grund der Bezeichnung der Volumenkörper noch nachvollzogen werden welche Getriebe, Motoren usw. von uns eingesetzt werden. Nun kann ich natürlich diese Volumenkörper von Hand umbenennen, was aber teilweise sehr aufwendig ist. Damit zu meiner Frage: Gibt es eine Möglichkeit (Makro) alle Volumenkörper umzubenennen, oder einfach nur durch zu numerieren? Oder wo wird den gesteuert wie die einzelnen Volumenkörpers eines Parts heißen? Denn beim Import von step, xt oder sonstigen neutralen Formaten, haben die Volumenkörper immer wieder unterschiedliche Namen, die sich aus einem Namen und einer fortlaufenden Nummer bilden zB. Importiert1..., None1...,Part1...., Product Name1... Wo wird das in SolidWorks gesteuert, bzw, wie kann ich das beeinflußen? Für Eure Hilfe wäre ich Euch sehr dankbar.
------------------ Dell Precision PWS 380 3,40GHz 2,00GB RAM Windows XP Professional SP2 NVIDIA Quadro FX 3450/4000 SDI Solid Works 2005 SP 5.1 Design Space 9.0 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: 24. Aug. 2007 10:08 <-- editieren / zitieren --> Unities abgeben: Nur für jositz
Speicher doch Deine Baugruppe als Teil und vereinige darin alle Körper die gehen (bekommen dann einen neuen Namen), verkleistere alles, was zu detailliert ist durch Flutungsfeatures und am Ende exportierst Du das Ganze in einem neutralen Format. ------------------ Lutz Federbusch Mein Gästebuch Der Mensch, Herr oder Sklave der Technik? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sonti Mitglied dipl. Masch.-Ing.
Beiträge: 1175 Registriert: 26.01.2007 Solid Works 2017 SP5 Inventor 2015 Windows 10 SWX (mein Liebling)
|
erstellt am: 27. Aug. 2007 09:53 <-- editieren / zitieren --> Unities abgeben: Nur für jositz
|
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: 27. Aug. 2007 11:29 <-- editieren / zitieren --> Unities abgeben: Nur für jositz
Hallo Jositz, ich hab dir mal ein Makro gebastelt, das die Körper und die Featurenamen der importierten Körper umbenennt und einfach durchnummeriert. Bitte wirklich nur bei Teilen anwenden, die du durch Abspeichern einer Baugruppe als Teil bekommen hast, sonst ist das nicht wirklich sinnvoll Code: ' ********************************************************************** ' * Makro benennt alle Körper eines Einzelteils um, dabei wird einfach ' * eine laufende Nummer hochgezählt. Anschließend werden noch alle ' * Feature vom Typ Importiert umbenannt, so dass alle "Spuren" der ' * Benennung von Baugruppen, die als Teil egspeichert wurden, weg sind. ' * ' * 27.08.2007 Stefan Berlitz (stefan.berlitz@solidworks.cad.de) ' * http://solidworks.cad.de ' * http://swtools.cad.de ' * ' **********************************************************************Dim swApp As Object Dim ModelDoc As Object Dim vBodies As Variant Dim vBody As Variant Dim Body As Object Dim Feature As Object Dim FeatCount As Long Dim counter As Long Dim i As Long Dim BodyType(5) As String ' Konstante aus swconst.bas Public Const swDocPART = 1 Public Const swAllBodies = -1 Public Const swSolidBody = 0 Public Const swSheetBody = 1 Public Const swWireBody = 2 Public Const swMinimumBody = 3 Public Const swGeneralBody = 4 Public Const swEmptyBody = 5 Public Const swTnBaseBody = "BaseBody" Public Const swTnRefSurface = "RefSurface" Sub main() ' an SolidWorks anhängen Set swApp = CreateObject("SldWorks.Application") ' prüfen, ob überhaupt ein Dokument offen ist ... Set ModelDoc = swApp.ActiveDoc If ModelDoc Is Nothing Then MsgBox "Kein Dokument offen" Exit Sub End If ' ... und ob das auch ein Einzelteil ist If (ModelDoc.GetType <> swDocPART) Then MsgBox "Nur für Einzelteile sinnvoll" Exit Sub End If ' einen Loop über alle Körper, diese dann einfach nacheinander ' hochzählen, als Grundname wird der Körpertyp angegeben counter = 0 BodyType(swSolidBody) = "Volumenkörper" BodyType(swSheetBody) = "Oberflächenkörper" BodyType(swWireBody) = "Drahtkörper" BodyType(swMinimumBody) = "Minimumkörper" BodyType(swGeneralBody) = "AllgemeinerKörper" BodyType(swEmptyBody) = "Leerkörper" ' dann einen Loop über alle Körper und die umbenennen vBodies = ModelDoc.GetBodies2(swAllBodies, False) For Each vBody In vBodies counter = counter + 1 Set Body = vBody Body.Name = BodyType(Body.GetType) & counter Next ' und dasseleb Spielchen für die Features Set Feature = ModelDoc.FirstFeature While Not Feature Is Nothing ' Debug.Print Feature.Name & " Typ:" & Feature.GetTypeName ' wenn es ein importierter Klotz oder Fläche ist umbenennen Select Case Feature.GetTypeName ' importierte Körper Case swTnBaseBody Feature.Name = swTnBaseBody & counter ' externe Flächen importiert Case swTnRefSurface Feature.Name = swTnRefSurface & counter End Select ' Zähler hochsetzen counter = counter + 1 ' und auf zum nächsten Feature Set Feature = Feature.GetNextFeature Wend ' und regenerieren, damit alles richtig angezeigt wird ModelDoc.EditRebuild End Sub
Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Stefans SolidWorks Blog Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Locke79 Mitglied Arbeitsvorbereitung
Beiträge: 12 Registriert: 08.03.2022
|
erstellt am: 08. Mrz. 2022 10:05 <-- editieren / zitieren --> Unities abgeben: Nur für jositz
Hallo, der Beitrag ist ja schon etwas älter, hoffe mir kann dazu trotzdem jemand noch Hilfe geben. Das Makro ist für mich schon fast perfekt. Ich würde jetzt allerdings das gern so haben das vorher eine Abfrage kommt wie der "Grundname" sein soll das man dort was beliebiges in eine Box eintragen kann und er das dann übernimmt, ist das möglich? Für eure Unterstützung wäre ich sehr dankbar. 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. Mrz. 2022 22:57 <-- editieren / zitieren --> Unities abgeben: Nur für jositz
Vielleicht so? Der Code könnte insgesamt wahrscheinlich noch etwas effizienter sein, aber dafür ist es heute Abend schon zu spät. Code: Dim swApp As Object Dim ModelDoc As Object Dim vBodies As Variant Dim vBody As Variant Dim Body As ObjectDim Feature As Object Dim FeatCount As Long Dim counter As Long Dim i As Long Dim BodyType(5) As String ' Konstante aus swconst.bas Public Const swDocPART = 1 Public Const swAllBodies = -1 Public Const swSolidBody = 0 Public Const swSheetBody = 1 Public Const swWireBody = 2 Public Const swMinimumBody = 3 Public Const swGeneralBody = 4 Public Const swEmptyBody = 5 Public Const swTnBaseBody = "BaseBody" Public Const swTnRefSurface = "RefSurface" Dim prefixBody As String Dim prefixSurface As String Sub main()
prefixBody = InputBox("Geben Sie den Prefix ein der für die Umbenennung von Volumenkörpern verwendet werden soll.", "Prefix eingeben", "Volumenkörper_") prefixSurface = InputBox("Geben Sie den Prefix ein der für die Umbenennung von Flächen verwendet werden soll.", "Prefix eingeben", "Fläche_") ' an SolidWorks anhängen Set swApp = CreateObject("SldWorks.Application") ' prüfen, ob überhaupt ein Dokument offen ist ... Set ModelDoc = swApp.ActiveDoc If ModelDoc Is Nothing Then MsgBox "Kein Dokument offen" Exit Sub End If ' ... und ob das auch ein Einzelteil ist If (ModelDoc.GetType <> swDocPART) Then MsgBox "Nur für Einzelteile sinnvoll" Exit Sub End If ' einen Loop über alle Körper, diese dann einfach nacheinander ' hochzählen, als Grundname wird der Körpertyp angegeben counter = 0 ' dann einen Loop über alle Körper und die umbenennen vBodies = ModelDoc.GetBodies2(swAllBodies, False) For Each vBody In vBodies counter = counter + 1 Set Body = vBody Body.Name = prefixBody & counter Next ' und dasselbe Spielchen für die Features Set Feature = ModelDoc.FirstFeature While Not Feature Is Nothing ' Debug.Print Feature.Name & " Typ:" & Feature.GetTypeName ' wenn es ein importierter Klotz oder Fläche ist umbenennen Select Case Feature.GetTypeName ' importierte Körper Case swTnBaseBody Feature.Name = prefixBody & counter ' externe Flächen importiert Case swTnRefSurface Feature.Name = prefixSurface & counter End Select ' Zähler hochsetzen counter = counter + 1 ' und auf zum nächsten Feature Set Feature = Feature.GetNextFeature Wend ' und regenerieren, damit alles richtig angezeigt wird ModelDoc.EditRebuild End Sub
[Diese Nachricht wurde von R3vo am 08. Mrz. 2022 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Locke79 Mitglied Arbeitsvorbereitung
Beiträge: 12 Registriert: 08.03.2022
|
erstellt am: 09. Mrz. 2022 08:11 <-- editieren / zitieren --> Unities abgeben: Nur für jositz
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|