今回はスケッチに点を描く方法について紹介します。
点を描く
Fusion360のドキュメントにサンプルコードに点を描く方法が記載されています。
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 = 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)
# Get sketch health state
health = sketch.healthState
if health == adsk.fusion.FeatureHealthStates.ErrorFeatureHealthState or health == adsk.fusion.FeatureHealthStates.WarningFeatureHealthState:
msg = sketch.errorOrWarningMessage
# Get sketch points
sketchPoints = sketch.sketchPoints
# Create sketch point
point = adsk.core.Point3D.create(1.0, 1.0, 0)
sketchPoint = sketchPoints.add(point)
# Move sketch point
translation = adsk.core.Vector3D.create(1.0, 0, 0)
sketchPoint.move(translation)
except:
if ui:
ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
実行結果の確認
書かれているコードのままPythonスクリプトを作り、実行してみましょう。
プログラムの詳細
プログラムの中身を見ながらどんな事をしているのか確認していきます。
おまじない
1行目~10行目と36行目以降はスケッチのデザイン定番のおまじないです。
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 = app.activeProduct
…
except:
if ui:
ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
スケッチを作る
12行目~18行目ではXY平面上に新しいスケッチを作ります。(詳細は省略します)
# 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)
スケッチの状態を確認
20行目~23行目ではスケッチの状態を確認します。
# Get sketch health state
health = sketch.healthState
if health == adsk.fusion.FeatureHealthStates.ErrorFeatureHealthState or health == adsk.fusion.FeatureHealthStates.WarningFeatureHealthState:
msg = sketch.errorOrWarningMessage
21行目の「healthState」はスケッチの状態を取得します。
状態の種類については公式ドキュメント「FeatureHealthStates Enumerator」に一覧で載っています。
22行目の条件分岐でスケッチにエラーまたは警告があるか確認します。
23行目の「errorOrWarningMessage」でエラーまたは警告の内容を取得します。(「errorOrWarningMessage」はエラーまたは警告の場合のみ内容を取得でき、それ以外の場合では空白(0バイトの文字)を取得します)
ただ、このサンプルでは受け取ったメッセージについて何もしていないように見えるのでこの処理部分については意味不明です。(新規作成したスケッチでエラーや警告が発生する事も考え難い)
点を描く
25行目~30行目では点を作成します。
# Get sketch points
sketchPoints = sketch.sketchPoints
# Create sketch point
point = adsk.core.Point3D.create(1.0, 1.0, 0)
sketchPoint = sketchPoints.add(point)
26行目の「sketchPoints」点群を取得します。
29行目の「adsk.core.Point3D.create()」で点を作成します。(第一引数、第二引数、第三引数に作成する点のそれぞれ座標値(X, Y, Z)を指定します)
30行目の「add()」で作成した点をスケッチの点群に追加します。
点を移動する
32行目~34行目では作成した点を移動します。
# Move sketch point
translation = adsk.core.Vector3D.create(1.0, 0, 0)
sketchPoint.move(translation)
33行目の「adsk.core.Vector3D.create()」でベクトルを作成します。(第一引数、第二引数、第三引数に作成する点のそれぞれベクトル値(X, Y, Z)を指定します)
34行目の「move()」で点を移動します。(引数にベクトルを指定します)
まとめ
点の作成と点の移動について紹介しました。
点の作成は線などの作成時にも必要になるので使うタイミングはかなり多いと思います。
点の移動として紹介した「move()」はおそらく点以外の要素でも使えると思います。(公式ドキュメントから見つける事はできませんでした)
公式ドキュメントの構成についてもまだ理解不足なのでここら辺の情報をまとめられたら紹介しようと思います。
コメント