openjscad-aurora-webapp
45 строк · 1.7 Кб
1// title: Name Plate
2// author: Rene K. Mueller
3// date: 2013/04/24
4// description: create your own name plate
5// license: MIT License
6
7function getParameterDefinitions() {8return [9{ name: 'name', initial: "Joe Example", type: 'text', caption: 'Your name', size: 30 },10{ name: 'title', initial: "3D Printer Developer", type: 'text', caption: 'Your title', size: 30 },11{ name: 'thickness', initial: 3, type: 'float', caption: 'Thickness' }12];13}
14
15function main(param) {16var o = []; // our stack of objects17var l = []; // our stack of line segments (when rendering vector text)18var p = []; // our stack of extruded line segments19
20// -- render name & extrude21l = vector_text(0,0,param.name);22l.forEach(function(s) {23p.push(rectangular_extrude(s, { w:param.thickness, h:param.thickness }));24});25o.push(union(p).setColor([1,1,0]).scale([1/3,1/3,1/3]).center([true,true,false]).translate([0,0,param.thickness]));26
27if(param.title.length) {28// -- render title & extrude29l = vector_text(0,0,param.title); p = [];30l.forEach(function(s) {31p.push(rectangular_extrude(s, { w:param.thickness, h:param.thickness }));32});33o.push(union(p).setColor([1,1,0]).scale([1/8,1/8,1/3]).center([true,true,false]).translate([0,-8,param.thickness]));34}35o = [union(o)]; // neat: we combine name + title, and make it first entry of an array36
37{ // -- adding a plate underneath38var b = o[0].getBounds();39var m = 2;40var w = b[1].x-b[0].x+m*2;41var h = b[1].y-b[0].y+m*2;42o.push(cube({size: [w,h,param.thickness], round: true, radius: 0.5}).translate([b[0].x-m,b[0].y-m,0]));43}44return union(o);45}
46