CD、または3D印刷用のOpenSCADに基づいたモデリングの実用例を一時停止します



この記事では、無料のプログラムOpenSCADを使用して、写真に示されている図を3Dモデリングした経験を共有したいと思います。

モデリングパス全体と最後に印刷された3Dパーツが段階的に表示されます。

この部分では、CDディスクをスレッドに掛けることができます。 地球上の人類にはそれほど多くの利点はありませんが、この趣味の問題の解決策のおかげで、私は(初めて)OpenSCADを試し、30分で「ゼロから」3Dモデルを描きました。

OpenSCADは3Dモデリング用の無料のオープンソースプログラムですが、他の3Dプログラムとは異なり、マウスは完成したパーツを表示するためにのみ使用され、図面自体はOpenSCAD言語でコンパイルされたプログラムに基づいています。

OpenSCAD言語のプログラムの本質は非常に単純です-幾何学的プリミティブを描画するためのコマンドを提供し、その上で回転、移動、スケーリング操作を実行できます。 これに加えて、加算、減算など、数字に対して「算術」コマンドを実行できます。

アイデアの簡単な説明:
    10     10      


そして、次の結果が得られます。




OpenSCADをインストールする



インストールするには、公式Webサイト(http://www.openscad.org/)からOSのバージョンをダウンロードします 。 現時点では、 バージョンは03.2014からです

プログラムを開始すると、2つの領域が表示されます。



左-OpenSCAD言語でプログラムを入力するには、
右側はレンダリングの結果です。

プログラムを描画するには、 F5を押して、完全なレンダリング-F6を押します。

ファイルを開くとき-OpenSCAD環境で編集する必要はありませんが、外部エディターで編集するときに開いているパス描画するために、お気に入りのテキストエディターで編集できます-F4を押す必要があります。

ハローワールド



立方体描いてみましょう: cube();

左のテキスト領域に書き込みます(10は立方体の側面です):

 cube(10); 


プログラムの各行はセミコロンで終わることに注意してください。

F5を押すと、右側にあるキューブが表示されます。マウスでつかむことで回転させ、ローラーで増減し、右ボタンで視点を移動できます。



そして、球描画してみてください、コマンド: sphere(10)

 cube(10); sphere(10); 


F5の結果を確認します。



次に、減算コマンドを追加します

difference() { OBJ1; OBJ2;} difference() { OBJ1; OBJ2;}

コマンドは関数呼び出しとして記述されます。パラメーターが存在しない場合、空の括弧があり、次にこの関数が適用されるオブジェクトまたはオブジェクトがあります。

減算は次のようになります

 difference(){ cube(10); sphere(10); } 


結果は次のとおりです。



基本は明確だと思います。

さて、メインタスクに戻ります。

サスペンションモデリング



CDをスレッドに掛けたまま、水平位置にするには:

  1. スレッドを修正できる場所が必要です
  2. ディスクは何かに依存する必要があります
  3. ネジ山の取り付け点は、上から見たときにディスクの中心にあり、横から見たときに平面の上にある必要があります


スレッドの接続点から始めましょう。むしろ、スレッドとディスクのベースの間にあるものから始めましょう。

クロスモデリング



私は、この断片を十字の形で作ることにしました。それは、切頭ピラミッドのように上がります。

わかりました、始めに私達は十字を作ります。

これを行うには、互いに垂直な2つの直方体を描画します。

:テキストを簡単にするために-「長方形の箱」-「立方体」と呼びます。つまり、立方体のバリエーションです。

形状を描画するとき、デフォルトでは、形状は中心からX、Y、Z軸の正の側に移動します。これは最初の例で見ることができます-そして、立方体は正のゾーンに描画されました

ただし、描画された図形の中心が座標の中心にある場合、オプションがあります。 これを行うには、属性を使用します
center = true

サイズについて考える時が来ました。 CDの内側の穴の直径は15 mmです。 したがって、クロスの底は15 mmを超えてはなりません。ストックの場合、14 mmを使用します。

十字架の最初の部分:
 cube([14,1,15], center=true); 


それは判明した:


「キューブ」の各壁を示す場合、 [x, y, z]立方体[x, y, z]が座標の中心に描画されるように指定した2番目のパラメーター(center = true)表記[x, y, z]使用する必要があります。

次のことを示しました。
14-これは「直方体」の幅です-15mm以下でなければなりません-CD-ROMディスクの内側の穴。
1-壁の厚さ
15は「立方体」の高さです。 これはZの中心にあり、上部では15/2 = 7.5 mmになります-これは接続点までの高さです。

次に、クロスの2番目の部分が必要です。このため、Z軸に対して同じ「立方体」を90度回転させる必要があります。

回転関数は次のようになりますrotate(a = deg, v = [x, y, z]) { ... }

関数のパラメーターで、回転角度(a)が示されている場所、および回転が行われるときの相対ベクトル(v)。

これはプログラムがどのように見えるかです:
 cube([14,1,15], center=true); rotate(a=90, v=[0,0,1]){ cube([14,1,15], center=true); } 


そして結果


ここで、ゼロプレーン(下)の下にある余分な部分を削除する必要があります。

これを行うには、下に立方体を描き、図からそれを引きます。 ただし、立方体は中央に描画されるため、下に移動する必要があります。

moveコマンドは次のようになりますtranslate(v = [x, y, z]) { ... }

パラメータの中で、オブジェクトをシフトする必要があるベクトル(v)が示されています(関数の本体で示されています)。

辺が15 mmの立方体を描画し、15/2 mmだけ下に移動します(はい、数学演算を指定できます)-完全に平面の下にあることがわかります。

更新されたコードは次のとおりです。
 cube([14,1,15], center=true); rotate(a=90, v=[0,0,1]){ cube([14,1,15], center=true); } translate(v=[0,0,-15/2]){ cube(15, center=true); } 


結果は次のとおりです。


ここで、既知の減算コマンドを適用します-クロスからキューブを減算する必要があります。 しかし、問題は、減算のために2つのオブジェクトが必要であるということです-3つ-2つの「直方体」(十字)と1つの立方体があります。

これを行うには、unionコマンドを使用しますunion(){ OBJ1; OBJ2; ... } union(){ OBJ1; OBJ2; ... } union(){ OBJ1; OBJ2; ... }

次のコードが得られます(結合と減算を使用):
 difference(){ union(){ cube([14,1,15], center=true); rotate(a=90, v=[0,0,1]){ cube([14,1,15], center=true); } } translate(v=[0,0,-15/2]){ cube(15, center=true); } } 


結果


十字架が判明したので、今ではピラミッド型にする必要があります。

この目的のために、円錐が私たちに合っていて、両方の図と一致する図のその部分だけが残っている場合の「交差」の操作が残ります。

ただし、OpenSCADにコーンを描画するコマンドはありません。

しかし、 シリンダー描画コマンドがあります: cylinder(h = 10, r = 10, [r2 = 20,]);

ここで、基本的な2つのパラメーター(シリンダーを取得するため)に加えて-ベースの半径[r]および高さ[f] 3番目の[r2]-頂点の半径。0に設定すると円錐を描画できます。ベースの半径に等しい。

これが必要なものです。

サイズを決定します。直径の円錐の底は14、つまり半径7でなければなりません。高さ15/2 mm。 上部ベースの半径を1mmにし、サイズ自体を2mmにし、その上にスレッドの目を配置します。

座標の中心に円錐を描画するため、高さの半分(15/4)を上げる必要があります。

フラグメント:
 translate(v=[0,0,7/2]){ cylinder(h=7, r=7, r2=2, center=true); } 


これは次のようなものです。



結果のコード:
 difference(){ union(){ cube([14,1,15], center=true); rotate(a=90, v=[0,0,1]){ cube([14,1,15], center=true); } } translate(v=[0,0,-15/2]){ cube(15, center=true); } } translate(v=[0,0,15/4]){ cylinder(h=15/2, r=7, r2=2, center=true); } 


そして結果:


円錐が描かれているため、中身が見えないことに注意してください。 OpenSCADでは、表示モードで、選択した図形を半透明にすることができます。そのためには、コマンドの前の行の先頭に「%」を追加する必要があります。

コードは次のとおりです。
 difference(){ union(){ cube([14,1,15], center=true); rotate(a=90, v=[0,0,1]){ cube([14,1,15], center=true); } } translate(v=[0,0,-15/2]){ cube(15, center=true); } } %translate(v=[0,0,15/4]){ cylinder(h=15/2, r=7, r2=2, center=true); } 


そして何が起こるか:


さて、クロスとコーンの交差点を取得する必要があります。

intersection() { OBJ1; OBJ2; ...} 交差コマンドintersection() { OBJ1; OBJ2; ...} intersection() { OBJ1; OBJ2; ...}

コードに追加します。
 intersection(){ difference(){ union(){ cube([14,1,15], center=true); rotate(a=90, v=[0,0,1]){ cube([14,1,15], center=true); } } translate(v=[0,0,-15/2]){ cube(15, center=true); } } translate(v=[0,0,15/4]){ cylinder(h=15/2, r=7, r2=2, center=true); } } 


そして結果が得られます:


スレッドを取り付けるためのスタンドの準備ができました。

さらに簡単になり、スレッドに注目します。

糸のアイレットのシミュレーション



耳-これは小さなリングになります。 平らな円柱を差し引いて作成します。

これを行うには、目の高さに等しい円柱を描画し、その内部に小さな円柱を描画し、大きな円柱から減算します。 次に、何が起こったのか、y軸を中心に90度回転し、十字の上部まで上げます。

このコードは次のとおりです。
 translate(v=[0,0,15/2]){ rotate(a=90, v=[1,0,0]){ difference(){ cylinder(h=1, r=2, center=true); cylinder(h=1, r=1, center=true); } } } 


そして結果


これはプログラムのコードにあります:
 intersection(){ difference(){ union(){ cube([14,1,15], center=true); rotate(a=90, v=[0,0,1]){ cube([14,1,15], center=true); } } translate(v=[0,0,-15/2]){ cube(15, center=true); } } translate(v=[0,0,15/4]){ cylinder(h=15/2, r=7, r2=2, center=true); } } translate(v=[0,0,15/2]){ rotate(a=90, v=[1,0,0]){ difference(){ cylinder(h=1, r=2, center=true); cylinder(h=1, r=1, center=true); } } } 


結果は次のとおりです。


つまり、スレッド用のマウントがあり、CDドライブのベースを作成する必要があります。

ディスクのベース



私たちは巧妙に行動します-それを描画しません。 いかだを使用します。

いかだとは



いかだ(いかだ)は、3D印刷用のプログラムを生成する技術的な素材であり、印刷された3Dフィギュアの接着力を高める方法です。

これがRaftの外観です。実際、以下のネットです。


いかだは、フィギュアの底面の輪郭に従って自動的に計算され、インデントは通常5mm前後で行われます。

これがまさに私たちが必要とするものです-基板、図の下の層がCD-ROMをサポートします。

下部のリング



唯一の微妙-いかだは十字の形になりますが、これは簡単に修正できます-下部に薄いリングを描きます。

高さ0.5 mm、外径14 mm、つまり半径7 mm、内径6.5 mmの2つの円柱を描画し、それを減算します-リングを取得し、0.25を持ち上げます(座標の中心にペイントしたとおり)。

スニペットコードは次のとおりです。
 translate(v=[0,0,0.25]){ difference(){ cylinder(h=0.5, r=7, center=true); cylinder(h=0.5, r=6.5, center=true); } } 

結果:


描画の最終コードは次のとおりです。
 intersection(){ difference(){ union(){ cube([14,1,15], center=true); rotate(a=90, v=[0,0,1]){ cube([14,1,15], center=true); } } translate(v=[0,0,-15/2]){ cube(15, center=true); } } translate(v=[0,0,15/4]){ cylinder(h=15/2, r=7, r2=2, center=true); } } translate(v=[0,0,15/2]){ rotate(a=90, v=[1,0,0]){ difference(){ cylinder(h=1, r=2, center=true); cylinder(h=1, r=1, center=true); } } } translate(v=[0,0,0.25]){ difference(){ cylinder(h=0.5, r=7, center=true); cylinder(h=0.5, r=6.5, center=true); } } 


システム変数



おそらく、彼らは円が「角」であることに気付いたのです。円を描くためのセグメントの数を増やすために、パラメータを設定できます(コードの最初に):

 $fn=30; 


その後、より美しくなります:


STL生成



最後に!

さて、レンダリングのためにF6押すことを忘れないでください。 メニューの[ファイル ] -> [エクスポート ] -> [STLとしてエクスポート...]で、STLファイルが保存されます。

印刷する



ここで、受け取ったSTLを3D印刷プログラムに読み込みます。設定(5 mm)でRaftオプションを設定することを忘れないでください。

したがって、Curaプログラムを調べます。


そして、印刷を開始します。

結果



詳細は次のとおりです。



そして、これが私たちのいかだです:



結論として



もちろん、これらはOpenSCADの最も基本的な機能です(独自の関数を作成する可能性、変数の使用は考慮されていません)が、3Dモデルを比較的迅速に作成するには十分です。

街のどこで3Dプリントを実行するかわからない場合は、次のことができます。

  1. あなたの街でハックを検索します。原則としてそこに3Dプリンターがあり、少量の注文でも利用可能です。
  2. fablabを検索できます。3Dプリンターもあるはずです
  3. 3D印刷サービスを検索します(あなたの街で)


モデルをダウンロード



モデルとコードはThingiverseからダウンロードできます。

Source: https://habr.com/ru/post/J219601/


All Articles