前回は穴のある立体を扱いました。今回は、
その前に、
前回作ったキートップは、
ルーバーの部品を作る
今回作るのは、
![写真1 完成したもの 写真1 完成したもの](/assets/images/dev/serial/01/phpto3dpr/0002/thumb/TH800_p01.jpg)
- ※)
- 実際に使うときは、
強風で壊れて人にケガなどさせないよう十分にご注意ください。
さて、
![図1 横穴の形状 図1 横穴の形状](/assets/images/dev/serial/01/phpto3dpr/0002/thumb/TH800_001.jpg)
![図2 向きがずれると出力できない 図2 向きがずれると出力できない](/assets/images/dev/serial/01/phpto3dpr/0002/thumb/TH802_002.jpg)
図3の向きであれば、
![図3 幅が狭ければ、またがって出力できる 図3 幅が狭ければ、またがって出力できる](/assets/images/dev/serial/01/phpto3dpr/0002/thumb/TH802_003.jpg)
![写真2 実際の3Dプリンタ出力 写真2 実際の3Dプリンタ出力](/assets/images/dev/serial/01/phpto3dpr/0002/thumb/TH800_p02.jpg)
横穴のあるデータの作り方は、
![図4 方法1:CDとHIは相殺される 図4 方法1:CDとHIは相殺される](/assets/images/dev/serial/01/phpto3dpr/0002/thumb/TH800_004.jpg)
もう1つの方法は、
![図5 方法2:BCとDEは相殺される 図5 方法2:BCとDEは相殺される](/assets/images/dev/serial/01/phpto3dpr/0002/thumb/TH800_005.jpg)
あとは、
![図6 横穴の出力方法 図6 横穴の出力方法](/assets/images/dev/serial/01/phpto3dpr/0002/thumb/TH800_006.jpg)
$s0 =& new stl_solid();
print $s0->output(1);
$p = array();
$q = array();
$p[] =& $s0->addpoint(0, 0, 0);
$q[] =& $s0->addpoint(2, 0, 0);
$q[] =& $s0->addpoint(4, 0, 0);
$p[] =& $s0->addpoint(6, 0, 0);
$p[] =& $s0->addpoint(6, 1.5, 0);
$p[] =& $s0->addpoint(8, 4, 0);
$p[] =& $s0->addpoint(6, 6, 0);
$p[] =& $s0->addpoint(6, 30, 0);
$p[] =& $s0->addpoint(8, 32, 0);
$p[] =& $s0->addpoint(44, 32, 0);
$p[] =& $s0->addpoint(46, 30, 0);
$p[] =& $s0->addpoint(48.5, 32, 0);
$q[] =& $s0->addpoint(52, 32, 0);
$q[] =& $s0->addpoint(52, 32, 0);
$q[] =& $s0->addpoint(54, 32, 0);
$q[] =& $s0->addpoint(54, 32, 0);
$p[] =& $s0->addpoint(56, 32, 0);
$p[] =& $s0->addpoint(56, 65, 0);
$q[] =& $s0->addpoint(54, 65, 0);
$q[] =& $s0->addpoint(52, 65, 0);
$p[] =& $s0->addpoint(50, 65, 0);
$p[] =& $s0->addpoint(50, 63.5, 0);
$p[] =& $s0->addpoint(48, 61, 0);
$p[] =& $s0->addpoint(50, 59, 0);
$p[] =& $s0->addpoint(50, 35, 0);
$p[] =& $s0->addpoint(48, 33, 0);
$p[] =& $s0->addpoint(12, 33, 0);
$p[] =& $s0->addpoint(10, 35, 0);
$p[] =& $s0->addpoint(7.5, 33, 0);
$q[] =& $s0->addpoint(4, 33, 0);
$q[] =& $s0->addpoint(4, 33, 0);
$q[] =& $s0->addpoint(2, 33, 0);
$q[] =& $s0->addpoint(2, 33, 0);
$p[] =& $s0->addpoint(0, 33, 0);
for ($i=0; $i<6; $i++) {
$q[$i]->moveadd(0, 0, 1);
$q[11 - $i]->moveadd(0, 0, 1);
}
$q[3]->moveadd(0, 33, 0);
$q[4]->moveadd(0, 33, 0);
$q[9]->moveadd(0, -33, 0);
$q[10]->moveadd(0, -33, 0);
$q[0]->moveadd(-1, 0, 2);
$q[1]->moveadd(1, 0, 2);
$q[2]->moveadd(-1, 0, 2);
$q[3]->moveadd(-1, 0, 2);
$q[4]->moveadd(1, 0, 2);
$q[5]->moveadd(1, 0, 2);
$q[11]->moveadd(-1, 0, 2);
$q[10]->moveadd(-1, 0, 2);
$q[9]->moveadd(1, 0, 2);
$q[8]->moveadd(1, 0, 2);
$q[7]->moveadd(-1, 0, 2);
$q[6]->moveadd(1, 0, 2);
foreach ($p as $key => $dummy)
$p[$key]->moveadd(0, 0, 6);
$q[0]->moveadd(1, 0, 2);
$q[1]->moveadd(-1, 0, 2);
$q[2]->moveadd(1, 0, 2);
$q[3]->moveadd(1, 0, 2);
$q[4]->moveadd(-1, 0, 2);
$q[5]->moveadd(-1, 0, 2);
$q[11]->moveadd(1, 0, 2);
$q[10]->moveadd(1, 0, 2);
$q[9]->moveadd(-1, 0, 2);
$q[8]->moveadd(-1, 0, 2);
$q[7]->moveadd(1, 0, 2);
$q[6]->moveadd(-1, 0, 2);
$q[3]->moveadd(0, -33, 0);
$q[4]->moveadd(0, -33, 0);
$q[9]->moveadd(0, 33, 0);
$q[10]->moveadd(0, 33, 0);
for ($i=0; $i<6; $i++) {
$q[$i]->moveadd(0, 0, 1);
$q[11 - $i]->moveadd(0, 0, 1);
}
for ($i=0; $i<10; $i++)
print $s0->output(0, -$i * 10, $i * 10);
print $s0->output(2);
もっとしっかりしたものがいいという場合は、
このデータでは、
プーリーを作る
写真3をご覧ください。これは、
![写真3 プーリーの全体 写真3 プーリーの全体](/assets/images/dev/serial/01/phpto3dpr/0002/thumb/TH800_p03.jpg)
そこで、
![写真4 分割したところ 写真4 分割したところ](/assets/images/dev/serial/01/phpto3dpr/0002/thumb/TH800_p04.jpg)
データの作り方は図7の通りです。モータの軸径は8mmで、
![図7 底面の形状 図7 底面の形状](/assets/images/dev/serial/01/phpto3dpr/0002/thumb/TH800_007.jpg)
中間にワイヤーを通せる穴を用意します。外周は、
![図8 断面(小さい部品) 図8 断面(小さい部品)](/assets/images/dev/serial/01/phpto3dpr/0002/thumb/TH800_008.jpg)
大きい方の部品のうち、
![図9 断面(大きい部品) 図9 断面(大きい部品)](/assets/images/dev/serial/01/phpto3dpr/0002/thumb/TH800_009.jpg)
作るのは簡単でしたが、
![図10 切り欠きの形 図10 切り欠きの形](/assets/images/dev/serial/01/phpto3dpr/0002/thumb/TH800_010.jpg)
こうして、
$s0 =& new stl_solid();
$first = 1;
for ($i=0; $i<2; $i++) {
# $cut = 0.25 + $i * 0.15;
$cut = 0.6 + $i * 0.1;
for ($j=0; $j<2; $j++) {
$s0 =& new stl_solid();
$circle_inner = array();
set_circle($s0, $circle_inner, $r_inner + 0.5, 0, $cut);
$hole = array();
$hole[] =& $s0->addpoint($r_body + 1, 0, 0);
$hole[] =& $s0->addpoint($r_body + 2, -1, 0);
$hole[] =& $s0->addpoint($r_body + 3, 0, 0);
$circle_outer = array();
set_circle($s0, $circle_outer, -$r_rim, 0);
$hole[2]->addchild();
$hole[] =& $s0->addpoint($r_body + 2, 1, 0);
$hole[0]->addchild();
set_circle($s0, $circle_inner, $r_inner, 1, $cut);
if ($j == 0) {
set_circle($s0, $circle_inner, $r_inner, 2, $cut);
set_circle($s0, $circle_inner, $r_body + 0.5, 2);
set_circle($s0, $circle_inner, $r_body + 0.5, 4);
} else {
set_circle($s0, $circle_inner, $r_inner, 4 + $h_body + 2, $cut);
set_circle($s0, $circle_inner, $r_body, 4 + $h_body + 2);
set_circle($s0, $circle_inner, $r_body, 4);
}
set_circle($s0, $circle_outer, -$r_rim, 1);
set_circle($s0, $circle_outer, -($r_body + 3), 4);
foreach ($hole as $key => $dummy)
$hole[$key]->moveadd(0, 0, 4);
if (($first)) {
$first = 0;
print $s0->output(1);
}
print $s0->output(0, $unit * $i, $unit * $j);
}
}
print $s0->output(2);
ここまで、
3Dプリンタの弱点
この連載で扱っている3Dプリンタは、
1つめは、
![図11 下に何もないと出力できない 図11 下に何もないと出力できない](/assets/images/dev/serial/01/phpto3dpr/0002/thumb/TH802_011.jpg)
この場合は、
今回のように穴を閉じる場合も、
2つめは、
![図12 向きを変えると丈夫になる 図12 向きを変えると丈夫になる](/assets/images/dev/serial/01/phpto3dpr/0002/thumb/TH802_012.jpg)
3つめは、
筆者が使用している3Dプリンタの場合、
しかし逆に、
ちなみに筆者は、
次回は、