C#ATIA

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

点・曲線をインポートするスプリクト 修正2

こちらの続きです。
点・曲線をインポートするスプリクト 修正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本の線で表現可能なんですよね。 困ったなぁ