有没有办法使用 OpenScad 拉伸对象

Is there a way to stretch an object using OpenScad

我创建了一个环形的小剪辑,但我现在希望能够将其拉伸成更椭圆的形状。就好像你要用两个手指压扁一个橡胶圈。
有使用 OpenSad 的简单方法吗?

这是我目前的情况:

difference()
{
    difference()
    {
        cylinder(r = 9.8/2, h = 1.7);
        translate([0,0,-0.1]) cylinder(r = 7/2, h = 1.9);
    }
    translate([2,2,-0.1]) rotate([0,0,90]) cube([4,4,3]);
}

它给出了以下剪辑:

此外,如果您能提出更好的创建开口的方法,请告诉我。我不确定从环中减去一个立方体是最好的方法。

使用scale([x-factor, y-factor, z-factor]),例如

scale([2, 1, 1]) difference()
....

参见Documentation

你的打开方式没问题

这只是一个小改进:

$fn=80;
scale([1,2,1])
difference()
{
    cylinder(r = 9.8/2, h = 1.7);
    translate([0,0,-1]) cylinder(r = 7/2, h = 1.7+2);
    translate([-2,2,-1]) cube([4,4,1.7+2]);
}

您可以从第一个对象中区分任意数量的对象,因此不需要嵌套差异。我还更改了立方体旋转,以便将立方体平移到正确的位置。

如果您想要开口的平行边,立方体作为开口的方式效果很好。如果您希望对象在被挤压和关闭时完全接触,则需要某种多边形。

我还将要减去的对象更改为在 Z=-1 上,并将它们的高度更改为“所需高度 + 2”。我喜欢这种语法,因为如果需要,用变量替换“所需高度”更容易。