AnsweredAssumed Answered

How to change color of face AND change custom property at same time?

Question asked by Alex Danishevsky on Mar 25, 2016
Latest reply on Mar 29, 2016 by Deepak Gupta

Hi all,


I've gotten as far as I could with my narrow VB knowledge by looking through examples and I'm most of the way there but need some help. Attached is a basic shelf with some custom properties (the macro is attached as well). I want to select a few edge faces in the assembly, run the macro and have it change the face colors but also change "Long F" custom property to "Ding!" for the selected part. It works some of the time but not others which makes me think my loop needs to be corrected. This tool is to assign edgebanding codes to the factory for finishing sides of wood parts. So selecting either 1 face on 1 part or 1 face on 3 parts, they should all change color and each part should get the "Long F" custom property updated. Please help.




Option Explicit

Dim swApp As SldWorks.SldWorks


Sub main()

Dim swModel As SldWorks.ModelDoc2

Dim vComps As Variant

Dim swComp As SldWorks.Component2

Dim swAssy As SldWorks.AssemblyDoc

Dim i As Integer

Set swApp = Application.SldWorks

Set swModel = swApp.ActiveDoc

Dim swSelMgr As SldWorks.SelectionMgr

Dim swFace As SldWorks.Face2

Dim vProps As Variant

Dim cpm As CustomPropertyManager

Dim eb As String



    Set swSelMgr = swModel.SelectionManager

    Set swAssy = swModel

     vComps = swAssy.GetComponents(False)

    'updateProperty swModel


    For i = 1 To swSelMgr.GetSelectedObjectCount2(-1)

    Set swComp = vComps(i)

    Set swModel = swComp.GetModelDoc2

    Set cpm = swModel.Extension.CustomPropertyManager("")

    'updateProperty swModel

     eb = "Ding!"

     eb = Replace(eb, "_", " ")



cpm.Delete "Long F"

cpm.Add2 "Long F", swCustomInfoText, eb



        Set swFace = swSelMgr.GetSelectedObject6(i, -1)

        vProps = swFace.GetMaterialPropertyValues2(1, Empty)

        vProps(0) = 1 'R

        vProps(1) = 1 'G

        vProps(2) = 0 'B

        vProps(3) = 1

        vProps(4) = 1

        vProps(5) = 0.8

        vProps(6) = 0.3125

        vProps(7) = 0

        vProps(8) = 0

        swFace.SetMaterialPropertyValues2 vProps, 1, Empty

    Next i

End Sub