| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
 | Erfolgreiche Roboterimplementierung: Von der digitalen Simulation zur Realität., ein Webinar am 24.06.2025
|
Autor
|
Thema: Property Macro (2849 mal gelesen)
|
bqzero Mitglied Konstrukteur

 Beiträge: 10 Registriert: 04.01.2010 Z400 Xeon W3520 4GB RAM nVidia Quadro FX 1800 768MB Windows XP 32bit Solidworks 2009 SP5.1
|
erstellt am: 15. Aug. 2011 11:15 <-- editieren / zitieren --> Unities abgeben:         
Hallo Bin gerade daran ein Macro zu schreiben, dass mir in jedem offenen Solidworks File Proberties einträgt. Das ganez funktioniert soweit auch ganz gut, aber er trägt mir die gewünschten Properties auch in den Custom Properties ein nicht nur im den Configuration Specific, wo sie nur stehen sollten. Hier der wichtige schnippsel:
Code: ' Patching point to apply operation on given document Private Sub processDoc(linkMap As LinkMapClass, doc As ModelDoc2) If Not linkMap.isCheckUnique(doc.GetPathName) Then Exit Sub ' For DEBUG only! Debug.Print "PROCESSING>> "; doc.GetPathName() filename = Right(doc.GetPathName, 25) performAction doc.Extension.CustomPropertyManager("") ' configuration specific properties ' Konfigurationsspezifische Eingenschaften ' Loop through all configurations to also check for custom properties Dim iCfg As Integer Dim configNames As Variant configNames = doc.GetConfigurationNames() If Not IsEmpty(configNames) Then For iCfg = LBound(configNames) To UBound(configNames) Dim thisConfigName As String thisConfigName = configNames(iCfg) confignameproperty = thisConfigName performAction doc.Extension.CustomPropertyManager(thisConfigName) Next iCfg End If End Sub ' Perform required action Private Sub performAction(ByVal cMgr As SldWorks.CustomPropertyManager) Dim probvalue As String Dim art As String art = UCase(Right(filename, 6)) If Not IsEmpty(confignameproperty) Then If Not art = "SLDDRW" Then probvalue = Chr$(34) & "SW-Mass@@" & confignameproperty & "@" & filename & Chr$(34) cMgr.Add2 "MARA-BRGW", swCustomInfoText, probvalue probvalue = Chr$(34) & "SW-Material@@" & confignameproperty & "@" & filename & Chr$(34) cMgr.Add2 "MARA-WRKST", swCustomInfoText, probvalue probvalue = Chr$(34) & "SW-Volume@@" & confignameproperty & "@" & filename & Chr$(34) cMgr.Add2 "MARA-VOLUM", swCustomInfoText, probvalue Else probvalue = Chr$(32) cMgr.Add2 "DrwState", swCustomInfoText, probvalue End If End If ' cMgr.Delete "MARA-BRGW" End Sub
Die drei Properties MARA-BRGW MARA-WRKST MARA-VOLUM sollten nur in den configration specific properties stehen. weiss jemand was ich da tun kann damit es mir die nicht in customs einträgt? Gruss Christian ------------------ Ich bin root ich darf das Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
riesi Mitglied CAD-Admin
   
 Beiträge: 1087 Registriert: 06.05.2002 SWX Premium 2023-Sp5
|
erstellt am: 15. Aug. 2011 11:43 <-- editieren / zitieren --> Unities abgeben:          Nur für bqzero
Ich mache es immer so: Code: ... Set swConfigMgr = swModel.ConfigurationManager Set swConfig = swConfigMgr.ActiveConfiguration Select Case swxAktion Case swxGlobal Set swCustPropMgr = swModel.extension.CustomPropertyManager("") swAddInfo Case swxCustom Set swCustPropMgr = swConfig.CustomPropertyManager swAddInfo ...
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bqzero Mitglied Konstrukteur

 Beiträge: 10 Registriert: 04.01.2010 Z400 Xeon W3520 4GB RAM nVidia Quadro FX 1800 768MB Windows XP 32bit Solidworks 2009 SP5.1
|
erstellt am: 15. Aug. 2011 12:28 <-- editieren / zitieren --> Unities abgeben:         
Hallo Da blick ich nicht ganz durch. Bei meinem Code sollte er meines wissens nur einen eintrag erstellen, wenn er diese Bedingung erfüllt Code: If Not IsEmpty(confignameproperty) Then
nur scheint er dannach den eintrag in beiden registern zu tätigen. verwende ich evt. die falsche funktion cMgr.Add2? Gruss Christian
------------------ Ich bin root ich darf das 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: 15. Aug. 2011 13:24 <-- editieren / zitieren --> Unities abgeben:          Nur für bqzero
|
riesi Mitglied CAD-Admin
   
 Beiträge: 1087 Registriert: 06.05.2002 SWX Premium 2023-Sp5
|
erstellt am: 15. Aug. 2011 13:33 <-- editieren / zitieren --> Unities abgeben:          Nur für bqzero
Hier noch ein wenig mehr: Code:
Set swApp = CreateObject("SldWorks.Application") Set swModel = swApp.ActiveDoc
Bis hier hin Standard für so ziemlich jedes Makro
Code:
Set swConfigMgr = swModel.ConfigurationManager Set swConfig = swConfigMgr.ActiveConfiguration Set swCustPropMgr = swConfig.CustomPropertyManager swCustPropMgr.Add2 "A-Nr.", swCustomInfoText, "08/15"
Diese Code-Schnipsel schreiben Dir in die gerade aktive Konfiguration das Feld "A-Nr." mit dem Inhalt "08/15"Wenn Du die Konfiguration mit Namen ansprechen möchtest, dann so:
Code:
Set swCustPropMgr = swModel.Extension.CustomPropertyManager("{Name der Konfiguration}")
Gruß, Klaus. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bqzero Mitglied Konstrukteur

 Beiträge: 10 Registriert: 04.01.2010 Z400 Xeon W3520 4GB RAM nVidia Quadro FX 1800 768MB Windows XP 32bit Solidworks 2009 SP5.1
|
erstellt am: 15. Aug. 2011 13:48 <-- editieren / zitieren --> Unities abgeben:         
Zitat: Original erstellt von StefanBerlitz: Hallo Christian,was kommt denn bei dir raus in den Konfigurationen? Oder werden da die Datzeieigenschaften gar nicht angelegt? Ciao, Stefan
Hallo Schreiben tut er mir alles korrekt, aber bei der ersten konfiguration schreibt er mir was in die customs rein, wo ich sie nicht gebrauchen kann. siehe bilder Gruss Christian ------------------ Ich bin root ich darf das Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
riesi Mitglied CAD-Admin
   
 Beiträge: 1087 Registriert: 06.05.2002 SWX Premium 2023-Sp5
|
erstellt am: 15. Aug. 2011 14:02 <-- editieren / zitieren --> Unities abgeben:          Nur für bqzero
In Zeile 9 rufst Du das Makro auf und es wird in die Globals geschrieben. Code: ' Patching point to apply operation on given document Private Sub processDoc(linkMap As LinkMapClass, doc As ModelDoc2) If Not linkMap.isCheckUnique(doc.GetPathName) Then Exit Sub ' For DEBUG only! Debug.Print "PROCESSING>> "; doc.GetPathName() filename = Right(doc.GetPathName, 25) performAction doc.Extension.CustomPropertyManager("") <-- Diese Zeile löschen ' configuration specific properties
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: 15. Aug. 2011 14:05 <-- editieren / zitieren --> Unities abgeben:          Nur für bqzero
Hallo Christian, ich bin davon ausgegangen, dass du deine Variable confignameproperty als (modul)globalen STring deklariert hast, aber ich argwöhne jetzt, dass du nicht mit "Option explicit" arbeitest und die confignameproperty so nebenbei initialisieren lässt - deswegen auch das IsEmpty. Ich würde es so machen, dass ich den Namen der Konfiguration mit der Routine performAction mit übergebe und dann darin explizit auf If configname ="" then überprüfe. Das mit dem IsEmpty ist mir da etwas suspekt  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 |
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: 15. Aug. 2011 14:09 <-- editieren / zitieren --> Unities abgeben:          Nur für bqzero
Ich hatte das so verstanden, dass er schon ein paar übergreifende Eigenschaften schreiben wollte, aber die drei MARA-Eigenschaften eben nur, wenn die später in dem Loop über die Konfigs gemacht werden. Ich vermute, dass irgendwo anders die confignameproperty sehr wohl schon initialisiert wurde und deswegen auch beim ersten Aufruf auf die ""-Konfig diese Eigenschaften egschrieben werden. 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 |
bqzero Mitglied Konstrukteur

 Beiträge: 10 Registriert: 04.01.2010 Z400 Xeon W3520 4GB RAM nVidia Quadro FX 1800 768MB Windows XP 32bit Solidworks 2009 SP5.1
|
erstellt am: 15. Aug. 2011 14:40 <-- editieren / zitieren --> Unities abgeben:         
Danke jungs. Habe die erwähnte Zeile auskommentiert nun funktioniertdas ganze tadellos. Hab das Ding einfach nicht gesehen. Danke für eure Mühe. Gruss Christian
------------------ Ich bin root ich darf das Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |