OpenSCAD(トーラス)

OpenSCADでトーラス形状を作るプログラムを考えました。

OpenSCADではトーラス形状を作る場合、rotate_extrudeとcircleを組み合わせて作ります。 ただしこの場合、circleの大きさ(半径 / 直径)簡単に指定できますが、トーラス形状の外形や内径は計算する必要があるため、任意の大きさにするのが難しくなっています。

そこで、任意のサイズで作りやすい関数を考えました。

f:id:ArtificialArts:20210131161022p:plain

内径 + 円の直径を指定

module torus(innerDiameter = 2, circleSize = 3, fragments=50)
{
    $fn=fragments;
    rotate_extrude(convexity = 10)
    {
        outerDiameter = innerDiameter + (circleSize * 2);
        translateX =(outerDiameter - 1)/2 - (circleSize - 1) * 0.5;
        translate([translateX,0,0])
        circle(d = circleSize);
    }
}

外形 + 円の直径を指定

module torus(outerDiameter = 5, circleSize = 1, fragments=50)
{
    $fn=fragments;
    rotate_extrude(convexity = 10)
    {
        translateX =(outerDiameter - 1)/2 - (circleSize - 1) * 0.5;
        translate([translateX,0,0])
        circle(d = circleSize);
    }
}

内径 + 外形を指定

module torus(innerDiameter = 2, outerDiameter = 5, fragments=50)
{
    $fn=fragments;
    rotate_extrude(convexity = 10)
    {
        circleDiameter = (outerDiameter - innerDiameter) / 2;
        translateX =(outerDiameter - 1)/2 - (circleDiameter - 1) * 0.5;
        translate([translateX,0,0])
        circle(d = circleDiameter);
    }
}