3D创意 C++

参数化界面及其应用

参考代码:

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 的值;

码圣代码编程

打字练习

3D创意C++

进入比赛

创客中心

关于傲亚

傲亚CMS

傲亚物联网

我要合作

创客平台

南昌市红谷滩区名门世家2期8号楼608
aoyakefu
TEL:18720086320
kefu@1wwz.com

扫码关注公众号

扫码添加创始人

企业微信服务商