3Dプリンター掲示板(仮) TOP › テーマ一覧 › 3Dプリンター日記 › 歯車のSTLファイルを作るぞ!
Fukuya Satou さんが 3 年 7 月前 に更新しました。
-
作成者投稿
-
2014年5月26日 at 12:36 PM #122
みなさんこんにちは 佐藤です。
3Dプリンター普及の活動としてフリーの歯車データを公開しようと企んでいます。【背景】
いままで、ミニ四駆のデファレンシャルギヤを作ろうとしたり、
機械式時計を作ろうとしたことがあるんですが、自分が欲しいサイズの歯車の3Dデータってなかなか
無いなと感じていました。
某歯車メーカーさんのサイトでは歯車のCADデータをダウンロードできるのですが、
登録が必要だし、ライセンスも厳しい?(あまりよく確認していませんが)なにより歯車のサイズは無限のバリエーションがあるので、たくさんの3Dデータを作って公開するというのは
割に合わないんです。だから便利でフリーな歯車データがネット上に転がってないんだと勝手に思っています。
わたくし、あまり調べないで突き進む人なので事実と異なるかもしれませんが。【具体的に何を作ろうとしているか】
歯車の3Dデータが欲しい人がやってきて、「歯数」と「直径」と「軸穴の径」と「厚さ」を
入力すると歯車の形状が自動的に計算されてSTLファイルがダウンロードできるという仕組みを作ります。
このSTLデータを直接3Dプリンタで出力するも良し、CADに取り込んで形をモディファイするも良し。
もちろん無料だし、登録とかも不要でライセンスもゆるーいヤツ。
まずはインボリュート歯形の平歯車をやります。モチベーション維持のため経過をこのスレッドに書き込んでいきます。
何かご意見・ご感想、間違いの指摘 あれば気軽に書き込んでくださいね。2014年5月29日 at 9:10 PM #132こんにちは。
歯車の自動生成ソフトが作れたら素敵ですね(^_^)
動くおもちゃとかを作る為には歯車は重要な部品ですが、作るのは難しいですよね。私も機械式時計が作りたくて歯車の作り方を調べた時、なかなか理解できなくて大変でした。その仕組みが完成すれば3Dプリンタでのおもちゃ作りなどが増えると思うので、是非頑張ってください!!
2014年5月30日 at 10:37 AM #135せんべいさん
応援ありがとうございます。俄然やる気がみなぎってまいりました。
まずはエクセルで歯車の形を描くプログラムを組んでいます。
だいたい出来上がったのですが、少歯数のときに歯先がずれたり、サイクロイド曲線と円弧の境界の点が重なっていたり、
基礎円よりも歯底円のほうが小さいときにどう繋ぐかというのがまだ課題です。調べると歯の根元はトロコイド曲線になるらしいですが。。。この部位の曲線はホブ切りで歯車を作るときに
結果的に創成される曲線ですから、3Dプリンターで歯車を作る場合トロコイド曲線の部分まで再現する必要ないんじゃないか?と思ってます。
相手の歯先がぶつからないように気を付けつつ単純にRでつなげば良い?と思ってます。この歯形描画が完成すれば次にSTLファイルを生成する機能にとりかかります。STLはモデルの表面を三角形で分割して、その頂点座標を羅列するだけなので
簡単だろうとたかをくくっています。STL生成機能まで完成すればあとはWebアプリとして再構成して公開です。
さあ がんばるぞ-
この返信は
Fukuya Satou によって 3 年 11 月前 に修正されました。
-
この返信は
Fukuya Satou によって 3 年 11 月前 に修正されました。
-
この返信は
3d-printer-studio によって 3 年 11 月前 に修正されました。
-
この返信は
3d-printer-studio によって 3 年 11 月前 に修正されました。
-
この返信は
3d-printer-studio によって 3 年 11 月前 に修正されました。
2014年5月30日 at 2:03 PM #164サイクロイド曲線とトコロイド曲線を使うのは、サイクロイド歯形ですよね?
インボリュート歯形では使用しないと思います。インボリュート曲線のWiki には
インボリュート方程式 x = a*(cos(θ)+θ*sin(θ))
インボリュート方程式 y = a*(sin(θ)-θ*cos(θ))
と、書いてあります。式を書き変えると、
x = モジュール * 歯数 * cos( 2 * pi / 360 / 圧力角 ) / 2 * (cos(t) + t * sin(t) )
y = モジュール * 歯数 * cos( 2 * pi / 360 / 圧力角 ) / 2 * (sin(t) – t * cos(t) )基礎円直径 db=d*cos(a)
式を書き変えると、
= モジュール * 歯数 * cos( 2 * pi / 360 / 圧力角 )参考になる動画がYoutubeにあります。
インボリュートギア、作ってみた : https://www.youtube.com/watch?v=C7Vbgi6aNqISTL生成について、Googleで検索してみたら、
「OpenJsCad – STLファイルを出力する3D描画JavaScriptライブラリ」を見つけました。
OpenJsCad : http://www.moongift.jp/2012/08/20120829-3/Webアプリなら、この JavaScript ライブラリを活用できるかもしれません。
よかったら詳しく調べてみて下さい。2014年5月30日 at 4:01 PM #165OpenJsCadを調べていたら、歯車のSTLファイルを作成するページを見つけました(^^;)
http://joostn.github.io/OpenJsCad/
これを改良して、平歯車以外の歯車を作るものや、2段歯車や連続した歯車を作るWebサイトを作ってみるものいいかもしれません。
2014年6月3日 at 10:34 AM #170せんべいさん
前の投稿で間違ってサイクロイドと書いていました。。インボリュートと書きたかったのです。
カタカナ語が続くと混乱いたします。
管理人さん画像へのリンクを貼ろうとして失敗し、そのまま編集できなくなった投稿を修正してくださりありがとうございます。少歯数で基礎円より歯底円が小さくなる場合があるのです、インボリュート曲線は基礎円より内側では定義でぎないし、
どうやって歯底円とつなぐのだろう?とネットを漁っていると歯元はトロコイドで描いていますという説明を見かけたので。。。まあ せんべいさん発見のリンク先に任意のパラメータの歯車データをSTLファイルでダウンロードできるので、
これにて終了。というのはもったいないですね。
マニアックに改良するのが日本人なので、はすば歯車とか傘歯車とかウォームギヤとかとか増やしていこうかしら。
そして、3Dプリンターで歯車を作るときの悩みの種である精度の悪さの対策として任意の寸法だけオフセットできるようにするとか。
精度の悪さというのは別スレでありましたが、3Dプリンターで作った時ノズル半径分?太っちゃうような気がするのです。改良する前にライセンスをよく読まないといけませんね。わたし英検3級ですが。
2014年6月3日 at 12:12 PM #172Fukuya Satouさん
◆基礎円の問題
基礎円が歯底円より小さくなる場合があるとのことですが、計算式が誤っていないでしょうか。計算式:
基礎円直径 = 基準円直径 × cos( 圧力角 ) (db = d cos(a) )
歯底円直径 = 基準円直径 – モジュール x 2.5 (df = d – 2.5m)参考:
基準円直径 = 歯数 x モジュール
cos( 圧力角(rad) ) = cos( 2 × 円周率 ÷ 360 ÷ 圧力角 (度表示) )計算例)
モジュール:2
圧力角:20度
歯数:3基礎円直径 = 基準円直径 × cos( 圧力角(rad) ) (db = d cos(a) )
基礎円直径:3 x 2 x cos(2 x 3.14 ÷ 360 ÷ 20)
= 6 x cos(6.14÷18)
= 6 x cos(0.34)
= 6 x 0.94 = 5.64歯底円直径 = 基準円直径 – モジュール x 2.5 (df = d – 2.5m)
歯底円直径:3 x 2 – 2 x 2.5
= 6 – 5 = 1◆ライセンス
http://joostn.github.io/OpenJsCad/ のLicenseの場所に
「All code released under MIT license」と書いてあります。MIT Licenseとは:http://ja.wikipedia.org/wiki/MIT_License
このソフトウェアを誰でも無償で無制限に扱って良い。ただし、著作権表示および本許諾表示をソフトウェアのすべての複製または重要な部分に記載しなければならない。マニアックに改良されたサイトの完成をお待ちしています♪
2014年6月3日 at 1:30 PM #173せんべいさん
そうです基礎円よりも歯底円の方が小さくなるのです。
(上の投稿では文章間違っていました。なぜ私はこのようなポカミスをするのでしょうか)基礎円より内側の歯形の描き方がわからないんです。画像添付します。
私一応工業系の学校出たのですが授業をちゃんと聞いてなかったのが悔やまれます。ライセンスは問題ないようですね。
http://joostn.github.io/OpenJsCad/
の中身を見てみようと思います。
添付画像:
添付された画像を見るにはログインが必要です2014年6月3日 at 2:44 PM #175Fukuya Satouさん
4つの円の関係は、添付の図で合ってます。
歯底円 < 基礎円 < 基準(ピッチ)円 < 歯先円基礎円より内側の歯形は、円の中心とインボリュート曲線の起点を結ぶ直線で描きます
添付ファイルを参考にして下さい。また、私のブログの昨日のエントリーが参考になるかもしれないので、URL貼ります。
http://auszubildender.blog.fc2.com/blog-entry-44.html
添付画像:
添付された画像を見るにはログインが必要です2014年6月4日 at 8:53 AM #177せんべいさん
直線でつなげばいんですね!
了解です!2014年6月9日 at 3:03 PM #180OpenJsCadをいろいろいじってみました。
3Dモデルの形状をJavascriptで記述できます。
デモページではそのコードが画面に表示されていて、
変更を加えることができるように作られていまして、これがちょっとつまづきポイントでした。OpenJsCadを使ってユーザーになんらかのサービスを提供する際、
ほとんどの人はJavascriptのコードを直打ちなんかしませんよね、
なのでDOMツリーのテキストエリアからコードを読み取るのではなくて、
関数をそのまま読み込ませてあげようとトライしたところ上手く動きませんでした。結論として、3D形状を記述するコードを”文字列”で渡してあげないと動かない仕様でした。
なんかややこしいですねぇ。ここらへんは関数を直接渡せるように改造しようかなと思います。ということで、まずは手持ちのサーバーに移植してみました。
まずは一番簡単なラックを作ってみようと思います。
そして、具体的な最終目標はお絵かきしました。画像のような感じです。
5つのモードがあり、「平歯車」「ラッピ」「遊星歯車」「傘歯車」「ウォームギヤ」です。
モジュール、歯数等を指定して画面でモデルをクルクルまわして確認し、
さらに転移させることができたり、ハスバにすることができたり。
出来上がったらSTLファイルをダウンロードできる。と こんな感じを目指します。添付画像:
添付された画像を見るにはログインが必要です2014年6月10日 at 9:16 AM #182昔はプログラムを書いて3Dモデリングをしていたんですね。
その流れを汲んでOpenSCADは文字列を読み込ませる仕様なのか。納得です。
学生時代からGUIのCADしか使ったことないのでこういう歴史的な背景があるとは知りませんでした。CUIが絶滅しない理由と同じでプログラムでCADを操作するメリットがあるんでしょうね。
http://makezine.jp/blog/2009/12/openscad_constructive_solid_geometr.html
2014年6月11日 at 1:07 PM #183ラックをつくろう1
まずはラックの歯を一つ作ります。
基準ラックの歯の形状は直線で構成されます。ラクチンです。つまづきポイントが二つありました。
1.サンプルを見るとmain関数はparamsという引数があり、
こいつにユーザーが入力したパラメータが入っています。
で、main関数だけでいきなりparamsを参照しようとしてもダメなんです。
getParameterDefinitionsっていう関数があり、
こいつがwebページ上のパラメータ入力フォームとparamsを関連付けているのです。
2.2Dスケッチのような機能でCAG.fromPointsが用意されています。
座標(x,y 2要素の配列)を配列にいれてこの関数に渡してあげます。
一筆書きで描いていくんですが、既に引いた線とぶつかるとOUTです。トロンのバイクゲームみたいな感じです。
セルフインターセクション!と怒られます。添付画像:
添付された画像を見るにはログインが必要です2014年6月11日 at 1:38 PM #185Fukuya Satouさん
開発に向けた研究が進んでいるみたいですね。
私はプログラミングは全くわからないので力になれませんが応援しています。頑張って下さい!!
2014年6月12日 at 2:19 PM #188ラックをつくろう2
せんべいさん 声援ありがとございます。がむばります!
今日は前回作ったラックの歯をずらっと並べてみることにしました。
translateというメソッドを使うと、平行移動したオブジェクトを取得できます。
こいつを歯数分繰り返すわけです。画面に表示するモデルはmain関数の戻り値です。
はて、複数のモデルはどうやって戻せばいいのか? と思い、OpenJsCadのチュートリアルを読んでみると、
Rendering multiple objectsというセクションがあります。これだこれだと思い熟読してみました。
name,caption,dataを持っているObjectをこしらえて配列に入れて渡せとかいてあるのですが、
やってみると違うのです。これではないのです。それぞれのモデルが別画面で描画されてしまいました。もう少し頑張って調べてみると、答えがわかりました。
unionで一つのCSGオブジェクトへまとめてしまえばいいのです。unionって重なってなくてもいいんだ。びっくり。
これでラックの歯がずらーっと並びました。ついでに土台部分もcubeでこしらえてこいつもunionしました。
ラックがほぼ完成しました。あとは歯元のR(0.38m)ができれば完成。それはまた次回。※WebGLに対応しているブラウザ(chrome,firefox)で見れます。
-
この返信は
-
作成者投稿
このトピックに返信するためにはログインしなければなりません。