C#ATIA

↑タイトル詐欺 主にCATIA V5 の VBA

siren v0.14 線の種類を判断する

こちらの続きです。
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()

結果はこちら。
f:id:kandennti:20170807184638p:plain
"BSCurve" は、BSplineCurveです。
GetEdgeType関数と言うクズ関数は、要りませんでした。

エッジのクラス名を取得すると Siren::Edge が返って来る為、線種を取得できないと
思い込んでしたのですが

  edge.curve.class.name

とすると線種か返ってきました。 エッジはエッジでカーブじゃないんですね。
少し理解が深まりました。