メッセージ1/5

適用対象外
02-06-2021
04:25 PM
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- パーマリンクを表示
- 印刷
- 報告
Fusion360のAPIにおいてわからないことがあるので質問させていただきます。
2つのボディを認識し1つ目のボディーをターゲット,2つ目のボディをツールボディとします.
1.ツールボディを残したまま切り取りを行います.
2.ターゲットボディを回転移動させます.
3.ツールボディを回転運動させます.
1-3を繰り返すプログラムを作成する予定なのですが,切り取りの後のボディの移動がうまくいきません.
エラーコードはTypErrorで64行目の
moveFeatureInput = moveFeats.createInput(TargetBody, trans)
が原因となっています.
ソースコードを下に乗せるので,問題点の指摘と解決方法を教えていただきたいです。
import adsk.core, adsk.fusion, traceback,math,csv,os
def run(context):
ui = None
try:
app = adsk.core.Application.get()
ui = app.userInterface
# Create a document.
#"""doc = app.documents.add(adsk.core.DocumentTypes.FusionDesignDocumentType)"""
#現在の距離をdistance_now,初期化も行う
distance_now = 0
#終了距離をdistance_end
distance_end = 5.0
#微小移動距離Δhをh_app
h_app = 0.25
#回転角度Θをsita
sita = math.pi/100
product = app.activeProduct
design = adsk.fusion.Design.cast(product)
rootComp = design.rootComponent
occs = rootComp.occurrences
Target = occs.item(0).component
features = rootComp.features
TargetBody = adsk.core.ObjectCollection.create()
TargetBody =Target.bRepBodies.item(0)
ToolBodies = adsk.core.ObjectCollection.create()
ToolBodies.add(Target.bRepBodies.item(1))
#while (distance_now<distance_end):
CombineCutInput = rootComp.features.combineFeatures.createInput(TargetBody, ToolBodies )
CombineCutFeats = features.combineFeatures
CombineCutInput = CombineCutFeats.createInput(TargetBody, ToolBodies)
CombineCutInput.isKeepToolBodies = True
CombineCutInput.operation = adsk.fusion.FeatureOperations.CutFeatureOperation
CombineCutFeats.add(CombineCutInput)
#ワーク側の回転運動
#回転軸の定義
trans = adsk.core.Matrix3D.create()
#trans.setToRotation(math.pi*0.2, adsk.core.Vector3D.create(1,0,0), adsk.core.Point3D.create(0,0,0))
rotX = adsk.core.Matrix3D.create()
rotX.setToRotation(math.pi*0.2, adsk.core.Vector3D.create(1,0,0), adsk.core.Point3D.create(0,0,0))
trans.transformBy(rotX)
#rotY = adsk.core.Matrix3D.create()
#rotY.setToRotation(math.pi*0.3, adsk.core.Vector3D.create(0,1,0), adsk.core.Point3D.create(0,0,0))
#trans.transformBy(rotY)
#rotZ = adsk.core.Matrix3D.create()
#rotZ.setToRotation(math.pi*0.5, adsk.core.Vector3D.create(0,0,1), adsk.core.Point3D.create(0,0,0))
#trans.transformBy(rotZ)
# Create a move feature
moveFeats = features.moveFeatures
moveFeatureInput = moveFeats.createInput(TargetBody, trans)
moveFeats.add(moveFeatureInput)
#ToolBodies.move(transform)
distance_now = distance_now + h_app
except:
if ui:
ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
解決済! 解決策の投稿を見る。