尺度コマンドの中に点を入力するところがあると思うので、
事前に中心の点や重心点を作成しておいて、その点を入力するとできると思います。
ありがとうございます。
やはり事前に点を打つのですね。
例えばスカルプトで作った有機的な形状の場合、
中心や重心がわかりにくいと思うのですが、
このような形状の場合中心や重心を起点にすることは
難しいのでしょうか?
ボディを右クリックしてプロパティから重心は出てきます。
以前にコミュニティで紹介されていますが、点を作成してくれるアドインスクリプトがあります。
こちらの機能を使用すると良いと思います。
プロパティの数値を入力するのが手間なので、アクティブなコンポーネントの重心に
点を作成するマクロを(一か八かで)作成してみました。
#Create_ActiveComponent_COGPoint Bykantoku #DirectDesignType Only #Python import adsk.core, adsk.fusion, traceback def run(context): ui = None try: app = adsk.core.Application.get() ui = app.userInterface product = app.activeProduct design = adsk.fusion.Design.cast(product) actComp = design.activeComponent #designTypeCheck if design.designType == adsk.fusion.DesignTypes.ParametricDesignType: ui.messageBox('ダイレクトモードしか、点の作り方わかって無いんだよ!!') return #GetCOG physicalProperties = actComp.getPhysicalProperties(adsk.fusion.CalculationAccuracy.VeryHighCalculationAccuracy); cog = physicalProperties.centerOfMass #CreatePoint pointInput = actComp.constructionPoints.createInput() pointInput.setByPoint(adsk.core.Point3D.create(cog.x, cog.y, cog.z)) point = actComp.constructionPoints.add(pointInput) ui.messageBox('[X:'+str(cog.x*10)+' Y:'+str(cog.y*10)+' Z:'+str(cog.z*10)+']\nに、点を作ったよ!') except: if ui: ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
・あくまで "アクティブなコンポーネントの重心" です。(ボディの指定の仕方がわからず・・・)
・パラメトリックデザイン時に実行すると、怒られます。(実行可能なのは、ダイレクトデザイン時のみです)
(Fusion360のデフォルト単位はCm何ですかね?)
Fusion360の場合、マクロではなくスクリプトでしたね。 すいません。
>マクロつくれるんですね!!
イヤ、わかって無いです。 2種類のサンプルのコードをつなぎ合わせただけなんです。
ボディ指定やパラメトリックでも実行できるようになったら、再度Upします。
すごいですね!
ぜひ試してみたいのですが、
このスクリプトというのは
どうやれば使えるようになるのでしょうか?
どこかにコピペでしょうか??
よろしくお願いします1
こちらの動画が一番わかりやすいかと思います。
https://www.youtube.com/watch?v=F5WI8R-HGw0
上記のコードはPython(日本では何故か不人気)になっています。
ありがとうございます!
実行できました。
実行するにはダイレクトモードにしてからってことですよね??
複数ボディがある時、1つだけ選んで実行してみたのですが、
全体の重心のような場所に点ができたのですが、
個別ボディには対応してないですか?
よろしくお願いします。
>実行するにはダイレクトモードにしてからってことですよね??
そうです。 現状はエラーで止まらないようにするのが精一杯でした。
何れはどちらでも動くようにしたいと思っています。
>個別ボディには対応してないですか?
一応、 "あくまで "アクティブなコンポーネントの重心" です" と、しました。
まだ、始めたばかりなのでわからないので。
パラメトリック・ダイレクトどちらでも利用可能で、ボディを指定するたびに
重心に点を作成するスクリプトが出来ました。
もし良ければご利用ください。
こんにちは
こちらのスクリプトをFusion 360のSNSでご紹介させていただきたいのですが、よろしいでしょうか?
その際のご紹介名や、同時に宣伝されたいURLなどはございますか?
宜しくお願いいたします!
yujifujimuraさん こんにちは
>こちらのスクリプトをFusion 360のSNSでご紹介させていただきたいのですが、よろしいでしょうか?
構いませんよ。
>その際のご紹介名や、同時に宣伝されたいURLなどはございますか?
特にはありません。
個別にできました!
ありがとうございます!
今回質問の内容は尺度変更だったのですが、
実は重心の点が一番欲しい機能だったので
大変感謝しております。
使わせていただきます。
ありがとうございました!
たびたび失礼します。
重心についてですが、例えばこんな重心も求められるのかなと思い
メッセージさせていただきました。
添付のように異なるマテリアルを合わせた重心を表示するようなことも可能なのでしょうか?
(例えば上の赤がプラスチック、下のグレーが鉄など)
スクリプトの知識がないのでそれが可能なのかも検討もつかず
失礼な質問になっていたら申し訳ありません。
よろしくお願いします。
Fusion360は複合材のような物理マテリアルは、提供されていないのでは
無いのかな? と思っています。 その為リンク先のスプリクトは、単一ボディ用のため出来ません。
同一コンポーネント内に二つのボディを作成。 片方を鉄、もう片方を紙とし
最初のスクリプトを実行(左)。
両方を鉄にした上で再度実行(右)してみました。
厳密にはわかりませんが、物理マテリアルの変更だけで数値が変わっているので
コンポーネント単位であれば可能だと思いますよ。
説明が下手で申し訳ありません。
やりたかったことはまさにこれです!!
ありがとうございます!