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