CATIA V5です。
こちらでコメントを頂きました。
指定した要素を新たなPartにコピペして保存 - C#ATIA
Selection経由せずにコピペを行う事は考えた事が無かったので、
取りあえず試してみます。
この様なデータを作りアクティブにしておきます。
続いてこの様なマクロを作りました。
'catvba Option Explicit Sub CATMain() Dim doc As PartDocument Set doc = CATIA.ActiveDocument Dim pt As Part Set pt = doc.Part Dim entity As AnyObject Set entity = pt.HybridBodies.Item(1).HybridShapes.Item(1) Dim sel As Selection Set sel = doc.Selection sel.Clear sel.Add entity sel.Copy End Sub
要は、形状セット内の平面をコピーするだけで終了です。
確認の為、マクロを実行しCtrl+Vをしてみるとペーストされます。
OKですね。
続いて・・・何でも良いのですが、こちらをコピーします。
ペーストするとOKですね。
ここからが本題。
文字をコピーし、マクロを実行した後に文字のペーストが出来るか?
を試してみます。
結果はこちら。
残念出来ませんでした。クリップボードを利用していると言う事ですね。
一応、覚えている範囲でですが、"AppendHybridShape" は、
HybridShapeFactoryで新たな要素を作る "AddNew~" メソッドに
関連します。
r1 HybridShapeFactory (Object)
"AddNew~" メソッドで作られた要素は画面上に表示されないので、
その後に形状セットに入れてやる必要があります。
その際に使用するのが "AppendHybridShape" メソッドです。
r1 HybridBody (Object)
”AddItem” ですが、ちょっと思い付かなかったのでオブジェクトブラウザで
検索してみましたが、関連しそうな雰囲気のものは見つかりませんでした。
"Append" についてもオブジェクトブラウザで検索しましたが、大量にヒット
した割には、関連しそうなものが見つかりませんでした。
可能性があるとすれば、HybridShapeFactoryオブジェクトに
"copy~" のようなメソッドが有れば・・・と思いましたが、
それも見つかりませんでした。
(個人的な)結論としてはSelection(=クリップボード)を利用しないで
要素をコピーする方法は無いと思われます。
※プログラム的なお話だと、不用意なインスタンスの生成を回避する為に
デザインパターンの "Factory Method パターン" をCATIAは採用しているのだと
思われます。