| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| SolidCAM im Einsatz bei der August Weckermann KG |
Autor
|
Thema: Makro: Werkstoff von eingetragenen Wert zu Solidworks Werkstoff ändern (923 / mal gelesen)
|
Pete85 Mitglied
Beiträge: 156 Registriert: 09.05.2016
|
erstellt am: 17. Jun. 2021 08:21 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich bin gerade auf der Suche nach einer Möglichkeit einen von Hand in den Dateieigenschaften eingetragenen Werkstoff zu ersetzen. Den Wert über Makro zu ändern klappt super. jetzt ist die Schwierigkeit, dass dort nun der Werkstoff aus der SolidworksDatenbank eingetragen werden soll. Wie kann ich die Werkstoffdatenbank und daraus einen bestimmten Werkstoff ansprechen und einen Werkstoff zuweisen? im Anschluss soll natürlich das Gewicht/die Dichte über den Werkstoff ermittelt werden... Habt ihr da eine Idee. ich glaube, dass ich da gerade für die Suche nicht die richtigen Worte gefunden Hatte. hab nämlich nichts gefunden. Ich danke euch vielmals für eure Hilfe!! :-) Vielen Dank Gruß Pete Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HenryV Mitglied Konstrukteur, Engineering
Beiträge: 813 Registriert: 18.05.2005 SolidWorks 2022 x64 SP5.0 Dell Precision 5820 Intel Xeon W-2125 4x4GHz NVIDIA Quadro P2000 5GB 32GB RAM 2x Dell U2412M, 24" TFT Windows 10 Enterprise x64 22H2 Microsoft 365 E5 Microsoft Visual Studio Enterprise 2022
|
erstellt am: 17. Jun. 2021 10:09 <-- editieren / zitieren --> Unities abgeben: Nur für Pete85
Hallo Pete Das Material kannst du mit SetMaterialPropertyName2 Method (IPartDoc) zuweisen.
Code: bRet = swModel.SetMaterialPropertyName2(vConfNameArr(i), "c:\SWX-Material\MaterialDB.sldmat", "Stahl")
Gegebenenfalls musst du die Benutzerdefinierten/Konfigurationsspezifischen Eigenschafen auf "SW-Material@Teilename.sldprt" ändern.
Code: swCustProp.Add3 "Material", swCustomInfoText, Chr(34) + "SW-Material" & "@" & swModel.GetTitle & ".SLDPRT" & Chr(34), 1
Gruss Andreas ------------------ 21 ist nur die halbe Antwort. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Pete85 Mitglied
Beiträge: 156 Registriert: 09.05.2016
|
erstellt am: 17. Jun. 2021 13:19 <-- editieren / zitieren --> Unities abgeben:
Moin, das hat ja schon mal super funktioniert. Musste es nur einmal umschreiben um einen Erfolg zu sehen. Wie kann ich denn die Werkstoffelemente die in der Materialdatenbank stehen in ein Array schreiben? bis jetzt sieht es so aus
Code:
If Prop = "Material" Or Prop = "Werkstoff" Then PropNameNeu = "Werkstoff" ProPTexT1 = Chr(34) & "SW-Material" & "@" & ModelDoc.GetTitle & Chr(34) bRet = ModelDoc.SetMaterialPropertyName2(ActConfName, "Materials_Solidworks", "1.0037 (S235JR)")
Danke und Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Pete85 Mitglied
Beiträge: 156 Registriert: 09.05.2016
|
erstellt am: 13. Sep. 2022 08:17 <-- editieren / zitieren --> Unities abgeben:
|
HenryV Mitglied Konstrukteur, Engineering
Beiträge: 813 Registriert: 18.05.2005 SolidWorks 2022 x64 SP5.0 Dell Precision 5820 Intel Xeon W-2125 4x4GHz NVIDIA Quadro P2000 5GB 32GB RAM 2x Dell U2412M, 24" TFT Windows 10 Enterprise x64 22H2 Microsoft 365 E5 Microsoft Visual Studio Enterprise 2022
|
erstellt am: 13. Sep. 2022 09:56 <-- editieren / zitieren --> Unities abgeben: Nur für Pete85
Hallo Pete das macht man mit GetMaterialPropertyName2 Method (IPartDoc) Code: Option ExplicitSub main() Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swPart As SldWorks.PartDoc Dim dbs As Variant Dim sMatName As String Dim sMatDB As String Dim swConfigMgr As SldWorks.ConfigurationManager Dim vConfName As Variant Dim vConfParam As Variant Dim vConfValue As Variant Dim i As Long Dim j As Long Dim bRet As Boolean Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc Set swConfigMgr = swModel.ConfigurationManager Set swPart = swModel Debug.Print "File = " & swModel.GetPathName dbs = swApp.GetMaterialDatabases vConfName = swModel.GetConfigurationNames For i = 0 To UBound(vConfName) bRet = swConfigMgr.GetConfigurationParams(vConfName(i), vConfParam, vConfValue) Debug.Assert bRet Debug.Print " Configuration = " & vConfName(i) sMatName = swPart.GetMaterialPropertyName2(vConfName(i), sMatDB) Debug.Print " Material = " & sMatName For j = 0 To UBound(dbs) If StrComp(Left(Right(dbs(j), Len(sMatDB) + 7), Len(sMatDB)), sMatDB) = 0 Then Debug.Print " Material Database = " & dbs(j) Exit For End If Next j Next i End Sub
Gruss Andreas ------------------ 21 ist nur die halbe Antwort. [Diese Nachricht wurde von HenryV am 15. Feb. 2023 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |