| |
| 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: Hilfe bei Dateieigenschaften (1132 mal gelesen)
|
Micha Konst Mitglied Techniker
Beiträge: 9 Registriert: 19.11.2007
|
erstellt am: 19. Nov. 2007 13:17 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich wurschtel mich seit einigen Tagen (Wochen) durch SWX. Jetzt habe ich mal "Spaßeshalber" eine Normteiledatenbank erstellt" Ca. 9600 Teile. In den Dateieigenschaften laut Bild im Anhang stehen jetzt Eigenschaften wie Bezeichnung_1;Bezeichnung_2. Hat jemand eine Idee wie ich per Macro diese Namen in Beispielsweise MK_Bezeichnung_1 ändern kann. Ich würde das nur ungern per hand machen da ich wie gesagt 9600 Dateien habe mit jeweils 5 Bezeichnungen die ich sonst alle per Hand ändern müßte. Ich bin dankbar für jede AW. Gruß 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. Nov. 2007 13:30 <-- editieren / zitieren --> Unities abgeben: Nur für Micha Konst
Hast Du schonmal die Suche benutzt? Hier gibt es jede Menge Beiträge zu den Dateieigenschaften und mindestens 20 Makrobeispiele. Kombiniere Dir das so, daß Du die alte Eigenschaft suchst, Wert ausliest, löschst und dann die neue Eigenschaft mit dem Wert wieder neu anlegst. Und das am Besten gleich für alle Teile in einem Verzeichnis... ------------------ Lutz Federbusch Mein Gästebuch Der Mensch, Herr oder Sklave der Technik? [Diese Nachricht wurde von Lutz Federbusch am 19. Nov. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Micha Konst Mitglied Techniker
Beiträge: 9 Registriert: 19.11.2007
|
erstellt am: 19. Nov. 2007 13:34 <-- editieren / zitieren --> Unities abgeben:
|
Teddibaer Ehrenmitglied V.I.P. h.c. Struktur-Experte
Beiträge: 2125 Registriert: 09.02.2004 **CSWP 06/2004** -- MacBook Air M1 MacBook Pro M1-Max
|
erstellt am: 19. Nov. 2007 13:38 <-- editieren / zitieren --> Unities abgeben: Nur für Micha Konst
Das geht prinzipiell so: Const propname1 As String = "Benennung" Auslesen: Erst wird ausgelesen was in deinen Eigenschaften drinne ist: ---> customprop113 = Part.CustomInfo2(config, propname113) Dann wir das ausgelesene in eine Box geschrieben ---> TextBox1.Text = customprop113
Schreiben: Dann wird die Eigenschaft geleert: ---> Call Part.DeleteCustomInfo(propname113) Die neue Eigenschafte (der neue Inhalt) definiert. An dieser Stelle kannst Du dann manipulieren und das Präfix mit unterbringen: ---> Name_alt = TextBox1.Text ---> Name_neu=Praefix + Name_alt ---> costumprop113new = Name_neu
Und dann ins Teil zurückgeschrieben ---> Call Part.AddCustomInfo(propname113, "Text", costumprop113new) Wenn'S Makro am Einzelteil läuft, kannst Du es auch über bsw PAC4SWX automatisiert drüberbügeln.
Viel Spass beim Tüfteln. ------------------ Gruß, der Teddibaer Besucht mich doch einmal ... oder ... auch zweimal ... ----------------------------------------------------------------- Brot kann schimmeln ... und was kannst Du? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Micha Konst Mitglied Techniker
Beiträge: 9 Registriert: 19.11.2007
|
erstellt am: 19. Nov. 2007 13:58 <-- editieren / zitieren --> Unities abgeben:
Hallo Teddi, danke habe mit meiner Dummheit es jetzt so gemacht! Und bekomme nur Fehler! Kannst du helfen? Dim swApp As Object Dim Part As Object Dim SelMgr As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Dim Feature As Object Sub main() Const propname2 As String = "Bemerkung" Const propname3 As String = "Artikelnummer" Const propname4 As String = "Bezeichnung1" Const propname5 As String = "Bezeichnung2" Const propname6 As String = "Stueli" customprop2 = Part.CustomInfo2(config, propname2)
TextBox1.Text = customprop2 Call Part.DeleteCustomInfo(propname2)
Name_alt = TextBox1.Text Name_neu = ML_ + Name_alt costumprop2new = Name_neu Call Part.AddCustomInfo(propname2, "Text", costumprop2new)
Set swApp = Application.SldWorks Set Part = swApp.ActiveDoc Set SelMgr = Part.SelectionManager Part.FileSummaryInfo End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
hico Mitglied Konstrukteur
Beiträge: 258 Registriert: 03.03.2005
|
erstellt am: 19. Nov. 2007 15:03 <-- editieren / zitieren --> Unities abgeben: Nur für Micha Konst
|
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. Nov. 2007 15:14 <-- editieren / zitieren --> Unities abgeben: Nur für Micha Konst
Probiers mal damit: Dim swApp As Object Dim Part As Object Dim customprop As String Dim Eigenschaft As String Const propname2 As String = "Bemerkung" Const propname3 As String = "Artikelnummer" Const propname4 As String = "Bezeichnung1" Const propname5 As String = "Bezeichnung2" Const propname6 As String = "Stueli" Dim i As Byte Dim retval As Boolean Const swCustomInfoText = 30 Sub main() Set swApp = CreateObject("SldWorks.Application") Set Part = swApp.ActiveDoc For i = 2 To 6 If i = 2 Then Eigenschaft = propname2 If i = 3 Then Eigenschaft = propname3 If i = 4 Then Eigenschaft = propname4 If i = 5 Then Eigenschaft = propname5 If i = 6 Then Eigenschaft = propname6 customprop = Part.GetCustomInfoValue("", Eigenschaft) ' MsgBox ("jetzt" + Str(i) + vbCrLf + "Wert=" + customprop + " für " + Eigenschaft) retval = Part.DeleteCustomInfo2("", Eigenschaft) Eigenschaft = "ML_" + Eigenschaft retval = Part.AddCustomInfo3("", Eigenschaft, swCustomInfoText, customprop) ' MsgBox ("Neu=" + Eigenschaft + vbCrLf + "Retval=" + Str(retval)) Next i End Sub ------------------ Lutz Federbusch Mein Gästebuch Der Mensch, Herr oder Sklave der Technik? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Micha Konst Mitglied Techniker
Beiträge: 9 Registriert: 19.11.2007
|
erstellt am: 19. Nov. 2007 16:39 <-- editieren / zitieren --> Unities abgeben:
Hallo Lutz, danke für das wirklich tolle Makro! Leider habe ich mit den ein kleines Manko! Es ändert nicht nur die Namen sondern löscht auch den Texte in den Splaten dahinter! Fällt dir da noch was ein? 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. Nov. 2007 18:23 <-- editieren / zitieren --> Unities abgeben: Nur für Micha Konst
Es holt den Wert, löscht die Eigenschaft und legt eine neue mit dem geänderten Wert wieder an. Was geht da jetzt schief?! Meinst Du die Spalte "Evaluiert zu"? Die sollte sich nach einem Neuaufbau wieder füllen... ------------------ Lutz Federbusch Mein Gästebuch Der Mensch, Herr oder Sklave der Technik? [Diese Nachricht wurde von Lutz Federbusch am 19. Nov. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Micha Konst Mitglied Techniker
Beiträge: 9 Registriert: 19.11.2007
|
erstellt am: 19. Nov. 2007 18:34 <-- editieren / zitieren --> Unities abgeben:
|
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. Nov. 2007 10:03 <-- editieren / zitieren --> Unities abgeben: Nur für Micha Konst
Bei allen CustomInfo-Befehlen hast Du als ersten Parameter ein "" für die Konfiguration. "" heißt benutzerdefiniert; gibst Du stattdessen dort einen Text "speziell" an, dann wird die Konfiguration "speziell" diese Eigenschaft bekommen... ------------------ Lutz Federbusch Mein Gästebuch Der Mensch, Herr oder Sklave der Technik? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Micha Konst Mitglied Techniker
Beiträge: 9 Registriert: 19.11.2007
|
erstellt am: 04. Dez. 2007 10:50 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, ich habe zwei Bilder beigefügt sowie unten stehendes Makro! Ich möchte das die Konfigurationsspezifischen Eígenschaften so getauscht werden. Nur der Name soll getauscht werden nicht die Infos in den Zellen. Bislang trägt mein Makro nur in den Bereichen wie im Bild 1 dargestellt Dim swApp As Object Dim Part As Object Dim customprop As String Dim Eigenschaft As String Const propname2 As String = "Bemerkung" Const propname3 As String = "Artikelnummer" Const propname4 As String = "Bezeichnung1" Const propname5 As String = "Bezeichnung2" Const propname6 As String = "Stueli" Dim i As Byte Dim retval As Boolean Const swCustomInfoText = 30 Sub main() Set swApp = CreateObject("SldWorks.Application") Set Part = swApp.ActiveDoc For i = 2 To 6 If i = 2 Then Eigenschaft = propname2 If i = 3 Then Eigenschaft = propname3 If i = 4 Then Eigenschaft = propname4 If i = 5 Then Eigenschaft = propname5 If i = 6 Then Eigenschaft = propname6 customprop = Part.GetCustomInfoValue("configname", Eigenschaft) ' MsgBox ("jetzt" + Str(i) + vbCrLf + "Wert=" + customprop + " für " + Eigenschaft) retval = Part.DeleteCustomInfo2("configname", Eigenschaft) Eigenschaft = "ML_" + Eigenschaft retval = Part.AddCustomInfo3("configname", Eigenschaft, swCustomInfoText, customprop) ' MsgBox ("Neu=" + Eigenschaft + vbCrLf + "Retval=" + Str(retval)) Next i Danke End Sub 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: 04. Dez. 2007 12:05 <-- editieren / zitieren --> Unities abgeben: Nur für Micha Konst
Hallo Micha, wenn du konfigurationsspezifische Dateieigenschaften verarbeiten willst musst du als ersten Parameter den Konfigurationsnamen eintragen. Mit ModelDoc2::GetActiveConfiguration kommst du an die aktive Konfiguration, mit Configuration::Name dann den Namen, den kannst du dann bei deinem ModelDoc2::AddCustomInfo3 einsetzen. 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 |
Micha Konst Mitglied Techniker
Beiträge: 9 Registriert: 19.11.2007
|
erstellt am: 07. Dez. 2007 10:05 <-- editieren / zitieren --> Unities abgeben:
Hallo Stefan so ganz durchschaue ich das noch nicht. Ich will ja nur die Bezeichnung Tauschen nicht den Inhalt der weiteren Zellen. Wo in dem Macro muss ich den deine Befehle einsetzen? Gruss Micha 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: 07. Dez. 2007 10:37 <-- editieren / zitieren --> Unities abgeben: Nur für Micha Konst
Hallo Micha, sei mir bitte nicht böse, aber ich hab nicht den Eindruck, dass du das durchschauen willst, sondern auf ein fertiges Makro hoffst. Wenn du selbst programmieren willst musst du dich mit der API Hilfe auseinander setzen und die Grundlagen von VB/VBA begriffen haben. Wenn du das getan hast sollten dir die Hinweise von Teddibaer und der Code von Lutz ausreichende Hilfe sein. Ich hab dir dann nur noch gesagt, wie du den Namen der aktiven Konfiguration findest, damit du das nicht selbst aus der API Hilfe raussuchen musst. An deinen Code (bzw. den Code von Lutz) anpassen musst du es schon selbst. Wenn du ein fertiges Makro haben möchtest kannst du Glück haben, dass jemand gerade was rumfliegen hat, was er auch hergeben möchte, oder du schaust mal, wer so im allgemeinen Macrofragen beantwortet und schreibst ne PM, dass du so ein Makro ggf. auch bezahlen willst Das Forum, ist nach meinem Verständnis mehr als Hilfe zur Selbsthilfe gedacht, nicht als Anforderungs- oder Vermittlungsstelle für fertige Lösungen. Ciao, Stefan PS: wenn du es dann mit der Hilfe hier und durch weiteres Tüfteln hinbekommen hast, hat niemand etwas dagegen, wenn du das fertige Makro dann hier wieder zur Verfügung stellst, das vergessen komischweise viele von den Leuten, denen hier auf die Sprünge geholfen wird ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Stefans SolidWorks Blog Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Mitglied Teamleiter
Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600 ----- Win XP Prof SP 3 SW 2008 SP 5.0 PARTsolutions 8.1.08 Cideon SAP PLM 5.103.5.17 Visual Studio 2008
|
erstellt am: 07. Dez. 2007 11:28 <-- editieren / zitieren --> Unities abgeben: Nur für Micha Konst
Da ich ein Fan von neuen API Methoden bin, möchte ich doch gerne darauf hinweisen, dass man seit SolidWorks 2007 die Dokumenteigenschaften mit Hilfe des CustomPropertyManager Objekts bearbeitet. Code: Dim Retval as SldWorks.CustomPropertyManager modelDocExt = ModelDoc2.Extension Retval = ModelDocExtension.CustomPropertyManager
Soll jetzt keine klug******erei sein, nur ein Hinweis. Die alten Methoden funktionieren z.Z. noch fehlerfrei. ------------------ Mfg Daniel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |