| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| SOLIDWORKS PDM Professional im Einsatz bei Wölfle, ein Anwenderbericht
|
Autor
|
Thema: Zeichnungsblätter benutzerspezifisch benennen (7946 mal gelesen)
|
reflow Mitglied Dipl. Ing. Maschinenbau
Beiträge: 443 Registriert: 27.10.2005 SWX 2015 Office SP 3.0 mit SolidWorks Flow Simulation, TopsWorks, SPI SheetmetalWorks, W7 64 Bit Intel i7, 64GB RAM
|
erstellt am: 22. Mai. 2007 12:19 <-- editieren / zitieren --> Unities abgeben:
Hallo Expertenforum, ich habe folgendes vor: Statt der standardmäßigen Blattbezeichnungen in SWX möchte ich die einzelnen Seiten einer Zeichnung gerne mit dem Namen der dort angezeigten (Haupt-)Konfiguration benennen, also z.B. "Standard" Etwas vergleichbares geht bei den Bezugshinweisen, die ich auch mit Teileeigenschaften wie z.B. der Masse oder dem Namen der Konfiguration verknüpfen kann. Wenn ich dann unterschiedliche Konfigurationen in unterschiedlichen Blättern ablege, kann ich nicht nur über die angezeigten Blattbezeichnungen daruf zugreifen, sondern sie werden auch beim DXF-Export in den Dateinamen geschrieben, d.h. sie sind auch dort sichtbar. Bisher mache ich das händisch --> mühsam und fehlerträchtig. Nun meine Frage(n): 1. Gibt es ein geeignetes Makro oder ist jemand in der Lage ein solches für bezahlbares Geld zu schreiben?
2. Gibt es (bzw. siehe oben) ein Makro, das die Blattnamen ggf. auch für schon bestehende Zeichnungen nach meiner Beschreibung ändern kann? Meine Makrokenntnisse sind da leider bei weitem überfordert. Schon im Voraus vielen Dank für alle Tips. Gruß
Ron
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: 22. Mai. 2007 13:47 <-- editieren / zitieren --> Unities abgeben: Nur für reflow
Hallo reflow, ich hab dir mal ein Makro gemacht, was das erledigen sollte: es schaut in den Blatteigenschaften nach, welche Zeichnungsansicht für die benutzerdefinierten Dateieigenschaften zuständig ist und benutzt diese auch, um den Namen der Konfiguration aus dieser Zeichenansicht zu ermitteln. Danach wird das Blatt entsprechend umbenannt. Kleiner Pferdefuss: hat schon ein anderes Blatt diesen Namen klappt das mit dem Umbenennen nicht, leider gibt es keine Rückmeldung für die API, dass das schief gegangen ist. Nun zu deinen Fragen: > 1. Gibt es ein geeignetes Makro ... Bisher war mir keins bekannt, jetzt gibt es eins. > ... oder ist jemand in der Lage ein solches für bezahlbares Geld zu schreiben? Ja, würde ich auch gegen Geld machen. Wenn du das ernst meinst schicke (in diesem Fall) nicht mir das Geld, sondern such dir einen Kindergarten in deiner Nähe und spende denen etwas, besorg und schenke denen 1000 Blatt Malpapier und Buntstifte, oder etwas in der Art. Da ist es gut angelegt > 2. Gibt es (bzw. siehe oben) ein Makro, das die Blattnamen ggf. > auch für schon bestehende Zeichnungen nach meiner Beschreibung > ändern kann? Ja, das Makro arbeitet für das aktuelle Dokument, also einfach deine alten Zeichnungen aufrufen, Makro laufen lassen, fertig Ciao, Stefan --
Code: ' ********************************************************************** ' * Makro benennt alle Blätter einer Zeichnung um, dazu wird der ' * Konfigurationsname des Modells in der Zeichenansicht genutzt, die ' * auch für die benutzerdefinierten Eigenschaften in den ' * Blatteigenschaften eingestellt ist ' * ' * 22.05.2007 Stefan Berlitz (stefan.berlitz@solidworks.cad.de) ' * http://solidworks.cad.de ' * http://swtools.cad.de ' * ' **********************************************************************Dim swApp As Object Dim DrawingDoc As Object Dim Sheet As Object Dim Viewname As String Dim View As Object Dim ConfigName As String Dim i As Long Dim AnzahlBl As Long Dim SheetNames As Variant ' Konstante aus swconst.bas Const swDocDRAWING = 3 Sub main() ' an SolidWorks anhängen Set swApp = CreateObject("SldWorks.Application") ' prüfen, ob überhaupt ein Dokument offen ist ... Set DrawingDoc = swApp.ActiveDoc If DrawingDoc Is Nothing Then MsgBox "Kein Dokument offen" Exit Sub End If ' ... und ob das auch eine Zeichnung ist If (DrawingDoc.GetType <> swDocDRAWING) Then MsgBox "Nur für Zeichnungen sinnvoll" Exit Sub End If ' einen Loop über alle Blätter, dazu die Anzahl der Blätter holen, ' und dann in der Schleife eines nach dem anderen abklappern AnzahlBl = DrawingDoc.GetSheetCount SheetNames = DrawingDoc.GetSheetNames For i = 0 To AnzahlBl - 1 ' das nächste Blatt aktivieren If DrawingDoc.ActivateSheet(SheetNames(i)) Then ' aktuelles Blatt holen Set Sheet = DrawingDoc.GetCurrentSheet ' Namen zurücksetzen ConfigName = "???" ' den Viewnamen aus den Blatteigenschaften auslesen Viewname = Sheet.CustomPropertyView ' dann den passenden View suchen,d er erste View ist immer das Blatt selbst Set View = DrawingDoc.GetFirstView ' wenn der Viewname "Standard" ist wird der erste View genommen If Viewname = "Standard" Then ' also die Konfig aus dem Modell des ersten Views holen Set View = View.GetNextView ConfigName = View.ReferencedConfiguration Else ' ansonsten die View suchen, deren Namen angegeben ist While Not View Is Nothing If View.GetName2 = Viewname Then ConfigName = View.ReferencedConfiguration End If Set View = View.GetNextView Wend End If ' So, jetzt haben wir den Namen der Konfiguration, die jetzt in ' den Blattnamen eintragen ' eigentlich müsste hier noch geprüft werden, ob es schon ein Blatt ' mit diesem Namen gibt, denn sonst klappt das Umbenennen nicht Sheet.SetName (ConfigName) End If Next i End Sub
------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Member of CAD.de BOINC Team - | Seti@Home | CPDN | Einstein@Home Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
reflow Mitglied Dipl. Ing. Maschinenbau
Beiträge: 443 Registriert: 27.10.2005 SWX 2015 Office SP 3.0 mit SolidWorks Flow Simulation, TopsWorks, SPI SheetmetalWorks, W7 64 Bit Intel i7, 64GB RAM
|
erstellt am: 22. Mai. 2007 18:56 <-- editieren / zitieren --> Unities abgeben:
Gracias, das war spitze Zitat: Ja, würde ich auch gegen Geld machen. Wenn du das ernst meinst schicke (in diesem Fall) nicht mir das Geld, sondern such dir einen Kindergarten in deiner Nähe und spende denen etwas, besorg und schenke denen 1000 Blatt Malpapier und Buntstifte, oder etwas in der Art. Da ist es gut angelegt
Sowas "in der Art" wird mir dann wohl einfallen. Gruß Ron
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Konti123 Mitglied
Beiträge: 16 Registriert: 03.06.2014
|
erstellt am: 09. Mai. 2016 14:41 <-- editieren / zitieren --> Unities abgeben: Nur für reflow
|
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2798 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 09. Mai. 2016 15:15 <-- editieren / zitieren --> Unities abgeben: Nur für reflow
Hallo Konti, was meinst du mit "Benennung"? Ist das eine Eigenschaft oder meinst du das was in den Konfigurationseigenschaften eingestellt ist? Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Konti123 Mitglied
Beiträge: 16 Registriert: 03.06.2014
|
erstellt am: 09. Mai. 2016 15:27 <-- editieren / zitieren --> Unities abgeben: Nur für reflow
|
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2798 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 10. Mai. 2016 07:01 <-- editieren / zitieren --> Unities abgeben: Nur für reflow
Hallo Konti, habe Stefans Macro mal umgebaut das er sich die Eigenschaft "Benennung" aus dem Modell holt. Code: ' ********************************************************************** ' * Makro benennt alle Blätter einer Zeichnung um, dazu wird die ' * Benutzerdefinierte Eigenschaft "Benennung" des Modells in der Zeichenansicht genutzt, ' * die auch für die benutzerdefinierten Eigenschaften in den ' * Blatteigenschaften eingestellt ist ' * ' * 22.05.2007 Stefan Berlitz (stefan.berlitz@solidworks.cad.de) ' * http://solidworks.cad.de ' * http://swtools.cad.de ' * ' * EDIT: Ursprünglich wurde der Konfigurationsname ausgelesen an Stelle der benutzerdefinierten Eigenschaft "Benenneung" ' **********************************************************************Dim swApp As Object Dim DrawingDoc As Object Dim Sheet As Object Dim Viewname As String Dim View As SldWorks.View Dim RefComponent As SldWorks.ModelDoc2 Dim prpBenennung As String Dim i As Long Dim AnzahlBl As Long Dim SheetNames As Variant ' Konstante aus swconst.bas Const swDocDRAWING = 3 Sub main() ' an SolidWorks anhängen Set swApp = CreateObject("SldWorks.Application") ' prüfen, ob überhaupt ein Dokument offen ist ... Set DrawingDoc = swApp.ActiveDoc If DrawingDoc Is Nothing Then MsgBox "Kein Dokument offen" Exit Sub End If ' ... und ob das auch eine Zeichnung ist If (DrawingDoc.GetType <> swDocDRAWING) Then MsgBox "Nur für Zeichnungen sinnvoll" Exit Sub End If ' einen Loop über alle Blätter, dazu die Anzahl der Blätter holen, ' und dann in der Schleife eines nach dem anderen abklappern AnzahlBl = DrawingDoc.GetSheetCount SheetNames = DrawingDoc.GetSheetNames For i = 0 To AnzahlBl - 1 ' das nächste Blatt aktivieren If DrawingDoc.ActivateSheet(SheetNames(i)) Then ' aktuelles Blatt holen Set Sheet = DrawingDoc.GetCurrentSheet ' Componente zurücksetzen Set RefComponent = Nothing ' den Viewnamen aus den Blatteigenschaften auslesen Viewname = Sheet.CustomPropertyView ' dann den passenden View suchen,d er erste View ist immer das Blatt selbst Set View = DrawingDoc.GetFirstView ' wenn der Viewname "Standard" ist wird der erste View genommen If Viewname = "Standard" Then ' also Modellname aus dem Modell des ersten Views holen Set View = View.GetNextView Set RefComponent = View.ReferencedDocument prpBenennung = RefComponent.CustomInfo2("", "Benennung") Else ' ansonsten die View suchen, deren Namen angegeben ist While Not View Is Nothing If View.GetName2 = Viewname Then Set RefComponent = View.ReferencedDocument prpBenennung = RefComponent.CustomInfo2("", "Benennung") End If Set View = View.GetNextView Wend End If ' So, jetzt haben wir die Eigenschaft "Benennung" aus den benutzerdefinierten ' Eigenschaften der Komponente, diese jetzt in den Blattnamen eintragen ' eigentlich müsste hier noch geprüft werden, ob es schon ein Blatt ' mit diesem Namen gibt, denn sonst klappt das Umbenennen nicht. ' wenn die Eigenscht Benennung leer oder nicht vorhanden ist wird das Blatt ' nicht umbenannt und mit dem nächsten Blatt fortgefahren If prpBenennung <> "" Then Sheet.SetName (prpBenennung) End If End If Next i End Sub
Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Konti123 Mitglied
Beiträge: 16 Registriert: 03.06.2014
|
erstellt am: 10. Mai. 2016 08:21 <-- editieren / zitieren --> Unities abgeben: Nur für reflow
|
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2798 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 10. Mai. 2016 11:41 <-- editieren / zitieren --> Unities abgeben: Nur für reflow
Hallo Konti, am einfachsten im Macro Strg+H und "Benennung" suchen/ersetzen durch "Zeichnungsnummer". Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Konti123 Mitglied
Beiträge: 16 Registriert: 03.06.2014
|
erstellt am: 10. Mai. 2016 12:59 <-- editieren / zitieren --> Unities abgeben: Nur für reflow
|