我正在尝试绘制这个(空心)形状:

圆圈实际上是不同的直径,我想像这样将连接管的中间缩进(但这不是必需的)。我可以通过逐段绘制来伪造形状,但是我在缩小它时遇到了问题,而且感觉不像 OpenSCAD 想要它那样完成(即长达一小时的 CSG 生成)。有没有更好的方法来做到这一点?
:
for(i = [0:180]) {
rotate([0,i,0])
translate([26,0,0])
difference() {
cylinder(r=10 + (0.083 * i),h=.1);
cylinder(r=8 + (0.083 * i),h=.1);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 7
这是纯openscad版本。有关模块及其用法的详细信息,请参阅scad-utils和list-comprehension-demos。
use <scad-utils/transformations.scad>
use <scad-utils/shapes.scad>
use <skin.scad>
fn=32;
$fn=60;
r1 = 25;
r2 = 10;
R = 40;
th = 2;
module tube()
{
difference()
{
skin([for(i=[0:fn])
transform(rotation([0,180/fn*i,0])*translation([-R,0,0]),
circle(r1+(r1-r2)/fn*i))]);
assign(r1 = r1-th, r2 = r2-th)
skin([for(i=[0:fn])
transform(rotation([0,180/fn*i,0])*translation([-R,0,0]),
circle(r1+(r1-r2)/fn*i))]);
}
}
tube();
Run Code Online (Sandbox Code Playgroud)
