Как указать начало вращения в openscad

OpenSCAD имеет функцию поворота, которая вращает корпус вокруг его исходной оси.

Есть ли способ указать произвольную ось?

Например, это вращает цилиндр вокруг его центра:

rotate(a=[90,0,0]) {
  cylinder(h=10,r1=10,r2=10);
}

Как заставить его вращаться вокруг своего края?

, 👍1

Обсуждение

Нашел дубликат на stackooverflow https://stackoverflow.com/questions/45826208/openscad-rotating-around-a-particular-point, @Vanuan


2 ответа


2

функция rotate() всегда вращается вокруг источника следующего за ней объекта. Что вы можете сделать, так это переместить цилиндр подальше от источника, вот так:

rotate(a=[90,0,0]) {
  translate([0,10,0]) cylinder(h=10,r1=10,r2=10);
}

,

2

Вы можете использовать следующий модуль в своем коде для достижения желаемого:

module myrotate(a, orig) {
    translate(orig)
    rotate(a)
    translate(-orig)
    children();
}

myrotate([0,0,90], [0, 10, 0]) {
    cube([10, 10, 25]);
}

myrotate([0,0,-90], [0, 10, 0]) {
    cube([10, 10, 25]);
}

color([1, 0, 0])
cube([10, 10, 25]);
,