做引出序号时,一般是一个圆形其中一个数字,表示的是对应组件在装配中的序号。而Inventor提供了一些其它样式,例如,序号有两项,可以在【编辑引出序号】对话框中设定。其中有【引出序号值】:项目和替代。有些用户,包括我自己,刚开始误认为【项目】指的是下半圆的数字,而【替代】指的是上半圆的数字。其实不然,若你修改【项目】,则数字跟着【项目】变,且【替代】会自动变成和【项目】一样的数字,而若修改【替代】,则序号数字随着【替代】变化,而可以和【项目】不一样。总之,如果你修改【项目】或【替代】,只有上半圆的数字发生变化。
这是为什么呢?其实我们所看到的下半圆数字和【项目】或【替代】一点关系都没有。它是由序号样式中设定的一个输入。当你打开【样式编辑器】,找到【引出序号】,可以看到这样的定义,见下图。分别是【ITEM】 和 【QTY】。
也就是说,上半圆其实只是ITEM,而下半圆是QTY。而【编辑引出序号】对话框只是提供了编辑【ITEM】或替代【ITEM】,没有提供你编辑【QTY】。所以和下半圆就没啥关系。
若你想下半圆发生变化,则需要修改BOM表中对应的QTY。
API有着对应的特性。Balloon是引出序号对象。它有如如下特性和方法:
Balloon.GetBalloonType: 返回序号的类型。其中枚举值有:
Public Enum BalloonTypeEnum kCircularWithOneEntryBalloonType = 48129 kCircularWithTwoEntriesBalloonType = 48130 kHexagonBalloonType = 48131 kLinearBalloonType = 48132 kNoneBalloonType = 48133 kSketchedSymbolBalloonType = 48134 End EnumBalloon.BalloonValueSets表示序号里填写的内容。由一个或多个BalloonValueSet组成。我还没有看到多个的情况。
BalloonValueSet.Value : 代表【引出序号编辑】对话框里的【项目】
BalloonValueSet.OverrideValue: 代表【引出序号编辑】对话框里的【替代】
BalloonValueSet.ItemNumber: 表示在BOM表里原始的序号
Balloon.Static: 这个布尔值比较有趣,代表是否项目值(序号值)被替代了。True表示替代,False则会将【项目】值重置到原始序号值。
序号样式的对象是BalloonStyle:
BalloonStyle.BalloonType:可以设定序号类型。这样根据该样式创建的序号自动就成为对应类型
BalloonStyle.Properties: 代表我们前面看到的特性设置。你可以设定哪些特性显示到序号圆圈里. 该字串格式,例如:
" FormatID='{32853F0F-3444-11d1-9E93-0060B03C1CA6}' PropertyID='29'; FormatID='{32853F0F-3444-11d1-9E93-0060B03C1CA6}' PropertyID='27'"
表示获取设计跟踪信息里的两个特性,FormatID 表示特性集合,后面是 GUID,接着是特性名PropertyID,后面是特性在集合里的序号。不同特性之间用分号相隔。
以下是几段代码,分别解释了相关API
Sub changeItem()
' 假定预先选择好一个引出序号
Dim oBalloon As Balloon
Set oBalloon = ThisApplication.ActiveDocument.SelectSet(1)
Dim oBalloonType As BalloonTypeEnum
Dim oBalloonData As Variant
Call oBalloon.GetBalloonType(oBalloonType, oBalloonData)
If oBalloonType = kCircularWithTwoEntriesBalloonType Then
Dim oBVS As BalloonValueSet
Set oBVS = oBalloon.BalloonValueSets(1)
'类似修改【项目】
oBVS.Value = "111"
'打印【项目】和【替代值】看看
Debug.Print oBVS.Value
Debug.Print oBVS.OverrideValue
End If
End Sub
Sub changeOverride()
' 假定预先选择好一个引出序号
Dim oBalloon As Balloon
Set oBalloon = ThisApplication.ActiveDocument.SelectSet(1)
Dim oBalloonType As BalloonTypeEnum
Dim oBalloonData As Variant
Call oBalloon.GetBalloonType(oBalloonType, oBalloonData)
If oBalloonType = kCircularWithTwoEntriesBalloonType Then
Dim oBVS As BalloonValueSet
Set oBVS = oBalloon.BalloonValueSets(1)
'类似修改【替代】
oBVS.OverrideValue = "222"
'打印【项目】和【替代值】看看
Debug.Print oBVS.Value
Debug.Print oBVS.OverrideValue
End If
End Sub
Sub resetToOriginal()
' 假定预先选择好一个引出序号
Dim oBalloon As Balloon
Set oBalloon = ThisApplication.ActiveDocument.SelectSet(1)
Dim oBalloonType As BalloonTypeEnum
Dim oBalloonData As Variant
Call oBalloon.GetBalloonType(oBalloonType, oBalloonData)
If oBalloonType = kCircularWithTwoEntriesBalloonType Then
Dim oBVS As BalloonValueSet
Set oBVS = oBalloon.BalloonValueSets(1)
Debug.Print "序号原始值: " & oBVS.ItemNumber
'将【项目】值重置到原始序号值
oBVS.Static = False
'打印【项目】和【替代值】看看
Debug.Print oBVS.Value
Debug.Print oBVS.OverrideValue
End If
End Sub
Sub changeStyleType()
' 获取当前序号样式
' 假定预先选择好一个引出序号
Dim oBS As BalloonStyle
Set oBS = ThisApplication.ActiveDocument.SelectSet(1).Style
'设定类型
oBS.BalloonType = kCircularWithTwoEntriesBalloonType
'设定需要显示的特性
Dim oProperties As String
oProperties = " FormatID='{32853F0F-3444-11d1-9E93-0060B03C1CA6}' PropertyID='29'; FormatID='{32853F0F-3444-11d1-9E93-0060B03C1CA6}' PropertyID='27'"
oBS.Properties = oProperties
End Sub