LoginSignup
1
1

More than 3 years have passed since last update.

Fusion 360 を Pythonで動かそう その6 スケッチポイントを描く

Last updated at Posted at 2020-07-25

はじめに

Fusion360 のAPIの理解を深めるために公式ドキュメント内のサンプルコード Sketch Point API Sample (スケッチポイント APIサンプル) の内容からドキュメントを読み込んでみたメモ書きです
スケッチポイントを作成します

スクリプトの内容を確認する

最初と最後のおまじないとスケッチの作成まで

最初と最後のこの辺りはFusion360 APIのお決まりのパターンです。その5で触れたので説明を省略します。

def run(context):
    ui = None
    try: 
        app = adsk.core.Application.get()
        ui = app.userInterface

        doc = app.documents.add(adsk.core.DocumentTypes.FusionDesignDocumentType)
        design = app.activeProduct

        # Get the root component of the active design.
        rootComp = design.rootComponent

        # Create a new sketch on the xy plane.
        sketches = rootComp.sketches;
        xyPlane = rootComp.xYConstructionPlane
        sketch = sketches.add(xyPlane)

        #
        # ここにコードを追加していく
        #

    except:
        if ui:
            ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))

スケッチの healthState (健康状態?)を取得

        # Get sketch health state
        health = sketch.healthState
        if health == adsk.fusion.FeatureHealthStates.ErrorFeatureHealthState or health == adsk.fusion.FeatureHealthStates.WarningFeatureHealthState:        
            msg = sketch.errorOrWarningMessage

Sketch.healthState プロパティを取得してhealthに代入しています。
healthState :フィーチャーが持つ様々な状態のこと。フィーチャーのモデリング、コンストラクションジオメトリ、スケッチの状態に使用されます。
スケッチのhealthState が「ErrorFeatureHealthState:エラーがある」または「WarningFeatureHealthState:警告がある」だったら msgerrorOrWarningMessage プロパティを代入します

sketchPoints プロパティを取得する

        # Get sketch points
        sketchPoints = sketch.sketchPoints

sketchPointsという名前で sketch オブジェクトの Sketch.sketchPoints プロパティを取得する
Sketch.sketchPoints プロパティ:このスケッチに関連付けられたスケッチ・ポイント・コレクションを返します。これは、既存のスケッチ ポイントへのアクセスを提供し、新しいスケッチ ポイントの作成をサポートします。

スケッチポイントを作成

        # Create sketch point
        point = adsk.core.Point3D.create(1.0, 1.0, 0)
        sketchPoint = sketchPoints.add(point)

SketchPoints.add メソッドsketchPointsにスケッチポイントを追加し sketchPoint に代入します
SketchPointsSketchPoint"s" の有無での使い分けがややこしい・・・
Point3D.create メソッドではFusion360の画面にはなにも作成されませんが sketchPoints.add メソッドではユーザーインターフェイスの Point コマンドを使用してスケッチポイントを作成するのと同じスケッチポイントが作成されます
image.png

スケッチポイントを移動

        # Move sketch point
        translation = adsk.core.Vector3D.create(1.0, 0, 0)
        sketchPoint.move(translation)

Vector3D.create メソッドで移動用のベクトルを作成し translation に代入。
SketchPoint.move メソッドsketchPointを移動
image.png

まとめ

このシリーズはものすごく地味な作業の繰り返しだけど、だんだんとAPIの構造が理解できてきてる気がしてやってる本人は少しだけ楽しくなってきた:sweat_smile:

前の記事 Fusion 360 を Pythonで動かそう その5 最初と最後のおまじないを読んでみる
次の記事 Fusion 360 を Pythonで動かそう その7 点を通過するスプライン作成

参考

Fusion 360 API Reference Manual

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1