CATIA V5です。
ちょっとやったことが無かったので試してみました。
データの状態はこんな感じです。
"test1"はCGRファイルです。やる気満々なネーミングでスイマセン。
こちらを "C:\temp\test2.cgr" のCGRファイルと差し替えます。
'vba Option Explicit Sub CATMain() ' 変更後のCGRのファイルパス ' 本当はファイルの有無のチェックを入れてください Dim replacePath As String replacePath = "C:\temp\test2.cgr" ' 親分Productsの取得 Dim productDoc As ProductDocument Set productDoc = CATIA.ActiveDocument Dim rootProducts As Products Set rootProducts = productDoc.Product.Products ' 変更前Product取得 Dim targetProduct As Product Set targetProduct = rootProducts.Item(1) ' 差し替え ' http://catiadoc.free.fr/online/interfaces/interface_Products.htm#ReplaceComponent Dim replaceProduct As Product Set replaceProduct = rootProducts.ReplaceComponent( _ targetProduct, _ replacePath, _ True _ ) MsgBox "Done" End Sub
こちらにドキュメントが有るのですが
r1 Products (Collection)
ReplaceComponentメソッドなのですが、第三引数は "高速複数インタンス化" 等で
同じ参照先になっているProductをまとめて差し替えるかどうか? の様です。
(iMultiInstancesの説明は無い・・・)
試していませんが、ReplaceComponentメソッドは差し替えるProductの親の
Productsで行う必要があるような気はしています。
又、新たに差し替えるパスのファイルが無くてもエラーが発生しないようなので、
事前にファイルの有無はチェックした方が安全なようです。