lynx   »   [go: up one dir, main page]

ラベル OpenSCAD の投稿を表示しています。 すべての投稿を表示
ラベル OpenSCAD の投稿を表示しています。 すべての投稿を表示

2022年10月15日土曜日

Raspberry Pi OS(Raspbian Bullseye 64bit)にOpenSCADをインストールする

OpenSCADはプログラムで3Dモデリングを行う事ができるソフトウェアです。Raspberry Pi 4などで使用する事の出来る64bit版のRaspberry Pi OSではOpenSCADをインストールすることが出来ます。

〇OpenSCADの画面

インストール方法 以下のコマンドを実行します。
sudo mkdir -p /opt/openscad

cd /opt/openscad

sudo wget https://files.openscad.org/OpenSCAD-2021.01-aarch64.AppImage

sudo chmod +x OpenSCAD-2021.01-aarch64.AppImage

cat << EOF | sudo tee /usr/share/applications/openscad.desktop
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/opt/openscad/OpenSCAD-2021.01-aarch64.AppImage
Name=OpenSCAD
Categories=Development;
EOF

関連情報 ・OpenSCADに関する記事はこちらを参照してください。

・そのほかの3Dプリンターを活用した記事は以下を参照してください。
OpenSCADまとめ

2022年7月23日土曜日

Rocky Linux 9にOpenSCADをインストールする

OpenSCADはプログラムで3Dモデリングを行う事ができるソフトウェアです。

〇OpenSCADの画面

インストール方法 以下のコマンドを実行します。
sudo mkdir -p /opt/openscad

cd /opt/openscad

sudo wget https://files.openscad.org/OpenSCAD-2021.01-x86_64.AppImage

sudo chmod +x OpenSCAD-2021.01-x86_64.AppImage

cat << EOF | sudo tee /usr/share/applications/openscad.desktop
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/opt/openscad/OpenSCAD-2021.01-x86_64.AppImage
Name=OpenSCAD
EOF

関連情報 ・OpenSCADに関する記事はこちらを参照してください。

・そのほかの3Dプリンターを活用した記事は以下を参照してください。
OpenSCADまとめ

2022年6月23日木曜日

AlmaLinux9にOpenSCADをインストールする

OpenSCADはプログラムで3Dモデリングを行う事ができるソフトウェアです。

〇OpenSCADの画面

インストール方法 以下のコマンドを実行します。
sudo mkdir -p /opt/openscad

cd /opt/openscad

sudo wget https://files.openscad.org/OpenSCAD-2021.01-x86_64.AppImage

sudo chmod +x OpenSCAD-2021.01-x86_64.AppImage

cat << EOF | sudo tee /usr/share/applications/openscad.desktop
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/opt/openscad/OpenSCAD-2021.01-x86_64.AppImage
Name=OpenSCAD
EOF

関連情報 ・OpenSCADに関する記事はこちらを参照してください。

・そのほかの3Dプリンターを活用した記事は以下を参照してください。
OpenSCADまとめ

2022年5月21日土曜日

Debian 11(Bullseye)にOpenSCADをインストールする

OpenSCADはプログラムで3Dモデリングを行う事ができるソフトウェアです。作ったモデルを3Dプリンタで出力することも出来ます。

〇OpenSCADの画面

インストール方法 以下のコマンドを実行します。
sudo apt-get update

sudo apt-get -y install openscad

関連情報 ・そのほかの3Dプリンターを活用した記事は以下を参照してください。
OpenSCADまとめ

2022年5月12日木曜日

Ubuntu 22.04にOpenSCADをインストールする

OpenSCADはプログラムで3Dモデリングを行う事ができるソフトウェアです。作ったモデルを3Dプリンタで出力することも出来ます。

〇OpenSCADの画面

Ubuntu Softwareによるインストール方法 1. Ubuntu Softwareを起動して、OpenSCADを検索します。

2.OpenSCADのインストールボタンをクリックします(全部小文字のopenscadでなくOpenSCADの方)

コマンドによるインストール方法 以下のコマンドを実行します。
sudo apt-get update

sudo apt-get -y install openscad

関連情報 ・そのほかの3Dプリンターを活用した記事は以下を参照してください。
OpenSCADまとめ

2021年12月12日日曜日

マイクロUSBコネクタを持つ太陽光LEDスティックを作る

マイクロUSBコネクタを持つ太陽光LEDスティックを作るには以下の手順を実行します。

〇作成した太陽光LEDスティック

作成手順 1. 必要部品の準備
5Vで光らせることのできる太陽光LEDモジュールとマイクロUSBコネクタを準備します。いずれの部品も秋月電子さんで購入できます。
太陽光LEDモジュール(白色LED) 1×3 5V

マイクロUSBコネクタ 電源供給用

2. 部品のはんだ付け
マイクロUSBコネクタのコネクタ口を上に、端子固定用の足を手前に向けたとき、マイクロUSBコネクタの下の端子の左側を太陽光LEDモジュールの+端子、マイクロUSBコネクタの下の端子の右側を-端子にはんだ付けします。

3. 太陽光LEDモジュールとコネクタを格納するケースとフタをOpenSCADでデザインします。
以下のコードを実行して形状を調整し、STLファイルにエクスポートします。フレームのサイズなど3Dプリンタや設定によって微調整してください。

・ソースコード(ケース)
INNER_MARGIN=0.5;
WALL_THICK=2;
// 内寸
LED_MOD_IW=60+INNER_MARGIN;
LED_MOD_ID=10+INNER_MARGIN;
LED_MOD_IH=2;

USB_GAP=1;
USB_D=8;
USB_W=8;

// 外寸
LED_MOD_EW=LED_MOD_IW+USB_W+WALL_THICK;
LED_MOD_ED=LED_MOD_ID+WALL_THICK*2;

USB_SIDE_D=(LED_MOD_ED-USB_D)/2;


// 底面
translate([0, 0, 0])
linear_extrude(height=WALL_THICK){
    square([LED_MOD_EW, LED_MOD_ED]);
}
// LEDモジュール側の底面ギャップ
translate([USB_W, 0, WALL_THICK])
linear_extrude(height=USB_GAP){
    square([LED_MOD_EW-USB_W, LED_MOD_ED]);
}


// USBと反対側の壁
translate([LED_MOD_EW-WALL_THICK, 0, USB_GAP+WALL_THICK])
linear_extrude(height=LED_MOD_IH){
    square([WALL_THICK, LED_MOD_ED]);
}

// LEDモジュール手前
translate([USB_W, 0, USB_GAP+WALL_THICK])
linear_extrude(height=LED_MOD_IH){
    square([LED_MOD_EW-USB_W, WALL_THICK]);
}
// LEDモジュール奥
translate([USB_W, LED_MOD_ED-WALL_THICK, USB_GAP+WALL_THICK])
linear_extrude(height=LED_MOD_IH){
    square([LED_MOD_EW-USB_W, WALL_THICK]);
}

// USB口手前
translate([0, 0, WALL_THICK])
linear_extrude(height=USB_GAP+LED_MOD_IH){
    square([USB_W, USB_SIDE_D]);
}

// USB口奥
translate([0, LED_MOD_ED-USB_SIDE_D, WALL_THICK])
linear_extrude(height=USB_GAP+LED_MOD_IH){
    square([USB_W, USB_SIDE_D]);
}

〇OpenSCADでのモデル表示(ケース)

・ソースコード(フタ)
INNER_MARGIN=0.5;
TOP_THICK=1;
TOP_H=1;
WALL_THICK=2;
// 内寸
LED_MOD_IW=60+INNER_MARGIN;
LED_MOD_ID=10+INNER_MARGIN;
LED_MOD_IH=2;

USB_GAP=1;
USB_D=8;
USB_W=8;
HOLE_POS_W=2;
HOLE_W=2;
HOLE_D=1;

// 外寸
LED_MOD_EW=LED_MOD_IW+USB_W+WALL_THICK;
LED_MOD_ED=LED_MOD_ID+WALL_THICK*2;

USB_SIDE_D=(LED_MOD_ED-USB_D)/2;

difference(){
    union(){
        // 底面
        translate([0, 0, 0])
        linear_extrude(height=TOP_THICK){
            square([LED_MOD_EW, LED_MOD_ED]);
        }

        // USBと反対側の壁
        translate([LED_MOD_EW-TOP_THICK-WALL_THICK, WALL_THICK, TOP_THICK])
        linear_extrude(height=TOP_H){
            square([TOP_THICK, LED_MOD_ID]);
        }

        // LEDモジュール手前
        translate([USB_W+INNER_MARGIN, WALL_THICK, TOP_THICK])
        linear_extrude(height=TOP_H){
            square([LED_MOD_IW-INNER_MARGIN, TOP_THICK]);
        }
        // LEDモジュール奥
        translate([USB_W+INNER_MARGIN, LED_MOD_ED-WALL_THICK-TOP_THICK, TOP_THICK])
        linear_extrude(height=TOP_H){
            square([LED_MOD_IW-INNER_MARGIN, TOP_THICK]);
        }
    }
    union(){
        translate([USB_W, WALL_THICK+TOP_THICK, 0])
        linear_extrude(height=TOP_THICK){
            square([LED_MOD_IW-TOP_THICK, LED_MOD_ID-TOP_THICK*2]);
        }

        // USB穴手前
        translate([HOLE_POS_W, USB_SIDE_D, 0])
        linear_extrude(height=TOP_THICK){
            square([HOLE_W, HOLE_D]);
        }
        // USB穴奥
        translate([HOLE_POS_W, LED_MOD_ED-USB_SIDE_D-HOLE_D, 0])
        linear_extrude(height=TOP_THICK){
            square([HOLE_W, HOLE_D]);
        }
    }
}

〇OpenSCADでのモデル表示(フタ)

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

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

〇3Dプリンタで印刷したLEDスティックのケースとフタ

関連情報 ・OpenSCADまとめ

2021年11月2日火曜日

OpenSCADとUltimaker Curaを使用して、蝶番を作る

OpenSCADとUltimaker Curaを使用して、蝶番を作るには以下の手順を実行します。

〇作成した蝶番

作成手順 1. OpenSCADで以下のコードを実行して形状を調整し、STLファイルにエクスポートします。
蝶番のサイズなど3Dプリンタや設定によって微調整してください。

・ソースコード
// 部品1
HINGE1_W=20;
HINGE_D=6;
HINGE_H=20;
HINGE1_HOLE_R=2.5;
HINGE1_DENT_H=15;
HINGE1_DENT_W=7;

// 部品2
HINGE2_SHAFT_R=2;
HINGE2_BUMP_H=13;
HINGE2_BUMP_W=7;
HINGE2_W=15;

module hinge1(){
    difference(){
        union(){
            translate([-HINGE1_W, 0, 0])
            linear_extrude(height=HINGE_H){
                    square([HINGE1_W-HINGE_D/2, HINGE_D]);
            }
            translate([-HINGE_D/2, HINGE_D/2, 0])
            linear_extrude(height=HINGE_H){
                circle(HINGE_D/2, $fn=50);
            }
        }
        union(){
            translate([-HINGE_D/2, HINGE_D/2, 0])
            linear_extrude(height=HINGE_H){
                circle(HINGE1_HOLE_R, $fn=50);
            }
            translate([-HINGE1_DENT_W, 0, (HINGE_H-HINGE1_DENT_H)/2])
            linear_extrude(height=HINGE1_DENT_H){
                    square([HINGE1_DENT_W, HINGE_D]);
            }
        }
    }
}

module hinge2(){
    translate([-HINGE_D/2, HINGE_D/2, 0])
    linear_extrude(height=HINGE_H){
        circle(HINGE2_SHAFT_R, $fn=50);
    }
    translate([-HINGE_D/2, 0, (HINGE_H-HINGE2_BUMP_H)/2])
    linear_extrude(height=HINGE2_BUMP_H){
        square([HINGE2_BUMP_W-HINGE_D/2, HINGE_D]);
    }
    translate([-HINGE_D/2, HINGE_D/2, (HINGE_H-HINGE2_BUMP_H)/2])
    linear_extrude(height=HINGE2_BUMP_H){
        circle(HINGE_D/2, $fn=50);
    }

    translate([HINGE2_BUMP_W-HINGE_D, 0, 0])
    linear_extrude(height=HINGE_H){
        square([HINGE2_W, HINGE_D]);
    }
}

hinge1();
hinge2();

・OpenSCADの画面

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

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

関連情報 ・OpenSCADまとめ

2021年10月3日日曜日

OpenSCADとUltimaker Curaを使用して、秋月電子さんのユニバーサル基板Dタイプが収まるフレームを作る

OpenSCADとUltimaker Curaを使用して、秋月電子さんのユニバーサル基板Dタイプが収まるフレームを作るには以下の手順を実行します。
対象のユニバーサル基板は、以下の秋月電子さんで販売しているユニバーサル基板です。
・片面ユニバーサル基板 Dタイプ(47×36mm) ガラスコンポジット
https://akizukidenshi.com/catalog/g/gP-08241/
※基板の端やネジ穴付近は固定のため、フレームと干渉するので部品などをはんだ付けするのを避けてください。

〇素のフレームとユニバーサル基板をはめた状態のフレームの写真

作成手順 1. OpenSCADで以下のコードを実行して形状を調整し、STLファイルにエクスポートします。
フレームのサイズなど3Dプリンタや設定によって微調整してください。

・フレームのソースコード
// Dタイプ 基板のサイズ
MARGIN=0.2;
BOARD_DT_W=36+MARGIN;
BOARD_DT_D=47+MARGIN;
BOARD_DT_H=1.6;

// プレートの底の厚さ
BOTTOM_H=1.4;
// 外寸
WALL_SIZE=2;
BOARD_DT_OW=BOARD_DT_W+WALL_SIZE*2;
BOARD_DT_OD=BOARD_DT_D+WALL_SIZE*2;

// 内側
FRAME_SIZE=2;
PADDING_H=2.5;
BOARD_DT_IW=BOARD_DT_W-FRAME_SIZE*2;
BOARD_DT_ID=BOARD_DT_D-PADDING_H*2;

// 基板固定穴直径
HOLE_SIZE=3.2;
HOLE_PADDING=1.5;
HOLE_PLATE=HOLE_SIZE+HOLE_PADDING*2;

difference(){
    union(){
        difference(){
            translate([-BOARD_DT_OW/2, -BOARD_DT_OD/2, 0])
            linear_extrude(height=BOARD_DT_H+BOTTOM_H){
                    square([BOARD_DT_OW, BOARD_DT_OD]);
            }
            union(){
                translate([-BOARD_DT_IW/2, -BOARD_DT_ID/2, 0])
                linear_extrude(height=BOARD_DT_H){
                        square([BOARD_DT_IW, BOARD_DT_ID]);
                }
                translate([-BOARD_DT_W/2, -BOARD_DT_D/2, BOTTOM_H])
                linear_extrude(height=BOARD_DT_H){
                        square([BOARD_DT_W, BOARD_DT_D]);
                }
            }
        }
        translate([-HOLE_PLATE/2, BOARD_DT_ID/2-HOLE_PLATE/2, 0])
        linear_extrude(height=BOTTOM_H){
            square([HOLE_PLATE, HOLE_PLATE]);
        }    
        translate([-HOLE_PLATE/2, -BOARD_DT_ID/2-HOLE_PLATE/2, 0])
        linear_extrude(height=BOTTOM_H){
            square([HOLE_PLATE, HOLE_PLATE]);
        }    
    }
    union(){
        translate([0, BOARD_DT_ID/2, 0])
        linear_extrude(height=BOTTOM_H){
            circle(HOLE_SIZE/2, $fn=50);
        }    
        translate([0, -BOARD_DT_ID/2, 0])
        linear_extrude(height=BOTTOM_H){
            circle(HOLE_SIZE/2, $fn=50);
        }    
    }
}

・OpenSCADの画面

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

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

関連情報 ・OpenSCADまとめ

2021年9月21日火曜日

OpenSCADとUltimaker Curaを使用して、太陽電池が収まるフレームを作る

OpenSCADとUltimaker Curaを使用して、太陽電池が収まるフレームを作るには以下の手順を実行します。
対象の太陽電池は、以下の秋月電子さんで販売しているSHARP製のソーラーモジュールです。
・携帯機器用ソーラーモジュール(太陽電池・ソーラーセル) 300mW (セル単体)
https://akizukidenshi.com/catalog/g/gM-16017/

〇太陽電池が収まるフレームの写真(表)

〇太陽電池が収まるフレームの写真(裏)
※端子用の穴が大きめに開いています。

作成手順 1. OpenSCADで以下のコードを実行して形状を調整し、STLファイルにエクスポートします。
ケース部分とフタ部分のそれぞれを3Dプリンタで印刷し、太陽電池モジュールをはめ込みます。
ケースのサイズなど3Dプリンタや設定によって微調整してください。

・ケース部分のソースコード
// Solar moduleのサイズ
MARGIN=0.2;
SOLAR_MOD_W=68.3+MARGIN;
SOLAR_MOD_D=41+MARGIN;

// 端子
TERMINAL_MARGIN=1;
TERMINAL_W=5+TERMINAL_MARGIN;
TERMINAL_D=2+TERMINAL_MARGIN;
TERMINAL_POS_W=21;
TERMINAL_POS_D=3;

// フレームサイズ
BOTTOM_THICK=1;
FRAME_MIN=1;
FRAME_W=SOLAR_MOD_W+FRAME_MIN*4;
FRAME_D=SOLAR_MOD_D+FRAME_MIN*4;
INNER_FRAME_W=SOLAR_MOD_W+FRAME_MIN*2;
INNER_FRAME_D=SOLAR_MOD_D+FRAME_MIN*2;

EDGE_MARGIN=0.1;
EDGE_HEIGHT=1.5;
difference(){
    union(){
        // 本体
        translate([0, 0, 0])
        linear_extrude(height=BOTTOM_THICK){
            square([FRAME_W, FRAME_D]);
        }
        translate([FRAME_MIN+EDGE_MARGIN/2, FRAME_MIN+EDGE_MARGIN/2, BOTTOM_THICK])
        linear_extrude(height=EDGE_HEIGHT){
            square([INNER_FRAME_W-EDGE_MARGIN, INNER_FRAME_D-EDGE_MARGIN]);
        }
    }
    union(){
        translate([FRAME_MIN*2-EDGE_MARGIN/2, FRAME_MIN*2-EDGE_MARGIN/2, BOTTOM_THICK])
        linear_extrude(height=EDGE_HEIGHT){
            square([SOLAR_MOD_W+EDGE_MARGIN, SOLAR_MOD_D+EDGE_MARGIN]);
        }
        // 端子用穴
        translate([TERMINAL_POS_W, FRAME_D/2+TERMINAL_POS_D/2, 0])
        linear_extrude(height=BOTTOM_THICK){
            square([TERMINAL_W, TERMINAL_D]);
        }
        translate([TERMINAL_POS_W, FRAME_D/2-TERMINAL_POS_D/2-TERMINAL_D, 0])
        linear_extrude(height=BOTTOM_THICK){
            square([TERMINAL_W, TERMINAL_D]);
        }

    }
}

・OpenSCADの画面(ケース部分)

・フタ部分のソースコード
// Solar moduleのサイズ
MARGIN=0.2;
SOLAR_MOD_W=68.3+MARGIN;
SOLAR_MOD_D=41+MARGIN;

// フレームサイズ
BOTTOM_THICK=1;
FRAME_MIN=1;
FRAME_W=SOLAR_MOD_W+FRAME_MIN*4;
FRAME_D=SOLAR_MOD_D+FRAME_MIN*4;
INNER_FRAME_W=SOLAR_MOD_W+FRAME_MIN*2;
INNER_FRAME_D=SOLAR_MOD_D+FRAME_MIN*2;

// 外枠のサイズ
FRAME_EDGE=3;
FRAME_EDGE_W=FRAME_W-FRAME_EDGE*2;
FRAME_EDGE_D=FRAME_D-FRAME_EDGE*2;
INNER_FRAME_WDGE_H=0.6;
EDGE_HEIGHT=1.5;

difference(){
    union(){
        // 本体
        translate([0, 0, 0])
        linear_extrude(height=BOTTOM_THICK+EDGE_HEIGHT){
            square([FRAME_W, FRAME_D]);
        }
    }
    union(){

        translate([FRAME_EDGE, FRAME_EDGE, 0])
        linear_extrude(height=EDGE_HEIGHT){
            square([FRAME_EDGE_W, FRAME_EDGE_D]);
        }

        translate([FRAME_MIN, FRAME_MIN, BOTTOM_THICK])
        linear_extrude(height=EDGE_HEIGHT){
            square([INNER_FRAME_W, INNER_FRAME_D]);
        }

    }
}

difference(){
    union(){
        translate([FRAME_MIN*2, FRAME_MIN*2, BOTTOM_THICK])
        linear_extrude(height=INNER_FRAME_WDGE_H){
            square([SOLAR_MOD_W, SOLAR_MOD_D]);
        }
    }

    union(){
        translate([FRAME_MIN*3, FRAME_MIN*3, BOTTOM_THICK])
        linear_extrude(height=EDGE_HEIGHT){
            square([SOLAR_MOD_W-FRAME_MIN*2, SOLAR_MOD_D-FRAME_MIN*2]);
        }
    }

}

・OpenSCADの画面(フタ部分)

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

3. 3Dプリンターで印刷します
蓋には溝が彫ってあるので、ケースに太陽電池を配置後、フタをはめ込みます。

関連情報 ・OpenSCADまとめ

2021年9月9日木曜日

OpenSCADとUltimaker Curaを使用して、Instax miniの写真が収まるフレーム(1つ穴付バージョン)を作る

OpenSCADとUltimaker Curaを使用して、Instax miniの写真が収まるフレーム(1つ穴付バージョン)を作るには以下の手順を実行します。

〇Instax miniの写真が収まるフレーム(一つ穴付バージョン)の写真

作成手順 1. OpenSCADで以下のコードを実行して形状を調整し、STLファイルにエクスポートします。
ケース部分とフタ部分のそれぞれを3Dプリンタで印刷し、Instax miniの写真をはめ込みます。
フレームのサイズなど3Dプリンタや設定によって微調整してください。

・1つ穴付バージョンのケース部分のソースコード
// INSTAX MINIのサイズ
MARGIN=0.2;
INSTAX_MINI_W=86+MARGIN;
INSTAX_MINI_D=54+MARGIN;

// フレームサイズ
BOTTOM_THICK=1;
FRAME_MIN=1;
FRAME_W=INSTAX_MINI_W+FRAME_MIN*4;
FRAME_D=INSTAX_MINI_D+FRAME_MIN*4;
INNER_FRAME_W=INSTAX_MINI_W+FRAME_MIN*2;
INNER_FRAME_D=INSTAX_MINI_D+FRAME_MIN*2;

EDGE_MARGIN=0.1;
// 穴サイズ
HOLE_D=12;
HOLE_W=2;
HOLE_H=3;
HOLE_THICK=2;
HOLE_ED=HOLE_D+HOLE_THICK*2;
HOLE_EW=HOLE_W+HOLE_THICK;

difference(){
    union(){
        // 本体
        translate([0, 0, 0])
        linear_extrude(height=BOTTOM_THICK){
            square([FRAME_W, FRAME_D]);
        }
        translate([FRAME_MIN+EDGE_MARGIN/2, FRAME_MIN+EDGE_MARGIN/2, BOTTOM_THICK])
        linear_extrude(height=BOTTOM_THICK){
            square([INNER_FRAME_W-EDGE_MARGIN, INNER_FRAME_D-EDGE_MARGIN]);
        }
        // 左上
        translate([-HOLE_EW, 0, 0])
        linear_extrude(height=HOLE_H){
            square([HOLE_EW, HOLE_ED]);
        }
        // 右上
        translate([-HOLE_EW, FRAME_D-HOLE_ED, 0])
        linear_extrude(height=HOLE_H){
            square([HOLE_EW, HOLE_ED]);
        }
    }
    union(){
        translate([FRAME_MIN*2-EDGE_MARGIN/2, FRAME_MIN*2-EDGE_MARGIN/2, BOTTOM_THICK])
        linear_extrude(height=BOTTOM_THICK){
            square([INSTAX_MINI_W+EDGE_MARGIN, INSTAX_MINI_D+EDGE_MARGIN]);
        }
        // 左上
        translate([-HOLE_W, FRAME_D-HOLE_ED+HOLE_ED/2-HOLE_D/2, 0])
        linear_extrude(height=HOLE_H){
            square([HOLE_W, HOLE_D]);
        }
        // 右上
        translate([-HOLE_W, HOLE_ED/2-HOLE_D/2, 0])
        linear_extrude(height=HOLE_H){
            square([HOLE_W, HOLE_D]);
        }
    }
}

・OpenSCADの画面(ケース部分)

・フタ部分のソースコード
// INSTAX MINIのサイズ
MARGIN=0.2;
INSTAX_MINI_W=86+MARGIN;
INSTAX_MINI_D=54+MARGIN;

// フレームサイズ
BOTTOM_THICK=1;
FLAME_MIN=1;
FLAME_W=INSTAX_MINI_W+FLAME_MIN*4;
FLAME_D=INSTAX_MINI_D+FLAME_MIN*4;
INNER_FLAME_W=INSTAX_MINI_W+FLAME_MIN*2;
INNER_FLAME_D=INSTAX_MINI_D+FLAME_MIN*2;

// 外枠のサイズ
FRAME_EDGE=3;
FRAME_EDGE_W=FLAME_W-FRAME_EDGE*2;
FRAME_EDGE_D=FLAME_D-FRAME_EDGE*2;
INNER_FRAME_WDGE_H=0.5;

difference(){
    union(){
        // 本体
        translate([0, 0, 0])
        linear_extrude(height=BOTTOM_THICK*2){
            square([FLAME_W, FLAME_D]);
        }
    }
    union(){

        translate([FRAME_EDGE, FRAME_EDGE, 0])
        linear_extrude(height=BOTTOM_THICK){
            square([FRAME_EDGE_W, FRAME_EDGE_D]);
        }

        translate([FLAME_MIN, FLAME_MIN, BOTTOM_THICK])
        linear_extrude(height=BOTTOM_THICK){
            square([INNER_FLAME_W, INNER_FLAME_D]);
        }

    }
}

difference(){
    union(){
        translate([FLAME_MIN*2, FLAME_MIN*2, BOTTOM_THICK])
        linear_extrude(height=INNER_FRAME_WDGE_H){
            square([INSTAX_MINI_W, INSTAX_MINI_D]);
        }
    }

    union(){
        translate([FLAME_MIN*3, FLAME_MIN*3, BOTTOM_THICK])
        linear_extrude(height=BOTTOM_THICK){
            square([INSTAX_MINI_W-FLAME_MIN*2, INSTAX_MINI_D-FLAME_MIN*2]);
        }
    }

}

・OpenSCADの画面(フタ部分)

※穴が無いケースのみのバージョンは「OpenSCADとUltimaker Curaを使用して、Instax miniの写真が収まるフレームを作る」を参照してください。

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

3. 3Dプリンターで印刷します
蓋には溝が彫ってあるので、ケースにInstax miniを配置後、フタをはめ込みます。

関連情報 ・OpenSCADまとめ

OpenSCADとUltimaker Curaを使用して、Instax mini用写真フレームを差し込む事のできるLEGOブロックを作る

2021年9月7日火曜日

OpenSCADとUltimaker Curaを使用して、Instax mini用写真フレームを差し込む事のできるLEGOブロックを作る

OpenSCADとUltimaker Curaを使用して、Instax mini用写真フレームを差し込む事のできるLEGOブロックを作るには以下の手順を実行します。差し込むInstax mini用フレームは「OpenSCADとUltimaker Curaを使用して、Instax miniの写真が収まるフレームを作る」を参照してください。

〇Instax mini用写真フレームを差し込む事のできるLEGOブロックの写真
写真フレームの下の部分が今回作成したブロックです。

〇スリットのあるLEGOブロックの写真

作成手順 1. OpenSCADで以下のコードを実行して形状を調整し、STLファイルにエクスポートします。
SLIT_Dパラメータでスリットの幅が調整できます。

・Instax mini用写真フレームを差し込む事のできるLEGOブロックのソースコード
// プレートの厚さ
PLATE_THICK=5;

// LEGOの1ブロック
LEGO_SQUARE=7.95;
// LEGOの側面の厚さ
LEGO_WALL=1.5;
// LEGOの底面の円の直径
LEGO_BOTTOM_CIRCLE=6.4;
// 底の側面の高さ
LEGO_BOTTOM_H=2.6;

// プレートのサイズ(ブロック単位)
NUM_HOLE_W=8;
NUM_HOLE_D=2;

// Instax mini用写真フレームを差し込むスリット
SLIT_W=LEGO_SQUARE*NUM_HOLE_W;
SLIT_D=3.3;
SLIT_H=3.1;

//rotate([-180,0,0])
difference(){
    union(){
        // 天板
        translate([0, 0, 0])
        linear_extrude(height=PLATE_THICK){
            square([LEGO_SQUARE*NUM_HOLE_W, LEGO_SQUARE*NUM_HOLE_D]);
        }

        // 側面
        translate([0, 0, -LEGO_BOTTOM_H])
        linear_extrude(height=LEGO_BOTTOM_H){
            square([LEGO_SQUARE*NUM_HOLE_W, LEGO_WALL]);
        }

        translate([0, LEGO_SQUARE*NUM_HOLE_D-LEGO_WALL, -LEGO_BOTTOM_H])
        linear_extrude(height=LEGO_BOTTOM_H){
            square([LEGO_SQUARE*NUM_HOLE_W, LEGO_WALL]);
        }

        translate([0, 0, -LEGO_BOTTOM_H])
        linear_extrude(height=LEGO_BOTTOM_H){
            square([LEGO_WALL, LEGO_SQUARE*NUM_HOLE_D]);
        }

        translate([LEGO_SQUARE*NUM_HOLE_W-LEGO_WALL, 0, -LEGO_BOTTOM_H])
        linear_extrude(height=LEGO_BOTTOM_H){
            square([LEGO_WALL, LEGO_SQUARE*NUM_HOLE_D]);
        }

        // 下の円柱
        for( lw = [0 : NUM_HOLE_W-2] ){
            for( ld = [0 : NUM_HOLE_D-2] ){
                translate([LEGO_SQUARE*(lw+1), LEGO_SQUARE*(ld+1), -LEGO_BOTTOM_H])
                linear_extrude(height=LEGO_BOTTOM_H){
                    circle(LEGO_BOTTOM_CIRCLE/2, $fn=50);
                }
            }
        }
    }
    union()
    {
        // Instax mini用写真フレームを差し込むスリット
        translate([0, (LEGO_SQUARE*NUM_HOLE_D)/2-SLIT_D/2, PLATE_THICK-SLIT_H])
        linear_extrude(height=SLIT_H){
                square([SLIT_W, SLIT_D]);
        }
    }

}

・OpenSCADの画面

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

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

関連情報 ・そのほかの3Dプリンターで作成したモデルについては、以下のページを参照してください。
OpenSCADまとめ

2021年9月6日月曜日

OpenSCADとUltimaker Curaを使用して、Instax miniの写真が収まるフレームを作る

OpenSCADとUltimaker Curaを使用して、Instax miniの写真が収まるフレームを作るには以下の手順を実行します。

〇Instax miniの写真が収まるフレームの写真
※左が作成したフレームに入ったInstax miniの写真です。

※穴が1つ付いた写真フレームのバージョンは「OpenSCADとUltimaker Curaを使用して、Instax miniの写真が収まるフレーム(1つ穴付バージョン)を作る」を参照してください。

作成手順 1. OpenSCADで以下のコードを実行して形状を調整し、STLファイルにエクスポートします。
ケース部分とフタ部分のそれぞれを3Dプリンタで印刷し、Instax miniの写真をはめ込みます。
フレームのサイズなど3Dプリンタや設定によって微調整してください。

・ケース部分のソースコード
// INSTAX MINIのサイズ
MARGIN=0.2;
INSTAX_MINI_W=86+MARGIN;
INSTAX_MINI_D=54+MARGIN;

// フレームサイズ
BOTTOM_THICK=1;
FRAME_MIN=1;
FRAME_W=INSTAX_MINI_W+FRAME_MIN*4;
FRAME_D=INSTAX_MINI_D+FRAME_MIN*4;
INNER_FRAME_W=INSTAX_MINI_W+FRAME_MIN*2;
INNER_FRAME_D=INSTAX_MINI_D+FRAME_MIN*2;

EDGE_MARGIN=0.1;

difference(){
    union(){
        // 本体
        translate([0, 0, 0])
        linear_extrude(height=BOTTOM_THICK){
            square([FRAME_W, FRAME_D]);
        }
        translate([FRAME_MIN+EDGE_MARGIN/2, FRAME_MIN+EDGE_MARGIN/2, BOTTOM_THICK])
        linear_extrude(height=BOTTOM_THICK){
            square([INNER_FRAME_W-EDGE_MARGIN, INNER_FRAME_D-EDGE_MARGIN]);
        }
    }
    union(){
        translate([FRAME_MIN*2-EDGE_MARGIN/2, FRAME_MIN*2-EDGE_MARGIN/2, BOTTOM_THICK])
        linear_extrude(height=BOTTOM_THICK){
            square([INSTAX_MINI_W+EDGE_MARGIN, INSTAX_MINI_D+EDGE_MARGIN]);
        }
    }
}

・OpenSCADの画面(ケース部分)

・フタ部分のソースコード
// INSTAX MINIのサイズ
MARGIN=0.2;
INSTAX_MINI_W=86+MARGIN;
INSTAX_MINI_D=54+MARGIN;

// フレームサイズ
BOTTOM_THICK=1;
FRAME_MIN=1;
FRAME_W=INSTAX_MINI_W+FRAME_MIN*4;
FRAME_D=INSTAX_MINI_D+FRAME_MIN*4;
INNER_FRAME_W=INSTAX_MINI_W+FRAME_MIN*2;
INNER_FRAME_D=INSTAX_MINI_D+FRAME_MIN*2;

// 外枠のサイズ
FRAME_EDGE=3;
FRAME_EDGE_W=FRAME_W-FRAME_EDGE*2;
FRAME_EDGE_D=FRAME_D-FRAME_EDGE*2;
INNER_FRAME_WDGE_H=0.5;

difference(){
    union(){
        // 本体
        translate([0, 0, 0])
        linear_extrude(height=BOTTOM_THICK*2){
            square([FRAME_W, FRAME_D]);
        }
    }
    union(){

        translate([FRAME_EDGE, FRAME_EDGE, 0])
        linear_extrude(height=BOTTOM_THICK){
            square([FRAME_EDGE_W, FRAME_EDGE_D]);
        }

        translate([FRAME_MIN, FRAME_MIN, BOTTOM_THICK])
        linear_extrude(height=BOTTOM_THICK){
            square([INNER_FRAME_W, INNER_FRAME_D]);
        }

    }
}

difference(){
    union(){
        translate([FRAME_MIN*2, FRAME_MIN*2, BOTTOM_THICK])
        linear_extrude(height=INNER_FRAME_WDGE_H){
            square([INSTAX_MINI_W, INSTAX_MINI_D]);
        }
    }

    union(){
        translate([FRAME_MIN*3, FRAME_MIN*3, BOTTOM_THICK])
        linear_extrude(height=BOTTOM_THICK){
            square([INSTAX_MINI_W-FRAME_MIN*2, INSTAX_MINI_D-FRAME_MIN*2]);
        }
    }

}

・OpenSCADの画面(フタ部分)

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

3. 3Dプリンターで印刷します
蓋には溝が彫ってあるので、ケースにInstax miniを配置後、フタをはめ込みます。

関連情報 ・OpenSCADまとめ

2021年9月5日日曜日

OpenSCADとUltimaker Curaを使用して、1x4材にはめることのできるフックを作る

OpenSCADとUltimaker Curaを使用して、1x4材にはめることのできるフックを作るには以下の手順を実行します。あまり重いものは掛けられませんが、ちょっとした飾りやバッグなどを掛けることができます。

〇フックとSPF1x4材の写真

〇フックの写真

作成手順 1. OpenSCADで以下のコードを実行して形状を調整し、STLファイルにエクスポートします。
マージン(MARGINパラメータを大きくすると1x4材をはめる部分に余裕ができます)など3Dプリンタや設定によって微調整してください。

・1x4材にはめることのできるフックのソースコード
// SPF材1x4のサイズ
MARGIN=0.5;
SPF1x4_W=89+MARGIN;
SPF1x4_H=19+MARGIN;
// フックのサイズ
HOOK_THICK=4;
HOOK_D=10;
HOOK_SIZE=15;
// ツメ部分のサイズ
CROW_SIZE=5;

rotate([-90, 0, 0])
union(){
    // 本体
    translate([0, 0, 0])
    linear_extrude(height=HOOK_THICK){
        square([SPF1x4_W, HOOK_D]);
    }

    translate([SPF1x4_W, 0, 0])
    linear_extrude(height=SPF1x4_H+HOOK_THICK*2){
        square([HOOK_THICK, HOOK_D]);
    }
    translate([-HOOK_THICK, 0, 0])
    linear_extrude(height=SPF1x4_H+HOOK_THICK*2){
        square([HOOK_THICK, HOOK_D]);
    }

    // ツメ部分
    translate([SPF1x4_W-CROW_SIZE, 0, SPF1x4_H+HOOK_THICK])
    linear_extrude(height=HOOK_THICK){
        square([CROW_SIZE, HOOK_D]);
    }

    translate([0, 0, SPF1x4_H+HOOK_THICK])
    linear_extrude(height=HOOK_THICK){
        square([CROW_SIZE, HOOK_D]);
    }

    // フック部分
    translate([-(HOOK_SIZE+HOOK_THICK), 0, SPF1x4_H+HOOK_THICK])
    linear_extrude(height=HOOK_THICK){
        square([HOOK_SIZE+HOOK_THICK, HOOK_D]);
    }
    translate([-(HOOK_SIZE+HOOK_THICK), 0, SPF1x4_H+HOOK_THICK-HOOK_SIZE])
    linear_extrude(height=HOOK_SIZE){
        square([HOOK_THICK, HOOK_D]);
    }
}

・OpenSCADの画面

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

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

関連情報 ・そのほかの3Dプリンターで作成したモデルについては、以下のページを参照してください。
OpenSCADまとめ

2021年9月4日土曜日

OpenSCADとUltimaker Curaを使用して、M3ナットがはめることのできるアームプレートを作る

OpenSCADとUltimaker Curaを使用して、M3ナットがはめることのできるアームプレートを作るには以下の手順を実行します。ナット用の穴は3つついています。5mm単位となっているので、TAMIYAのユニバーサルプレートにつけることができます。

〇M3ナットがはめることのできるアームプレート(白色)とTAMIYAのユニバーサルプレート(灰色)の写真

〇アームプレートにM3ナットをはめた写真
※左側の穴にM3ナットをはめています。

作成手順 1. OpenSCADで以下のコードを実行して形状を調整し、STLファイルにエクスポートします。
穴の半径など3Dプリンタや設定によって微調整してください。

・M3ナットがはめることのできるアームプレートのソースコード
// アームの長さと幅
HOLE_UNIT=5;
HOLE_NUM_W=10; // 偶数指定
PLATE_W=HOLE_UNIT*10;
PLATE_D=10;
PLATE_H=4;

// M3ナット
// 対角距離
MARGIN=0.1;
NUT_DIST=(6.4+MARGIN)/2;
NUM_POINTS=6;
NUT_HEIGHT=2.4;
ANGLE = 360/NUM_POINTS/2;
M3_R=(3+MARGIN)/2;

difference(){
    translate([-PLATE_W/2, -PLATE_D/2, 0])
    linear_extrude(height=PLATE_H){
            square([PLATE_W, PLATE_D]);
    }
    union()
    {
        // 六角ナット(中央)
        translate([0, 0, PLATE_H-NUT_HEIGHT])
        linear_extrude(height=NUT_HEIGHT){
            for( pt = [0 : NUM_POINTS-1]) {
                l_px = cos(pt*ANGLE*2)*NUT_DIST;
                l_py = sin(pt*ANGLE*2)*NUT_DIST;
                l_px2 = cos(pt*ANGLE*2+ANGLE*2)*NUT_DIST;
                l_py2 = sin(pt*ANGLE*2+ANGLE*2)*NUT_DIST;
                polygon(points=[[0, 0], [l_px, l_py], [l_px2,  l_py2]], paths  = [[0, 1, 2]]);
            }
        }
        // M3(中央)
        translate([0, 0, 0])
        linear_extrude(height=PLATE_H){
            circle(M3_R, $fn=50);
        }
        // 六角ナット(左)
        translate([-HOLE_UNIT*(HOLE_NUM_W/2-1), 0, PLATE_H-NUT_HEIGHT])
        linear_extrude(height=NUT_HEIGHT){
            for( pt = [0 : NUM_POINTS-1]) {
                l_px = cos(pt*ANGLE*2)*NUT_DIST;
                l_py = sin(pt*ANGLE*2)*NUT_DIST;
                l_px2 = cos(pt*ANGLE*2+ANGLE*2)*NUT_DIST;
                l_py2 = sin(pt*ANGLE*2+ANGLE*2)*NUT_DIST;
                polygon(points=[[0, 0], [l_px, l_py], [l_px2,  l_py2]], paths  = [[0, 1, 2]]);
            }
        }
        // M3(左)
        translate([-HOLE_UNIT*(HOLE_NUM_W/2-1), 0, 0])
        linear_extrude(height=PLATE_H){
            circle(M3_R, $fn=50);
        }
        // 六角ナット(右)
        translate([HOLE_UNIT*(HOLE_NUM_W/2-1), 0, PLATE_H-NUT_HEIGHT])
        linear_extrude(height=NUT_HEIGHT){
            for( pt = [0 : NUM_POINTS-1]) {
                l_px = cos(pt*ANGLE*2)*NUT_DIST;
                l_py = sin(pt*ANGLE*2)*NUT_DIST;
                l_px2 = cos(pt*ANGLE*2+ANGLE*2)*NUT_DIST;
                l_py2 = sin(pt*ANGLE*2+ANGLE*2)*NUT_DIST;
                polygon(points=[[0, 0], [l_px, l_py], [l_px2,  l_py2]], paths  = [[0, 1, 2]]);
            }
        }
        // M3(右)
        translate([HOLE_UNIT*(HOLE_NUM_W/2-1), 0, 0])
        linear_extrude(height=PLATE_H){
            circle(M3_R, $fn=50);
        }

    }
}

・OpenSCADの画面

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

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

関連情報 ・そのほかの3Dプリンターで作成したモデルについては、以下のページを参照してください。
OpenSCADまとめ

2021年9月3日金曜日

OpenSCADとUltimaker Curaを使用して、スタック可能な箱を作る

OpenSCADとUltimaker Curaを使用して、スタック可能な箱を作るには以下の手順を実行します。大きさや高さなどをパラメータで変更できます。

〇スタック可能な箱の写真

作成手順 1. OpenSCADで以下のコードを実行して形状を調整し、STLファイルにエクスポートします。

・箱本体部分
箱の幅: BOX_Wパラメータを指定します。単位はmmで、100で10cmになります。
箱の奥行: BOX_Dパラメータを指定します。
箱の高さ: BOX_Hパラメータを指定します。
取っ手の穴の幅 : HANDLE_Wパラメータを指定します。
取っ手の穴の高さ : HANDLE_Hパラメータを指定します。

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);
    }
}

// 箱のサイズ
BOX_W=100;
BOX_D=100;
BOX_H=50;
BOX_R=3;
BOTTOM_THICK=1;
WALL_THICK=2;
// 取っ手のサイズ
HANDLE_W=40;
HANDLE_H=15;

difference(){
    union(){
        roundrect(0, 0, 0, BOX_W, BOX_D, BOTTOM_THICK, BOX_R);
        roundrect(0, 0, BOTTOM_THICK, BOX_W, BOX_D, BOX_H, BOX_R);
    }
    union(){
        roundrect(WALL_THICK, WALL_THICK, BOTTOM_THICK, BOX_W-WALL_THICK*2, BOX_D-WALL_THICK*2, BOX_H, BOX_R);
        rotate([90, 0, 0])
        translate([BOX_W/2-HANDLE_W/2, BOTTOM_THICK+BOX_H-HANDLE_H, -WALL_THICK])
        linear_extrude(height=WALL_THICK){
            square([HANDLE_W, HANDLE_H]);
        }

    }
}    

・OpenSCADの画面(箱本体部分)

・底の部分
BOX_WとBOX_Dは箱本体部分と合わせてください。

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);
    }
}
// 底面のサイズ
BOX_W=100;
BOX_D=100;
BOX_R=3;
BOTTOM_THICK=1;
WALL_THICK=2;
WALL_MARGIN=0.2;

difference(){
    union(){
        roundrect(0, 0, 0, BOX_W, BOX_D, BOTTOM_THICK, BOX_R);
        roundrect(WALL_THICK+WALL_MARGIN, WALL_THICK+WALL_MARGIN, BOTTOM_THICK, BOX_W-(WALL_THICK+WALL_MARGIN)*2, BOX_D-(WALL_THICK+WALL_MARGIN)*2, BOTTOM_THICK, BOX_R);
    }
    roundrect(WALL_THICK*2, WALL_THICK*2, BOTTOM_THICK, BOX_W-WALL_THICK*4, BOX_D-WALL_THICK*4, BOTTOM_THICK, BOX_R);
}

・OpenSCADの画面(底の部分)

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

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

4. 底の部分と箱本体部分の接着
箱の裏側と底の部分の平らな部分をタミヤセメントなどの接着剤で接着します。接着後、しばらく重しなどを載せておきます。

関連情報 ・OpenSCADまとめ

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電池保管ケースを作成する

Лучший частный хостинг