引出序号的圆形两项样式

2021年10月1日 1点热度 0条评论 来源: autodeskinventorapi

做引出序号时,一般是一个圆形其中一个数字,表示的是对应组件在装配中的序号。而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 Enum

Balloon.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

    原文作者:autodeskinventorapi
    原文地址: https://blog.csdn.net/autodeskinventorapi/article/details/8811141
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。