0

我在 OpenSCAD 中遇到问题,我知道语言,但我不知道解决问题。
可以说,我得到 2d 图形,例如 circle(r=25) 并且我想从中获得实心。但我想从那种固体中得到什么。
-> 在 h=0 上,有我的圆(r=25)
-> 在 h=10 上,有一个圆(r=35),所以一个圆,其实是按比例的,但是我不想用比例,因为它乘以一个数字,但我想让它从其中的每个点大 10 个点
-> 它看起来像截头圆锥
-> 它适用于其他数字,比如说多边形,但我们仍然让每个点大 10 个点
-> 我还需要一些相反的东西,我的意思是让身材变小

如何接近它?也许ner上有例子,所以如果你能把它们给我看,我将不胜感激

我试过什么?
如果 h = 10,那么对于 [0, ..., 10] 中的每个 h1,我尝试创建类似的东西:(blech)

translate([0,0,h]) for(i = [0:359]){
                x = thickness*cos(i);
                y = thickness*sin(i);
                translate([x,y,0]) children(0);
                }
            }

看起来很糟糕,工作很糟糕而且没用,如果我想要更小的身材,我不知道如何让它工作

4

2 回答 2

1

我不确定,如果我理解你的问题。但是您上面描述的所有内容都可以使用linear_extrude()scale-parameter 来完成:

small = 25;
large = 35;

// upscale 
linear_extrude(height = 10, center = false, scale = large/small) circle(r = small);

// downscale
translate([2*large,0,0]) {
    linear_extrude(height = 10, center = false, scale = small/large) circle(r = large); 
}

它适用于每个 2D-primitive 和 dxf-import。

于 2015-11-18T16:24:07.420 回答
1

多边形可以在两个方向上进行offset() 。只要两个生成的多边形都是凸的,就可以使用 hull() 从它们生成 3d 对象。不幸的是 hull() 不能直接从多边形生成 3d,但这可以通过一个非常薄的 linear_extrude() 来解决。

$fa = 0.5;

module extrude(o, h) {
    hull() {
        linear_extrude(0.001)
            children();

        translate([0, 0, h])
            linear_extrude(0.001)
                offset(o)
                    children();
    }
}

extrude(10, 50) circle(20);

translate([80, 0, 0]) extrude(-10, 50) scale([1, 1.5]) circle(30);

对于更复杂的情况,list-comprehension-demos存储库中有一些实验性示例代码。

于 2015-12-15T21:02:26.930 回答