CSVファイルの様な座標値をCATIAに取り込む機能は、Drawにはテーブル
としてはあるのですが、3D側には標準的には無いのだろうと思います。
国内外のサイトを見てもそれなりに需要があるようで、機能を補填する
ようにマクロがチラホラ見受けられます。
http://www.coe.org/p/fo/st/thread=16586
(こちらはCATIA-Excel間のマクロだろうと思います)
http://mmy.zyns.com/usage/index.cgi?mode=view&no=12
(こちらはExcelからCATIAにインポートするマクロ)
細かくソースコードを見ていないのですが、何れもループ内で
hybridShapeFactoryクラスのAddNewPointCoordメソッドを利用しているので、
取り込んだ座標値毎にインスタンスを生成し、形状セットに入れているようです。
過去に"Unofficial CATIA User Forum"で、ここなさんが記載していた
マクロの高速化したものをご紹介した際のソースコードを見てみると
スピードテスト1 - C#ATIA
点のインスタンス自体は最初にダミーの一個を作成したのみで、
vba '------------ Create RefPoint ------------------------------ oPt = Array(0, 0, 0) Set oHybShpPt = oHybShpFact.AddNewPointCoord(oPt(0), oPt(1), oPt(2)) Call oHybBdy.AppendHybridShape(oHybShpPt) Call oPart.UpdateObject(oHybShpPt)
実際に取り込まれる点は、座標値を変更・更新し、データム化したものを
形状セットに入れています。
'vba '------------ Create DetumPoints ------------------------------ For i = 1 To 500 oPt(0) = oPt(0) + 10 Call oHybShpPt.SetCoordinates(oPt) Call oPart.UpdateObject(oHybShpPt) Set oHybShpPtExp = oHybShpFact.AddNewPointDatum(oHybShpPt) Call colMyObj1.add(oHybShpPtExp)'後にこれを形状セットに入れている Next
ここなさんの記載では、"毎回インスタンスを生成するより、こちらの方が高速ですよ"
との事で、実際速かったです。
最初にご紹介したExcelからのマクロ等も、この手法で行うと若干高速化出来る
だろうと思うのですが、直してみようという気力が全くわかないです・・・。
と言うのも、そもそもCATIAがインストールされているPCにExcelがインストールされている
とは限らないので(自分がそうなんです)、もっとお手軽にやりたいと
思いませんかね?