OpenSCAD(トーラス)
OpenSCADでトーラス形状を作るプログラムを考えました。
OpenSCADではトーラス形状を作る場合、rotate_extrudeとcircleを組み合わせて作ります。 ただしこの場合、circleの大きさ(半径 / 直径)簡単に指定できますが、トーラス形状の外形や内径は計算する必要があるため、任意の大きさにするのが難しくなっています。
そこで、任意のサイズで作りやすい関数を考えました。
内径 + 円の直径を指定
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); } }