こちらの続きです。
siren v0.14 NURBS曲線 - C#ATIA
以前はIgesを読み込み、読み込んだ曲線をそのまま書き出していましたが
今度は読み込んだ曲線から各要素を読み取り、コントロールポイントのみを2倍にし
新たな曲線をsirenで作成し書き出してみました。
#!siren # coding: utf-8 include Siren fName = "/nurbs5" $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() str = gets end wDump("start") ########### shp = Siren.load_model $inPath wDump(shp.to_s) degree = shp.curve.degree wDump(degree.to_s) knots = shp.curve.knots wDump(knots.to_s) mults = shp.curve.mults wDump(mults.to_s) poles = shp.curve.poles wDump(poles.to_s) poles2 = poles.map{ |n| n.map{ |p| p * 2 }} wDump(poles2.to_s) weights = shp.curve.weights wDump(weights.to_s) crv= Siren.bscurve degree, knots, mults, poles2, weights Siren.save_model crv, $exPath ########### wDump("end") puts "done." Pause()
書き出したIgesと元の曲線を比べた結果がこちら
黄色が元の曲線で、水色が2倍な曲線です。(原点で2倍のスケーリングで一致します)
出来てる・・・結構苦労したので、他人には伝わらないと思いますが
感動してます。
でも、multsの説明書きが一致していないような・・・単に理解できていないだけかな?