参考代码:
function getParameterDefinitions () {
return ([
{name: 'x', type: 'float', initial: 30, step: 1, caption: '抽屉长'},
{name: 'y', type: 'float', initial: 20, step:1, caption: '抽屉宽'},
{name: 'z', type: 'float', initial: 10, step: 1, caption: '抽屉高'},
{name: 'h', type: 'float', initial: 1, step: 1, caption: '抽屉厚'},
{name: 'fk_empty', type: 'choice',caption:'是否空心', initial:0, values: [0, 1], captions:['否','是']}
])
}
function main(parameters){
var r=[];
var x=parameters.x;
var y=parameters.y
var z=parameters.z;
var h=parameters.h;
var m=1; //装配公差
var a=chouti(x-h-m,y-2*h-m,z-2*h-m,h,1);
var b=chouti(y,z,x,h).translate([-max(x,y,z)-3,0,0]);
//var d=intersection(a,c);
r=[a,b];
return r;
}
//x,y,z,h:长宽高厚, n:是否要圆环
function chouti(x,y,z,h,n=0){
var a=cube([x,y,z]);
if(n==1){
var c=torus({ ri:h, ro: h*3 }).translate([x,y/2,z/2]);
a=union(a,c);
}
var b=cube([x-2*h,y-2*h,z-h]).translate([h,h,h]);
return difference(a,b);
}
效果图如下:
主要语法:
function getParameterDefinitions () {
return ([
{name: 'x', type: 'float', initial: 30, step: 1, caption: '抽屉长'},
{name: 'y', type: 'float', initial: 20, step:1, caption: '抽屉宽'},
{name: 'z', type: 'float', initial: 10, step: 1, caption: '抽屉高'},
{name: 'h', type: 'float', initial: 1, step: 1, caption: '抽屉厚'},
{name: 'fk_empty', type: 'choice',caption:'是否空心', initial:0, values: [0, 1], captions:['否','是']}
])
}
函数:getParameterDefinitions 是设置参数,里面的 type为类型,可以有多种类型:
int : 整数, float : 浮点数(小数),text:文本;choice:选择框
name : 是参数的名称,必须是英文;
caption: 参数的界面显示名,可以是英文也可以是中文;如果是选择框,则为数组模式,例如:['否','是']
inital : 初始值,如果是text 需要加 单引号;
step: 是每次调节的数值,可以不输入,只要用鼠标就可以控制参数;
values:如果是选择框,则有values ,数组模式,例如: [0, 1]
在程序里引用参数界面,需要在 main 函数里加入: parameters 变量;
例如:function main(parameters)
而调用值的时候,采用: parameters.x 这个 x 就是 getParameterDefinitions 函数里的 name 的值;
|