|
经典图书 如果用过焊件,相信必会感到再加上重量属性时非常不便,
相关帖子:SolidWorks机械工程师论坛 92楼的例子
如果焊件切割清单中存在100项的话,就要分别增加重量属性100次了,
一旦面对设变,那就更糟糕透了。
只要采取一些二次开发的伎俩,编写一个简单的宏,
每次更新的时候运行一下,那就无后顾之忧了。
如有谁人可以顺利应用并展示效果,加三分起!(限額5位)
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim Part As SldWorks.ModelDoc2
Dim thisFeat As SldWorks.feature
Dim thisSubFeat As SldWorks.feature
Dim cutFolder As Object
Dim BodyCount As Integer
Dim fn As String
Dim pn As String
Dim custPropMgr As SldWorks.CustomPropertyManager
Dim propNames As Variant
Dim vName As Variant
Dim propName As String
Dim Value As String
Dim resolvedValue As String
Dim TotalW As Double
Sub main()
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
Set thisFeat = Part.FirstFeature
Do While Not thisFeat Is Nothing
If thisFeat.GetTypeName = "SolidBodyFolder" Then
thisFeat.GetSpecificFeature2.UpdateCutList
End If
Set thisSubFeat = thisFeat.GetFirstSubFeature
Do While Not thisSubFeat Is Nothing
If thisSubFeat.GetTypeName = "CutListFolder" Then
Set cutFolder = thisSubFeat.GetSpecificFeature2
End If
If Not cutFolder Is Nothing Then
BodyCount = cutFolder.GetBodyCount
If BodyCount > 0 Then
Set custPropMgr = thisSubFeat.CustomPropertyManager
If Not custPropMgr Is Nothing Then
custPropMgr.Delete "Total Weight"
custPropMgr.Delete "Weight"
fn = thisSubFeat.Name
pn = Part.GetTitle
custPropMgr.Add "Weight", "Text", Chr(34) & "SW-Mass@@@" & fn & "@" & pn & Chr(34)
propNames = custPropMgr.GetNames
If Not IsEmpty(propNames) Then
For Each vName In propNames
propName = vName
custPropMgr.Get2 propName, Value, resolvedValue
If propName = "Weight" Then TotalW = resolvedValue
Next vName
End If
custPropMgr.Add "Total Weight", "Text", Format(BodyCount * TotalW, "0.00")
End If
End If
End If
Set thisSubFeat = thisSubFeat.GetNextSubFeature
Loop
Set thisFeat = thisFeat.GetNextFeature
Loop
End Sub |
|