表示されているボディのみを取得する場合、ボディのisLightBulbOnプロパティを
調べるだけじゃダメで、Bodiesが表示されているか?コンポーネントが
表示されているか? チマチマ調べながらやっていたのですが、ちょっと前に
手っ取り早そうなメソッド見つけました。
Fusion 360 Help
類似したfindBRepUsingRayメソッドもあるのですが、イマイチわからないので
試していないし、パラメータが少ないのでfindBRepUsingPointにしてみます。
こんな感じです。
#Fusion360API Python script import adsk.core, adsk.fusion, traceback _app = adsk.core.Application.cast(None) _ui = adsk.core.UserInterface.cast(None) def run(context): try: global _app, _ui _app = adsk.core.Application.get() _ui = _app.userInterface des :adsk.fusion.Design = _app.activeProduct root :adsk.fusion.Component = des.rootComponent showBodies = root.findBRepUsingPoint( _app.activeViewport.camera.target, adsk.fusion.BRepEntityTypes.BRepBodyEntityType, 100000, True) for body in showBodies: print('{} - {}'.format(body.name, body.parentComponent.name)) except: if _ui: _ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
3番目のパラメータがイマイチ分かっていないのですが、でっかい数値にしときゃ
みんな引っかかるだろう作戦です。