// Arduino基板の配置はこちらを参考にしました。(どうしてmmじゃなくてmilで書くんだ。。)
// https://www.wayneandlayne.com/blog/2010/12/19/nice-drawings-of-the-arduino-uno-and-mega-2560/
var iw = 69 // 幅[mm][69,200]
, ih = 54 // 高さ[mm][54, 200]
, id = 13 // 奥行[mm][13, 200]
, dw = 7
, dh = 2
, w = iw + dh*2 // + dh*2 で板厚を考慮
, h = ih + dh*2
, d = id + dh*2
, f3js = require('f3js')
, c = f3js.createContainer()
, p = c.drawJointRectangle(0, 0, w, h, dw, dh);
// 板の左上から1cm余白あける
c.x = 10;
c.y = 10;
// 基板を固定する穴4つ
c.drawCircle(iw - 15.234 + dh, 2.539 + dh, 1.6);
c.c(iw - 13.965 + dh, 50.761 + dh, 1.6); // shorthand for drawCircle
c.c(iw - 65.995 + dh, 17.774 + dh, 1.6);
var circle = c.c(); // 引数なしで後からパラメタを指定してもよい
circle.x = iw - 65.995 + dh;
circle.y = 45.683 + dh;
circle.r = 1.6;
// 基板の脇に立つ4枚
var planes = p.extrude(d);
planes[0].x = w;
planes[0].y = 0;
planes[1].x = w;
planes[1].y = d * 2;
planes[2].x = w;
planes[2].y = d;
planes[3].x = w;
planes[3].y = d * 3;
for (var i = 0; i < planes.length - 1; i ++) c.add(planes[i]);
// 脇からUSBケーブルと電源ケーブルを通す穴2箇所
var c2 = c.cc(); // shorthand for createContainer
c2.x = planes[1].x + dh;
c2.y = planes[1].y;
c2.rc(8.525, -dh, 13.43, 12);
c2.rc(39.775, -dh, 10.9, 12);
// 基板の上にかぶさる1枚
var c3 = c.cc();
c3.y = h;
c3.add(planes[4]);
// ピンヘッダを通す穴の並び4箇所
var c4 = c3.cc();
c4.x = dh;
c4.y = dh;
c4.drawPinLine(iw - 18.80, ih - 2.54, iw - 41.65, ih - 2.54);
c4.pln(iw - 45.73, ih - 2.54, iw - 63.50, ih - 2.54); // shorthand for drawPinLine
c4.pln(iw - 27.95, ih - 50.8, iw - 45.73, ih - 50.8);
var pinLine = c4.pln(); // 引数なしで後からパラメタを指定してもよい
pinLine.x = iw - 50.8;
pinLine.y = ih -50.8;
pinLine.ex = iw - 63.49;
pinLine.ey = ih - 50.8;
// ピンヘッダ6本ぶんのまとまりを通す大きめの穴1箇所
c4.rc(iw - 61, ih - 21, -7, -9);
// USBアダプタと電源アダプタを通す穴2箇所
if (id <= 13) {
c4.rc(iw + 2.905, ih - 39.775, -15.34, -10.9);
} else {
c4.rc(iw + dh, ih - 39.775, -dh -12.435, -10.9);
}
if (id <= 20) {
c4.rc(iw + 6.35, ih - 8.525, -16.875, -13.43);
} else {
c4.rc(iw + dh, ih - 8.525, -dh -10.525, -13.43);
}