|
经典案例图书 Option Explicit
Dim swApp As Object
Dim swModelDoc, myModelDoc As ModelDoc2
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim cyDict As Object
Sub main()
Set cyDict = CreateObject("Scripting.Dictionary")
cyDict.Add "M1.6", 110 'R+G
cyDict.Add "M2", 11 'G+B
cyDict.Add "M2.5", 101 'R+B
cyDict.Add "M3", 100 'R
cyDict.Add "M4", 10 'G
cyDict.Add "M5", 1 'B
cyDict.Add "M6", 110 'R+G
cyDict.Add "M8", 11 'G+B
cyDict.Add "M10", 101 'R+B
cyDict.Add "M12", 100 'R
cyDict.Add "M14", 10 'G
cyDict.Add "M16", 1 'B
cyDict.Add "M20", 110 'R+G
cyDict.Add "M24", 11 'G+B
cyDict.Add "M30", 101 'R+B
Set swApp = Application.SldWorks
Set swModelDoc = swApp.ActiveDoc
If swModelDoc Is Nothing Then
ElseIf swModelDoc.GetType = swDocASSEMBLY Then
ElseIf swModelDoc.GetType = swDocPART Then
Set myModelDoc = swModelDoc
colorModelDoc myModelDoc
swModelDoc.ForceRebuild3 False
End If
End Sub
Sub colorModelDoc(myModelDoc As SldWorks.ModelDoc2)
Dim swPartDoc As PartDoc
Dim swFeature As Feature
Set swPartDoc = myModelDoc
Set swFeature = swPartDoc.FirstFeature
Dim swSelMgr As SelectionMgr
Dim strHoleSize As String
While Not swFeature Is Nothing
If swFeature.IsSuppressed = False Then
If swFeature.GetTypeName2 = "HoleWzd" Then
Dim swHolewzddata As WizardHoleFeatureData2
Set swHolewzddata = swFeature.GetDefinition
If cyDict.exists(swHolewzddata.FastenerSize) Then
Dim vMatPrps As Variant
vMatPrps = swFeature.GetMaterialPropertyValues2(swThisConfiguration, "")
vMatPrps(0) = cyDict.Item(swHolewzddata.FastenerSize) * 0.01 Mod 10
vMatPrps(1) = cyDict.Item(swHolewzddata.FastenerSize) * 0.1 Mod 10
vMatPrps(2) = cyDict.Item(swHolewzddata.FastenerSize) Mod 10
vMatPrps(3) = 1
vMatPrps(4) = 1
vMatPrps(5) = 1
vMatPrps(6) = 1
vMatPrps(7) = 0
vMatPrps(8) = 1
swFeature.SetMaterialPropertyValues2 vMatPrps, swThisConfiguration, ""
End If
End If
End If
Set swFeature = swFeature.GetNextFeature
Wend
End Sub
|
|