こちらの続きです。
siren v0.14 を試してみました - C#ATIA
開発者の方にちょっとサンプルコードを書いていただいたのですが、
回答として書いて頂いたこと以上に、重要な方法がサンプルに入っていました。
#Siren_script Export_Curve_Test include Siren fName = "/curves" $inPath = ARGV[0] + fName + ".igs" $exPath = ARGV[0] + fName + "-res.igs" def Pause() print "押して!" str = gets end ########### comp = Siren.load_model $inPath p "total_edges : " + comp.edges().size.to_s edgelst = comp.to_a.select { |x| x.edge? == true } edgelst = edgelst + comp.to_a.select { |x| x.wire? == true }.edges.flatten p "**************" edgelst.each{|x| print x.to_s + " は " + x.curve.class.name + " です\n" } cmp = edgelst.to_comp begin Siren.save_model cmp , $exPath rescue p "export errer!" end ########### puts "done." Pause()
結果はこちら。
"BSCurve" は、BSplineCurveです。
GetEdgeType関数と言うクズ関数は、要りませんでした。
エッジのクラス名を取得すると Siren::Edge が返って来る為、線種を取得できないと
思い込んでしたのですが
edge.curve.class.name
とすると線種か返ってきました。 エッジはエッジでカーブじゃないんですね。
少し理解が深まりました。