ds-blue-logo
Preview  |  SOLIDWORKS USER FORUM
Use your SOLIDWORKS ID or 3DEXPERIENCE ID to log in.
SKSlavomir Kubasky29/09/2011

Hi,

I'm trying to modify solidworks example macro "Change color of selected face" for situation when I have selected more than one face of part. It sounds quite

simple, but my knowledge of API poor. Can anybody help me with this?

Thank you

Sub main()

    Dim swApp                       As Object

    Dim swModel                     As Object

    Dim swSelMgr                    As Object
   
    Dim swSelFace()                 As Object
   
    Dim nSelCount                   As Long

    Dim vFaceProp                   As Variant

    Dim bRet                        As Boolean
   
    Dim i                           As Long
   
    Dim vFaceList                   As Variant

   

    Set swApp = Application.SldWorks

    Set swModel = swApp.ActiveDoc

    Set swSelMgr = swModel.SelectionManager

    nSelCount = swSelMgr.GetSelectedObjectCount

    ReDim swSelFace(nSelCount - 1)

    For i = 1 To nSelCount

        Set swSelFace(i - 1) = swSelMgr.GetSelectedObject5(i)

    Next
   

     vFaceProp = swSelFace(i).MaterialPropertyValues
   

    If IsEmpty(vFaceProp) Then

        ' Is empty if face-level colors were not specified, so get them from underlying model

        vFaceProp = swModel.MaterialPropertyValues: Debug.Assert Not IsEmpty(vFaceProp)

    End If

   

    'Current color

    Debug.Print "RGB            = [" & vFaceProp(0) * 255# & ", " & vFaceProp(1) * 255# & ", " & vFaceProp(2) * 255# & "]"

    Debug.Print "Ambient        = " & vFaceProp(3)

    Debug.Print "Diffuse        = " & vFaceProp(4)

    Debug.Print "Specular       = " & vFaceProp(5)

    Debug.Print "Shininess      = " & vFaceProp(6)

    Debug.Print "Transparency   = " & vFaceProp(7)

    Debug.Print "Emission       = " & vFaceProp(8)

   

    ' New color

         bRet = swModel.SelectedFaceProperties( _
            RGB(0, 0, 255), _
            vFaceProp(3), vFaceProp(4), vFaceProp(5), _
            vFaceProp(6), vFaceProp(7), vFaceProp(8), _
            False, ""): Debug.Assert bRet
  

    ' Deselect face to see new color

    swModel.ClearSelection2 True

End Sub