前回は穴のある立体を扱いました。今回は、
その前に、
前回作ったキートップは、
ルーバーの部品を作る
今回作るのは、
- ※)
 - 実際に使うときは、
強風で壊れて人にケガなどさせないよう十分にご注意ください。  
さて、
図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プリンタの場合、
しかし逆に、
ちなみに筆者は、
次回は、
