2021年9月1日水曜日

OpenSCADとUltimaker Curaを使用して、巻取り式コードリールを作る

OpenSCADとUltimaker Curaを使用して、巻取り式コードリールを作るには以下の手順を実行します。キーボードやマウスなど長すぎるUSBケーブルを短くスッキリと収納することができます。

〇巻取り式コードリールの写真

作成手順

1. OpenSCADで以下のコードを実行して形状を調整し、STLファイルにエクスポートします。
巻取り式コードリールは、フタ部分、リール部分、底部分の各部分を印刷し、3つをはめ込んで作成します。
穴の半径など3Dプリンタや設定によって微調整してください。

・フタ部分
// コードリールの箱
REELBOX_W=60;
REELBOX_D=60;
REELBOX_H=15;
TOP_H=26;
// 底の厚さ
BOTTOM_THICK=2;
TOP_THICK=2;
// 側面の厚さ
WALL_THICK=4;
THIN_THICK=2;
THIN_WALL=2;
THIN_H=2;
// 四隅の丸み
CORNER_R=5;
// リール
REEL_R=17;
REEL_SR=15;
// コード用穴
HOLE_W=8;
HOLE_H=20;
//マージン
MARGIN=0.0;
MARGIN_CIRCLE=0.2;

module roundrect(px, py, pz, w, d, h, r)
{
    iw = w - r*2;
    id = d - r*2;

    translate([px+r, py, pz])
    linear_extrude(height=h){
        square([iw, d]);
    }
    translate([px, py+r, pz])
    linear_extrude(height=h){
        square([w, id]);
    }
    translate([px+r, py+r, pz])
    linear_extrude(height=h){
        circle(r, $fn=50);
    }
    translate([px+w-r, py+r, pz])
    linear_extrude(height=h){
        circle(r, $fn=50);
    }
    translate([px+r, py+d-r, pz])
    linear_extrude(height=h){
        circle(r, $fn=50);
    }
    translate([px+w-r, py+d-r, pz])
    linear_extrude(height=h){
        circle(r, $fn=50);
    }
}

difference(){
    union(){
        roundrect(0, 0, 0, REELBOX_W, REELBOX_D, TOP_H, CORNER_R);

    }
    union(){
        roundrect(THIN_THICK-MARGIN, THIN_THICK-MARGIN, TOP_THICK, REELBOX_W-THIN_THICK*2+MARGIN*2, REELBOX_D-THIN_THICK*2+MARGIN*2, TOP_H, CORNER_R);

        // コード穴
        translate([REELBOX_W/2-HOLE_W/2, 0, TOP_H-HOLE_H])
        linear_extrude(height=HOLE_H){
            square([HOLE_W, REELBOX_D]);
        }
        // リール穴
        translate([REELBOX_W/2, REELBOX_D/2, 0])
        linear_extrude(height=THIN_WALL){
            circle(REEL_SR-MARGIN_CIRCLE, $fn=50);
        }


    }
}

・OpenSCADの画面(フタ部分)

・リール部分
// コードリールの箱
REELBOX_W=60;
REELBOX_D=60;
REELBOX_H=15;
TOP_H=20;
// 底の厚さ
BOTTOM_THICK=2;
TOP_THICK=2;

// 側面の厚さ
WALL_THICK=4;
THIN_THICK=2;
THIN_WALL=2;
THIN_H=2;
// 四隅の丸み
CORNER_R=5;
// リール
REEL_R=17;
REEL_SR=15;
REEL_H=24;
REEL_BODY_R=15;
REEL_THICK=2;
// コード用穴
HOLE_W=8;
HOLE_H=14;
// ツメ部分
CROW_D=8;
//CROW_H=5;
CROW_GAP=3;
CROW_EDGE=3;
CROW_THICK=1.5;
//マージン
MARGIN=0.2;

HANDLE_W=8;
HANDLE_DEPTH=6;

REEL_CODE_W=5;
REEL_CODE_H=15;

difference(){
    union(){
        // リール
        translate([0, 0, 0])
        linear_extrude(height=REEL_THICK){
            circle(REEL_R-MARGIN, $fn=50);
        }
        translate([0, 0, REEL_THICK])
        linear_extrude(height=REEL_H-REEL_THICK*2){
            circle(REEL_BODY_R-MARGIN, $fn=50);
        }
        translate([0, 0, REEL_H-REEL_THICK])
        linear_extrude(height=REEL_THICK){
            circle(REEL_R-MARGIN, $fn=50);
        }
        // 上部
        translate([0, 0, REEL_H])
        linear_extrude(height=TOP_THICK){
            circle(REEL_SR-MARGIN, $fn=50);
        }
    }
    union(){
        // 上部
        translate([0, 0, REEL_H-HANDLE_DEPTH])
        linear_extrude(height=HANDLE_DEPTH+TOP_THICK){
            circle(REEL_SR-REEL_THICK, $fn=50);
        }
        // コード穴
        translate([-REEL_CODE_W/2, -REEL_R, 0])
        linear_extrude(height=REEL_CODE_H){
            square([REEL_CODE_W, REEL_R*2]);
        }
        translate([0, -REEL_R, REEL_CODE_H])
        rotate([-90, 0, 0])
        linear_extrude(height=REEL_R*2){
            circle(REEL_CODE_W/2, $fn=50);
        }

    }

}
translate([-HANDLE_W/2, -REEL_SR+REEL_THICK, REEL_H-HANDLE_DEPTH])
linear_extrude(height=HANDLE_DEPTH+TOP_THICK){
    square([HANDLE_W, (REEL_SR-REEL_THICK)*2]);
}

・OpenSCADの画面(リール部分)

・底部分
// コードリールの箱
REELBOX_W=60;
REELBOX_D=60;
REELBOX_H=2;
// 底の厚さ
BOTTOM_THICK=2;
// 側面の厚さ
WALL_THICK=4;
MARGIN=0;
THIN_WALL=2;
THIN_H=2;
INNER_WALL_H=7;

// 四隅の丸み
CORNER_R=5;
// リール
REEL_R=17;
// コード用穴
HOLE_W=8;
HOLE_H=8;

module roundrect(px, py, pz, w, d, h, r)
{
    iw = w - r*2;
    id = d - r*2;

    translate([px+r, py, pz])
    linear_extrude(height=h){
        square([iw, d]);
    }
    translate([px, py+r, pz])
    linear_extrude(height=h){
        square([w, id]);
    }
    translate([px+r, py+r, pz])
    linear_extrude(height=h){
        circle(r, $fn=50);
    }
    translate([px+w-r, py+r, pz])
    linear_extrude(height=h){
        circle(r, $fn=50);
    }
    translate([px+r, py+d-r, pz])
    linear_extrude(height=h){
        circle(r, $fn=50);
    }
    translate([px+w-r, py+d-r, pz])
    linear_extrude(height=h){
        circle(r, $fn=50);
    }
}

difference(){
    union(){
        roundrect(0, 0, 0, REELBOX_W, REELBOX_D, REELBOX_H, CORNER_R);

        roundrect(THIN_WALL+MARGIN, THIN_WALL+MARGIN, 0, REELBOX_W-(THIN_WALL+MARGIN)*2, REELBOX_D-(THIN_WALL+MARGIN)*2, INNER_WALL_H, CORNER_R);

    }
    union(){
        roundrect(WALL_THICK, WALL_THICK, BOTTOM_THICK, REELBOX_W-WALL_THICK*2, REELBOX_D-WALL_THICK*2, INNER_WALL_H, CORNER_R);

        // コード穴
        translate([REELBOX_W/2-HOLE_W/2, 0, REELBOX_H])
        linear_extrude(height=INNER_WALL_H-REELBOX_H){
            square([HOLE_W, REELBOX_D]);
        }
        translate([REELBOX_W/2, THIN_WALL, REELBOX_H])
        linear_extrude(height=INNER_WALL_H-REELBOX_H){
            circle(HOLE_W/2, $fn=50);
        }
    }
}
// リール用の輪
difference(){
    union(){
        translate([REELBOX_W/2, REELBOX_D/2, BOTTOM_THICK])
        linear_extrude(height=THIN_WALL){
            circle(REEL_R+THIN_WALL, $fn=50);
        }
    }
    union(){
        translate([REELBOX_W/2, REELBOX_D/2, BOTTOM_THICK])
        linear_extrude(height=THIN_WALL){
            circle(REEL_R, $fn=50);
        }
    }
}

・OpenSCADの画面(底部分)

2. Ultimaker CuraでSTLファイルを読み込み、スライスしてgcodeを保存します。

3. 3Dプリンターで印刷します

4. コードリールの組み立てとケーブルのセット
フタ部分の真ん中の穴にリール部分をはめます。リール部分のU字の溝にケーブルを通します。底部分を最後にはめて、リール部分の取っ手を回転させてケーブルを巻き取ります。

関連情報

OpenSCADまとめ

OpenSCADとUltimaker Curaを使用して、単4電池保管ケースを作成する

0 件のコメント:

コメントを投稿