はじめに
去年から、仕事がらみで3Dプリンターに食わせる3Dモデルの作り方を勉強する必要があって、やったことを忘れないようにここに残しておきます。これからたまに出てくると思いますが、備忘録みたいなものなので、系統だって書く、なんていうつもりはありません。悪しからず。
以前、必要に迫られてC#の勉強をしたときは、C#の事に限って1つのブログを作りましたが、3Dモデルに関しては、そこまではしないつもりです。ちなみに、C#は55歳の時だったらしいので、すでに8年経ってるんだなぁ。
OpenSCADでテキストを発生させる
OpenSCADで文字を扱う方法には、text文で文字を作って、それだけだと厚さ0の文字列の形状になってしまって、形のあるものにならないので、linear_extrudeで厚みを持たせて、3Dプリンターで造型出来る形状にする、という手順を踏みます。
具体的には、
text( "Shout it out loud !",font="Papyrus:style=Regular", size=4, halign="center", valign="center");
という文でテキストを発生させたのが下の図になります。
これは、OpenSCADのスクリーンショットですが、厚さがあるように見ているものの、実際は厚さは0です。これにlinear_extrude文で厚みを持たせて、実際に存在することが可能な図形を作ります。下の例では、8mmの厚みを持たせています。
linear_extrude( 8 ) {text( "Shout it out loud !", font="Papyrus:style=Regular", size=4, halign="center", valign="center");}
文字列をくぼみ状に作る
translate([0,0,-5])
cube([100, 30, 10], center=true);
translate([0,0,-4])
linear_extrude( 8 ) {
text( "Shout it out loud !",
font="Papyrus:style=Regular", size=4, halign="center",
valign="center");
}
};
となります。平板から、文字列の形状を引き算したものです。これは、横100mm、縦30mm、厚さ10mmの板を中心からZ軸方向に5mm下げて、これから縦横方向にセンタリングした文字列をZ軸方向に4mm下げたものを引き算して、文字列のくぼみが出来ています。
ただ、くぼみを実際に作ろうとすると、文字列に厚みを付けないと、うまく造型できません。文字列に厚みを付けるためには、一番簡単なのは座標を少しずつ変えて重ね書きしてあげることだと思います。
文字に厚みを加える
座標を少しずつ変えて重ね書き、ということを最初は1回1回記述していましたが、こういう記述こそコンピューターにやらせるべきだろうと思うので、モジュール定義をしてみたのが、下記です。
for(i=[0:stp ]) {
translate([x + i * dlt, y, z]) {
linear_extrude( lx ) {
text( str, font=fnt, size=fntsize, halign="center", valign="center");
}
}
}
}
difference () {
translate([0,0,-5])
cube([100, 30, 10], center=true);
wrtstr( 0, 0, -4, "Shout it out loud!",
"Papyrus:style=Regular", 8, 4, 3, 0.2);
};
これを下のdifference文以降の文で呼び出していて、100mm X 30mm X 10mmの板からforループを使って重ね書きした文字列の立体形状を引き算しています。
リストだと、刻みを0.2mmにして、3回の重ね書きをしています。これをレンダリングすると、以下のようになります。
プリンターの最小寸法スペックによりますが、このぐらいの幅が出ていれば、造型できるんじゃないかと思います。
というわけでまた。




0 件のコメント:
コメントを投稿
何か一言頂ければ・・・