Fusion360歯車切削スクリプト の履歴(No.8)
更新歯車について勉強するシリーズ†
- 工作/歯車について勉強する 歯車の形状についての基礎
- 工作/歯車について勉強する2 仮想的なラックを使って実用的な歯車形状を切り出す話
- 工作/歯車について勉強する3 歯車に関するいろいろな計算機
- 工作/歯車について勉強する4 転位歯車の中心間距離と逆インボリュート関数
- 工作/Fusion360歯車スクリプト 勉強した結果を使って作ってみました
- 工作/Fusion360歯車切削スクリプト Fusion 360 内で歯車の歯切りを行うスクリプトです
- 工作/Fusion360曲面生成スクリプト 歯切り結果の表面をきれいにするスクリプトです
2つのボディーを回したり押したりしながら切削を行うスクリプト†
歯車の切削工程を Fusion 360 の中でシミュレーションして、 通常の計算では難しい歯形の歯車を生成するのに使えるかも?
目次†
例†
2つともに回しながら切っていく例:
1つを回してもう1つを直動しながら切っていく例:
いろいろできます。
免責†
主に自分の勉強のために作っているものですのでいろいろおかしなところがあると思います。
これで作図したものを実際に作って組み合わせてみたことも実のところありません。
そのあたり加味してご使用ください。
ライセンス†
MIT とします。
利用者の責任の下、ご自由にお使いください。
ダウンロード&更新履歴†
不具合&改善点覚書†
インストール†
Windows の場合、上記 .zip ファイルを解凍して出てくる move_and_cut という名前のフォルダーを
C:\Users\(ユーザー名)\AppData\Roaming\Autodesk\Autodesk Fusion 360\API\Scripts
にコピーします。
使用方法†
- Fusion360 のデザイン画面で Shift+S を押すと「スクリプトとアドイン」のダイアログが出ます
- move_and_cut を選んで「実行」あるいはそのまま「ダブルクリック」
- Target = 切削対象の Body を選択
- Target = 切削対象の移動軸 Axis を選択
- Target = 切削対象の移動軸 Axis に沿った回転総量を Rotation へ入力(360 deg/n の形で入れると間違いない)
- Target = 切削対象の移動軸 Axis に沿った移動総量を Translation へ入力
- Tool = 切削ツールの Body を選択
- Tool = 切削ツールの Body の移動軸 Axis を選択
- Tool = 切削ツールの Body の移動軸 Axis に沿った回転総量を Rotation へ入力(360 deg/n の形で入れると間違いない)
- Tool = 切削ツールの Body の移動軸 Axis に沿った移動総量を Translation へ入力
- 画面上の Axis に沿った矢印を確認して必要に応じて Reverse をクリック
- 回転は矢印の方向に対して右回りが正になる
- 切削終了後に元の位置に戻す必要がなければ Return to original の選択を解除
- step に切削工程を何ステップに分けて行うかを入力
- OK
LANG: p5js_live // =============== ここが設定 const gif_url = 'https://dora.bk.tsukuba.ac.jp/~takeuchi/?plugin=attach&refer=%E5%B7%A5%E4%BD%9C%2FFusion360%E6%AD%AF%E8%BB%8A%E5%88%87%E5%89%8A%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88&openfile=move_and_cut3.gif'; const multi = 1; // スライダーは multi 回ループで最大値になる const fps = 0.5; // 描画頻度 (frame per second) const maxWidth = 600; // 横幅最大値 // ================ ここから下は汎用コード let gif = null; let frameSlider = null; let w, h; p.preload = () => gif = p.loadImage(gif_url); const draw = () => { let index = frameSlider.value(); gif.setFrame(index % gif.numFrames()); // フレームを選択して p.image(gif, 0, 0, w, h); // 描画 } p.setup = () => { p.frameRate(fps); w = Math.min(maxWidth, gif.width); h = gif.height * w / gif.width; p.createCanvas(w, h + 20); frameSlider = p.createSlider(0, gif.numFrames() * multi - 1); frameSlider.value(0); frameSlider.position(0, h); frameSlider.size(w); frameSlider.input(draw); draw(); } p.draw = () => { if(p.mouseIsPressed) return; frameSlider.value((frameSlider.value() + 1) % (gif.numFrames() * multi)); draw(); }
チュートリアル:フェースギアを切り出す†
フェースギアはクラウンギアとも呼ばれる王冠の形をした歯車です。
歯切り用の小歯車工具を作成†
歯切り用の小歯車工具は、歯末の丈を標準の 1.00 から 1.25 に変更し、バックラッシュに負の値 -0.05 mm を持たせた平歯車として作成しました。
歯末の丈を長くしているのは、その部分がフェースギアの歯底を削ることで、通常のギアと組み合わせた際に十分な頂隙が生じるようにする為です。また、切削具側に負のバックラッシュを持たせることで、切られた歯車に正のバックラッシュが付くことを期待しています。
フェースギアの外形(の一部)を作成†
yz面にスケッチを作成して、フェースギアの形を書きます。 ここでは歯数30としてモジュール4mmと合わせて直径120mmを基準円として、 その内外に7.5mmずつ肉を付け合わせて15mmの歯幅とします。
実際に歯を切るのは4ピッチ分程度にして、残りはこれを円周上に並べて全体の形状を作るので、 平歯車の下の 360 deg / 30 x 4 = 48 deg を切り出せるようにしておきます。
その部分を選んで押し出します。フェースギアの歯先は平歯車の基準円半径 4 mm x 12 / 2 = 24 mm から歯末の丈1モジュールを引いて20 mmの位置に来るので、オフセットをこの値にして、歯丈が 2.25 モジュールになるため厚さを 3 モジュール分にしておきました。
フェースギアの回転軸を作成し初期位置へ移動†
平歯車にはスクリプトが作成した回転軸が付いていますが、作りかけのフェースギアにはありませんので、構築メニューから「円柱、円弧、トーラスを通過する線」を選び、フェースギアの円柱状の側面を選んで生成します。
フェースギア断片が平歯車の真下にあると切削時に送りにくいので回転軸を中心にして1ピッチ分 = 12deg だけ回しました。
切削を行う†
そうしたらいよいよ切削を行います。
細かい操作方法は上記参照。
小歯車を生成†
次に、このフェースギアと組み合わせて使う標準の歯車を作成します。
上で使った切削工具と比べるとバックラッシュ分だけ小さくなるほか、歯先が短くなるためフェースギアの歯底との間に頂隙が生まれます。
完全な形のフェースギア断片を生成†
切削されたフェースギア断片を円周方向に4ピッチ(画面では5ピッチ複製したけど多すぎた)複製し、すべての共通部分を取り出します。これで中途半端に切られた部分同士をまとめて完全な歯形が得られます。(一度にやろうとしたら計算結果がおかしくなったため、実際には2つずつ順次結合していった)
得られたのはこの形。
断片を繋ぎ合わせてフェースギア全体を作る†
円周方向に30個複製して結合すればフェースギアの出来上がりです。
フェースギアと小歯車を連動させてみる†
ジョイントを作成して平歯車と合わせて回転させてみます:
LANG: p5js_live // =============== ここが設定 const gif_url = 'https://dora.bk.tsukuba.ac.jp/~takeuchi/?plugin=attach&refer=%E5%B7%A5%E4%BD%9C%2FFusion360%E6%AD%AF%E8%BB%8A%E5%88%87%E5%89%8A%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88&openfile=face_gear21.gif'; const multi = 10; // スライダーは multi 回ループで最大値になる const fps = 10; // 描画頻度 (frame per second) const maxWidth = 600; // 横幅最大値 // ================ ここから下は汎用コード let gif = null; let frameSlider = null; let w, h; p.preload = () => gif = p.loadImage(gif_url); const draw = () => { let index = frameSlider.value(); gif.setFrame(index % gif.numFrames()); // フレームを選択して p.image(gif, 0, 0, w, h); // 描画 } p.setup = () => { p.frameRate(fps); w = Math.min(maxWidth, gif.width); h = gif.height * w / gif.width; p.createCanvas(w, h + 20); frameSlider = p.createSlider(0, gif.numFrames() * multi - 1); frameSlider.value(0); frameSlider.position(0, h); frameSlider.size(w); frameSlider.input(draw); draw(); } p.draw = () => { if(p.mouseIsPressed) return; frameSlider.value((frameSlider.value() + 1) % (gif.numFrames() * multi)); draw(); }
問題なく回りそうです。
フェースギアの歯形†
フェースギアの歯形はかなり複雑になっています。
ん~、内側のえぐれているところは小径歯車に見られる「切り下げ」に相当する部分で、まともな歯当たりが得られない部分なので、基準円より内側に入る部分の厚さをもっと少なくするべきでしたね。
このような方法で切り出された歯車の切削面は切削ステップを反映したとても細い平面&曲面が連なってできていて、切削もですがその後の扱いも Fusion 360 にとってはなかなか重たい処理になるようです。
バックラッシュを大きめに設定して干渉を防ぎつつ、あまりステップ数を大きくせずに使うのが実用的かもしれません。
小歯車の歯元と干渉する?!†
上記の方法で作ったフェースギアと普通のパラメータで作成した歯車との組み合わせではフェースギアの歯先が小歯車の歯元のフィレット部分と干渉する場合があるようです???
どうやら歯末の丈を 1.25 にした切削具の歯元のフィレット部分が本来の歯車形状のフィレットよりも薄くついているのが原因のようです。
上でホブとして使った歯車の形状を円柱から切り出すときに使うラック状のホブの形(←ややこしい)を求める際、ホブの歯末の長さは作ろうとする歯車の歯元の長さに等しくなるのですが、そこに頂隙を最大値とする半径のフィレットを付けることで歯車の歯元に滑らかなフィレットの形状を作り出します。
で、こちらの歯車の歯底にできる「頂隙」はこちらの歯車の歯元の丈から相手歯車の歯末の丈を引いた値で決まるのですが、ここでやったように歯車形状ではなくホブ形状を求めたいときはこちら(ホブ側)の歯末の丈(相手の歯元の丈)とあちら(歯車側)の歯末の丈とが異なることになります。上で試した際にはスクリプト側でこれら2つの歯末の丈を区別できるようになっていなかったため「歯末の丈を変えたらフィレット半径が変わる」という結果を生んでいました。
その後、歯末の丈、歯元の丈、頂隙を別々に入力できるようスクリプトを変更しました。
滑らかな曲面を貼りたい†
https://forums.autodesk.com/t5/fusion-ri-ben-yu/kuraungiano-zuori-fanggawakaranaidesu/td-p/12965447
こちらでは切削面に滑らかな曲面を貼っている人がいるみたい。
どうやっているのだろう???
ふむ、こういうほぼ直線状の曲線を繋ぐ滑らかな曲面を生成してソリッドにするのはそれほど難しくないのかも、と思えてきた。
→ 工作/Fusion360曲面生成スクリプト に記載の手順で何とかならないこともないような感じです
これを見ていると†
フェースギアは対応する歯数と転位を持った歯形を直線状に伸ばして、さらに円柱に張り付けると作れるような気がしてくる?
→ 大体の形はそれでいいとしても、歯が入ったり抜けたりする時点ではクラウンギアの円周と小歯車の軸とが直交しないことになるからそれほど単純には求められないのか・・・
チュートリアル2†
普通の平歯車をディスクをラックで切削することにより作ってみます。