#はじめに
Fusion360 のAPIの理解を深めるために公式ドキュメント内のサンプルコード Sketch fillet and offset API Sample (スケッチのフィレットとオフセット APIサンプル) の内容からドキュメントを読み込んでみたメモ書きです
スケッチでのフィレットを作成し、その結果を元にオフセットします。
#スクリプトの内容を確認する
##最初と最後のおまじないとスケッチの作成まで
最初と最後のこの辺りはFusion360 APIのお決まりのパターンです。その5で触れたので説明を省略します。
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)
#
# ここにコードを追加していく
#
except:
if ui:
ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
二つのつながった線を描く
# Draw two connected lines.
lines = sketch.sketchCurves.sketchLines
line1 = lines.addByTwoPoints(adsk.core.Point3D.create(0, 0, 0), adsk.core.Point3D.create(3, 1, 0))
line2 = lines.addByTwoPoints(line1.endSketchPoint, adsk.core.Point3D.create(1, 4, 0))
ここはその4にも出てきた内容なので説明は省略
##SketchArcs.addFillet メソッドでフィレットを作成
# Add a fillet.
arc = sketch.sketchCurves.sketchArcs.addFillet(
line1, line1.endSketchPoint.geometry,
line2, line2.startSketchPoint.geometry, 1)
SketchArcs.addFillet メソッドでarc
という名前の SketchArc オブジェクトを作成。
パラメーターにはline1とline1の終点、line2とLine2の終点、フィレットの半径を指定している
##line1につながっている曲線を見つける
# Add the geometry to a collection. This uses a utility function that
# automatically finds the connected curves and returns a collection.
curves = sketch.findConnectedCurves(line1)
Sketch.findConnectedCurves メソッドで line1 につながっている曲線を見つける。結果は ObjectCollection オブジェクトが得られるのでそれを curves
に代入する
##オフセットカーブを描く
# Create the offset.
dirPoint = adsk.core.Point3D.create(0, .5, 0)
offsetCurves = sketch.offset(curves, dirPoint, 0.25)
Sketch.offset メソッドでオフセットカーブを作成。
パラメータは3つ
curves:端部がつながった曲線のセットをObjectCollectionで指定する
directionPoint:入力曲線のどちら側でオフセットを作成するかPoint3Dで指定する
offset:曲線をオフセットする距離を cm 単位で指定する
#まとめ
直線一本だけをオフセットしようと思い line1 を Sketch.offset メソッドに入れてみたがエラーが出た。ちゃんと ObjectCollection にしないといけないってことかな?
前の記事 Fusion 360 を Pythonで動かそう その7 点を通過するスプライン作成
次の記事 Fusion 360 を Pythonで動かそう その9 スケッチの交差