Fusion360歯車切削スクリプト の履歴(No.11)

更新


工作/歯車について勉強する

歯車について勉強するシリーズ

2つのボディーを回したり押したりしながら切削を行うスクリプト

歯車の切削工程を Fusion 360 の中でシミュレーションして、 通常の計算では難しい歯形の歯車を生成するのに使えるかも?

face_gear1.gif rack12.gif

目次

2つともに回しながら切っていく例:

face_gear1.gif

face_gear2.jpg face_gear3.jpg

1つを回してもう1つを直動しながら切っていく例:

rack12.gif rack13.png

いろいろできます。

免責

主に自分の勉強のために作っているものですのでいろいろおかしなところがあると思います。

これで作図したものを実際に作って組み合わせてみたことも実のところありません。

そのあたり加味してご使用ください。

ライセンス

MIT とします。

利用者の責任の下、ご自由にお使いください。

ダウンロード&更新履歴

20250313カットではなくツールを複製するオプションを追加した
途中でアボートできるようにした
フォルダー構造を改善した
20250219初出

不具合&改善点覚書

インストール

Windows の場合、上記 .zip ファイルを解凍して出てくる move_and_cut という名前のフォルダーを

C:\Users\(ユーザー名)\AppData\Roaming\Autodesk\Autodesk Fusion 360\API\Scripts

にコピーします。

使用方法

  1. Fusion360 のデザイン画面で Shift+S を押すと「スクリプトとアドイン」のダイアログが出ます
  2. move_and_cut を選んで「実行」あるいはそのまま「ダブルクリック」
  3. Target = 切削対象の Body を選択
  4. Target = 切削対象の移動軸 Axis を選択
  5. Target = 切削対象の移動軸 Axis に沿った回転総量を Rotation へ入力(360 deg/n の形で入れると間違いない)
  6. Target = 切削対象の移動軸 Axis に沿った移動総量を Translation へ入力
  7. Tool = 切削ツールの Body を選択
  8. Tool = 切削ツールの Body の移動軸 Axis を選択
  9. Tool = 切削ツールの Body の移動軸 Axis に沿った回転総量を Rotation へ入力(360 deg/n の形で入れると間違いない)
  10. Tool = 切削ツールの Body の移動軸 Axis に沿った移動総量を Translation へ入力
  11. 画面上の Axis に沿った矢印を確認して必要に応じて Reverse をクリック
    • 回転は矢印の方向に対して右回りが正になる
  12. 切削終了後に元の位置に戻す必要がなければ Return to original の選択を解除
  13. step に切削工程を何ステップに分けて行うかを入力
  14. 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();
}

チュートリアル:フェースギアを切り出す

フェースギアはクラウンギアとも呼ばれる王冠の形をした歯車です。

face_gear20.gif  

歯切り用の小歯車工具を作成

歯切り用の小歯車工具は、歯末の丈を標準の 1.00 から 1.25 に変更し、バックラッシュに負の値 -0.05 mm を持たせた平歯車として作成しました。

歯末の丈を長くしているのは、その部分がフェースギアの歯底を削ることで、通常のギアと組み合わせた際に十分な頂隙が生じるようにする為です。また、切削具側に負のバックラッシュを持たせることで、切られた歯車に正のバックラッシュが付くことを期待しています。

face_gear4.png   face_gear5.jpg

フェースギアの外形(の一部)を作成

yz面にスケッチを作成して、フェースギアの形を書きます。 ここでは歯数30としてモジュール4mmと合わせて直径120mmを基準円として、 その内外に7.5mmずつ肉を付け合わせて15mmの歯幅とします。

実際に歯を切るのは4ピッチ分程度にして、残りはこれを円周上に並べて全体の形状を作るので、 平歯車の下の 360 deg / 30 x 4 = 48 deg を切り出せるようにしておきます。

face_gear6.png face_gear7.jpg

その部分を選んで押し出します。フェースギアの歯先は平歯車の基準円半径 4 mm x 12 / 2 = 24 mm から歯末の丈1モジュールを引いて20 mmの位置に来るので、オフセットをこの値にして、歯丈が 2.25 モジュールになるため厚さを 3 モジュール分にしておきました。

フェースギアの回転軸を作成し初期位置へ移動

平歯車にはスクリプトが作成した回転軸が付いていますが、作りかけのフェースギアにはありませんので、構築メニューから「円柱、円弧、トーラスを通過する線」を選び、フェースギアの円柱状の側面を選んで生成します。

face_gear8.jpg face_gear9.jpg

フェースギア断片が平歯車の真下にあると切削時に送りにくいので回転軸を中心にして1ピッチ分 = 12deg だけ回しました。

切削を行う

そうしたらいよいよ切削を行います。
細かい操作方法は上記参照。

face_gear10.jpg face_gear11.gif

face_gear12.gif

face_gear13.jpg

小歯車を生成

次に、このフェースギアと組み合わせて使う標準の歯車を作成します。

上で使った切削工具と比べるとバックラッシュ分だけ小さくなるほか、歯先が短くなるためフェースギアの歯底との間に頂隙が生まれます。

face_gear14.jpg

完全な形のフェースギア断片を生成

切削されたフェースギア断片を円周方向に4ピッチ(画面では5ピッチ複製したけど多すぎた)複製し、すべての共通部分を取り出します。これで中途半端に切られた部分同士をまとめて完全な歯形が得られます。(一度にやろうとしたら計算結果がおかしくなったため、実際には2つずつ順次結合していった)

face_gear15.jpg face_gear16.jpg

得られたのはこの形。

face_gear17.jpg

断片を繋ぎ合わせてフェースギア全体を作る

円周方向に30個複製して結合すればフェースギアの出来上がりです。

face_gear18.jpg face_gear19.jpg

フェースギアと小歯車を連動させてみる

ジョイントを作成して平歯車と合わせて回転させてみます:

face_gear20.gif

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();
}

問題なく回りそうです。

フェースギアの歯形

フェースギアの歯形はかなり複雑になっています。

face_gear22.jpg

ん~、内側のえぐれているところは小径歯車に見られる「切り下げ」に相当する部分で、まともな歯当たりが得られない部分なので、基準円より内側に入る部分の厚さをもっと少なくするべきでしたね。

このような方法で切り出された歯車の切削面は切削ステップを反映したとても細い平面&曲面が連なってできていて、切削もですがその後の扱いも Fusion 360 にとってはなかなか重たい処理になるようです。

face_gear23.gif

バックラッシュを大きめに設定して干渉を防ぎつつ、あまりステップ数を大きくせずに使うのが実用的かもしれません。

小歯車の歯元と干渉する?!

上記の方法で作ったフェースギアと普通のパラメータで作成した歯車との組み合わせではフェースギアの歯先が小歯車の歯元のフィレット部分と干渉する場合があるようです???

どうやら歯末の丈を 1.25 にした切削具の歯元のフィレット部分が本来の歯車形状のフィレットよりも薄くついているのが原因のようです。

face_gear23.jpg face_gear24.jpg

上でホブとして使った歯車の形状を円柱から切り出すときに使うラック状のホブの形(←ややこしい)を求める際、ホブの歯末の長さは作ろうとする歯車の歯元の長さに等しくなるのですが、そこに頂隙を最大値とする半径のフィレットを付けることで歯車の歯元に滑らかなフィレットの形状を作り出します。

で、こちらの歯車の歯底にできる「頂隙」はこちらの歯車の歯元の丈から相手歯車の歯末の丈を引いた値で決まるのですが、ここでやったように歯車形状ではなくホブ形状を求めたいときはこちら(ホブ側)の歯末の丈(相手の歯元の丈)とあちら(歯車側)の歯末の丈とが異なることになります。上で試した際にはスクリプト側でこれら2つの歯末の丈を区別できるようになっていなかったため「歯末の丈を変えたらフィレット半径が変わる」という結果を生んでいました。

その後、歯末の丈、歯元の丈、頂隙を別々に入力できるようスクリプトを変更しました。

滑らかな曲面を貼りたい

https://forums.autodesk.com/t5/fusion-ri-ben-yu/kuraungiano-zuori-fanggawakaranaidesu/td-p/12965447

こちらでは切削面に滑らかな曲面を貼っている人がいるみたい。

どうやっているのだろう???

face_gear25.jpg

ふむ、こういうほぼ直線状の曲線を繋ぐ滑らかな曲面を生成してソリッドにするのはそれほど難しくないのかも、と思えてきた。

工作/Fusion360曲面生成スクリプト に記載の手順で何とかならないこともないような感じです

これを見ていると

フェースギアは対応する歯数と転位を持った歯形を直線状に伸ばして、さらに円柱に張り付けると作れるような気がしてくる?

→ 大体の形はそれでいいとしても、歯が入ったり抜けたりする時点ではクラウンギアの円周と小歯車の軸とが直交しないことになるからそれほど単純には求められないのか・・・

チュートリアル

普通の平歯車をディスクをラックで切削することにより作ってみます。

hobbing-a7.gif hobbing-a17.jpg

チュートリアル2

ディスクをウォームで切削することによりウォームホイールを作ってみます。

コメント・質問





Counter: 150 (from 2010/06/03), today: 1, yesterday: 3