Vba 仅在选定组件(swModel.GetComponents)中应用宏
我有这段代码,可以自动使用随机颜色为所有部件组件着色。我以前用这段代码问了一个不同的问题,但这次,我想问一下是否有人可以帮忙 是否要使此代码仅为选定的部件零部件着色? 我希望有人能帮我,我还在学习API。请参阅下面的代码Vba 仅在选定组件(swModel.GetComponents)中应用宏,vba,solidworks,solidworksapi,Vba,Solidworks,Solidworksapi,我有这段代码,可以自动使用随机颜色为所有部件组件着色。我以前用这段代码问了一个不同的问题,但这次,我想问一下是否有人可以帮忙 是否要使此代码仅为选定的部件零部件着色? 我希望有人能帮我,我还在学习API。请参阅下面的代码 Dim swApp As Object Dim Part As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Public Sub ColorMacro1() D
Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Public Sub ColorMacro1()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swElement As Object
Dim vElementArr As Variant
Dim vElement As Variant
Dim vMatProp As Variant
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
vMatProp = swModel.MaterialPropertyValues
'Get all elements
vElementArr = swModel.GetComponents(False)
For Each vElement In vElementArr
Set swElement = vElement
Randomize
vMatProp(0) = Rnd 'Red
vMatProp(1) = Rnd 'Green
vMatProp(2) = Rnd 'Blue
vMatProp(3) = Rnd / 2 + 0.5 'Ambient
vMatProp(4) = Rnd / 2 + 0.5 'Diffuse
vMatProp(5) = Rnd 'Specular
vMatProp(6) = Rnd * 0.9 + 0.1 'Shininess
swElement.MaterialPropertyValues = vMatProp
Next
'Redraw to see new color
swModel.GraphicsRedraw2
End Sub
在设置对象的位置,请尝试以下操作:
Set swElement = Selection
您可以使用GetSelectedObjectsComponent4获取所选组件,如下所示:
Option Explicit
Public Sub ColorMacro1()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim vMatProp As Variant
Dim swSelMgr As SldWorks.SelectionMgr
Dim swComp As SldWorks.Component2
Dim Count As Integer
Dim i As Integer
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swSelMgr = swModel.SelectionManager
Count = swSelMgr.GetSelectedObjectCount2(0)
If Count = 0 Then MsgBox "No Components selected": Exit Sub
vMatProp = swModel.MaterialPropertyValues
For i = 1 To Count
Set swComp = swSelMgr.GetSelectedObjectsComponent4(i, 0)
Randomize
vMatProp(0) = Rnd 'Red
vMatProp(1) = Rnd 'Green
vMatProp(2) = Rnd 'Blue
vMatProp(3) = Rnd / 2 + 0.5 'Ambient
vMatProp(4) = Rnd / 2 + 0.5 'Diffuse
vMatProp(5) = Rnd 'Specular
vMatProp(6) = Rnd * 0.9 + 0.1 'Shininess
swComp.MaterialPropertyValues = vMatProp
Next
swModel.GraphicsRedraw2
End Sub
嗨,达曼,非常感谢你的回答。我尝试了您的建议,并将
Dim Selection声明为SldWorks.SelectionMgr
。但是选择
值是无
我哪里出错了?希望你能回答。嗨,费根,谢谢。你能帮我解决上面提到的问题吗?你在运行宏之前选择了项目吗?他们必须事先选定。你也可以看看这个网站,他们有免费的宏,可以适应你要找的是的,我有。但它会提示输入所需的对象。嗨,杰罗姆。很好!谢谢