限定的なお話です。
この様なモデルがあるとします。(Fusionに入っているサンプルデータです)

赤印のボディを選択すると、全ての穴の軸となる線を作成します。

役に立つ・・・のかな?
import traceback
import adsk.core as core
import adsk.fusion as fusion
import adsk.cam as cam
def run(context):
ui: core.UserInterface = None
try:
app: core.Application = core.Application.get()
ui = app.userInterface
des: fusion.Design = app.activeProduct
root: fusion.Component = des.rootComponent
msg: str = 'Select'
selFilter: str = 'Bodies'
sel: core.Selection = select_ent(msg, selFilter)
if not sel:
return
body: fusion.BRepBody = sel.entity
recognizedHolesInput: cam.RecognizedHolesInput = cam.RecognizedHolesInput.create()
holeGroups: cam.RecognizedHoleGroups = cam.RecognizedHoleGroup.recognizeHoleGroupsWithInput(
[body],
recognizedHolesInput
)
skt: fusion.Sketch = root.sketches.add(root.xYConstructionPlane)
holeGroup: cam.RecognizedHoleGroup = None
for holeGroup in holeGroups:
for idx in range(holeGroup.count):
hole: cam.RecognizedHole = holeGroup.item(idx)
draw_hole_axis(hole, skt)
except:
if ui:
ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
def draw_hole_axis(hole: cam.RecognizedHole, skt: fusion.Sketch):
hole.top
skt.sketchCurves.sketchLines.addByTwoPoints(
hole.top,
hole.bottom
)
def select_ent(
msg: str,
filterStr: str
) -> core.Selection:
try:
app: core.Application = core.Application.get()
ui: core.UserInterface = app.userInterface
sel = ui.selectEntity(msg, filterStr)
return sel
except:
return None
但し、この機能は製造のエクステンションを持っていないとエラーになります。残念。
以前は違ったんですよ。エクステンションが無くても使える機能でした。
RecognizedHoleGroup オブジェクトですが、今回はrecognizeHoleGroupsWithInputメソッドを使ってます。
Help
以前は、廃止されているrecognizeHoleGroupsメソッドを使っていたような記憶です。残念。