-
Notifications
You must be signed in to change notification settings - Fork 1
/
ISP1507_writer_board_case.scad
92 lines (83 loc) · 2.37 KB
/
ISP1507_writer_board_case.scad
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
$fn = 63;
// クリアランス
C = 0.5;
// 壁の厚さ、高さ
T = 2;
H = 6;
// 基板サイズ
board_w = 31+C*2;
board_h = 49+C*2;
// 基板固定ピン配置
module pin_place() {
// 基板固定用ピン半径
pin_dia = 1.3;
pin_height = 4;
pin_distance = 3; // 壁からピンの中心までの距離
// 基板固定用ピン部品
module board_pin() {
cylinder(h = 2, r = 2.5);
difference() {
cylinder(h = pin_height, r = pin_dia);
cube([pin_dia,0.1,pin_height]); // スリットを入れておく
}
}
translate([0,0,T]) {
translate([pin_distance+C,pin_distance+C,0]) board_pin();
translate([pin_distance+C,board_h-pin_distance-C,0]) board_pin();
translate([board_w-pin_distance-C,pin_distance+C,0]) board_pin();
translate([board_w-pin_distance-C,board_h-pin_distance-C,0]) rotate([0,0,-180]) board_pin(); }
}
// X方向壁
module X_wall(x,y,z) {
translate([x,y,z]) {
difference() {
cube([board_w+T*2,T,H]);
translate([(board_w+T*2)/2-(board_w)/4,-0.002,T]) {
scale([1,1.004,1.001]) cube([(board_w)/2,T,H-T]); // 少し膨らませてレンダリングをきれいにする
}
}
}
}
// Y方向壁
module Y_wall(x,y,z) {
translate([x,y,z]) {
difference() {
cube([T,board_h+T*2,H]);
translate([-0.002,(board_h+T*2)/2-(board_h)/4,T]) {
scale([1.004,1,1.001]) cube([T,board_h/2,H-T]); // 少し膨らませてレンダリングをきれいにする
}
}
}
}
// 角丸モジュール
module rCutOut(radius=T, height=1, rotate=0) {
D = 0.1;
h = height + D * 2;
rotate([0, 0, 180 + rotate])
translate([-radius, -radius, 0])
difference() {
translate([0, 0, -D]) cube([radius + D, radius + D, h]);
translate([0, 0, -D * 2]) cylinder(r=T, h=h + D * 2, $fn=60);
}
}
module base_body() {
pin_place();
difference() {
union() {
// 底面
translate([0,0,0]) {
cube([board_w,board_h,T]);
}
X_wall(-T,-T,0); // 手前壁
X_wall(-T,board_h,0); // 奥壁
Y_wall(-T,-T,0); // 左手壁
Y_wall(board_w,-T,0); // 右手壁
}
// 角丸カット
translate([-T,-T,0]) rCutOut(T,H,0);
translate([board_w+T,-T,0]) rCutOut(T,H,90);
translate([board_w+T,board_h+T,0]) rCutOut(T,H,180);
translate([-T,board_h+T,0]) rCutOut(T,H,270);
}
}
base_body();