Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Makro - Eigenschaften Benutzderdef. und Konfig.

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
Autor Thema:   Makro - Eigenschaften Benutzderdef. und Konfig. (313 mal gelesen)
CAD-Freelancer
Mitglied
Konstrukteur


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

Beiträge: 133
Registriert: 20.06.2007

CAD Dienstleister aus OWL;
Solidworks 2007 Standard
Solidworks 2009 Standard
Solidworks 2010 Standard
-----
2 x XEON Quadcore (8 x 3,0GHz)
Quadro FX 4600
16 GB RAM
146 GB SAS Seagate Cheetha Festplatte
(RAID Verbund)
-----
Internetseiten noch in der Barbeitung!

erstellt am: 26. Okt. 2018 12:38    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!

ich versuche hier seid geraumer Zeit ein Makro auf die Beine zu stellen was folgendes machen soll:

Alle Eigenschaftsfelder mit Inhalt in den benutzerdefinierten übertragen in die konfigurationsspezifischen.

Hier ist der Code, den ich versuche umzumüntzen, aber meine letzten Gehversuche sind schon 10 Jahre her, als ich das letzte Mal ein
Makro umgeschrieben hatte.


Option Explicit
Dim swApp As SldWorks.SldWorks
Dim Part As SldWorks.PartDoc
Dim Doc As SldWorks.ModelDoc2
Dim SelMgr As SldWorks.SelectionMgr
Function BOMPartNumber(config As SldWorks.Configuration, document As SldWorks.ModelDoc2) As String
    Select Case config.BOMPartNoSource
    Case SwConst.swBOMPartNumberSource_e.swBOMPartNumber_ConfigurationName
        BOMPartNumber = config.Name
    Case SwConst.swBOMPartNumberSource_e.swBOMPartNumber_DocumentName
        BOMPartNumber = document.GetTitle
    Case SwConst.swBOMPartNumberSource_e.swBOMPartNumber_UserSpecified
        BOMPartNumber = config.AlternateName
    Case SwConst.swBOMPartNumberSource_e.swBOMPartNumber_ParentName
        Dim parentConfig As SldWorks.Configuration
        Set parentConfig = config.GetParent
        If parentConfig.BOMPartNoSource = SwConst.swBOMPartNumberSource_e.swBOMPartNumber_ParentName Then
            BOMPartNumber = BOMPartNumber(parentConfig, document)
        Else
            BOMPartNumber = parentConfig.Name
        End If
    End Select
End Function
Function InspectConfigurations(Doc As SldWorks.ModelDoc2)
    Dim params As Variant
    params = Doc.GetConfigurationNames
    Dim vName As Variant
    Dim Name As String
    Dim thisConfig As Configuration
    For Each vName In params
        Name = vName
        Set thisConfig = Doc.GetConfigurationByName(Name)
        Debug.Print "Name                      ", thisConfig.Name
        ' Work out what the BOM part number is based on any derived configurations
        Debug.Print "BOMPartNumber            ", BOMPartNumber(thisConfig, Doc)
        Debug.Print "AlternateName            ", thisConfig.AlternateName
        Debug.Print "Comment                  ", thisConfig.Comment
        Debug.Print "Description              ", thisConfig.Description
        Debug.Print "HideNewComponentModels    ", thisConfig.HideNewComponentModels
        Debug.Print "Lock                      ", thisConfig.Lock
        Debug.Print "ShowChildComponentsInBOM  ", thisConfig.ShowChildComponentsInBOM
        Debug.Print "UseAlternateNameInBOM    ", thisConfig.UseAlternateNameInBOM
        Debug.Print "SuppressNewComponentModels", thisConfig.SuppressNewComponentModels
        Debug.Print "SuppressNewFeatures      ", thisConfig.SuppressNewFeatures
        Debug.Print "------------------------------------------------------------------"
    Next vName
End Function
Sub main()
    Set swApp = Application.SldWorks
    Set Part = swApp.ActiveDoc
    Set Doc = Part
    Set SelMgr = Doc.SelectionManager   
    Call InspectConfigurations(Doc)   
    Dim params As Variant
    params = Doc.GetConfigurationNames
    Dim vName As Variant
    Dim Name As String
    Dim thisConfig As Configuration
    Debug.Print "Modifying the configurations..."
    For Each vName In params
        Name = vName
        Set thisConfig = Doc.GetConfigurationByName(Name)
        Debug.Print "Name                      ", thisConfig.Name
        thisConfig.BOMPartNoSource = swBOMPartNumber_UserSpecified
        thisConfig.AlternateName = "XXXX"
        thisConfig.UseAlternateNameInBOM = True
        thisConfig.AlternateName = "XXXX"
    Next vName   
    Debug.Print "------------------------------------------------------------------"   
    Call InspectConfigurations(Doc)   
End Sub


Über Ansätze die mich weiterbringen bin ich wie immer dankbar.

Besten Grüße,

CAD-Freelancer

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Christian_W
Ehrenmitglied V.I.P. h.c.
Konstrukteur (Dipl-Ing)


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

Beiträge: 2121
Registriert: 04.04.2001

SWX 2016sp5 WIN7-64
proAlpha6.2e/calinkV9
(Tactonworks)
(Medusa7, NesCAD2010,
solidEdge19) CSWP 12/2015

erstellt am: 26. Okt. 2018 13:23    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 CAD-Freelancer 10 Unities + Antwort hilfreich

Hallo,

ich weiss nicht, ob das der ideale Ausgangscode ist ...
hast du mal in der api-Hilfe nach CustomPropertyManager gesucht?
ich glaube damit kommst du schneller weiter.
da würd ich
- alle Konfigurationen feststellen
- quellPropManager = modeldoc2.extension.custompropertymanager ("", ...)
- zielPropManager = modeldoc2.extension.custompropertymanager ("Konfig1, ..)
und dann durch die properties durchgehen, vergleichen, übertragen
und ggf. für weitere Konfigs wiederholen
und dann quellprops löschen

so ins grobe geschrieben.

Gruß, Christian

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CAD-Freelancer
Mitglied
Konstrukteur


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

Beiträge: 133
Registriert: 20.06.2007

CAD Dienstleister aus OWL;
Solidworks 2007 Standard
Solidworks 2009 Standard
Solidworks 2010 Standard
-----
2 x XEON Quadcore (8 x 3,0GHz)
Quadro FX 4600
16 GB RAM
146 GB SAS Seagate Cheetha Festplatte
(RAID Verbund)
-----
Internetseiten noch in der Barbeitung!

erstellt am: 26. Okt. 2018 14:20    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 Christian,

danke für den Ansatz, werde ich gleich mal angucken und versuchen ob ich auf dem Weg weiter komme.

Gruß,

CAD-Freelancer

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)2018 CAD.de | Impressum | Datenschutz