\r\n\r\n

openscadビギナーズガイド: 3Dプリントモデルのプログラミング

3Dモデリングソフトは、アートの知識がないと使いこなすのが難しいもの。

3Dモデルを自分でデザインしてみたいと思ったことはありませんか?自分がデザインしたパーツを3Dプリントしてみるのはどうでしょう?OpenSCADは、3Dプリントに特化したモデルをコードだけで設計する方法を提供します。もし、あなたもコードを書く方法がわからないなら、心配しないでください。今日は、基本的なことを案内します。

株式会社オープンスキャッド(openscad)は何ですか?

OpenSCADは、フリーのソリッドコンピュータ支援設計モデリングツールです。Windows、Mac、Linuxで利用でき、他の多くのプログラムと異なり、マウスではなくコードを使ってパーツをデザインします。これにより、数学的計算の実行、寸法を変数に保存、部品のサイズ変更など、さまざまなことが簡単にできるようになりました。

モデルを3Dプリントする際に考慮すべき要素はいくつかありますが、これらの要素の多くは通常、OpenSCADの設計に限らず、3DプリントされたCADモデルにも当てはまります。3Dプリントについてもっと知りたい方は、究極のビギナーズガイドをご覧ください。よりインタラクティブなモデリングツールをお探しの場合は、「Sketchupでオブジェクトを作成するためのガイド」をお読みください。

設定

まず、ダウンロードページで、お使いのOSに合ったバージョンのOpenSCADを探します。私はMacOSを使っていますが、このOpenSCADの原則はどのシステムにも当てはまります。

インストールが完了したら、開いてみてください。以下のような起動メニューが表示されます。

最後に開いたファイルが表示され、いくつかのサンプルを読み込むオプションが表示されます。例題は自由に見ていただいて構いませんが、最初はこれらの方が分かりやすいと思います。このチュートリアルでは、「新規作成」ボタンをクリックして、新しいファイルを作成します。

開くと、このような外観**のインターフェイスが表示されます。

これは大きく3つの分野に分かれます。左側がエディターとメニューです。ここには、記事のコードを書きます。こちらは、新規作成時のコードがまだ入っていません。上部には、ロード、セーブ、アンドゥなどの基本的なタスクを実行するためのメニューボタンがいくつかあります。

右下にはコンソールがあり、モデルを構築する際にエラーが発生した場合に表示されます。

最後は、右上にあるメイン画面です。ここでは、モデルと対話することができますが、編集することはできません(編集するためのコードを書くことになります)。

このメイン画面の下にはいくつかのボタンがあり、これらは主にデザインを様々な方法で表示するためのものです。

エディタメニューの「保存」ボタンを押すか、「ファイル」> 「保存」で、新規ファイルの保存を継続します。

基礎知識

OpenSCADのほとんどの動作は、単純な形状の足し算と引き算で行われます。この方法で非常に複雑なモデルを作ることができますので、さっそく始めてみましょう。

これは最初のシェイプで、シンプルなボックスです。

以下はそのコードです。

cube(); // create a cube

コードを実行させ、モデルを構築するには、プレビューが必要です。デフォルトでは、OpenSCADは保存するたびにこの操作を行いますが、F5キーを押して強制的に更新することも可能です。マウスの左ボタンまたは右ボタンを押しながら、3D空間を移動することができます。

openSCADは特定の計測システムで動作するわけではなく、単位は相対的なものです。20 x 10 の直方体を作成し、これを他のプログラム(3D 印刷用スライサーなど)で、メートル法でもインペリアル法でも解釈できるようにすることができます。実は、自由度が高いんです。

キューブに次元を追加してみましょう。これは、多次元データセット・メソッドにパラメータを渡すことで可能です。

cube(size = [10, 20, 30]); // rectangle

10、20、30は、X、Y、Z軸の立方体の大きさを示しています。このように、より大きな矩形が生成されることに注意してください。

デフォルトでは、OpenSCADはコンポーネントを左下から描画します。この設定は、"center "パラメータをtrueに設定することで調整することができます。以下は、これを矩形に対して行うためのコードです。

cube(size = [10, 20, 30], center = true); // rectangle centered

こんな感じです。

単純な形状の場合、中心を持ったオブジェクトはうまく機能しますが、非対称のオブジェクトの場合、中心を持ったオブジェクトは物事を複雑にしてしまいます。どの方法が一番効果的かを判断する必要があります。

より複雑な形状に移り、ここでは円柱を紹介します。

以下は、それを作成するためのコードです。

cylinder(d = 10, h = 10, center = true); // cylinder

立方体と異なり,円柱は自動的にX軸とY軸の中心に描かれる.dパラメータは直径(好みにより半径).しかし、ここで問題が発生します。シリンダーがとても "ブロッキー "に見えますね。円周上に描かれる面の数を増やす必要があります。これは簡単で、シリンダーコードに以下のパラメータを追加します。

$fn = 100

したがって、シリンダーは次のように定義されます。

cylinder(d = 10, h = 10, center = true, $fn = 100);

こんな感じです。

これにより、円を作るのに必要な面の数が増え、100個を目安にするとよいでしょう。特に複雑なモデルの場合、レンダリング時間が大幅に増加するため、設計が完了するまでは無視するのが一般的であることを覚えておいてください。

形状に変形を加えるのは簡単です。形状を作成する前に、特別なメソッドを呼び出す必要があります。ここでは、rotationメソッドを使用して円柱を回転させる方法を説明します。

rotate(a = [0, 90, 0]) cylinder(d = 10, h = 10, center = true); // rotated cylinder

aパラメータに渡された値は、X軸、Y軸、Z軸の回転角度を表します。結果は次のようになります。

もうひとつ、非常に便利な機能が「トランスレート」です。この機能を使うと、物体を3次元的に移動させることができます。もう一度、各軸の移動量を渡す必要があります。結果は次のようになります。

コードは以下の通りです。

translate(v = [0, 25, 0]) cylinder(d = 10, h = 10, center = true); // translated cylinder

翻訳方法を理解することは、最も複雑な設計をする上で欠かせない重要なことの一つです。

最後に、もう一つの便利な形が球体です。

コードは以下の通りです。

sphere(d = 100);

円柱と同じように、上の$fnのコードで滑らかにすることができます。

アドバンスト・コーデイング

基本的なことがわかったところで、より高度な技術を見ていきましょう。部品を設計する際には、より小さな形状や物体がどのように部品を構成していくかを考えることが有効です。しかし、大まかな計画を立てておくことは、たとえそれが頭の中だけのことであっても役に立ちます。

立方体で内部が空洞の球体という、高度な形状を作成してみましょう。中心をtrueに設定した立方体と球体を作成します。差分法で一方を他方から引きます。

difference() { // subtraction cube(size = [50, 50, 50], center = true); // outer cube sphere(d = 65, center = true); // inner sphere}

その結果は以下の通りです。

ボールの直径(dパラメータ)を変えて、どうなるか実験してみてください。

OpenSCADでは、通常、同じタスクを達成するために多くの方法があります。切り欠きのある立方体が欲しければ、そこからもう1つ立方体を引くか、上に2つ足せばいいのです。通常はどちらでも構わないのですが、部品の複雑さによっては、ある操作を先に行った方が楽な場合があります。

多次元データセットにチャンネルを作成する方法を説明します。円柱を使用すると、別の立方体を使用するよりも円形のチャネルが作成されます。差分法が再び使われ、並進法と回転法で形状を操作できることに注目してください。通常、rotateメソッドを使用すると、変形がトリッキーになるので、これらのパラメータを使用してから目的の結果を得るようにしてください。コードは以下の通りです。

difference() { // subtraction cube(size = [50, 150, 50]); // outer cube translate(v = [25, 150, 50]) rotate(a = [90, 0, 0]) cylinder(d = 40, h = 150); // cylinder channel}

こんな感じです。

緑色のものは何だろうと思われるかもしれません。なぜなら、3Dモデルはもはやプレビューに過ぎないからです。これを解決するには、F6キーを押してモデルを完全にレンダリングします。複雑さによっては、時間がかかる場合もあります。プレビュー(F5)が機能すれば大抵は十分なのですが。最終的なレンダリングは以下のようになります($fnを100に設定した場合)。

ここにも高度な例があります。例えば、ボルトで何かをはめ込むとします。シリンダーで穴を開けるのはとても簡単ですが、皿ボルトのボルト頭を平らに取り付けたい場合はどうすればよいでしょうか。ボルトの頭が収まるように大きな円筒を作ればいいのですが、これではあまり見栄えがよくありません。その解決策として、円柱法で面取りをすることができます。ここでは、d1とd2という2つの直径を指定するのがコツです。

私はイギリス人なので、M5皿頭ボルトの寸法はメートル法で計算することにします。使用する固定具に合わせて簡単に調整することができます。コードは以下の通りです。

$fn = 100;// bolt settingsm5_clearance_diameter = 5.5;m5_head_clearance_diameter = 11;m5_head_depth = 5;difference() { // subtract cube(20, 20, 20); bolt_hole(10, 10, 20); bolt_bevel(10, 10, 15);}module bolt_hole(x, y, height) { /* M5 hole at 90 deg. */ translate(v = [x, y, 0]) cylinder(d = m5_clearance_diameter, h = height);}module bolt_bevel(x, y, z) { // M5 bevel translate(v = [x, y, z]) cylinder(d2 = m5_head_clearance_diameter, d1 = m5_clearance_diameter, h = m5_head_depth);}

ボルトの大きさが変数に格納されていることに注目してください。これにより、コーディングやメンテナンスが非常に容易になります。まだ出会っていないアプローチとして、モジュールがあります。これにより、いつでも実行可能なコードのブロックを定義することができます。事実上、これは機能である。複雑な形状の場合は、モジュールと変数を使用すると、コンテンツが読みやすくなり、変更も素早く行えます。面取りは以下の通りです。

最後の例を見てみましょう。例えば、円の周りに一連の穴を作りたいとします。これらをすべて手動で計測、平行移動、回転させることもできますが、モジュールを使ってもこれは面倒です。最終的には、円の周りに10個の円筒が均等に配置された円筒:

コードは以下の通りです。

$fn = 100;number_of_holes = 10;for(i = [1 : 360 / number_of_holes : 360]) { // number_of_holes defines number of times this code runs make_cylinder(i);}module make_cylinder(i) { // make cylinder and even distribute rotate([0, 0, i]) translate([10, 0, 0]) cylinder(h = 2, r = 2);}

このコードは思ったより単純で、forループを使ってmake_uシリンダーモジュールを10回呼び出しています。円は360度あるので、360/10=36、各円柱は36度単位で回転させる必要がある。このループは make_u cylinder モジュールを呼び出し、単純に円柱を描き、ループで渡された度数に従って位置決めする。間隔を調整する必要がある場合もありますが、 \u hole variable の number_ を変更することで、複数または少ない数の円筒を描画することができます。100本の円柱がわずかに重なり合う形状は次のとおりです。

輸出

OpenScadでコーディングする方法がわかったので、モデルを3Dプリントする前に最後のステップを行います。OpenSCADから、ほとんどの3Dプリンターで使用される標準的なSTL形式にデザインをエクスポートする必要があります。幸いなことに、右上の「Editor」メニュー> に「Export to STL」ボタンがあります。

今日はこれでおしまい。これでOpenSCADをよく理解できたはずです。複雑なものはすべてこの基礎の上に成り立っており、多くの複雑な形状は実は多くの単純な形状の組み合わせなのです。

3Dプリントのプロジェクトを見て、OpenSCADで再現してみるのはいかがでしょうか。

  • デスクトップファンタジーRPG 3Dプリントパーツ
  • ショートカットのカスタマイズ
  • 電子D20
  • 3Dプリントできるゲーム

今日は何か新しい技を覚えましたか?OpenSCADのお気に入りの機能は何ですか?近々、他のCADツールから乗り換えられるのでしょうか?下のコメント欄で教えてください

  • 2021-03-15 10:55 に公開
  • 閲覧 ( 27 )
  • 分類:IT

あなたが興味を持っているかもしれない記事

匿名者
匿名者

0 件の投稿

作家リスト

  1. admin 0 投稿
  2. 匿名者 0 投稿

おすすめ