C#ATIA

↑タイトル詐欺 主にFusion360API 偶にCATIA V5 VBA(絶賛ネタ切れ中)

面の境界を取得する

面の境界を取得する際、やはり曲線になる場合があるためスケッチで作るしか
方法が無さそうです。

#FusionAPI_python
#Author-kantoku
#Description-GetBoundaryCurves
#指定した面の境界を取得

import adsk.core, adsk.fusion, traceback

_app = adsk.core.Application.get()
_ui = _app.userInterface

def run(context):
    try:
        global _app, _ui
        des = adsk.fusion.Design.cast(_app.activeProduct)
        comp = des.rootComponent
        
        #面選択
        selFilters = 'Faces'
        sel = Sel('面を選択/ESC-中止', selFilters )
        if sel is None: return
        _ui.activeSelections.clear()
            
        edges = sel.entity.edges
        skt = comp.sketches.add(comp.xYConstructionPlane)
        [skt.include(edge) for edge in edges]
        
        _ui.messageBox('done')
    except:
        if _ui:
            _ui.messageBox('エラー\n{}'.format(traceback.format_exc()))

#選択
#param: msg-string, selFilter-SelectionFilters
#return: selection
def Sel(msg, selFilter):
    global _ui
    try:
        return _ui.selectEntity(msg, selFilter)
    except:
        return None

スプリクト実行後、面を指定するだけです。 結果はこんな感じです。

f:id:kandennti:20161011182933p:plain

これだけ・・・これだけなんです。
手動ではスケッチの "3Dジオメトリを含める" を全部のエッジで実行した感じです。

先日よくわからなかった、sketchオブジェクトのinclude関数は
こんな感じで使うんだぁ とわかりました。

こちらのObaraさんの回答がヒントになりました。
解決済み: 螺旋(スケッチ)の作成方法 - Autodesk Community

ん~画面上に無く行列を利用して変換した要素が突っ込めると
良いんだけどなぁ。