こちらの問題、ひょっとしたらスプリクト一発で解決出来るかな?
と思いました。
DXFの線分を繋げるには - Autodesk Community
こんな感じです。
#FusionAPI_python SketchPointsMerge #Author-kantoku #Description-スケッチのマージ可能な端点をマージする 結構危険 import adsk.core, adsk.fusion, traceback import itertools def run(context): ui = None #マージするトレランス 単位Cm!! tolerance = 0.001 try: #準備 app = adsk.core.Application.get() ui = app.userInterface #選択 sel = Sel('スケッチを選択してください','Sketches') if sel is None: return skt = adsk.fusion.Sketch.cast(sel.entity) #処理前数 before = len(skt.sketchPoints) #マージ [ExecMerge(p1,p2) for p1,p2 in itertools.combinations(skt.sketchPoints,2) if IsMerge(p1,p2,tolerance)] #終わり ui.messageBox('{}個、点をマージしました'.format(before-len(skt.sketchPoints))) except: if ui: ui.messageBox('エラー:\n{}'.format(traceback.format_exc())) def ExecMerge(p1,p2): try: p1.merge(p2) except: pass def IsMerge(p1,p2,tol): try: geo1 = p1.geometry geo2 = p2.geometry return geo1.isEqualToByTolerance(geo2, tol) except: return False #選択 def Sel(msg, selFilter): app = adsk.core.Application.get() ui = app.userInterface try: return ui.selectEntity(msg, selFilter) except: return None
スプリクト実行後、任意のスケッチ(Treeから)を選択することで
指定したトレランス以内の点同士をマージします。
実行前
実行後
70個の点を削除しています。ギターの輪郭付近の点が激減しているのが
画像でもわかります。
点自体をトレランス以内で移動している為、関連する線が動く可能性があります。
又、トレランスを大きくすると変化が大きすぎる為、Fusion360の
オペレーションが戻ってこない可能性が高いです!!
でも、質問者さんの投げかけた問題は解決してません・・・。
念のため書いておきます。
うちのサイトはFusion360スプリクトを記載していますが、CATIA関連の方が
圧倒的にアクセスが多いです。(でも、Fusion360スプリクトとPowerMillマクロは続けます)