C#ATIA

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

プロダクトからCATPartを生成1

勘違い。
過去にやったことがあったのは、CATPartをBody毎にした
CATProductにする逆の事でした。
1つのPartからBody毎にしたProductを作り出す - C#ATIA

で、本題の "プロダクトからCATPartを生成" ですが、結果的に
"CATIA.StartCommand" を使うしか方法が無さそうです。

'vba プロダクトからCATPartを生成
'この辺を参考にしました
'https://ww3.cad.de/foren/ubb/Forum137/HTML/005735.shtml
'https://www.scripting4v5.com/additional-articles/catia-macro-sendkeys/
Sub CATMain()

    'Treeのトップを選択
    Dim prodDoc As ProductDocument
    Set prodDoc = CATIA.ActiveDocument
    
    Dim prod As Product
    Set prod = prodDoc.Product
    
    Dim sel As Selection
    Set sel = prodDoc.Selection
    
    sel.Clear
    sel.Add prod

    'プロダクトからCATPartを生成
    CATIA.StartCommand "CATProductToPartCmdHeader"
    CATIA.RefreshDisplay = True
    SendKeys "{Enter}"

End Sub

念の為お伝えすると、VBAエディタで実行すると、コマンドの
ダイアログが表示された状態で止まってしまいますが、
ツールバーに登録する等して実行すると、きっちり処理します。

又、"CATProductToPartCmdHeader"はコマンドIDの為、
CATIA V5の言語設定に依存せず、実行できます。