こちらの続きで、引き続き思い付くままにテストです。
Sirenテスト-BndBox - C#ATIA
Fillerクラス以外で曲面が作成できそうなOffsetモジュールの
一部をテストしてみました。
#SirenScript expName = "/SirenTest" $expIges = ARGV[0] + expName + ".igs" $expBrep = ARGV[0] + expName + ".brep" $expDump = ARGV[0] + expName + "_dump.txt" def wDump(i) if i.kind_of?(String) open($expDump, "a") {|f| f.write "\r\n" + i} end end open($expDump, "w") {|f| f.write "start"} ########### exp_Items=[] #出力面配列 #-sweep_vec- #第一引数:断面 #第二引数:方向ベクトル target=Build.arc3p([0, 0, 0], [5, 0, 10], [10, 0, 0]) wDump(target.to_s) #exp_Items<<target sv=[3,10,5].to_v sw_v=Offset.sweep_vec(target,sv) wDump(sw_v.to_s) exp_Items<<sw_v #-sweep_path- #第一引数:断面(直線のみっぽい) #第二引数:サポート曲線 target=Build.line([0, 0, 0], [10, 0, 0]) wDump(target.to_s) #exp_Items<<target pathwire=Build.arc3p([5, 0, 0], [5, 20, 5], [0, 30, 15]) wDump(pathwire.to_s) sw_p=Offset.sweep_path(target,pathwire) wDump(sw_p.to_s) exp_Items<<sw_p #-loft- #第一引数:断面ワイヤー配列(2個以上・エッジ不可) #第二引数:スムース(bool型) - 省略時 true #第三引数:ソリッド化(bool型) - 省略時 false #第四引数:ルールド化(bool型) - 省略時 true sec1=Build.wire [Build.line([0, 0, 0], [10, 0, 0])],0.01 sec2=Build.wire [Build.line([0, 10, 5], [10, 10, 5])],0.01 sec3=Build.wire [Build.line([0, 20, 0], [10, 20, 0])],0.01 ary=[] ary=[sec1,sec2,sec3] wDump(ary.to_s) #lt=Offset.loft(ary) lt=Offset.loft(ary,true,false,false) exp_Items<<lt wDump(lt.to_s) ########### com = Build::compound [*exp_Items] IGES.save [com] , $expIges BRepIO::save com , $expBrep wDump("end")
sweep_vec関数は、断面と方向ベクトルの指定だけなので、
直ぐにわかりました。
sweep_path関数は、断面とサポート曲線の指定だけのものは
直ぐにわかりました。(但し、断面が曲線ではエラーとなりました)
C++がよくわかっていないのですが、ソースコードを見ると
第3~6引数まで引数(恐らくLaw関係のパラメータ?)を指定出来る様に
なっている感じがしたのですが、指定するとエラーとなりました。
loft関数は・・・苦戦しました。
第一引数は、ワイヤーの配列が必要で、エッジではエラーとなります。
(これに気が付くのに、時間がかかりました)
第二~四引数は省略可能で、コードに記載された値がデフォルトで
割り当てられます。
結果はこんな感じです。(色はCATIAで付けています)
重なってしまって申し訳ないのですが、
sweep_vec-オレンジ
sweep_path-紫
loft-緑
です。
loftに関しては、ほとんど諦めかけてましたw