メッセージ1/13
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- パーマリンクを表示
- 印刷
- 報告
例えばM6のネジを使用していて、M6のタップ穴をあける場合
現実にはM6の穴はφ5になると思うのですがその場合、M6のねじをジョイントすると干渉になります。
何かいい方法はありますか。やはりφ6で穴をあけないといけませんか。
解決済! 解決策の投稿を見る。
例えばM6のネジを使用していて、M6のタップ穴をあける場合
現実にはM6の穴はφ5になると思うのですがその場合、M6のねじをジョイントすると干渉になります。
何かいい方法はありますか。やはりφ6で穴をあけないといけませんか。
解決済! 解決策の投稿を見る。
@n-okudaira さん、こんにちは。
下の事例はM10のボルトの締結状態をモデリングしたものです。雄ネジと雌ネジの双方にはM10の属性だけを与えて実体化はしていません。
これで干渉チェックをすると確かに干渉していると警告が出るのですが、通常のアセンブリではこのまま設計を進めると思います。
干渉した場合に何が問題かを教えていただければ何か対策を考えられるかもしれません。
ありがとうございます。
意図としまいては、アセンブリにて干渉チェックを行い干渉なしが表示されるようにしたいです。
ボルトなしで干渉チェックをした場合、穴位置のずれや、ボルト頭等に干渉しているなどが発見できないかと思い
ボルトをアセンブリに追加したいのですが、ボルトと穴が干渉チェックで引っかかるので、何か策はないのかと思い質問しました。
@n-okudaira さん、
最初に干渉しない寸法で穴を開けておき、次に目的の大きさでネジの属性を付加、適宜ネジフィーチャーを抑制/抑制解除するという方法でどうでしょうか?
動画と添付データをご確認ください。
有難うございます。
参考にします。
たとばネジ穴が複数あり複数のねじフューチャーを一括で抑制/解除できたりしますか。
@n-okudaira さん こんにちは。
>複数のねじフューチャーを一括で抑制/解除できたりしますか。
恐らく出来ない気がします。
APIを利用する "ネジ" コマンドのものは切り替えが出来そうな気が
するので、時間が出来たら取り組もうかと思ってます。
(利用するかどうかはご自由に)
穴コマンドのネジはちょっと調べて、試してみないと分からないですね・・・。
@n-okudaira さん、
そのものずばりの機能はなかった気がするのですが、モデリングの仕方(運用のやり方/ルール)で対応可能だと思います。
下の事例ではネジフィーチャーを履歴の最後にまとめて作るようにして一挙に抑制/抑制解除ができるように工夫しています。
このやり方は樹脂成型部品を設計する場合にも有効で、私は運用ルールとしてフィレットを履歴の一番最後にまとめて作るように決めています。モデリングは適宜履歴のロールバック、アップデートを繰り返しながら行います。
@ryoji00 さん
確かに、業務でもネジ部をサーフェスで表現されているデータが
送られてきますね。
図面化した際の断面も、その方法で表現可能なのでそうされている
のだと思います。・・・Fusion360ではNGですが。
@n-okudaira さん
全てのネジのモデル化ON/OFFを行うスクリプトを作成しました。
# Fusion360API Python script
import traceback
import adsk.fusion
import adsk.core
def run(context):
ui: adsk.core.UserInterface = None
try:
app: adsk.core.Application = adsk.core.Application.get()
ui = app.userInterface
des: adsk.fusion.Design = app.activeProduct
root: adsk.fusion.Component = des.rootComponent
threads: adsk.fusion.ThreadFeatures = root.features.threadFeatures
# query
msg = f'{threads.count}個のモデル化可能なネジが有ります。 '
msg += f'全てモデル化しますか?\n'
msg += f'はい:モデル化を実行\n'
msg += f'いいえ:モデル化を解除\n'
msg += f'キャンセル:変更しない'
res = ui.messageBox(
msg,
'全てのネジのモデル化切り替え',
adsk.core.MessageBoxButtonTypes.YesNoCancelButtonType,
adsk.core.MessageBoxIconTypes.QuestionIconType
)
# exec
if res == adsk.core.DialogResults.DialogYes:
execModeled(True)
elif res == adsk.core.DialogResults.DialogNo:
execModeled(False)
except:
if ui:
ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
def execModeled(isModeled: bool):
app: adsk.core.Application = adsk.core.Application.get()
ui = app.userInterface
des: adsk.fusion.Design = app.activeProduct
root: adsk.fusion.Component = des.rootComponent
sels: adsk.core.Selections = ui.activeSelections
tl: adsk.fusion.Timeline = des.timeline
tlPos = tl.markerPosition
threads: adsk.fusion.ThreadFeatures = root.features.threadFeatures
thread: adsk.fusion.ThreadFeature
for thread in threads:
timeObj: adsk.fusion.TimelineObject = thread.timelineObject
if thread.linkedFeatures.count < 1:
# ThreadFeature
timeObj.rollTo(True)
if thread.isModeled != isModeled:
thread.isModeled = isModeled
else:
# HoleFeature
hole = adsk.fusion.HoleFeature.cast(thread.linkedFeatures[0])
if not hole:
continue
timeObj.rollTo(False)
isModeledNumber = 1 if isModeled else 0
sels.clear()
sels.add(hole)
app.executeTextCommand(u'Commands.Start FusionDcHoleEditCommand')
dialogInfo = app.executeTextCommand(u'Toolkit.cmdDialog')
if 'infoModeled' in dialogInfo:
app.executeTextCommand(u'Commands.SetBool infoModeled {}'.format(isModeledNumber))
app.executeTextCommand(u'NuCommands.CommitCmd')
tl.markerPosition = tlPos
sels.clear()
・履歴をキャプチャしている場合のみです。
・外部リンクしているコンポーネント内のネジは対象外です。
申し訳ございません
fusion360をそこまで深く使用していないので
スクリプトのやり方がわからないです。。
@n-okudaira さん
こちら記載した "素のコード" の方法で、新たなスクリプトを作成し
(プログラミング言語はpythonをチェック入れて下さい)
上記のコードをコピペしてください。
https://kantoku.hatenablog.com/entry/2021/02/15/161734
使い勝手が悪いため、メニューにボタンを追加して使いやすく
したかったのですが、Fusion360がクラッシュしてしまう為
ボタンにすることは諦めました・・・。