summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--delta.jscad27
1 files changed, 27 insertions, 0 deletions
diff --git a/delta.jscad b/delta.jscad
index 043f6f8..b3bb3d3 100644
--- a/delta.jscad
+++ b/delta.jscad
@@ -368,267 +368,294 @@ var EFFECTOR = {
368 }); 368 });
369 })).subtract(CSG.cube({ // cut off excess if any 369 })).subtract(CSG.cube({ // cut off excess if any
370 corner1:[-hhr,-msedge+ms.properties.microswitch.size.y,e.h+e.hinge.e-1], 370 corner1:[-hhr,-msedge+ms.properties.microswitch.size.y,e.h+e.hinge.e-1],
371 corner2:[hhr,-msedge-1,e.h+e.hinge.e+hhh+e.mswitch.screw.d+e.mswitch.screw.s+1] 371 corner2:[hhr,-msedge-1,e.h+e.hinge.e+hhh+e.mswitch.screw.d+e.mswitch.screw.s+1]
372 })).subtract([-msh/2,msh/2].map(function(x) { return CSG.roundedCylinder({ // screwholes 372 })).subtract([-msh/2,msh/2].map(function(x) { return CSG.roundedCylinder({ // screwholes
373 start: [x,-CONFIG.hotend.ungroove.d/2-PRINT.fit_tolerance-(e.mswitch.screw.d/2+e.mswitch.screw.s),e.h+e.hinge.e+mshh], 373 start: [x,-CONFIG.hotend.ungroove.d/2-PRINT.fit_tolerance-(e.mswitch.screw.d/2+e.mswitch.screw.s),e.h+e.hinge.e+mshh],
374 end: [x,-msedge+ms.properties.microswitch.size.y,e.h+e.hinge.e+mshh], 374 end: [x,-msedge+ms.properties.microswitch.size.y,e.h+e.hinge.e+mshh],
375 radius: e.mswitch.screw.d/2 375 radius: e.mswitch.screw.d/2
376 })})).subtract(CSG.cylinder({ // pulldown screw 376 })})).subtract(CSG.cylinder({ // pulldown screw
377 start:[0,-msedge+ms.properties.microswitch.size.y+3/2/*XXX:config*/+PRINT.extrusion_width,e.h+e.hinge.e-1], 377 start:[0,-msedge+ms.properties.microswitch.size.y+3/2/*XXX:config*/+PRINT.extrusion_width,e.h+e.hinge.e-1],
378 end:[0,-msedge+ms.properties.microswitch.size.y+3/2/*XXX:config*/+PRINT.extrusion_width,e.h+e.hinge.e+hhh+1], 378 end:[0,-msedge+ms.properties.microswitch.size.y+3/2/*XXX:config*/+PRINT.extrusion_width,e.h+e.hinge.e+hhh+1],
379 radius: 3/2/*XXX:config*/ 379 radius: 3/2/*XXX:config*/
380 })); 380 }));
381 rv.properties.microswitch_screw_connector = new CSG.Properties(); 381 rv.properties.microswitch_screw_connector = new CSG.Properties();
382 [-msh/2,msh/2].forEach(function(x,i) { 382 [-msh/2,msh/2].forEach(function(x,i) {
383 rv.properties.microswitch_screw_connector[i] = new CSG.Connector( 383 rv.properties.microswitch_screw_connector[i] = new CSG.Connector(
384 [x,-msedge,e.h+e.hinge.e+mshh], 384 [x,-msedge,e.h+e.hinge.e+mshh],
385 [0,1,0], [0,0,-1] 385 [0,1,0], [0,0,-1]
386 ); 386 );
387 }); 387 });
388 return rv.setColor([0.3,0.8,0.3,0.9]); 388 return rv.setColor([0.3,0.8,0.3,0.9]);
389 }, 389 },
390 split_hinged: function effector_split_hinged(hinged) { 390 split_hinged: function effector_split_hinged(hinged) {
391 var e = CONFIG.effector; 391 var e = CONFIG.effector;
392 var b = hinged.getBounds(); 392 var b = hinged.getBounds();
393 var ymax = Math.max(Math.abs(b[0].y),Math.abs(b[1].y)); 393 var ymax = Math.max(Math.abs(b[0].y),Math.abs(b[1].y));
394 var zmax = Math.max(b[0].z,b[1].z); 394 var zmax = Math.max(b[0].z,b[1].z);
395 return [-1,1].map(function(s) { 395 return [-1,1].map(function(s) {
396 return hinged.intersect(CSG.cube({ 396 return hinged.intersect(CSG.cube({
397 corner1: [Math.min(b[0].x,b[1].x)-1,s*e.clamp.split/2,-zmax-1], 397 corner1: [Math.min(b[0].x,b[1].x)-1,s*e.clamp.split/2,-zmax-1],
398 corner2: [Math.max(b[0].x,b[1].x)+1,s*(ymax+1),zmax+1] 398 corner2: [Math.max(b[0].x,b[1].x)+1,s*(ymax+1),zmax+1]
399 })); 399 }));
400 }); 400 });
401 }, 401 },
402 fanholder: function effector_fanholder() { 402 fanholder: function effector_fanholder() {
403 var fh = CONFIG.effector.fanholder; 403 var fh = CONFIG.effector.fanholder;
404 var od = fh.screw.d+2*fh.screw.m; 404 var od = fh.screw.d+2*fh.screw.m;
405 return linear_extrude({height:fh.w},hull( 405 return linear_extrude({height:fh.w},hull(
406 CAG.circle({center:[0,-this.rmount],radius:od/2}), 406 CAG.circle({center:[0,-this.rmount],radius:od/2}),
407 CAG.circle({center:[0,-fh.r+od/2+fh.w/2],radius:fh.w/2}) 407 CAG.circle({center:[0,-fh.r+od/2+fh.w/2],radius:fh.w/2})
408 )).translate([0,0,-fh.w]).union( 408 )).translate([0,0,-fh.w]).union(
409 linear_extrude({height:fh.w},hull( 409 linear_extrude({height:fh.w},hull(
410 CAG.circle({center:[fh.w/2,-this.rmount-od/2-fh.w/2],radius:fh.w/2}), 410 CAG.circle({center:[fh.w/2,-this.rmount-od/2-fh.w/2],radius:fh.w/2}),
411 CAG.circle({center:[od/2,-fh.r],radius:od/2}) 411 CAG.circle({center:[od/2,-fh.r],radius:od/2})
412 )).rotateY(90).translate([-fh.w/2,0,0]) 412 )).rotateY(90).translate([-fh.w/2,0,0])
413 ).subtract( CSG.cylinder({ 413 ).subtract( CSG.cylinder({
414 start: [-fh.w,-fh.r,-od/2], 414 start: [-fh.w,-fh.r,-od/2],
415 end: [fh.w,-fh.r,-od/2], 415 end: [fh.w,-fh.r,-od/2],
416 radius: fh.screw.d/2 416 radius: fh.screw.d/2
417 })).subtract( CSG.cylinder({ 417 })).subtract( CSG.cylinder({
418 start: [0,-this.rmount,1], 418 start: [0,-this.rmount,1],
419 end: [0,-this.rmount,-fh.w-1], 419 end: [0,-this.rmount,-fh.w-1],
420 radius: fh.screw.d/2 420 radius: fh.screw.d/2
421 })).setColor([0.3,0.8,0.3,0.9]).rotateZ(-120); 421 })).setColor([0.3,0.8,0.3,0.9]).rotateZ(-120);
422 } 422 }
423}; 423};
424 424
425function columns() { 425function columns() {
426 var rv = [0,1,2].map(function(x) { 426 var rv = [0,1,2].map(function(x) {
427 return union(vector_char(0,0,String.fromCharCode('A'.charCodeAt(0)+x)).segments.map(function(x) { 427 return union(vector_char(0,0,String.fromCharCode('A'.charCodeAt(0)+x)).segments.map(function(x) {
428 return rectangular_extrude(x,{w:2,h:1}); 428 return rectangular_extrude(x,{w:2,h:1});
429 })).center().rotateX(90).translate([0,50,0]).rotateZ(x*120+120); 429 })).center().rotateX(90).translate([0,50,0]).rotateZ(x*120+120);
430 }); 430 });
431 return union(rv); 431 return union(rv);
432} 432}
433 433
434function microswitch() { 434function microswitch() {
435 var screw_connector = new CSG.Properties(); 435 var screw_connector = new CSG.Properties();
436 var rv = CSG.cube({ center:[0,0,2.5],radius: [19.8/2,6/2,10/2] }).union( 436 var rv = CSG.cube({ center:[0,0,2.5],radius: [19.8/2,6/2,10/2] }).union(
437 CSG.cube({ center: [2.5,0.5,6], radius: [2/2,3.5/2,5/2] }) 437 CSG.cube({ center: [2.5,0.5,6], radius: [2/2,3.5/2,5/2] })
438 ).union( 438 ).union(
439 [-8,-1,8].map(function(x) { 439 [-8,-1,8].map(function(x) {
440 return CSG.cube({ center:[x,0,0], radius: [0.6/2,3.2/2,13/2] }) 440 return CSG.cube({ center:[x,0,0], radius: [0.6/2,3.2/2,13/2] })
441 }) 441 })
442 ).subtract( 442 ).subtract(
443 [-9.5/2,9.5/2].map(function(x,i) { 443 [-9.5/2,9.5/2].map(function(x,i) {
444 screw_connector[i] = new CSG.Connector([x,6/2,0],[0,-1,0],[0,0,1]); 444 screw_connector[i] = new CSG.Connector([x,6/2,0],[0,-1,0],[0,0,1]);
445 return CSG.cylinder({ 445 return CSG.cylinder({
446 start: [x,-4,0], end: [x,4,0], 446 start: [x,-4,0], end: [x,4,0],
447 radius: 2/2 447 radius: 2/2
448 }) 448 })
449 }) 449 })
450 ); 450 );
451 rv.properties.switch_connector = new CSG.Connector([2.5,0.5,6+5/2],[0,0,1],[0,-1,0]); 451 rv.properties.switch_connector = new CSG.Connector([2.5,0.5,6+5/2],[0,0,1],[0,-1,0]);
452 rv.properties.screw_connector = screw_connector; 452 rv.properties.screw_connector = screw_connector;
453 rv.properties.microswitch = new CSG.Properties(); 453 rv.properties.microswitch = new CSG.Properties();
454 rv.properties.microswitch.size = new CSG.Vector3D( 454 rv.properties.microswitch.size = new CSG.Vector3D(
455 19.8,6,10 455 19.8,6,10
456 ); 456 );
457 return rv; 457 return rv;
458} 458}
459 459
460var FOURWINDS = [0,90,180,270]; 460var FOURWINDS = [0,90,180,270];
461 461
462var E2020 = { 462var E2020 = {
463 outer: 20, thickness: 1.8, 463 outer: 20, thickness: 1.8,
464 roundius: 1, centerhole: 5, 464 roundius: 1, centerhole: 5,
465 slot_width: 6, 465 slot_width: 6,
466 T: { width: 10, thickness: 1.5, depth: 6.5 }, 466 T: { width: 10, thickness: 1.5, depth: 6.5 },
467 467
468 extrusion: function(o) { 468 extrusion: function(o) {
469 if(!o) o = {}; 469 if(!o) o = {};
470 var e = o.extrusion || this; 470 var e = o.extrusion || this;
471 var l = o.l||5; 471 var l = o.l||5;
472 var iy = e.outer/2-e.T.depth; 472 var iy = e.outer/2-e.T.depth;
473 var ix = e.T.width/2-(e.outer/2-iy-e.thickness-e.T.thickness); 473 var ix = e.T.width/2-(e.outer/2-iy-e.thickness-e.T.thickness);
474 var rv = CAG.roundedRectangle({ 474 var rv = CAG.roundedRectangle({
475 corner1: [-e.outer/2,-e.outer/2], corner2: [e.outer/2,e.outer/2], 475 corner1: [-e.outer/2,-e.outer/2], corner2: [e.outer/2,e.outer/2],
476 roundradius: e.roundius 476 roundradius: e.roundius
477 }).subtract( 477 }).subtract(
478 FOURWINDS.map(function(w) { 478 FOURWINDS.map(function(w) {
479 return CAG.fromPoints([ 479 return CAG.fromPoints([
480 [ e.slot_width/2,e.outer/2+1], 480 [ e.slot_width/2,e.outer/2+1],
481 [ e.slot_width/2,e.outer/2-e.thickness], 481 [ e.slot_width/2,e.outer/2-e.thickness],
482 [ e.T.width/2,e.outer/2-e.thickness], 482 [ e.T.width/2,e.outer/2-e.thickness],
483 [ e.T.width/2,e.outer/2-e.thickness-e.T.thickness], 483 [ e.T.width/2,e.outer/2-e.thickness-e.T.thickness],
484 [ ix, iy ], 484 [ ix, iy ],
485 [ -ix, iy ], 485 [ -ix, iy ],
486 [ -e.T.width/2,e.outer/2-e.thickness-e.T.thickness], 486 [ -e.T.width/2,e.outer/2-e.thickness-e.T.thickness],
487 [ -e.T.width/2,e.outer/2-e.thickness], 487 [ -e.T.width/2,e.outer/2-e.thickness],
488 [ -e.slot_width/2,e.outer/2-e.thickness], 488 [ -e.slot_width/2,e.outer/2-e.thickness],
489 [ -e.slot_width/2,e.outer/2+1], 489 [ -e.slot_width/2,e.outer/2+1],
490 ]).rotateZ(w); 490 ]).rotateZ(w);
491 }) 491 })
492 ).subtract(CAG.circle({ 492 ).subtract(CAG.circle({
493 center: [0,0], radius: e.centerhole/2 493 center: [0,0], radius: e.centerhole/2
494 })).extrude({offset:[0,0,l]}); 494 })).extrude({offset:[0,0,l]});
495 rv.properties.c_top=rv.properties.c_left 495 rv.properties.c_top=rv.properties.c_left
496 = new CSG.Connector([0,0,l],[0,0,-1],[1,0,0]); 496 = new CSG.Connector([0,0,l],[0,0,-1],[1,0,0]);
497 rv.properties.c_bottom=rv.properties.c_right 497 rv.properties.c_bottom=rv.properties.c_right
498 = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]); 498 = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]);
499 rv.properties.c_midway = new CSG.Connector([0,0,l/2],[0,0,1],[1,0,0]); 499 rv.properties.c_midway = new CSG.Connector([0,0,l/2],[0,0,1],[1,0,0]);
500 rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]); 500 rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]);
501 rv.properties.vitamin = true; 501 rv.properties.vitamin = true;
502 return rv; 502 return rv;
503 }, 503 },
504 504
505 cap: function extrusion_cap(o) { 505 cap: function extrusion_cap(o) {
506 if(!o) o = {}; 506 if(!o) o = {};
507 var e = o.extrusion || this; 507 var e = o.extrusion || this;
508 var thickness = o.thickness||2, l = o.l||5; 508 var thickness = o.thickness||2, l = o.l||5;
509 var rv = CSG.roundedCube({ 509 var rv = CSG.roundedCube({
510 corner1: [-e.outer/2,-e.outer/2,thickness], 510 corner1: [-e.outer/2,-e.outer/2,thickness],
511 corner2: [e.outer/2,e.outer/2,0], 511 corner2: [e.outer/2,e.outer/2,0],
512 roundradius: [e.roundius,e.roundius,0] 512 roundradius: [e.roundius,e.roundius,0]
513 }); 513 });
514 var fw = [0,90,180,270]; // four winds 514 var fw = [0,90,180,270]; // four winds
515 var iy = e.outer/2-e.T.depth; 515 var iy = e.outer/2-e.T.depth;
516 var ix = e.T.width/2-(e.outer/2-iy-e.thickness-e.T.thickness); 516 var ix = e.T.width/2-(e.outer/2-iy-e.thickness-e.T.thickness);
517 rv = rv.union(fw.map(function(w) { 517 rv = rv.union(fw.map(function(w) {
518 return CAG.fromPoints([ 518 return CAG.fromPoints([
519 [ e.slot_width/2,e.outer/2], 519 [ e.slot_width/2,e.outer/2],
520 [ e.slot_width/2,e.outer/2-e.thickness], 520 [ e.slot_width/2,e.outer/2-e.thickness],
521 [ e.T.width/2,e.outer/2-e.thickness], 521 [ e.T.width/2,e.outer/2-e.thickness],
522 [ e.T.width/2,e.outer/2-e.thickness-e.T.thickness], 522 [ e.T.width/2,e.outer/2-e.thickness-e.T.thickness],
523 [ ix, iy ], 523 [ ix, iy ],
524 [ -ix, iy ], 524 [ -ix, iy ],
525 [ -e.T.width/2,e.outer/2-e.thickness-e.T.thickness], 525 [ -e.T.width/2,e.outer/2-e.thickness-e.T.thickness],
526 [ -e.T.width/2,e.outer/2-e.thickness], 526 [ -e.T.width/2,e.outer/2-e.thickness],
527 [ -e.slot_width/2,e.outer/2-e.thickness], 527 [ -e.slot_width/2,e.outer/2-e.thickness],
528 [ -e.slot_width/2,e.outer/2], 528 [ -e.slot_width/2,e.outer/2],
529 ]).extrude({offset:[0,0,l+thickness]}).rotateZ(w); 529 ]).extrude({offset:[0,0,l+thickness]}).rotateZ(w);
530 })); 530 }));
531 rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]); 531 rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]);
532 return rv; 532 return rv;
533 } 533 }
534}; 534};
535 535
536var THREEWINDS = [0,120,240]; 536var THREEWINDS = [0,120,240];
537 537
538function base_extrusions() { 538function base_extrusions() {
539 var rv = union( THREEWINDS.map(function(w) { 539 var rv = union( THREEWINDS.map(function(w) {
540 var e = E2020.extrusion({l:CONFIG.base.el}); 540 var e = E2020.extrusion({l:CONFIG.base.el});
541 e = e.connectTo(e.properties.c_midway, 541 e = e.connectTo(e.properties.c_midway,
542 new CSG.Connector([0,-CD.base.mid_inscription_r,CONFIG.extrusion.w/2],[1,0,0],[0,0,1]), 542 new CSG.Connector([0,-CD.base.mid_inscription_r,CONFIG.extrusion.w/2],[1,0,0],[0,0,1]),
543 false, 0); 543 false, 0);
544 return union( [0,CONFIG.extrusion.w+CONFIG.base.gap].map(function(z) { 544 return union( [0,CONFIG.extrusion.w+CONFIG.base.gap].map(function(z) {
545 return e.translate([0,0,z]); 545 return e.translate([0,0,z]);
546 }) ).rotateZ(w); 546 }) ).rotateZ(w);
547 }) ); 547 }) );
548 rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]); 548 rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]);
549 return rv.setColor(CONFIG.color.extrusion); 549 return rv.setColor(CONFIG.color.extrusion);
550} 550}
551 551
552function column_extrusions() { 552function column_extrusions() {
553 var rv = union( THREEWINDS.map(function(w) { 553 var rv = union( THREEWINDS.map(function(w) {
554 return E2020.extrusion({l:CONFIG.column.h}).translate([0,CD.base.column_r,0]).rotateZ(w); 554 return E2020.extrusion({l:CONFIG.column.h}).translate([0,CD.base.column_r,0]).rotateZ(w);
555 }) ); 555 }) );
556 rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]); 556 rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]);
557 return rv.setColor(CONFIG.color.extrusion); 557 return rv.setColor(CONFIG.color.extrusion);
558} 558}
559 559
560function duet() {
561 var C = CONFIG.duet;
562 var pholes = new CSG.Properties();
563 var hx = C.hole_spacing.x/2;
564 var hy = C.hole_spacing.y/2;
565 var hh = { nw: [1,-1], ne: [1,1], se: [-1,1], sw: [-1,-1] };
566 var holes = [];
567 for(w in hh) {
568 var h = hh[w],_x=h[0]*hx,_y=h[1]*hy;
569 holes.push(CSG.cylinder({start:[_x,_y,-1],end:[_x,_y,C.pcb_size.z+1],radius:3/2}));
570 pholes['c_'+w] = new CSG.Connector([_x,_y,0],[0,0,1],[1,0,0]);
571 }
572 rv = CSG.cube({
573 corner1: [-C.pcb_size.x/2, -C.pcb_size.y/2, 0],
574 corner2: [ C.pcb_size.x/2, C.pcb_size.y/2, C.pcb_size.z]
575 }).subtract(holes).setColor(CONFIG.color.pcb).union(
576 CSG.cube({
577 corner1: [-C.pcb_size.x/2,-C.hole_spacing.y/2+3,C.pcb_size.z],
578 corner2: [ C.pcb_size.x/2, C.hole_spacing.y/2-3,C.h]
579 }).setColor(CONFIG.color.bulk)
580 );
581 rv.properties.holes = pholes;
582 rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]);
583 rv.properties.vitamin = true;
584 return rv;
585}
586
560function refaxes(o) { 587function refaxes(o) {
561 if(!o) o = {}; 588 if(!o) o = {};
562 var l = o.l||20, g = o.g||0.7; 589 var l = o.l||20, g = o.g||0.7;
563 return union([ 590 return union([
564 CSG.cylinder({start:[0,0,0],end:[l,0,0]}).setColor([1,0,0,g]), 591 CSG.cylinder({start:[0,0,0],end:[l,0,0]}).setColor([1,0,0,g]),
565 CSG.cylinder({start:[0,0,0],end:[0,l,0]}).setColor([0,1,0,g]), 592 CSG.cylinder({start:[0,0,0],end:[0,l,0]}).setColor([0,1,0,g]),
566 CSG.cylinder({start:[0,0,0],end:[0,0,l]}).setColor([0,0,1,g]) 593 CSG.cylinder({start:[0,0,0],end:[0,0,l]}).setColor([0,0,1,g])
567 ]); 594 ]);
568} 595}
569 596
570function P(x) { 597function P(x) {
571 return x.connectTo(x.properties.P,new CSG.Connector([0,0,0],[0,0,1],[1,0,0]), false, 0); 598 return x.connectTo(x.properties.P,new CSG.Connector([0,0,0],[0,0,1],[1,0,0]), false, 0);
572} 599}
573 600
574function main(params) { 601function main(params) {
575 return refaxes().union(P(base_extrusions())); 602 return refaxes().union(P(base_extrusions()));
576} 603}
577 604
578function _main(params) { 605function _main(params) {
579 var e = EFFECTOR.effector(); 606 var e = EFFECTOR.effector();
580 var hs = E3DV6.heatsink(); 607 var hs = E3DV6.heatsink();
581 hs = hs.connectTo(hs.properties.grove_connector,e.properties.grove_connector,false,0); 608 hs = hs.connectTo(hs.properties.grove_connector,e.properties.grove_connector,false,0);
582 var ms = microswitch(); 609 var ms = microswitch();
583 var hd = EFFECTOR.hinged({ 610 var hd = EFFECTOR.hinged({
584 microswitch:ms,effector:e 611 microswitch:ms,effector:e
585 }); 612 });
586 ms = ms.connectTo( 613 ms = ms.connectTo(
587 ms.properties.screw_connector[0], 614 ms.properties.screw_connector[0],
588 hd.properties.microswitch_screw_connector[0], 615 hd.properties.microswitch_screw_connector[0],
589 false, 0); 616 false, 0);
590 var hdhd = EFFECTOR.split_hinged(hd); 617 var hdhd = EFFECTOR.split_hinged(hd);
591 var fh = EFFECTOR.fanholder(); 618 var fh = EFFECTOR.fanholder();
592 return union({ 619 return union({
593 platform: e, 620 platform: e,
594 hinged: hdhd[1], 621 hinged: hdhd[1],
595 clamp: hdhd[0], 622 clamp: hdhd[0],
596 fanholder: fh, 623 fanholder: fh,
597 alltogethernow: [e,hdhd[0],hdhd[1], columns(),hs,ms,fh] 624 alltogethernow: [e,hdhd[0],hdhd[1], columns(),hs,ms,fh]
598 }[params.part||'alltogethernow']) 625 }[params.part||'alltogethernow'])
599 var rv = union( 626 var rv = union(
600 e, 627 e,
601 hs, 628 hs,
602 columns(), 629 columns(),
603 ///hd, 630 ///hd,
604 hdhd[0], hdhd[1], 631 hdhd[0], hdhd[1],
605 ms); 632 ms);
606 return rv; 633 return rv;
607} 634}
608 635
609function getParameterDefinitions() { 636function getParameterDefinitions() {
610 return [{ 637 return [{
611 name: 'part', 638 name: 'part',
612 type: 'choice', 639 type: 'choice',
613 values: [ 640 values: [
614 'platform', 641 'platform',
615 'hinged', 642 'hinged',
616 'clamp', 643 'clamp',
617 'fanholder', 644 'fanholder',
618 'alltogethernow', 645 'alltogethernow',
619 'wip' 646 'wip'
620 ], 647 ],
621 captions: [ 648 captions: [
622 'Effector platform', 649 'Effector platform',
623 'Hinged part', 650 'Hinged part',
624 'Clamp', 651 'Clamp',
625 'Fan holder', 652 'Fan holder',
626 'All together now!', 653 'All together now!',
627 'Work in progress' 654 'Work in progress'
628 ], 655 ],
629 caption: 'Part', 656 caption: 'Part',
630 initial: 'wip' 657 initial: 'wip'
631 }]; 658 }];
632} 659}
633 660
634/* vim:set ft=javascript ai: */ 661/* vim:set ft=javascript ai: */