C#ATIA

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

siren v0.13 線の種類を判断したい

こちらの続きです。
siren v0.13 NURBS曲線・Bスプライン曲線 - C#ATIA

通過点を指定するスプラインを試したところ出来たので、
NURBS曲線・Bスプライン曲線はちょっと諦める事にしました。

次に線が "直線" "円弧" "曲線" を判断出来るようにしたい
所なんです。

こんなデータをIgesで吐き出し
f:id:kandennti:20170727182716p:plain
それを試しに読み込んで調べてみました。
試していくうちに、直線・円弧・曲線・面・点となってしまい
変数名等がおかしいですが・・・

#
include Siren

fName = "/curves"
$inPath = ARGV[0] + fName + ".igs"
$exPath = ARGV[0] + fName + "-res.igs"
$dpPath = ARGV[0] + fName + "_dump.txt"

def wDump(i)
  if i.kind_of?(String)
     open($dpPath, "a") {|f| f.write "\r\n" + i}
  end
end

def Pause()
  print "押して!"
  str = gets
end

open($dpPath, "w") {|f| f.write "start"}
###########
crvs = Siren.load_model $inPath
p "total : " + crvs.subshapes.size.to_s
shps = crvs.to_a

begin
 shps.each{|shp|
  p "***"
  p "to_s : " + shp.to_s	
  p "shapetype : " + shp.shapetype.to_s
  #p shp.shapetype.to_sname -ng
  #p shp.curvetype -ng
  #p shp.geomtype -ng
  #p shp.siren_curve_type -ng
 }
rescue
 p $@
end
###########
wDump("end")
puts "done."
Pause()

読み込んだIgesをバラシ、ループさせて1個づつ調べているのですが
f:id:kandennti:20170727182736p:plain
やっと見つけたshapetypeで、線の種類を判断できると思ったの
ですが、直線・円弧・曲線 全て "6" が返って来ており
判断できません・・・。(恐らくSiren::Edgeが返って来ているのでしょう)

こちらにあったテストコードの最後の方に
mruby-siren/mruby-siren.rb at ae31b439725ec39b5c998239a547f0ca15ce6385 · dyama/mruby-siren · GitHub
".shapetype.to_sname" を見つけたのですが、エラーになります。
(コード的にv0.13のものでは無いので・・・)

他にも "curvetype" "geomtype" "siren_curve_type" 等、それっぽい
ものも試したのですが全てダメでした。

ん~諦めようかな・・・。