先日、何とか3DCAD中間ファイルの3Dな点・曲線をインポートするスプリクトを
Upしました。
3DCAD中間ファイルの3Dな点・曲線をインポートするスプリクト - Autodesk Community
多数ある問題点の一つなのですが、円・円弧をNurbs曲線として
インポートしている部分の修正を考えています。
#FusionAPI_python #Author-kantoku #Description-ArcTest 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) skt.name = "NurbsCurve" #円弧取り込み-NurbsCurve sfs = include_BSc(arc.asNurbsCurve, skt) skt.include(sfs) sfs.deleteMe() #スケッチ作成 skt = comp.sketches.add(comp.xYConstructionPlane) skt.name = "Arc" #円弧取り込み-Arc ac = include_Arc(arc, skt) skt.include(ac) ac.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 def include_Arc(geo, skt): eva = geo.evaluator (reValue, sParam, eParam) = eva.getParameterExtents() (reValue, midpnt) = eva.getPointAtParameter((sParam + eParam) * 0.5) ac = skt.sketchCurves.sketchArcs.addByThreePoints( geo.startPoint, midpnt, geo.endPoint) return ac
1つのArc3Dオブジェクトを
最初は、今までの方法でNurbs曲線として取り込み
後では、3点通過の円弧として取り込みます。
最初のものをマウスでクリックすると
右下に曲線の長さが表示されます。
後のものをマウスでクリックすると
右下には半径が表示され、中心部分に点が作成されました。
と言う事で、円弧に関しては何とかなりそうです。