| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | | |  | Wie kann Simulation Ihre Produktentwicklung beschleunigen?, ein Webinar am 07.08.2025
|
Autor
|
Thema: Rendermaterial via API entfernen (708 / mal gelesen)
|
R3vo Mitglied staatl. gepr. Techniker, Konstrukteur
 
 Beiträge: 161 Registriert: 03.11.2021 CAD: SOLIDWORKS 2024 SP5.0 PDM: SpeedyPDM 7.5.7 ------------------------ CPU: Intel Core i7-10700 @ 2.90GHz GPU: NVIDIA Quadro RTX4000 RAM: 64 GB Datenträger: SSD Windows 11 23H2 22631.4460 Windows Feature Experience Pack 1000.22700.1047.0
|
erstellt am: 03. Jul. 2022 12:56 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen, ich schreibe zurzeit ein Makro, um einige ältere Baugruppen auf den neusten Stand zu bringen. Dazu gehört auch, dass ich fälschlicherweise hinterlegte Render Materials entferne. Leider habe ich mit folgender sub bis jetzt kein Glück. Folgendes wird für jede Komponente zurückgegeben: Code:
C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\data\graphics\materials\metal\steel\stainless steel treadplate.p2m ID1 4 ID2 0 Removed: Falsch
Ich hoffe einige/r von euch hat noch eine Idee. Hier nun die kleine Sub. Code: Sub removeRenderMaterial(swModel As ModelDoc2) Dim swModelExt As ModelDocExtension Set swModelExt = swModel.Extension If (swModelExt.GetRenderMaterialsCount2(swAllDisplayState, Nothing) > 0) Then Dim renderMaterials As Variant Dim renderMaterial As Variant Dim swRenderMaterial As renderMaterial Dim renderMaterialID As Integer Dim fileName As String Dim materialRemoved As Boolean Const renderMaterialPath = "C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\data\graphics\materials\metal\steel\stainless steel treadplate.p2m" renderMaterials = swModelExt.GetRenderMaterials2(swAllDisplayState, Nothing) For Each renderMaterial In renderMaterials Set swRenderMaterial = renderMaterial Dim value As Boolean If (swRenderMaterial.fileName = renderMaterialPath) Then Dim renderMaterialID1 As Long Dim renderMaterialID2 As Long Dim rendermaterialID1_toDelete(0) As Long Dim rendermaterialID2_toDelete(0) As Long swRenderMaterial.GetMaterialIds renderMaterialID1, renderMaterialID2 rendermaterialID1_toDelete(0) = renderMaterialID1 rendermaterialID2_toDelete(0) = renderMaterialID2 value = swModelExt.DeleteDisplayStateSpecificRenderMaterial(rendermaterialID1_toDelete, rendermaterialID2_toDelete) swModelExt.UpdateRenderMaterialsInSceneGraph True Debug.Print (swRenderMaterial.fileName) Debug.Print ("ID1 " & renderMaterialID1) Debug.Print ("ID2 " & renderMaterialID2) Debug.Print ("Removed: " & value) End If Next End If End Sub
[Diese Nachricht wurde von R3vo am 03. Jul. 2022 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
R3vo Mitglied staatl. gepr. Techniker, Konstrukteur
 
 Beiträge: 161 Registriert: 03.11.2021 CAD: SOLIDWORKS 2024 SP5.0 PDM: SpeedyPDM 7.5.7 ------------------------ CPU: Intel Core i7-10700 @ 2.90GHz GPU: NVIDIA Quadro RTX4000 RAM: 64 GB Datenträger: SSD Windows 11 23H2 22631.4460 Windows Feature Experience Pack 1000.22700.1047.0
|
erstellt am: 03. Jul. 2022 22:19 <-- editieren / zitieren --> Unities abgeben:         
Kann geschlossen werden. Habe den Fehler gefunden. Hatte die falschen Variablen an >DeleteDisplayStateSpecificRenderMaterial< übergeben. Manchmal hilft es mal ein paar Stunden Abstand zu nehmen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |