続きのような・・・
Igesファイルの3D曲線のインポートに挑む3 - C#ATIA
上手くいかないので、開いた円弧の作成テストです。
円弧を作成し、同じ円弧をスケッチ内に3回取り込むだけのコードです。
import adsk.core, traceback
def run(context):
ui = None
try:
app = adsk.core.Application.get()
ui = app.userInterface
center = [1107.3813777445, -361.18476278735, 87.096588591886]
normal = [-0.54635392414872, -0.83754953013075, -0.00285904618013]
referenceVector = [0.83755440991454, -0.54635074096564, -0.00186501447709]
radius = 5.0881512938029 * 0.1
startAngle = 3.138255565834
endAngle = 6.2798482194238
arc = adsk.core.Arc3D.createByCenter(
create_Point(center),
create_Vector(normal),
create_Vector(referenceVector),
radius,
startAngle,
endAngle)
des = adsk.fusion.Design.cast(app.activeProduct)
comp = des.rootComponent
skt = comp.sketches.add(comp.xYConstructionPlane)
for i in range(3):
sfs = include_BSc(arc.asNurbsCurve, skt)
skt.include(sfs)
sfs.deleteMe()
ui.messageBox('Done')
except:
if ui:
ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
def create_Vector(lst):
return adsk.core.Vector3D.create(
lst[0], lst[1], lst[2])
def create_Point(lst):
return adsk.core.Point3D.create(
lst[0] * 0.1, lst[1] * 0.1, lst[2] * 0.1)
def include_BSc(geo, skt):
fs = skt.sketchCurves.sketchFittedSplines.addByNurbsCurve(geo)
fs.isFixed = True
return fs
実はこれ、パラメトリックかノンパラメトリックかで結果が違うんです。
ノンパラメトリックはこちら
1本に見えますが、同じもの3回なのでこれで正解なんです。
問題はパラメトリック
結構衝撃・・・。
1本だけなら結果が同じだったのですが、2本以上になると
2本目以降がナミナミ状態に。
Nurbs曲線化する際、本来通過すべきじゃない制御点を
通過するスプラインになってしまうんです。
includeしないと両方とも同じ動作になるんですが、
制御点が表示された状態になり、かなり邪魔なんです。
フォーラムに書いておけば、中の人に伝わるかな?