Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Property Macro

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
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


Sehen Sie sich das Profil von bqzero an!   Senden Sie eine Private Message an bqzero  Schreiben Sie einen Gästebucheintrag für bqzero

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von riesi an!   Senden Sie eine Private Message an riesi  Schreiben Sie einen Gästebucheintrag für riesi

Beiträge: 1087
Registriert: 06.05.2002

SWX Premium 2023-Sp5

erstellt am: 15. Aug. 2011 11:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für bqzero 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von bqzero an!   Senden Sie eine Private Message an bqzero  Schreiben Sie einen Gästebucheintrag für bqzero

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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)



Sehen Sie sich das Profil von StefanBerlitz an!   Senden Sie eine Private Message an StefanBerlitz  Schreiben Sie einen Gästebucheintrag für StefanBerlitz

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für bqzero 10 Unities + Antwort hilfreich

Hallo Christian,

was kommt denn bei dir raus in den Konfigurationen? Oder werden da die Datzeieigenschaften gar nicht angelegt?

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

riesi
Mitglied
CAD-Admin


Sehen Sie sich das Profil von riesi an!   Senden Sie eine Private Message an riesi  Schreiben Sie einen Gästebucheintrag für riesi

Beiträge: 1087
Registriert: 06.05.2002

SWX Premium 2023-Sp5

erstellt am: 15. Aug. 2011 13:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für bqzero 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von bqzero an!   Senden Sie eine Private Message an bqzero  Schreiben Sie einen Gästebucheintrag für bqzero

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


untitled.jpg


untitled2.jpg

 
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


Sehen Sie sich das Profil von riesi an!   Senden Sie eine Private Message an riesi  Schreiben Sie einen Gästebucheintrag für riesi

Beiträge: 1087
Registriert: 06.05.2002

SWX Premium 2023-Sp5

erstellt am: 15. Aug. 2011 14:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für bqzero 10 Unities + Antwort hilfreich

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)



Sehen Sie sich das Profil von StefanBerlitz an!   Senden Sie eine Private Message an StefanBerlitz  Schreiben Sie einen Gästebucheintrag für StefanBerlitz

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für bqzero 10 Unities + Antwort hilfreich

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)



Sehen Sie sich das Profil von StefanBerlitz an!   Senden Sie eine Private Message an StefanBerlitz  Schreiben Sie einen Gästebucheintrag für StefanBerlitz

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für bqzero 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von bqzero an!   Senden Sie eine Private Message an bqzero  Schreiben Sie einen Gästebucheintrag für bqzero

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz