From 4463cba1eed4a59d4eba588389a169481798a73c Mon Sep 17 00:00:00 2001
From: Michael Krelin <hacker@klever.net>
Date: Wed, 13 Jan 2016 15:20:12 +0000
Subject: first attempt on bed holder

---
(limited to 'delta.jscad')

diff --git a/delta.jscad b/delta.jscad
index 24c1c7e..0e8fd62 100644
--- a/delta.jscad
+++ b/delta.jscad
@@ -45,6 +45,12 @@ var CONFIG = {
   margin: 3,
   s: 2.5
  },
+ bedholder: {
+  h: 15,
+  margin: 3,
+  nut: { w: 5.4, h: 2.5 },
+  bolt: { d: 3, l: 10, head: { d: 5.33, h: 3 } }
+ },
  hotend: {
   h: 62.4, 			// full assembly height
   groove: { d:12, h:6 }, 	// grove diameter and height
@@ -764,6 +770,49 @@ function platform() {
  return b.union(g);
 }
 
+function bedholder(params) {
+ var h0 = CONFIG.foot.h+CONFIG.extrusion.w*2+CONFIG.base.gap;
+ var bolt_s = CONFIG.bedholder.bolt.l-CONFIG.extrusion.slotdepth+PRINT.play_tolerance*2;
+ var nuth=h0+CONFIG.bedholder.h*3/4;
+ var nutth = nuth+CONFIG.bedholder.nut.h/2+PRINT.slide_tolerance/2;
+ var rv = CSG.roundedCube({
+  corner1: [-CONFIG.extrusion.w/2,-CD.base.inner_inscription_r,h0],
+  corner2: [ CONFIG.extrusion.w/2,-CONFIG.heatbed.sr-3/2-CONFIG.bedholder.margin,h0+CONFIG.bedholder.h],
+  roundradius: CONFIG.bedholder.margin
+ });
+ rv = rv.subtract([
+  CSG.cylinder({ // base screw
+   start: [0,-CD.base.mid_inscription_r,h0-1],
+   end: [0,-CD.base.mid_inscription_r,h0+CONFIG.bedholder.h+1],
+   radius: CONFIG.bedholder.bolt.d/2+PRINT.screw_tolerance/2
+  }),
+  CSG.cylinder({ // bed screw
+   start: [0,-CONFIG.heatbed.sr,h0-1],
+   end: [0,-CONFIG.heatbed.sr,h0+CONFIG.bedholder.h+1],
+   radius: CONFIG.bedholder.bolt.d/2+PRINT.screw_tolerance/2
+  }),
+  CSG.cube({ // nut pocket
+   center: [0,-CONFIG.heatbed.sr,nuth],
+   radius: [CONFIG.extrusion.w/2+1,(CONFIG.bedholder.nut.w+PRINT.slide_tolerance)/2,(CONFIG.bedholder.nut.h+PRINT.slide_tolerance)/2]
+  }),
+  CSG.cylinder({ // sink base screw
+   start: [0,-CD.base.mid_inscription_r,h0+bolt_s],
+   end: [0,-CD.base.mid_inscription_r,h0+CONFIG.bedholder.h+1],
+   radius: CONFIG.bedholder.bolt.head.d/2+PRINT.play_tolerance
+  })
+ ]);
+ rv = rv.union(CSG.cylinder({
+  start: [0,-CONFIG.heatbed.sr,nutth], end: [0,-CONFIG.heatbed.sr,nutth+PRINT.layer_height],
+  radius: (CONFIG.bedholder.nut.w+PRINT.slide_tolerance)/2+PRINT.extrusion_width
+ }));
+ rv = rv.intersect(CSG.cylinder({
+  start: [0,0,h0-1], end: [0,0,h0+CONFIG.bedholder.h+1],
+  radius: CONFIG.heatbed.r, resolution: 270
+ }));
+ rv.properties.P = new CSG.Connector([0,-CD.base.mid_inscription_r,h0],[0,0,1],[1,0,0]);
+ return rv.setColor(CONFIG.color.parts);
+}
+
 var PARTS = {
  wip: function(params) {
   return duetholder(params);
@@ -803,7 +852,8 @@ var PARTS = {
   return duetholder();
  },
  foot: foot,
- shoe: shoe
+ shoe: shoe,
+ bedholder: bedholder
 };
 
 function main(params) {
@@ -871,6 +921,7 @@ function getParameterDefinitions() {
    'fanholder',
    'duetholder',
    'foot', 'shoe',
+   'bedholder',
    'alltogethernow',
    'wip'
   ],
@@ -880,8 +931,8 @@ function getParameterDefinitions() {
    'Clamp',
    'Fan holder',
    'Duet holder',
-   'Foot',
-   'Shoe',
+   'Foot', 'Shoe',
+   'Bed holder',
    'All together now!',
    'Work in progress'
   ],
--
cgit v0.9.0.2