C#ATIA

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

図面のパラメータをファイルに書き出す

CATIAです。

"図面のパラメータをファイルに書き出す" と言うのは、ここの事かな?
と解釈しました。

こんな感じで作成しました。

'vba 図面のパラメータをファイルに書き出し

Option Explicit

Sub CATMain()
    
    '書き出し先のファイルパス
    Dim path As String
    path = "C:\temp\sample.csv"
    
    'ドキュメント取得
    Dim drawDoc As DrawingDocument
    Set drawDoc = CATIA.ActiveDocument
    
    'Treeに表示されているパラメータ取得
    Dim prms As Collection
    Set prms = getUserParamLst(drawDoc)
    
    If prms.Count < 1 Then
        MsgBox "書き出すパラメータがありません"
        Exit Sub
    End If
    
    'パラメータの名前と値を取得
    Dim infos As Variant
    infos = getParams_Name_Value_list(prms, "a")
    
    'ファイルに書き出し
    WriteFile path, Join(infos, vbCrLf)

    'おしまい
    MsgBox "Done"
    
End Sub

' ファイルに書き出し
Private Sub WriteFile( _
    ByVal path As String, _
    ByVal txt As String _
    )

    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")

    Call fso.OpenTextFile(path, 2, True).Write(txt)
End Sub


' パラメータの名前と値を取得
' GetNameToUseInRelationメソッド重要
' return - array
Private Function getParams_Name_Value_list( _
    ByVal prmlst As Collection, _
    ByVal docName As String _
    ) As Variant

    Dim infos() As Variant
    ReDim infos(prmlst.Count - 1)

    Dim prms As Parameters
    Dim prm As Parameter
    Dim idx As Long
    idx = 0
    
    For Each prm In prmlst
        Set prms = prm.Parent
    
        infos(idx) = _
            prms.GetNameToUseInRelation(prm) & _
            "," & _
            prm.Value

        idx = idx + 1
    Next
    
    getParams_Name_Value_list = infos
    
End Function


' Treeに表示されているパラメータ取得
Private Function getUserParamLst( _
    ByVal drawDoc As DrawingDocument _
    ) As Collection

    Dim prms As Collection
    Set prms = New Collection
    Dim a

    Dim prm As Parameter
    For Each prm In drawDoc.Parameters
        If prm.UserAccessMode = 2 Then
            prms.Add prm
        End If
    Next
    
    Set getUserParamLst = prms

End Function

指定したファイルパスにcsvファイルが出来ると思います。

excelで開くと

パラメータ名に「'」が入ってしましますが、画面の表示と同じです。
これの有り無しは "ツール" - "オプション" の何処かに設定が
あったはず・・・。

処理的に削除してしまっても良い気もしますが。