C#ATIA

↑タイトル詐欺 主にFusion360API 偶にCATIA V5 VBA(絶賛ネタ切れ中)

参考寸法

手抜きメニューに登録しながらマクロを修正していたら
地味なヤツを見つけました。

こんな感じの、丸括弧付きの寸法って何と呼ぶのが正式なんでしょうか?
(きっとJISとかで決まっていると思うのですが)

f:id:kandennti:20171020102205p:plain

僕は参考寸法と呼んでいます。 こちらでもそんな記載になってます。
寸法の記入の基本ルール
「2重寸法の禁止」の所に記載されています。
(個人的に重複した寸法は、かなり重罪です)

こちらでは括弧寸法と記載されていました。
括弧寸法の使い方をここまで細かく語るエンジニアはいない | メカ設計のツボ|マザーマシンの元エンジニアが語る


これ、図面を描いているAdvanceCADには、寸法をクリックしただけで
行ってくれる機能があるのですが、CATIAには無いですよね?

これを行うだけのマクロです。

'vba Sample_Draw_Ref_Dimension ver0.0.2  using-'KCL0.0.12'

Option Explicit

Private Enum Dimension_Value
    Main_Value = 1
    Dual_Value = 2
End Enum

Sub CATMain()

    'ドキュメントのチェック
    If Not CanExecute("DrawingDocument") Then Exit Sub
    
    Dim Msg$: Msg = "参考/非参考化する寸法を選択 // [Esc]=Cancel"
    Dim DrwDim As DrawingDimension
    Dim DimVal As Variant 'DrawingDimValue
    Dim Bfr$, Afr$, Upr$, Lwr$
    
    Do
        Set DrwDim = KCL.SelectItem(Msg, "DrawingDimension")
        If DrwDim Is Nothing Then Exit Sub
        
        Set DimVal = DrwDim.GetValue
        Call DimVal.GetBaultText(Dimension_Value.Main_Value, _
                                 Bfr, Afr, Upr, Lwr)
        If IsRefDimension(Bfr, Afr) Then
            '既に参考寸法
            Call DimVal.SetBaultText(Dimension_Value.Main_Value, _
                                    Mid(Bfr, 2), _
                                    Left(Afr, Len(Afr) - 1), _
                                    Upr, Lwr)
        Else
            'ただの寸法
            Call DimVal.SetBaultText(Dimension_Value.Main_Value, _
                                    "(" & Bfr, _
                                    Afr & ")", _
                                    Upr, Lwr)
        End If
    Loop
End Sub

Private Function IsRefDimension(ByVal Bfr As String, _
                                ByVal Afr As String) As Boolean
    IsRefDimension = False
    
    If Bfr = vbNullString Or Afr = vbNullString Then Exit Function
    
    Dim Tp$, Ed$
    Tp = Left(Bfr, 1)
    Ed = Right(Afr, 1)
    
    If Tp = "(" And Ed = ")" Then IsRefDimension = True
End Function

寸法のプロパティの [寸法テキスト]タブ [関連テキスト] の
・前側の最初の文字が「(」
・後側の最後の文字が「)」
の二つの条件がそろった時に、丸括弧を外し
そうでないときは丸括弧を追加します。
f:id:kandennti:20171020102233p:plain

こんな感じです。

・・・地味