こちらの続きです。
点・曲線をインポートするスプリクト 修正1 - C#ATIA
円弧に続いて円も! と思っているのですが、上手くいかないです。
スケッチ内の円は
sketch
┗sketchCurves
┗sketchCircles
Help
に属しているのですが、sketchCircles オブジェクトの sketchCircleのインスタンス が
・addByCenterRadius
・addByThreePoints
・addByThreeTangents
・addByTwoPoints
・addByTwoTangents
と存在しているのですが、全てスケッチサポート平面上か、平面に平行な状態でしかNGと
なっており、3D空間上に傾いた状態では作成出来ない様なんです。
(3点通過ですら、Z値は0の必要があるっぽいです)
ここまでは薄々気が付いていたので、次の手段を。
sketchCircleオブジェクトには、移動等出来そうなメソッド類はなさそう
なのですが、
http://help.autodesk.com/view/fusion360/ENU/?guid=GUID-f19ed86c-4c9f-45a2-a5bb-03403c2962fa
geometryプロパティとなっている Circle3D オブジェクトには、 "transformBy" メソッドがあり
Helpを見る限り、破壊的なメソッドっぽい感じがします。
これを利用すれば、任意の位置に円が作成できるかな? と思ったので、
こんな感じの関数作ってみました。
・・・ def include_Cri(geo, skt): sktCir = skt.sketchCurves.sketchCircles.addByCenterRadius(geo.center, geo.radius) geo = sktCir.geometry vec = adsk.core.Vector3D.create(0,0,1) mat = adsk.core.Matrix3D.create() mat.setToRotateTo(vec,geo.normal) geo.transformBy(mat) return sktCir ・・・
結論から書くと、結局任意の位置にはなりませんでした。
ん~甘かった。 2つの円弧に分割しようかとも思うのですが、
手動だと円も1本の線で表現可能なんですよね。 困ったなぁ