summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--delta.jscad8
1 files changed, 8 insertions, 0 deletions
diff --git a/delta.jscad b/delta.jscad
index 9941125..043f6f8 100644
--- a/delta.jscad
+++ b/delta.jscad
@@ -456,171 +456,179 @@ function microswitch() {
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() {
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);
555 }) );
556 rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]);
557 return rv.setColor(CONFIG.color.extrusion);
558}
559
552function refaxes(o) { 560function refaxes(o) {
553 if(!o) o = {}; 561 if(!o) o = {};
554 var l = o.l||20, g = o.g||0.7; 562 var l = o.l||20, g = o.g||0.7;
555 return union([ 563 return union([
556 CSG.cylinder({start:[0,0,0],end:[l,0,0]}).setColor([1,0,0,g]), 564 CSG.cylinder({start:[0,0,0],end:[l,0,0]}).setColor([1,0,0,g]),
557 CSG.cylinder({start:[0,0,0],end:[0,l,0]}).setColor([0,1,0,g]), 565 CSG.cylinder({start:[0,0,0],end:[0,l,0]}).setColor([0,1,0,g]),
558 CSG.cylinder({start:[0,0,0],end:[0,0,l]}).setColor([0,0,1,g]) 566 CSG.cylinder({start:[0,0,0],end:[0,0,l]}).setColor([0,0,1,g])
559 ]); 567 ]);
560} 568}
561 569
562function P(x) { 570function P(x) {
563 return x.connectTo(x.properties.P,new CSG.Connector([0,0,0],[0,0,1],[1,0,0]), false, 0); 571 return x.connectTo(x.properties.P,new CSG.Connector([0,0,0],[0,0,1],[1,0,0]), false, 0);
564} 572}
565 573
566function main(params) { 574function main(params) {
567 return refaxes().union(P(base_extrusions())); 575 return refaxes().union(P(base_extrusions()));
568} 576}
569 577
570function _main(params) { 578function _main(params) {
571 var e = EFFECTOR.effector(); 579 var e = EFFECTOR.effector();
572 var hs = E3DV6.heatsink(); 580 var hs = E3DV6.heatsink();
573 hs = hs.connectTo(hs.properties.grove_connector,e.properties.grove_connector,false,0); 581 hs = hs.connectTo(hs.properties.grove_connector,e.properties.grove_connector,false,0);
574 var ms = microswitch(); 582 var ms = microswitch();
575 var hd = EFFECTOR.hinged({ 583 var hd = EFFECTOR.hinged({
576 microswitch:ms,effector:e 584 microswitch:ms,effector:e
577 }); 585 });
578 ms = ms.connectTo( 586 ms = ms.connectTo(
579 ms.properties.screw_connector[0], 587 ms.properties.screw_connector[0],
580 hd.properties.microswitch_screw_connector[0], 588 hd.properties.microswitch_screw_connector[0],
581 false, 0); 589 false, 0);
582 var hdhd = EFFECTOR.split_hinged(hd); 590 var hdhd = EFFECTOR.split_hinged(hd);
583 var fh = EFFECTOR.fanholder(); 591 var fh = EFFECTOR.fanholder();
584 return union({ 592 return union({
585 platform: e, 593 platform: e,
586 hinged: hdhd[1], 594 hinged: hdhd[1],
587 clamp: hdhd[0], 595 clamp: hdhd[0],
588 fanholder: fh, 596 fanholder: fh,
589 alltogethernow: [e,hdhd[0],hdhd[1], columns(),hs,ms,fh] 597 alltogethernow: [e,hdhd[0],hdhd[1], columns(),hs,ms,fh]
590 }[params.part||'alltogethernow']) 598 }[params.part||'alltogethernow'])
591 var rv = union( 599 var rv = union(
592 e, 600 e,
593 hs, 601 hs,
594 columns(), 602 columns(),
595 ///hd, 603 ///hd,
596 hdhd[0], hdhd[1], 604 hdhd[0], hdhd[1],
597 ms); 605 ms);
598 return rv; 606 return rv;
599} 607}
600 608
601function getParameterDefinitions() { 609function getParameterDefinitions() {
602 return [{ 610 return [{
603 name: 'part', 611 name: 'part',
604 type: 'choice', 612 type: 'choice',
605 values: [ 613 values: [
606 'platform', 614 'platform',
607 'hinged', 615 'hinged',
608 'clamp', 616 'clamp',
609 'fanholder', 617 'fanholder',
610 'alltogethernow', 618 'alltogethernow',
611 'wip' 619 'wip'
612 ], 620 ],
613 captions: [ 621 captions: [
614 'Effector platform', 622 'Effector platform',
615 'Hinged part', 623 'Hinged part',
616 'Clamp', 624 'Clamp',
617 'Fan holder', 625 'Fan holder',
618 'All together now!', 626 'All together now!',
619 'Work in progress' 627 'Work in progress'
620 ], 628 ],
621 caption: 'Part', 629 caption: 'Part',
622 initial: 'wip' 630 initial: 'wip'
623 }]; 631 }];
624} 632}
625 633
626/* vim:set ft=javascript ai: */ 634/* vim:set ft=javascript ai: */