메뉴 건너뛰기

A11Y

OpenSCAD Nightly 버전 명령어 정리 (카테고리별)

OpenSCAD Nightly 버전은 안정화 버전에는 없는 최신 기능들을 미리 사용해볼 수 있는 개발 버전입니다. 따라서 기존 명령어의 기능이 확장되거나 새로운 명령어가 추가될 수 있습니다. 이 문서는 Nightly 버전을 기준으로 주요 명령어들을 카테고리별로 사용법과 함께 정리한 것입니다.

참고: Nightly 버전의 기능은 변경되거나 제거될 수 있습니다.


1. 2D 기본 도형 (Primitives)

2차원 평면 도형을 생성하는 명령어들입니다.

명령어 설명 사용법 및 예제
square() 정사각형 또는 직사각형을 생성합니다. square(size, center);
square([width, height], center);

예제:
// 10x20 크기의 직사각형을 원점에 맞춰 생성
square([10, 20], center = true);
circle() 원을 생성합니다. $fn 변수로 해상도를 조절합니다. circle(r); 또는 circle(d);

예제:
// 반지름이 10인 원 생성 (해상도 100)
$fn=100;
circle(r = 10);
polygon() 점(point)들의 좌표를 연결하여 다각형을 생성합니다. polygon(points, paths, convexity);

예제:
// 삼각형 생성
polygon(points = [[0,0], [10,0], [5,10]]);

// 구멍이 뚫린 도형 생성
polygon(points = [[0,0],[10,0],[10,10],[0,10]], 
        paths = [[0,1,2,3],[7,6,5,4]], 
        convexity=10);
text() 문자열을 2D 도형으로 생성합니다. text(text, size, font, halign, valign);

예제:
// "OpenSCAD" 텍스트 생성
text("OpenSCAD", size=10, 
     font="Liberation Sans", halign="center");

2. 3D 기본 도형 (Primitives)

3차원 입체 도형을 생성하는 명령어들입니다.

명령어 설명 사용법 및 예제
cube() 정육면체 또는 직육면체를 생성합니다. cube(size, center);
cube([width, depth, height], center);

예제:
// 10x20x5 크기의 직육면체를 원점에 맞춰 생성
cube([10, 20, 5], center = true);
sphere() 구를 생성합니다. $fn, $fa, $fs로 해상도를 조절합니다. sphere(r); 또는 sphere(d);

예제:
// 반지름이 10인 구 생성
$fn=100;
sphere(r = 10);
cylinder() 원기둥을 생성합니다. cylinder(h, r, center);
cylinder(h, r1, r2, center);

예제:
// 높이 20, 반지름 5인 원기둥 생성
cylinder(h = 20, r = 5, center = true);

// 위아래 반지름이 다른 원뿔대 생성
cylinder(h = 20, r1 = 10, r2 = 5);
polyhedron() 점(points)과 면(faces)을 정의하여 다면체를 생성합니다. polyhedron(points, faces, convexity);

예제:
// 간단한 사각뿔 생성
polyhedron(
  points=[[0,0,0], [10,0,0], [10,10,0], 
          [0,10,0], [5,5,10]],
  faces=[[0,1,2,3], [0,1,4], [1,2,4], 
         [2,3,4], [3,0,4]]
);

3. 변환 (Transformations)

생성된 도형의 위치, 회전, 크기 등을 변경합니다.

명령어 설명 사용법 및 예제
translate() 지정된 벡터만큼 객체를 이동시킵니다. translate([x, y, z]) { ... }

예제:
// x축으로 10만큼 구를 이동
translate([10, 0, 0]) sphere(5);
rotate() 지정된 축을 기준으로 객체를 회전시킵니다. rotate([x, y, z]) { ... }
rotate(a, [x, y, z]) { ... }

예제:
// Y축을 기준으로 45도 회전
rotate([0, 45, 0]) cube([10, 20, 5]);
scale() 지정된 비율로 객체의 크기를 조절합니다. scale([x, y, z]) { ... }

예제:
// Z축으로만 2배 확대
scale([1, 1, 2]) cylinder(h=10, r=5);
resize() 지정된 크기로 객체의 크기를 강제로 맞춥니다. auto를 사용하여 비율을 유지할 수 있습니다. resize([new_x, new_y, new_z], auto=false) { ... }

예제:
// 높이를 50으로 맞추고 X, Y는 비율 유지
resize([0, 0, 50], auto=true) sphere(10);
mirror() 지정된 평면을 기준으로 객체를 반사 복사합니다. mirror([x, y, z]) { ... }

예제:
// XZ 평면(Y=0)을 기준으로 반사
mirror([0, 1, 0]) translate([5,5,0]) cube(2);
color() 객체의 색상을 지정합니다. F5(미리보기)에서만 적용됩니다. color("colorname") { ... }
color([r, g, b], alpha) { ... }

예제:
// 빨간색 구 생성
color("red") sphere(5);
multmatrix() 변환 행렬을 직접 적용하여 이동, 회전, 크기 조절 등을 한 번에 수행합니다. multmatrix(m) { ... }

예제:
// Z축 45도 회전과 X축 10 이동을 동시에 적용
m = [[cos(45), -sin(45), 0, 10], 
     [sin(45), cos(45), 0, 0], 
     [0, 0, 1, 0], 
     [0, 0, 0, 1]];
multmatrix(m) cube(5);

4. 불리언 연산 (Boolean Operations)

여러 개의 도형을 조합하여 새로운 도형을 만듭니다.

명령어 설명 사용법 및 예제
union() 모든 자식 객체들을 하나로 합칩니다. union() { ... }

예제:
union() {
  cube(10, center=true);
  sphere(7.5);
}
difference() 첫 번째 자식 객체에서 나머지 자식 객체들을 뺍니다. difference() { ... }

예제:
difference() {
  cube(10, center=true);
  sphere(7.5);
}
intersection() 모든 자식 객체들이 겹치는 부분만 남깁니다. intersection() { ... }

예제:
intersection() {
  cube(10, center=true);
  sphere(7.5);
}

5. 2D에서 3D로 확장 (Extrusions)

2D 도형을 3D로 만드는 명령어입니다.

명령어 설명 사용법 및 예제
linear_extrude() 2D 도형을 선형으로 돌출시켜 3D 객체를 만듭니다. linear_extrude(height, center, convexity, twist, slices, scale);

예제:
// 별 모양을 10만큼 돌출, 중간에 360도 꼬임
linear_extrude(height = 10, twist = 360, slices = 50) {
  difference() {
    circle(r=10);
    circle(r=5);
  }
}
rotate_extrude() 2D 도형을 Z축을 중심으로 회전시켜 3D 객체를 만듭니다. rotate_extrude(angle, convexity, $fn);

예제:
// 원을 회전시켜 도넛 모양(토러스) 생성
rotate_extrude(convexity = 10) {
  translate([20, 0, 0]) circle(r = 5);
}

6. 고급 모델링 및 제어

명령어 설명 사용법 및 예제
hull() 모든 자식 객체들을 감싸는 볼록 껍질을 생성합니다. hull() { ... }

예제:
// 떨어져 있는 두 구를 연결
hull() {
  sphere(5);
  translate([20, 0, 0]) sphere(5);
}
minkowski() 한 객체의 모든 점에 다른 객체를 더하여 새로운 객체를 만듭니다. 모서리를 둥글게 처리할 때 유용합니다. minkowski() { ... }

예제:
// 큐브의 모서리를 둥글게 만듦
minkowski() {
  cube(10, center=true);
  sphere(r = 2);
}
module / function 코드를 재사용하기 위한 모듈(도형 생성)과 함수(값 반환)를 정의합니다. module my_object(size) { ... }
function my_calc(val) = val * 2 + 1;

예제:
module rounded_cube(s, r) {
  minkowski() {
    cube(s - r*2, center=true);
    sphere(r);
  }
}
rounded_cube([10,20,5], 2);
for / if 반복문과 조건문을 사용하여 프로그래밍적으로 모델링합니다. for (i = [start:step:end]) { ... }
if (condition) { ... } else { ... }

예제:
// 5개의 큐브를 일렬로 배치
for (i = [0:1:4]) {
  translate([i * 12, 0, 0]) cube(10);
}

7. Nightly 버전 주요 추가/강화 기능

Nightly 버전에서 특히 주목할 만한 새로운 명령어와 기능들입니다.

명령어 설명 사용법 및 예제
offset() (강력한 신기능) 2D 도형의 외곽선을 안쪽 또는 바깥쪽으로 확장/축소합니다. offset(r|delta, chamfer, $fn);

예제 1: 확장
// 가상 별 모양 외곽선을 2만큼 확장
module star(n, r1, r2) {
    polygon([
        for(i=[0:2*n-1]) 
            let(a=i*180/n) 
            ( (i%2==0?r2:r1) * [sin(a), cos(a)])
    ]);
}
offset(r = 2) {
    star(n=5, r1=5, r2=10);
}
예제 2: 축소 (구멍 뚫기)
difference() {
  square(20, center=true);
  offset(delta = -3) square(20, center=true);
}
sweep() (강력한 신기능) 2D 프로파일(단면)을 지정된 경로(path)를 따라 이동시켜 3D 객체를 생성합니다. linear_extruderotate_extrude를 일반화한 버전입니다. sweep(shape, path, convexity);

예제:
// 원형 단면을 나선형 경로로 이동시켜 스프링 생성
path = [for(t=[0:5:360*4]) 
           [10*cos(t), 10*sin(t), t/40]];
sweep(circle(2), path);
let() / assign() 변수의 유효 범위(scope)를 더 명확하게 제어합니다. let은 블록 내에서만 유효한 지역 변수를 만들고, assign은 블록 밖의 변수 값을 변경합니다. let(a=5, b=10) { ... }
assign(a=5, b=10) { ... }

예제:
a = 1;
let (a = 10) {
  echo(a); // 10 출력
}
echo(a); // 1 출력
리스트 컴프리헨션 for 루프와 유사하지만, 리스트(배열)를 생성하는 데 특화된 간결한 문법입니다. 점들의 좌표를 생성할 때 매우 유용합니다. [ for (i = range) expression ]

예제:
// 사인 곡선을 따르는 점들의 리스트 생성
points = [ for (x = [0:5:100]) [x, sin(x*3.6)*10] ];
polygon(points);
렌더링 제어자 디버깅 및 모델링 과정을 돕는 특수 문자입니다. %: 자식 객체를 투명하게 렌더링 (불리언 연산에 영향 없음)
#: 자식 객체를 빨간색으로 하이라이트
!: 자식 객체만 렌더링
*: 자식 객체를 비활성화 (렌더링 안 함)

예제:
difference() {
  cube(10);
  // 빼낼 부분을 하이라이트
  #translate([5,5,5]) sphere(6);
}

기타 유용한 변수 및 함수

특수 변수

  • $fn: 원이나 구의 곡면을 구성하는 면의 개수. 높을수록 부드럽습니다.
  • $fa: 곡면의 최소 각도. 작을수록 부드럽습니다.
  • $fs: 곡면을 이루는 최소 선분 길이. 작을수록 부드럽습니다.

수학 함수

  • sin(), cos(), tan(), sqrt(), pow(), norm(), cross() 등 대부분의 수학 함수를 지원합니다.

파일 입출력

  • import("file.stl" | "file.dxf"): 외부 3D/2D 파일을 불러옵니다.
  • export("file.stl"): (Nightly 기능) 스크립트 내에서 특정 부분만 파일로 내보낼 수 있습니다.

이 목록이 OpenSCAD Nightly 버전의 강력한 기능들을 익히는 데 도움이 되기를 바랍니다. 가장 정확한 최신 정보는 OpenSCAD 공식 문서치트시트를 참고하는 것이 좋습니다.

번호 제목 날짜 조회 수
» [참고] OpenSCAD Nightly 에서 사용되는 명령어 일람 - A.I 작성 2026.04.07 9
22 OpenSCAD#12. 시각장애인도 3D 디자인을 - 2D 평면을 3D 입체로 만드는 마법 - 사출(extrusion)의 이해 2026.04.07 4
21 [자료] OpenSCAD로 만든 남성과 여성 피규어 모델 file 2026.04.03 17
20 OpenSCAD#11. 시각장애인도 3D 디자인을 - 부품 단위로 생각하기, module 2026.04.03 20
19 OpenSCAD#10. 시각장애인도 3D 디자인을 - 반복의 마법, for 2026.04.01 31
18 OpenSCAD#9. 시각장애인도 3D 디자인을 - 모서리가 둥근 큐브 만들기 2026.03.31 26
17 OpenSCAD#8. 시각장애인도 3D 디자인을 - scale, 빵 만들기 2026.03.27 128
16 OpenSCAD#7. 시각장애인도 3D 디자인을 - 곡면의 이해 - 품질과 성능 2026.03.26 119
15 OpenSCAD#6. 시각장애인도 3D 디자인을 - 맥미니에 구멍 뚫기 2026.03.24 130
14 OpenSCAD#5. 시각장애인도 3D 디자인을 - 맥미니(Mac mini) 만들기 2026.03.23 201
13 OpenSCAD#4. 시각장애인도 3D 디자인을 - 미키마우스 머리 만들기 2026.03.20 151
12 [수정] OpenSCAD#3. 시각장애인도 3D 디자인을 - 공간의 이해 - 좌표, 단위, 회전 2026.03.19 206
11 OpenSCAD#2. 시각장애인도 3D 디자인을 - 설치와 실행 2026.03.18 185
10 OpenSCAD#1. 시각장애인도 3D 디자인을 - 소개편 2026.03.17 149
9 시각장애 개발자와 함께하는 아이디어 마이닝 #9. 마치며 2024.11.22 1089
8 시각장애 개발자와 함께하는 아이디어 마이닝 #8. 자바스크립트 2024.11.21 924
7 시각장애 개발자와 함께하는 아이디어 마이닝 #7. 스크립트 예시, CMD 2024.11.20 849
6 시각장애 개발자와 함께하는 아이디어 마이닝 #6. 스크립트 언어 2024.11.19 910
5 시각장애 개발자와 함께하는 아이디어 마이닝 #5. HTML 2024.11.18 905
4 시각장애 개발자와 함께하는 아이디어 마이닝 #4. 의사 코드 2024.11.14 774