| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | | |  | Konstruktionsleiter-Forum 2025, eine Veranstaltung am 15.10.2025
|
Autor
|
Thema: Makro - Eigenschaften Benutzderdef. und Konfig. (1117 / mal gelesen)
|
CAD-Freelancer Mitglied Konstrukteur
 
 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 / zitieren --> Unities abgeben:         
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)
     
 Beiträge: 3376 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 26. Okt. 2018 13:23 <-- editieren / zitieren --> Unities abgeben:          Nur für CAD-Freelancer
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
 
 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 / zitieren --> Unities abgeben:         
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |