@jwc/jscad-raspberrypi 3.0.3 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/examples/bplus.jscad +51 -22
- package/dist/examples/bplus3.jscad +51 -22
- package/dist/examples/camera-module-v1.jscad +51 -22
- package/dist/examples/camera-module-v2.jscad +51 -22
- package/dist/examples/example.jscad +51 -22
- package/dist/examples/hat-standoff.jscad +51 -22
- package/dist/examples/hat.jscad +51 -22
- package/dist/examples/pi-tft22.jscad +51 -22
- package/dist/examples/pi-tft24.jscad +51 -22
- package/dist/examples/spacer.jscad +51 -22
- package/dist/index.js +65 -28
- package/dist/v1compat.js +65 -28
- package/package.json +1 -1
- package/src/bplus.js +388 -188
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* @jwc/jscad-raspberrypi version 3.0.
|
|
2
|
+
* @jwc/jscad-raspberrypi version 3.0.3
|
|
3
3
|
* https://johnwebbcole.gitlab.io/jscad-raspberrypi
|
|
4
4
|
*/
|
|
5
5
|
var jscadRPi = (function (exports, jscadUtils, jsCadCSG, scadApi) {
|
|
@@ -117,6 +117,66 @@ var jscadRPi = (function (exports, jscadUtils, jsCadCSG, scadApi) {
|
|
|
117
117
|
};
|
|
118
118
|
|
|
119
119
|
var debug$1 = jscadUtils.Debug('jscadRPi:BPlus');
|
|
120
|
+
|
|
121
|
+
function pi4(group, clearance, mb) {
|
|
122
|
+
/**
|
|
123
|
+
* Model 4
|
|
124
|
+
*/
|
|
125
|
+
group.add(RightSide(jscadUtils.parts.Cube([21.5, 16.5, 13.5]).color('lightgray'), mb).translate([2, 0, 0]).midlineTo('y', 45.75), 'ethernet');
|
|
126
|
+
group.add(jscadUtils.parts.Cube([clearance, 16.5, 13.5]).align(group.parts.ethernet, 'yz').snap(group.parts.ethernet, 'x', 'outside-').color('red'), 'clearance-ethernet', true, 'clearance');
|
|
127
|
+
var usb = jscadUtils.Group();
|
|
128
|
+
usb.add(jscadUtils.parts.Cube([17, 13.1, 15]).snap(group.parts.ethernet, 'x', 'inside+', -1).snap(mb, 'z', 'outside-', 1.5).color('lightgray'), 'body');
|
|
129
|
+
usb.add(jscadUtils.parts.Cube([1, 15, 16]).snap(usb.parts.body, 'x', 'outside-').align(usb.parts.body, 'yz').color('lightgray'), 'flange');
|
|
130
|
+
group.add(usb.clone() // .translate(usbTranslation)
|
|
131
|
+
.translate(jscadUtils.util.calcmidlineTo(usb.parts.body, 'y', 27)), 'usb1', false, 'usb1');
|
|
132
|
+
group.add(jscadUtils.parts.Cube([clearance, 15, 16]).align(group.parts.usb1, 'yz').snap(group.parts.usb1, 'x', 'outside-').color('red'), 'clearance-usb1', true);
|
|
133
|
+
group.add(usb.clone() // .translate(usbTranslation)
|
|
134
|
+
.translate(jscadUtils.util.calcmidlineTo(usb.parts.body, 'y', 9)), 'usb2', false, 'usb2');
|
|
135
|
+
group.add(jscadUtils.parts.Cube([clearance, 15, 16]).align(group.parts.usb2, 'yz').snap(group.parts.usb2, 'x', 'outside-').color('red'), 'clearance-usb2', true);
|
|
136
|
+
group.add(jscadUtils.parts.Cube([10, 7.5, 3.2]).snap(usb.parts.body, 'y', 'inside-', -1).snap(mb, 'z', 'outside-').midlineTo('x', 3.5 + 7.7).color('lightgray'), 'usbc');
|
|
137
|
+
group.add(jscadUtils.parts.Cube([10, clearance, 3.2]).align(group.parts.usbc, 'xz').snap(group.parts.usbc, 'y', 'outside+').color('red'), 'clearance-usbc', true);
|
|
138
|
+
group.add(jscadUtils.parts.Cube([7, 7.5, 3]).snap(usb.parts.body, 'y', 'inside-', -1).snap(mb, 'z', 'outside-').midlineTo('x', 3.5 + 7.7 + 14.8).color('lightgray'), 'hdmi1');
|
|
139
|
+
group.add(jscadUtils.parts.Cube([7, clearance, 3]).align(group.parts.hdmi1, 'xz').snap(group.parts.hdmi1, 'y', 'outside+').color('red'), 'clearance-hdmi1', true);
|
|
140
|
+
group.add(jscadUtils.parts.Cube([7, 7.5, 3]).snap(usb.parts.body, 'y', 'inside-', -1).snap(mb, 'z', 'outside-').midlineTo('x', 3.5 + 7.7 + 14.8 + 13.5).color('lightgray'), 'hdmi2');
|
|
141
|
+
group.add(jscadUtils.parts.Cube([7, clearance, 3]).align(group.parts.hdmi2, 'xz').snap(group.parts.hdmi2, 'y', 'outside+').color('red'), 'clearance-hdmi2', true);
|
|
142
|
+
group.add(AvJack().snap('block', mb, 'z', 'outside-').midlineTo('block', 'x', 3.5 + 7.7 + 14.8 + 13.5 + 7 + 7.5), 'avjack', false, 'avjack');
|
|
143
|
+
group.add(jscadUtils.parts.Cylinder(6, clearance).rotateX(90).align(group.parts.avjack, 'xz').snap(group.parts.avjack, 'y', 'outside+').color('red'), 'clearance-avjack', true);
|
|
144
|
+
group.add(Ribbon().snap(mb, 'z', 'outside-').midlineTo('x', 3.5 + 7.7 + 14.8 + 13.5 + 7), 'camera');
|
|
145
|
+
group.add(Ribbon().snap(mb, 'z', 'outside-').midlineTo('x', 4).midlineTo('y', 24.5 + 3.5), 'display');
|
|
146
|
+
group.add(Gpio().snap(mb, 'z', 'outside-').midlineTo('x', 29 + 3.5).midlineTo('y', 56 - 3.5), 'gpio');
|
|
147
|
+
group.add(BoardLed().snap(mb, 'z', 'outside-').midlineTo('x', 1.1).midlineTo('y', 8).color('lightgreen'), 'activityled');
|
|
148
|
+
group.add(BoardLed().snap(mb, 'z', 'outside-').midlineTo('x', 1.1).midlineTo('y', 12).color('red'), 'powerled');
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
function pi5(group, clearance, mb) {
|
|
152
|
+
/**
|
|
153
|
+
* Model 5
|
|
154
|
+
*/
|
|
155
|
+
group.add(RightSide(jscadUtils.parts.Cube([21.5, 16.5, 13.5]).color('lightgray'), mb).translate([2, 0, 0]).midlineTo('y', 10.2), 'ethernet');
|
|
156
|
+
group.add(jscadUtils.parts.Cube([clearance, 16.5, 13.5]).align(group.parts.ethernet, 'yz').snap(group.parts.ethernet, 'x', 'outside-').color('red'), 'clearance-ethernet', true, 'clearance');
|
|
157
|
+
var usb = jscadUtils.Group();
|
|
158
|
+
usb.add(jscadUtils.parts.Cube([17, 13.1, 15]).snap(group.parts.ethernet, 'x', 'inside+', -1).snap(mb, 'z', 'outside-', 1.5).color('lightgray'), 'body');
|
|
159
|
+
usb.add(jscadUtils.parts.Cube([1, 15, 16]).snap(usb.parts.body, 'x', 'outside-').align(usb.parts.body, 'yz').color('lightgray'), 'flange');
|
|
160
|
+
group.add(usb.clone() // .translate(usbTranslation)
|
|
161
|
+
.translate(jscadUtils.util.calcmidlineTo(usb.parts.body, 'y', 29.7)), 'usb1', false, 'usb1');
|
|
162
|
+
group.add(jscadUtils.parts.Cube([clearance, 15, 16]).align(group.parts.usb1, 'yz').snap(group.parts.usb1, 'x', 'outside-').color('red'), 'clearance-usb1', true);
|
|
163
|
+
group.add(usb.clone() // .translate(usbTranslation)
|
|
164
|
+
.translate(jscadUtils.util.calcmidlineTo(usb.parts.body, 'y', 47)), 'usb2', false, 'usb2');
|
|
165
|
+
group.add(jscadUtils.parts.Cube([clearance, 15, 16]).align(group.parts.usb2, 'yz').snap(group.parts.usb2, 'x', 'outside-').color('red'), 'clearance-usb2', true);
|
|
166
|
+
group.add(jscadUtils.parts.Cube([10, 7.5, 3.2]).snap(usb.parts.body, 'y', 'inside-', -1).snap(mb, 'z', 'outside-').midlineTo('x', 3.5 + 7.7).color('lightgray'), 'usbc');
|
|
167
|
+
group.add(jscadUtils.parts.Cube([10, clearance, 3.2]).align(group.parts.usbc, 'xz').snap(group.parts.usbc, 'y', 'outside+').color('red'), 'clearance-usbc', true);
|
|
168
|
+
group.add(jscadUtils.parts.Cube([7, 7.5, 3]).snap(usb.parts.body, 'y', 'inside-', -1).snap(mb, 'z', 'outside-').midlineTo('x', 3.5 + 7.7 + 14.8).color('lightgray'), 'hdmi1');
|
|
169
|
+
group.add(jscadUtils.parts.Cube([7, clearance, 3]).align(group.parts.hdmi1, 'xz').snap(group.parts.hdmi1, 'y', 'outside+').color('red'), 'clearance-hdmi1', true);
|
|
170
|
+
group.add(jscadUtils.parts.Cube([7, 7.5, 3]).snap(usb.parts.body, 'y', 'inside-', -1).snap(mb, 'z', 'outside-').midlineTo('x', 3.5 + 7.7 + 14.8 + 13.5).color('lightgray'), 'hdmi2');
|
|
171
|
+
group.add(jscadUtils.parts.Cube([7, clearance, 3]).align(group.parts.hdmi2, 'xz').snap(group.parts.hdmi2, 'y', 'outside+').color('red'), 'clearance-hdmi2', true);
|
|
172
|
+
group.add(AvJack().snap('block', mb, 'z', 'outside-').midlineTo('block', 'x', 3.5 + 7.7 + 14.8 + 13.5 + 7 + 7.5), 'avjack', false, 'avjack');
|
|
173
|
+
group.add(jscadUtils.parts.Cylinder(6, clearance).rotateX(90).align(group.parts.avjack, 'xz').snap(group.parts.avjack, 'y', 'outside+').color('red'), 'clearance-avjack', true);
|
|
174
|
+
group.add(Ribbon().snap(mb, 'z', 'outside-').midlineTo('x', 3.5 + 7.7 + 14.8 + 13.5 + 7), 'camera');
|
|
175
|
+
group.add(Ribbon().snap(mb, 'z', 'outside-').midlineTo('x', 4).midlineTo('y', 24.5 + 3.5), 'display');
|
|
176
|
+
group.add(Gpio().snap(mb, 'z', 'outside-').midlineTo('x', 29 + 3.5).midlineTo('y', 56 - 3.5), 'gpio');
|
|
177
|
+
group.add(BoardLed().snap(mb, 'z', 'outside-').midlineTo('x', 1.1).midlineTo('y', 8).color('lightgreen'), 'activityled');
|
|
178
|
+
group.add(BoardLed().snap(mb, 'z', 'outside-').midlineTo('x', 1.1).midlineTo('y', 12).color('red'), 'powerled');
|
|
179
|
+
}
|
|
120
180
|
/**
|
|
121
181
|
* Returns a complete RaspberryPi B Plus model.
|
|
122
182
|
* 
|
|
@@ -151,6 +211,7 @@ var jscadRPi = (function (exports, jscadUtils, jsCadCSG, scadApi) {
|
|
|
151
211
|
// endinject
|
|
152
212
|
*/
|
|
153
213
|
|
|
214
|
+
|
|
154
215
|
function BPlus() {
|
|
155
216
|
var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 2;
|
|
156
217
|
var options = arguments.length > 1 ? arguments[1] : undefined;
|
|
@@ -191,34 +252,10 @@ var jscadRPi = (function (exports, jscadUtils, jsCadCSG, scadApi) {
|
|
|
191
252
|
group.add(BoardLed().snap(mb, 'z', 'outside-').translate([1, 43.5, 0]).color('lightgreen'), 'activityled');
|
|
192
253
|
group.add(BoardLed().snap(mb, 'z', 'outside-').translate([1, 46, 0]).color('red'), 'powerled');
|
|
193
254
|
}
|
|
255
|
+
} else if (model == 4) {
|
|
256
|
+
pi4(group, clearance, mb);
|
|
194
257
|
} else {
|
|
195
|
-
|
|
196
|
-
* Model 4
|
|
197
|
-
*/
|
|
198
|
-
group.add(RightSide(jscadUtils.parts.Cube([21.5, 16.5, 13.5]).color('lightgray'), mb).translate([1, 0, 0]).midlineTo('y', 45.75), 'ethernet');
|
|
199
|
-
group.add(jscadUtils.parts.Cube([clearance, 16.5, 13.5]).align(group.parts.ethernet, 'yz').snap(group.parts.ethernet, 'x', 'outside-').color('red'), 'clearance-ethernet', true, 'clearance');
|
|
200
|
-
var usb = jscadUtils.Group();
|
|
201
|
-
usb.add(jscadUtils.parts.Cube([17, 13.1, 15]).snap(group.parts.ethernet, 'x', 'inside+', -1).snap(mb, 'z', 'outside-').color('lightgray'), 'body');
|
|
202
|
-
usb.add(jscadUtils.parts.Cube([1, 15, 16]).snap(usb.parts.body, 'x', 'outside-').align(usb.parts.body, 'yz').color('lightgray'), 'flange');
|
|
203
|
-
group.add(usb.clone() // .translate(usbTranslation)
|
|
204
|
-
.translate(jscadUtils.util.calcmidlineTo(usb.parts.body, 'y', 27)), 'usb1', false, 'usb1');
|
|
205
|
-
group.add(jscadUtils.parts.Cube([clearance, 15, 16]).align(group.parts.usb1, 'yz').snap(group.parts.usb1, 'x', 'outside-').color('red'), 'clearance-usb1', true);
|
|
206
|
-
group.add(usb.clone() // .translate(usbTranslation)
|
|
207
|
-
.translate(jscadUtils.util.calcmidlineTo(usb.parts.body, 'y', 9)), 'usb2', false, 'usb2');
|
|
208
|
-
group.add(jscadUtils.parts.Cube([clearance, 15, 16]).align(group.parts.usb2, 'yz').snap(group.parts.usb2, 'x', 'outside-').color('red'), 'clearance-usb2', true);
|
|
209
|
-
group.add(jscadUtils.parts.Cube([10, 7.5, 3.2]).snap(usb.parts.body, 'y', 'inside-', -1).snap(mb, 'z', 'outside-').midlineTo('x', 3.5 + 7.7).color('lightgray'), 'usbc');
|
|
210
|
-
group.add(jscadUtils.parts.Cube([10, clearance, 3.2]).align(group.parts.usbc, 'xz').snap(group.parts.usbc, 'y', 'outside+').color('red'), 'clearance-usbc', true);
|
|
211
|
-
group.add(jscadUtils.parts.Cube([7, 7.5, 3]).snap(usb.parts.body, 'y', 'inside-', -1).snap(mb, 'z', 'outside-').midlineTo('x', 3.5 + 7.7 + 14.8).color('lightgray'), 'hdmi1');
|
|
212
|
-
group.add(jscadUtils.parts.Cube([7, clearance, 3]).align(group.parts.hdmi1, 'xz').snap(group.parts.hdmi1, 'y', 'outside+').color('red'), 'clearance-hdmi1', true);
|
|
213
|
-
group.add(jscadUtils.parts.Cube([7, 7.5, 3]).snap(usb.parts.body, 'y', 'inside-', -1).snap(mb, 'z', 'outside-').midlineTo('x', 3.5 + 7.7 + 14.8 + 13.5).color('lightgray'), 'hdmi2');
|
|
214
|
-
group.add(jscadUtils.parts.Cube([7, clearance, 3]).align(group.parts.hdmi2, 'xz').snap(group.parts.hdmi2, 'y', 'outside+').color('red'), 'clearance-hdmi2', true);
|
|
215
|
-
group.add(AvJack().snap('block', mb, 'z', 'outside-').midlineTo('block', 'x', 3.5 + 7.7 + 14.8 + 13.5 + 7 + 7.5), 'avjack', false, 'avjack');
|
|
216
|
-
group.add(jscadUtils.parts.Cylinder(6, clearance).rotateX(90).align(group.parts.avjack, 'xz').snap(group.parts.avjack, 'y', 'outside+').color('red'), 'clearance-avjack', true);
|
|
217
|
-
group.add(Ribbon().snap(mb, 'z', 'outside-').midlineTo('x', 3.5 + 7.7 + 14.8 + 13.5 + 7), 'camera');
|
|
218
|
-
group.add(Ribbon().snap(mb, 'z', 'outside-').midlineTo('x', 4).midlineTo('y', 24.5 + 3.5), 'display');
|
|
219
|
-
group.add(Gpio().snap(mb, 'z', 'outside-').midlineTo('x', 29 + 3.5).midlineTo('y', 56 - 3.5), 'gpio');
|
|
220
|
-
group.add(BoardLed().snap(mb, 'z', 'outside-').midlineTo('x', 1.1).midlineTo('y', 8).color('lightgreen'), 'activityled');
|
|
221
|
-
group.add(BoardLed().snap(mb, 'z', 'outside-').midlineTo('x', 1.1).midlineTo('y', 12).color('red'), 'powerled');
|
|
258
|
+
pi5(group, clearance, mb);
|
|
222
259
|
}
|
|
223
260
|
|
|
224
261
|
group.add(jscadUtils.parts.Cube([15.2, 12, 1.5]).snap(mb, 'z', 'outside+').midlineTo('y', 28).translate([-2.5, 0, 0]).color('silver'), 'microsd');
|
package/dist/v1compat.js
CHANGED
|
@@ -35,7 +35,7 @@ function initJscadRPi() {
|
|
|
35
35
|
// include:compat
|
|
36
36
|
// ../dist/index.js
|
|
37
37
|
/*
|
|
38
|
-
* @jwc/jscad-raspberrypi version 3.0.
|
|
38
|
+
* @jwc/jscad-raspberrypi version 3.0.3
|
|
39
39
|
* https://johnwebbcole.gitlab.io/jscad-raspberrypi
|
|
40
40
|
*/
|
|
41
41
|
var jscadRPi = (function (exports, jscadUtils, jsCadCSG, scadApi) {
|
|
@@ -153,6 +153,66 @@ var jscadRPi = (function (exports, jscadUtils, jsCadCSG, scadApi) {
|
|
|
153
153
|
};
|
|
154
154
|
|
|
155
155
|
var debug$1 = jscadUtils.Debug('jscadRPi:BPlus');
|
|
156
|
+
|
|
157
|
+
function pi4(group, clearance, mb) {
|
|
158
|
+
/**
|
|
159
|
+
* Model 4
|
|
160
|
+
*/
|
|
161
|
+
group.add(RightSide(jscadUtils.parts.Cube([21.5, 16.5, 13.5]).color('lightgray'), mb).translate([2, 0, 0]).midlineTo('y', 45.75), 'ethernet');
|
|
162
|
+
group.add(jscadUtils.parts.Cube([clearance, 16.5, 13.5]).align(group.parts.ethernet, 'yz').snap(group.parts.ethernet, 'x', 'outside-').color('red'), 'clearance-ethernet', true, 'clearance');
|
|
163
|
+
var usb = jscadUtils.Group();
|
|
164
|
+
usb.add(jscadUtils.parts.Cube([17, 13.1, 15]).snap(group.parts.ethernet, 'x', 'inside+', -1).snap(mb, 'z', 'outside-', 1.5).color('lightgray'), 'body');
|
|
165
|
+
usb.add(jscadUtils.parts.Cube([1, 15, 16]).snap(usb.parts.body, 'x', 'outside-').align(usb.parts.body, 'yz').color('lightgray'), 'flange');
|
|
166
|
+
group.add(usb.clone() // .translate(usbTranslation)
|
|
167
|
+
.translate(jscadUtils.util.calcmidlineTo(usb.parts.body, 'y', 27)), 'usb1', false, 'usb1');
|
|
168
|
+
group.add(jscadUtils.parts.Cube([clearance, 15, 16]).align(group.parts.usb1, 'yz').snap(group.parts.usb1, 'x', 'outside-').color('red'), 'clearance-usb1', true);
|
|
169
|
+
group.add(usb.clone() // .translate(usbTranslation)
|
|
170
|
+
.translate(jscadUtils.util.calcmidlineTo(usb.parts.body, 'y', 9)), 'usb2', false, 'usb2');
|
|
171
|
+
group.add(jscadUtils.parts.Cube([clearance, 15, 16]).align(group.parts.usb2, 'yz').snap(group.parts.usb2, 'x', 'outside-').color('red'), 'clearance-usb2', true);
|
|
172
|
+
group.add(jscadUtils.parts.Cube([10, 7.5, 3.2]).snap(usb.parts.body, 'y', 'inside-', -1).snap(mb, 'z', 'outside-').midlineTo('x', 3.5 + 7.7).color('lightgray'), 'usbc');
|
|
173
|
+
group.add(jscadUtils.parts.Cube([10, clearance, 3.2]).align(group.parts.usbc, 'xz').snap(group.parts.usbc, 'y', 'outside+').color('red'), 'clearance-usbc', true);
|
|
174
|
+
group.add(jscadUtils.parts.Cube([7, 7.5, 3]).snap(usb.parts.body, 'y', 'inside-', -1).snap(mb, 'z', 'outside-').midlineTo('x', 3.5 + 7.7 + 14.8).color('lightgray'), 'hdmi1');
|
|
175
|
+
group.add(jscadUtils.parts.Cube([7, clearance, 3]).align(group.parts.hdmi1, 'xz').snap(group.parts.hdmi1, 'y', 'outside+').color('red'), 'clearance-hdmi1', true);
|
|
176
|
+
group.add(jscadUtils.parts.Cube([7, 7.5, 3]).snap(usb.parts.body, 'y', 'inside-', -1).snap(mb, 'z', 'outside-').midlineTo('x', 3.5 + 7.7 + 14.8 + 13.5).color('lightgray'), 'hdmi2');
|
|
177
|
+
group.add(jscadUtils.parts.Cube([7, clearance, 3]).align(group.parts.hdmi2, 'xz').snap(group.parts.hdmi2, 'y', 'outside+').color('red'), 'clearance-hdmi2', true);
|
|
178
|
+
group.add(AvJack().snap('block', mb, 'z', 'outside-').midlineTo('block', 'x', 3.5 + 7.7 + 14.8 + 13.5 + 7 + 7.5), 'avjack', false, 'avjack');
|
|
179
|
+
group.add(jscadUtils.parts.Cylinder(6, clearance).rotateX(90).align(group.parts.avjack, 'xz').snap(group.parts.avjack, 'y', 'outside+').color('red'), 'clearance-avjack', true);
|
|
180
|
+
group.add(Ribbon().snap(mb, 'z', 'outside-').midlineTo('x', 3.5 + 7.7 + 14.8 + 13.5 + 7), 'camera');
|
|
181
|
+
group.add(Ribbon().snap(mb, 'z', 'outside-').midlineTo('x', 4).midlineTo('y', 24.5 + 3.5), 'display');
|
|
182
|
+
group.add(Gpio().snap(mb, 'z', 'outside-').midlineTo('x', 29 + 3.5).midlineTo('y', 56 - 3.5), 'gpio');
|
|
183
|
+
group.add(BoardLed().snap(mb, 'z', 'outside-').midlineTo('x', 1.1).midlineTo('y', 8).color('lightgreen'), 'activityled');
|
|
184
|
+
group.add(BoardLed().snap(mb, 'z', 'outside-').midlineTo('x', 1.1).midlineTo('y', 12).color('red'), 'powerled');
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
function pi5(group, clearance, mb) {
|
|
188
|
+
/**
|
|
189
|
+
* Model 5
|
|
190
|
+
*/
|
|
191
|
+
group.add(RightSide(jscadUtils.parts.Cube([21.5, 16.5, 13.5]).color('lightgray'), mb).translate([2, 0, 0]).midlineTo('y', 10.2), 'ethernet');
|
|
192
|
+
group.add(jscadUtils.parts.Cube([clearance, 16.5, 13.5]).align(group.parts.ethernet, 'yz').snap(group.parts.ethernet, 'x', 'outside-').color('red'), 'clearance-ethernet', true, 'clearance');
|
|
193
|
+
var usb = jscadUtils.Group();
|
|
194
|
+
usb.add(jscadUtils.parts.Cube([17, 13.1, 15]).snap(group.parts.ethernet, 'x', 'inside+', -1).snap(mb, 'z', 'outside-', 1.5).color('lightgray'), 'body');
|
|
195
|
+
usb.add(jscadUtils.parts.Cube([1, 15, 16]).snap(usb.parts.body, 'x', 'outside-').align(usb.parts.body, 'yz').color('lightgray'), 'flange');
|
|
196
|
+
group.add(usb.clone() // .translate(usbTranslation)
|
|
197
|
+
.translate(jscadUtils.util.calcmidlineTo(usb.parts.body, 'y', 29.7)), 'usb1', false, 'usb1');
|
|
198
|
+
group.add(jscadUtils.parts.Cube([clearance, 15, 16]).align(group.parts.usb1, 'yz').snap(group.parts.usb1, 'x', 'outside-').color('red'), 'clearance-usb1', true);
|
|
199
|
+
group.add(usb.clone() // .translate(usbTranslation)
|
|
200
|
+
.translate(jscadUtils.util.calcmidlineTo(usb.parts.body, 'y', 47)), 'usb2', false, 'usb2');
|
|
201
|
+
group.add(jscadUtils.parts.Cube([clearance, 15, 16]).align(group.parts.usb2, 'yz').snap(group.parts.usb2, 'x', 'outside-').color('red'), 'clearance-usb2', true);
|
|
202
|
+
group.add(jscadUtils.parts.Cube([10, 7.5, 3.2]).snap(usb.parts.body, 'y', 'inside-', -1).snap(mb, 'z', 'outside-').midlineTo('x', 3.5 + 7.7).color('lightgray'), 'usbc');
|
|
203
|
+
group.add(jscadUtils.parts.Cube([10, clearance, 3.2]).align(group.parts.usbc, 'xz').snap(group.parts.usbc, 'y', 'outside+').color('red'), 'clearance-usbc', true);
|
|
204
|
+
group.add(jscadUtils.parts.Cube([7, 7.5, 3]).snap(usb.parts.body, 'y', 'inside-', -1).snap(mb, 'z', 'outside-').midlineTo('x', 3.5 + 7.7 + 14.8).color('lightgray'), 'hdmi1');
|
|
205
|
+
group.add(jscadUtils.parts.Cube([7, clearance, 3]).align(group.parts.hdmi1, 'xz').snap(group.parts.hdmi1, 'y', 'outside+').color('red'), 'clearance-hdmi1', true);
|
|
206
|
+
group.add(jscadUtils.parts.Cube([7, 7.5, 3]).snap(usb.parts.body, 'y', 'inside-', -1).snap(mb, 'z', 'outside-').midlineTo('x', 3.5 + 7.7 + 14.8 + 13.5).color('lightgray'), 'hdmi2');
|
|
207
|
+
group.add(jscadUtils.parts.Cube([7, clearance, 3]).align(group.parts.hdmi2, 'xz').snap(group.parts.hdmi2, 'y', 'outside+').color('red'), 'clearance-hdmi2', true);
|
|
208
|
+
group.add(AvJack().snap('block', mb, 'z', 'outside-').midlineTo('block', 'x', 3.5 + 7.7 + 14.8 + 13.5 + 7 + 7.5), 'avjack', false, 'avjack');
|
|
209
|
+
group.add(jscadUtils.parts.Cylinder(6, clearance).rotateX(90).align(group.parts.avjack, 'xz').snap(group.parts.avjack, 'y', 'outside+').color('red'), 'clearance-avjack', true);
|
|
210
|
+
group.add(Ribbon().snap(mb, 'z', 'outside-').midlineTo('x', 3.5 + 7.7 + 14.8 + 13.5 + 7), 'camera');
|
|
211
|
+
group.add(Ribbon().snap(mb, 'z', 'outside-').midlineTo('x', 4).midlineTo('y', 24.5 + 3.5), 'display');
|
|
212
|
+
group.add(Gpio().snap(mb, 'z', 'outside-').midlineTo('x', 29 + 3.5).midlineTo('y', 56 - 3.5), 'gpio');
|
|
213
|
+
group.add(BoardLed().snap(mb, 'z', 'outside-').midlineTo('x', 1.1).midlineTo('y', 8).color('lightgreen'), 'activityled');
|
|
214
|
+
group.add(BoardLed().snap(mb, 'z', 'outside-').midlineTo('x', 1.1).midlineTo('y', 12).color('red'), 'powerled');
|
|
215
|
+
}
|
|
156
216
|
/**
|
|
157
217
|
* Returns a complete RaspberryPi B Plus model.
|
|
158
218
|
* 
|
|
@@ -187,6 +247,7 @@ var jscadRPi = (function (exports, jscadUtils, jsCadCSG, scadApi) {
|
|
|
187
247
|
// endinject
|
|
188
248
|
*/
|
|
189
249
|
|
|
250
|
+
|
|
190
251
|
function BPlus() {
|
|
191
252
|
var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 2;
|
|
192
253
|
var options = arguments.length > 1 ? arguments[1] : undefined;
|
|
@@ -227,34 +288,10 @@ var jscadRPi = (function (exports, jscadUtils, jsCadCSG, scadApi) {
|
|
|
227
288
|
group.add(BoardLed().snap(mb, 'z', 'outside-').translate([1, 43.5, 0]).color('lightgreen'), 'activityled');
|
|
228
289
|
group.add(BoardLed().snap(mb, 'z', 'outside-').translate([1, 46, 0]).color('red'), 'powerled');
|
|
229
290
|
}
|
|
291
|
+
} else if (model == 4) {
|
|
292
|
+
pi4(group, clearance, mb);
|
|
230
293
|
} else {
|
|
231
|
-
|
|
232
|
-
* Model 4
|
|
233
|
-
*/
|
|
234
|
-
group.add(RightSide(jscadUtils.parts.Cube([21.5, 16.5, 13.5]).color('lightgray'), mb).translate([1, 0, 0]).midlineTo('y', 45.75), 'ethernet');
|
|
235
|
-
group.add(jscadUtils.parts.Cube([clearance, 16.5, 13.5]).align(group.parts.ethernet, 'yz').snap(group.parts.ethernet, 'x', 'outside-').color('red'), 'clearance-ethernet', true, 'clearance');
|
|
236
|
-
var usb = jscadUtils.Group();
|
|
237
|
-
usb.add(jscadUtils.parts.Cube([17, 13.1, 15]).snap(group.parts.ethernet, 'x', 'inside+', -1).snap(mb, 'z', 'outside-').color('lightgray'), 'body');
|
|
238
|
-
usb.add(jscadUtils.parts.Cube([1, 15, 16]).snap(usb.parts.body, 'x', 'outside-').align(usb.parts.body, 'yz').color('lightgray'), 'flange');
|
|
239
|
-
group.add(usb.clone() // .translate(usbTranslation)
|
|
240
|
-
.translate(jscadUtils.util.calcmidlineTo(usb.parts.body, 'y', 27)), 'usb1', false, 'usb1');
|
|
241
|
-
group.add(jscadUtils.parts.Cube([clearance, 15, 16]).align(group.parts.usb1, 'yz').snap(group.parts.usb1, 'x', 'outside-').color('red'), 'clearance-usb1', true);
|
|
242
|
-
group.add(usb.clone() // .translate(usbTranslation)
|
|
243
|
-
.translate(jscadUtils.util.calcmidlineTo(usb.parts.body, 'y', 9)), 'usb2', false, 'usb2');
|
|
244
|
-
group.add(jscadUtils.parts.Cube([clearance, 15, 16]).align(group.parts.usb2, 'yz').snap(group.parts.usb2, 'x', 'outside-').color('red'), 'clearance-usb2', true);
|
|
245
|
-
group.add(jscadUtils.parts.Cube([10, 7.5, 3.2]).snap(usb.parts.body, 'y', 'inside-', -1).snap(mb, 'z', 'outside-').midlineTo('x', 3.5 + 7.7).color('lightgray'), 'usbc');
|
|
246
|
-
group.add(jscadUtils.parts.Cube([10, clearance, 3.2]).align(group.parts.usbc, 'xz').snap(group.parts.usbc, 'y', 'outside+').color('red'), 'clearance-usbc', true);
|
|
247
|
-
group.add(jscadUtils.parts.Cube([7, 7.5, 3]).snap(usb.parts.body, 'y', 'inside-', -1).snap(mb, 'z', 'outside-').midlineTo('x', 3.5 + 7.7 + 14.8).color('lightgray'), 'hdmi1');
|
|
248
|
-
group.add(jscadUtils.parts.Cube([7, clearance, 3]).align(group.parts.hdmi1, 'xz').snap(group.parts.hdmi1, 'y', 'outside+').color('red'), 'clearance-hdmi1', true);
|
|
249
|
-
group.add(jscadUtils.parts.Cube([7, 7.5, 3]).snap(usb.parts.body, 'y', 'inside-', -1).snap(mb, 'z', 'outside-').midlineTo('x', 3.5 + 7.7 + 14.8 + 13.5).color('lightgray'), 'hdmi2');
|
|
250
|
-
group.add(jscadUtils.parts.Cube([7, clearance, 3]).align(group.parts.hdmi2, 'xz').snap(group.parts.hdmi2, 'y', 'outside+').color('red'), 'clearance-hdmi2', true);
|
|
251
|
-
group.add(AvJack().snap('block', mb, 'z', 'outside-').midlineTo('block', 'x', 3.5 + 7.7 + 14.8 + 13.5 + 7 + 7.5), 'avjack', false, 'avjack');
|
|
252
|
-
group.add(jscadUtils.parts.Cylinder(6, clearance).rotateX(90).align(group.parts.avjack, 'xz').snap(group.parts.avjack, 'y', 'outside+').color('red'), 'clearance-avjack', true);
|
|
253
|
-
group.add(Ribbon().snap(mb, 'z', 'outside-').midlineTo('x', 3.5 + 7.7 + 14.8 + 13.5 + 7), 'camera');
|
|
254
|
-
group.add(Ribbon().snap(mb, 'z', 'outside-').midlineTo('x', 4).midlineTo('y', 24.5 + 3.5), 'display');
|
|
255
|
-
group.add(Gpio().snap(mb, 'z', 'outside-').midlineTo('x', 29 + 3.5).midlineTo('y', 56 - 3.5), 'gpio');
|
|
256
|
-
group.add(BoardLed().snap(mb, 'z', 'outside-').midlineTo('x', 1.1).midlineTo('y', 8).color('lightgreen'), 'activityled');
|
|
257
|
-
group.add(BoardLed().snap(mb, 'z', 'outside-').midlineTo('x', 1.1).midlineTo('y', 12).color('red'), 'powerled');
|
|
294
|
+
pi5(group, clearance, mb);
|
|
258
295
|
}
|
|
259
296
|
|
|
260
297
|
group.add(jscadUtils.parts.Cube([15.2, 12, 1.5]).snap(mb, 'z', 'outside+').midlineTo('y', 28).translate([-2.5, 0, 0]).color('silver'), 'microsd');
|