C#ATIA

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

形状セットの深さを表示

この様な形状セットがあります。

このPart3の深さを示すための文字列を作りたいです。
こんな感じの文字列です。

Product3\Product2\Part3

あぁ¥マークが変わっちゃう・・・。

こんな感じにしました。

'vba
Option Explicit


Sub CATMain()

    Dim pDoc As partDocument
    Set pDoc = CATIA.ActiveDocument

    Dim pt As Part
    Set pt = pDoc.Part
    
    Dim hBody As HybridBody
    Set hBody = pt.HybridBodies.Item(2).HybridBodies.Item(1)
    
    
    Debug.Print get_full_path(hBody, "")

End Sub


Private Function get_full_path( _
    ByVal target As AnyObject, _
    ByVal path As String) As String
    
    If is_part(target) Then
        Dim pt As Part
        Set pt = target
        get_full_path = pt.name & "\" & path
        Exit Function
    End If
    
    get_full_path = get_full_path( _
        target.parent, _
        target.name & "\" & path _
    )

End Function


Private Function is_part( _
    ByVal target As AnyObject) As Boolean
    
    Dim tmp As Part
    
    On Error Resume Next
    
    Set tmp = target
    
    On Error GoTo 0

    is_part = IIf(tmp Is Nothing, False, True)
    
End Function

結果はこんな何時です。

Product3\Product2\Part3\

最後がちょっと余計ですね・・・。