在模块中包装OpenSCAD代码会破坏代码

时间:2013-07-15 18:05:58

标签: openscad

我的问题很简单:我有代码可以呈现我想要的内容,但是当我将它放入模块时,OpenSCAD会在渲染时发出错误,说明没有找到顶级对象。

    difference()
    {
        flipper(length, res, chord, xlambda, xA, ylambda, yA, phase);
        //dye channels
        dye_channel(len_dye_1, loc_dye_1, chord, xlambda, xA, ylambda, dye_r_1);
        dye_channel(len_dye_2, loc_dye_2, chord, xlambda, xA, ylambda, dye_r_2);
        //dye_outlet
        translate([0,0,len_dye_1*floor(xlambda*chord)]) rotate([0,90,0]) cylinder(r=dye_r_1,h=loc_dye_1,$fn=25);
        translate([0,0,len_dye_2*floor(xlambda*chord)]) rotate([0,90,0]) cylinder(r=dye_r_2,h=loc_dye_2,$fn=25);
        //screw holes
        translate([loc_screw_1,0,0]) cylinder(r=screw_r_1,h=len_screw_1);
        translate([loc_screw_2,0,0]) cylinder(r=screw_r_2,h=len_screw_2);
    }

当我把它放入模块时,我收到了错误。

    module dye_flipper(len_dye_1, len_dye_2, loc_dye_1, loc_dye_2, len_screw_1, dye_r_1,
    dye_r_2, len_screw_2, loc_screw_1, loc_screw_2, screw_r_1, screw_r_2, length, res, 
    chord, xlambda, xA, ylambda, yA, phase)
    {...}

其他例程的功能有点复杂,我想我们可以将它们视为黑盒子。只是差异代码本身产生了我想要的对象。我想把它放到一个模块中,因为这对我来说似乎是一种很好的编程习惯。

1 个答案:

答案 0 :(得分:2)

听起来很简单......但是你在定义模块后实际上是在调用它吗? dye_flipper(...)