'사출'이란 무엇일까요?
지난 시간에 이야기한 것 처럼, 오늘은 사출 명령인 linear_extrude, rotate_extrude 명령에 대해 배워보겠습니다.
'사출'이라는 말이 조금 어려울 수 있지만, 원리는 아주 간단합니다. 혹시 찰흙으로 만들기 놀이를 해보셨나요? 바닥에 동그랗고 납작한 찰흙을 놓고, 그 모양 그대로 위로 쭉 잡아당기면 원기둥이 되죠. 또, 뱅글뱅글 돌아가는 물레 위에서 흙을 잡아 늘려 도자기를 만드는 모습을 상상해 보세요.
이처럼, 납작한 2차원 도형을 3차원 입체 도형으로 만드는 모든 과정을 '사출'이라고 부릅니다. OpenSCAD에는 크게 두 가지 사출 방식이 있습니다.
- 1.
linear_extrude(선형 사출) - 2D 도형을 위로 곧장 잡아 늘려 기둥 같은 모양을 만듭니다. 마치 쿠키 반죽 위에 틀을 올려놓고 꾹 눌러서, 틀 모양 그대로 입체적인 쿠키를 만들어내는 것과 같습니다.
- 2.
rotate_extrude(회전 사출) - 2D 도형을 하나의 축을 중심으로 빙글 돌려서 도넛이나 항아리 같은 모양을 만듭니다. 회전하는 물레 위에서 도자기를 빚는 원리와 똑같습니다.
1. linear_extrude() - 위로 곧게 잡아 늘리기
이 명령은 2D 도형에 높이를 부여하여 3D 입체로 만드는 가장 기본적인 사출 방식입니다.
명령어 사용법
linear_extrude 명령어 다음에 괄호 ()를 열어 높이와 같은 여러 가지 설정을 해줍니다. 그리고 중괄호 {} 안에는 우리가 늘리고 싶은 2D 도형 명령어를 넣어주면 됩니다.
주요 설정값 (파라미터)
height: 가장 중요한 값으로, 2D 도형을 얼마나 높이 잡아 늘릴지, 즉 Z축 방향의 길이를 정합니다.center: 이 값을true로 설정하면, 도형의 높이 중심이 원점(0, 0, 0)에 맞춰집니다.false(기본값)이면 Z=0 평면에서 위로 자라나고,true이면 Z=0 평면을 기준으로 위아래로 자라납니다.twist: 젖은 수건을 짜는 것처럼 도형을 비틀면서 늘리는 기능입니다. 값은 각도를 의미하며, 예를 들어twist = 90이라고 하면, 도형이 90도 비틀어진 기둥이 만들어집니다.scale: 위로 늘어나면서 도형의 크기를 조절합니다.scale = 0.5로 설정하면, 위로 갈수록 크기가 50%로 점점 줄어들어 뿔 모양이 됩니다.
사출을 위한 기본 2D 도형
linear_extrude를 사용하려면, 먼저 늘릴 2D 도형이 있어야겠죠? 가장 기본이 되는 square(사각형)와 circle(원)을 먼저 알아보겠습니다. 이 도형들은 XY 평면, 즉 바닥에 그려지는 납작한 도형입니다.
1.1 square() - 사각형 그리기
- 정사각형:
square(10);처럼 숫자 하나만 넣으면 가로, 세로 길이가 10인 정사각형이 만들어집니다. - 직사각형:
square([10, 20]);처럼 대괄호[]안에 숫자 두 개를 넣으면 가로 10, 세로 20인 직사각형을 만들 수 있습니다. center:square(10, center = true);처럼center값을true로 설정하면, 도형의 중심이 원점(0, 0)에 오도록 배치됩니다.
1.2 circle() - 원 그리기
- 반지름으로 그리기:
circle(r = 10);처럼r값을 주면 반지름이 10인 원이 만들어집니다. - 지름으로 그리기:
circle(d = 20);처럼d값을 주면 지름이 20인 원이 만들어집니다. - 해상도 조절하기 (
$fn): 컴퓨터는 완벽한 곡선을 그리지 못하고, 아주 짧은 직선들을 여러 개 이어 붙여 원처럼 보이게 만듭니다. 이때 사용되는 직선의 개수를$fn(달러 기호 fn)으로 조절할 수 있습니다.$fn=6이면 육각형,$fn=100이면 매우 부드러운 원이 됩니다.
linear_extrude 예제 코드
// 예제 1: 원을 높이 10만큼 늘려 원기둥 만들기
// 가장 기본적인 형태로, 동전 여러 개를 쌓아 올린 모습을 상상해 보세요.
linear_extrude(height = 10) {
circle(r = 5);
}
// 예제 2: 사각형을 90도 비틀면서 높이 20으로 늘리기
// translate는 다른 도형과 겹치지 않도록 옆으로 옮겨주는 역할입니다.
// 마치 꽈배기 과자 같은 모양이 만들어집니다.
translate([20, 0, 0]) {
linear_extrude(height = 20, twist = 90) {
square(10, center = true);
}
}
// 예제 3: 원을 높이 20으로 늘리면서 끝부분이 뾰족해지게 만들기 (원뿔)
// 위로 올라갈수록 크기가 0.1배로 줄어들도록 scale을 설정했습니다.
translate([-20, 0, 0]) {
linear_extrude(height = 20, scale = 0.1) {
circle(r = 5, $fn = 50);
}
}
2. rotate_extrude() - 축을 중심으로 회전시키기
이번에는 2D 도형을 빙글 돌려서 입체 도형을 만드는 rotate_extrude에 대해 알아보겠습니다.
가장 중요한 규칙: 회전시킬 2D 도형은 반드시 회전의 중심축(Z축)에서 약간 떨어져 있어야 합니다. 즉, 도형이 중심축의 한쪽 편(X>0 또는 X<0)에만 있어야 합니다. 만약 도형이 축을 가로지르거나 축에 걸쳐 있으면, 회전하면서 자기 자신과 겹쳐 모양이 깨질 수 있습니다.
명령어 사용법 및 주요 설정값
angle: 도형을 몇 도나 회전시킬지 정합니다. 기본값은 360으로, 한 바퀴를 완전히 돌려줍니다.angle = 180으로 하면 반만 만들어진 모양이 됩니다.$fn: 회전체의 부드러움을 결정합니다.circle에서처럼, 이 값이 클수록 더 매끄러운 곡면을 가진 회전체가 만들어집니다.
rotate_extrude 예제 코드
// 예제 1: 원을 회전시켜 도넛(토러스) 만들기
// 상상해보세요: 허공에 작은 원 하나를 띄웁니다. (translate)
// 그리고 그 원을 중심축을 기준으로 360도 빙글 돌립니다.
// 그러면 가운데가 뚫린 맛있는 도넛 모양이 만들어집니다.
// 여기서 translate([15, 0, 0])가 바로 원을 중심축에서 15만큼 떨어뜨리는 핵심적인 역할을 합니다.
rotate_extrude($fn = 100) {
translate([15, 0, 0]) {
circle(r = 5);
}
}
// 예제 2: 사각형을 270도만 회전시키기
// 마치 피자 한 조각이 빠진 도넛 같은 모양이 됩니다.
// 사각형을 중심축에서 10만큼 떨어뜨린 후, 270도만 회전시켰습니다.
translate([-30, 0, 0]) {
rotate_extrude(angle = 270, $fn = 100) {
translate([10, 0, 0]) {
square([4, 10], center = true);
}
}
}