見出し画像

vol.1 「Fusion360 API はじめました」Fusion360 API の学習帳

はじめに

Fusion360をPythonで動かせたら楽しそうだよね.
と思って始めたFusion360 APIなんですが,情報を探してみるも,意外にネットに落っこちてる情報は少ないんですよー.
Fusion360は無料で使えるから,色々記事とかあるかと思ってた...

まあせっかく勉強するなら,少しくらいメモを残しながらやっていこうかなと思いまして,息抜き程度にノートを書いていこうと思います.
プログラミングは学校でやったVBA程度です(笑)Fusion360 API どころかPythonもあんまりわかっていないくらいの初心者ですので,お手柔らかに.
随時,アドバイス受付中です!

いったんやってみる

サンプルスクリプトは,公式サイトに色々あるので,そこから少し抜粋.

■AUTODESK 公式サイト:
Welcome to the Fusion 360 API (Application Programming Interface)


サンプルをコピペしながら,とりあえず動くスクリプトを作成.
これはただ,スケッチを作成して,そこに円を書くというだけのスクリプト

import adsk.core, adsk.fusion, traceback

def run(context):
   ui = None
   try: 
       # ここらへんはお決まりの感じっぽい
       app = adsk.core.Application.get()
       ui = app.userInterface
       doc = app.documents.add(adsk.core.DocumentTypes.FusionDesignDocumentType)
       design = adsk.fusion.Design.cast(app.activeProduct)
       

       # ルートコンポーネントを取得する.
       rootComp = design.rootComponent

       # ▼スケッチの作成▼
       # ルートコンポーネントのスケッチを定義する.
       sk = rootComp.sketches
       
       # ルートコンポーネントのXY平面を定義する.
       xyPlane = rootComp.xYConstructionPlane
       
       # 「sk」というスケッチを「xyPlane」に追加する.
       sketch = sk.add(rootComp.xYConstructionPlane)


       # ▼スケッチに円を書く▼
       # スケッチに書く曲線(円)を定義する.
       circles = sketch.sketchCurves.sketchCircles
       
       # 定義した曲線(円)を追加する.追加するとき中心点(0,0,0)と半径(2cm)を指定している.
       circle1 = circles.addByCenterRadius(adsk.core.Point3D.create(000), 2)
       
       # 結果的に,XY平面にスケッチを作成して,
       # 原点を中心点とした半径2cmの円が出来あがった.
      
      
   # これもお決まりのやつかな...
   except:
       if ui:
           ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))

ざっと意味を理解してみたがこんな感じであっているのだろうか..
あまり良くわかってないけど,Fusion360でスケッチを書くときと同じ手順をたどれば良さそうな感じがする.

スケッチを作成

はじめの数行のコードはお決まりのものとしてそのままにしておくとして,次にでてくるのが「ルートコンポーネント」.
たぶんこの事だと思われる▼

スクリーンショット 2021-04-21 23.20.47


たとえばこのコードを見ていくと...

       # ▼スケッチの作成▼
       # ルートコンポーネントのスケッチを定義する.
       sk = rootComp.sketches
       
       # ルートコンポーネントのXY平面を定義する.
       xyPlane = rootComp.xYConstructionPlane
       
       # 「sk」というスケッチを「xyPlane」に追加する.
       sketch = sk.add(rootComp.xYConstructionPlane)

ルートコンポーネントの中のスケッチを「sk」とする.
 → ルートコンポーネントの中のXY平面を「xyPlane」とする. 
   →「xyPlane」 に「sk」を作成する.
といった流れになるのかな.

メソッドとプロパティ

「ルートコンポーネントの中のスケッチ」という感じで,あるもの(オブジェクト)の情報を取得したいときは「プロパティ」ってやつを使うらしい

sk = rootComp<オブジェクト>.sketches<プロパティ>

これでは「sk」を定義しただけで,スケッチが作成されたわけではない.
実際にスケッチを作るっていう操作を行うには「メソッド」を使う.

sk<オブジェクト>.add(rootComp.xYConstructionPlane)<メソッド>

こんな感じで,情報を取得していって,操作をさせることで,スケッチを書いたり,それを押し出したりできそう.
ただ,スケッチを作ってくださいねっていうメソッドは,ちゃんとスケッチさんに言わないとやってくれないし,XY平面の情報を教えて下さいっていうプロパティはルートコンポーネントにさんに言わないと教えてくれない.
誰に何を言えばいいのかは,コレを見てください.ということらしい.

画像2

どんなプロパティやメソッドがあるかや,そのちょっとした書き方・ルールみたいなものは,Fusion360の公式サイトにのってる.


例えばコレ▼
Sketchs Object(Fusion360 API Reference Manual)

コレはさっきのSketchsオブジェクトについて,メソッドの「add」を使ってスケッチを作成した.↓

スクリーンショット 2021-04-21 23.50.40

add メソッドは,平面を指定する↓.

スクリーンショット 2021-04-21 23.50.50


おわりに

ざっとFusion 360 AIPの雰囲気を味わいました.
まだスケッチを書いただけですが... 笑

とりあえず,公式サイトのサンプルとリファレンスマニュアル見ながら,いといろ探っていこうと思います.

また進展があれば!
(せっかくスケッチ書いたので,次はそれ押し出ししたいよね...)

この記事が気に入ったらサポートをしてみませんか?