C#ATIA

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

siren v0.14 線の情報を取得する2

時間が無い。 こちらの続きです。
siren v0.14 線の情報を取得する - C#ATIA

曲線を扱う以上、パラメータを取得したかったのですが
こちらの説明の first last params が反応しませんでした。
class Edge · dyama/mruby-siren Wiki · GitHub

サンプルコードにパラメータの取得を行っているものがあったので、前回の物を拡張

・・・
class  Siren::Edge
	def first()
		return self.param(self.sp, 0.001)
	end 
	
	def last()
		return self.param(self.tp, 0.001)
	end 
	
	def info()
		crv = self.curve
		arr = ["class : " + crv.class.name]
		arr <<  ["length : " + self.length.to_s]
		arr <<  "first_pos(first_param) : %s (%f)" % [self.sp.to_s, self.first]
		arr <<  "last_pos(last_param) : %s (%f)" % [self.tp.to_s, self.last]
・・・

残りは前回と同じ。トレランスは強制的に0.001にしました。
実行結果はこちら
f:id:kandennti:20170810162327p:plain
パラメータは Siren::Edge クラスに実装されているようなので、
赤印の直線でも取得出来ちゃうんですね。 終点のパラメータは結果的に長さなんですね。

黄色印の長さですが、Siren::Edge クラスに実装されつつ Siren::Circle クラスにも
実装されていて、最初は何でかな? と思っていたのですが、
Siren::Edge.length は、実際の長さで
Siren::Circle.length は、定義された(要は閉じた)時の長さ
になっているようです。 (開いた円弧でareaはどうやって・・・と最初は思ってました)

.curve で取得できるものは、トリム解除された状態で始点終点パラメータで
トリムされた物が Siren::Edge クラスになっているのだろ と言う解釈してみました。