메뉴 건너뛰기

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 작성 new 2026.04.07 7
40 OpenSCAD#12. 시각장애인도 3D 디자인을 - 2D 평면을 3D 입체로 만드는 마법 - 사출(extrusion)의 이해 new 2026.04.07 4
39 [자료] OpenSCAD로 만든 남성과 여성 피규어 모델 file 2026.04.03 14
38 OpenSCAD#11. 시각장애인도 3D 디자인을 - 부품 단위로 생각하기, module 2026.04.03 16
37 OpenSCAD#10. 시각장애인도 3D 디자인을 - 반복의 마법, for 2026.04.01 27
36 OpenSCAD#9. 시각장애인도 3D 디자인을 - 모서리가 둥근 큐브 만들기 2026.03.31 25
35 OpenSCAD#8. 시각장애인도 3D 디자인을 - scale, 빵 만들기 2026.03.27 109
34 OpenSCAD#7. 시각장애인도 3D 디자인을 - 곡면의 이해 - 품질과 성능 2026.03.26 114
33 OpenSCAD#6. 시각장애인도 3D 디자인을 - 맥미니에 구멍 뚫기 2026.03.24 118
32 OpenSCAD#5. 시각장애인도 3D 디자인을 - 맥미니(Mac mini) 만들기 2026.03.23 165
31 OpenSCAD#4. 시각장애인도 3D 디자인을 - 미키마우스 머리 만들기 2026.03.20 138
30 [수정] OpenSCAD#3. 시각장애인도 3D 디자인을 - 공간의 이해 - 좌표, 단위, 회전 2026.03.19 188
29 OpenSCAD#2. 시각장애인도 3D 디자인을 - 설치와 실행 2026.03.18 171
28 OpenSCAD#1. 시각장애인도 3D 디자인을 - 소개편 2026.03.17 130
27 센스리더 어센드 멀티라인 점자 출력 기능 2026.02.20 260
26 센스리더 가상커서 해제시 포커스 정보에 관하여 2026.02.09 373
25 센스리더 즐겨찾기 도구의 A.I. 프롬프트 사용 안내 2026.02.03 297
24 센스리더 도구에 대한 간략한 소개 2026.01.27 364
23 alt="" 접근성을 더욱 위배할 수 있다. 2025.05.14 911
22 시각장애 개발자와 함께하는 아이디어 마이닝 #9. 마치며 2024.11.22 1082