前回は穴のある立体を扱いました。今回は、
その前に、
前回作ったキートップは、
ルーバーの部品を作る
今回作るのは、

- ※)
- 実際に使うときは、
強風で壊れて人にケガなどさせないよう十分にご注意ください。
さて、


図3の向きであれば、


横穴のあるデータの作り方は、

もう1つの方法は、

あとは、

$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をご覧ください。これは、

そこで、

データの作り方は図7の通りです。モータの軸径は8mmで、

中間にワイヤーを通せる穴を用意します。外周は、

大きい方の部品のうち、

作るのは簡単でしたが、

こうして、
$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つめは、

この場合は、
今回のように穴を閉じる場合も、
2つめは、

3つめは、
筆者が使用している3Dプリンタの場合、
しかし逆に、
ちなみに筆者は、
次回は、