메뉴 건너뛰기

A11Y

지난 시간에는 맥미니 모양의 네모나고 모서리가 둥근 상자를 함께 만들어 보았습니다. 오늘은 이 상자에 생명을 불어넣는 작업을 해볼 겁니다. 바로, 전원 케이블을 꽂을 구멍과 전원 상태를 알려주는 작은 LED 불빛이 들어갈 구멍을 뚫는 작업이죠.

오늘 우리가 새로 배울 명령어는 rotate(), 즉 '회전하기'입니다.

핵심 명령어: rotate() 살펴보기

rotate() 명령어는 말 그대로 물체를 회전시키는 역할을 합니다. 이렇게 사용합니다.


rotate([x회전각도, y회전각도, z회전각도]) { 회전시킬 물체 }
        

여기서 잠깐, 3강에서 배웠던 '오른손 법칙'을 떠올려 볼까요? 오른손으로 주먹을 쥐고 특정 축 방향으로 엄지손가락을 가리켰을 때, 나머지 네 손가락이 감기는 방향이 바로 양수(+) 회전 방향입니다.

예를 들어, 우리가 cylinder() 명령어로 물체를 만들면, 보통은 바닥에 세워둔 음료수 캔처럼 위(Z축 방향)를 향해 서 있습니다.

만약 이 캔을 앞으로 넘어뜨리고 싶다면 어떻게 해야 할까요?
오른손의 엄지손가락을 오른쪽(X축 방향)으로 향하게 해보세요. 그럼 나머지 네 손가락은 위에서 앞으로, 그리고 아래로 감기는 방향을 가리킬 겁니다. 이게 바로 X축의 양수(+) 회전입니다.

따라서 코드를 이렇게 작성하면,


rotate([90, 0, 0]) cylinder(r=10, h=10);
        

서 있던 음료수 캔이 정면을 향해 누워있는 모양이 되는 것입니다. 오늘 우리가 구멍을 뚫을 때 바로 이 원리를 사용할 겁니다. 마치 드릴 비트를 눕혀서 벽에 구멍을 뚫는 것처럼 말이죠.

전체 코드 살펴보기

자, 그럼 전체 코드를 살펴보며 어떻게 구멍을 뚫는지 단계별로 알아보겠습니다. 코드의 앞부분은 지난 시간에 다룬 내용이므로, 오늘은 새롭게 추가된 부분에 집중해서 설명하겠습니다.

코드의 시작 <<<


// 1. 설계도를 위한 기본 치수 설정 (단위: mm)
// (지난 시간과 동일한 변수 설정 부분은 설명을 생략합니다)

mac_mini_size = 197;
mac_mini_height = 36;
corner_radius = 20;
bottom_foot_radius = 70;
bottom_foot_depth = 1.5;

// 후면 패널의 두께 (구멍을 뚫을 깊이)
back_panel_thickness = 5;

// LED 구멍 정보
led_radius = 1; // LED 구멍 반지름
led_x_pos = 80; // 중심에서의 X축 위치 (오른쪽)
led_z_pos = 18; // 바닥에서의 Z축 높이

// 전원 포트 정보
power_radius = 4; // 전원 포트 구멍 반지름
power_x_pos = -70; // 중심에서의 X축 위치 (왼쪽)
power_z_pos = 18; // 바닥에서의 Z축 높이

$fn = 100;

// ======================================================
// 2. 실제 맥미니 본체 및 후면 포트 구멍 만들기
// ======================================================

// 'difference()' 명령으로 '깎아내기' 작업을 시작합니다.
difference() {
    
    // 첫 번째 물체: 깎아낼 대상이 되는 기본 몸체 (지난 시간에 만든 맥미니 상자)
    hull() {
        offset = mac_mini_size / 2 - corner_radius;
        translate([offset, offset, 0]) cylinder(h = mac_mini_height, r = corner_radius);
        translate([-offset, offset, 0]) cylinder(h = mac_mini_height, r = corner_radius);
        translate([offset, -offset, 0]) cylinder(h = mac_mini_height, r = corner_radius);
        translate([-offset, -offset, 0]) cylinder(h = mac_mini_height, r = corner_radius);
    }
    
    // -------------------------------------------------------------------
    // 이제부터 나오는 물체들은 구멍을 뚫기 위한 '드릴 비트'들입니다.
    // -------------------------------------------------------------------

    // 두 번째 물체: 바닥의 원형 받침대 (지난 시간에 만든 부분)
    translate([0, 0, -1])
        cylinder(h = bottom_foot_depth + 2, r = bottom_foot_radius);


    // 세 번째 물체: 전원 LED 구멍을 뚫을 드릴 비트
    // 상자의 뒤쪽(-Y 방향)에 작은 구멍을 냅니다.
    translate([led_x_pos, -(mac_mini_size/2) - 1, led_z_pos]) {
        // 드릴 비트를 눕히기 위해 X축 기준으로 90도 회전시킵니다.
        rotate([90, 0, 0])
            cylinder(h = back_panel_thickness + 2, r = led_radius);
    }

    // 네 번째 물체: 전원 포트 구멍을 뚫을 드릴 비트
    // LED와 같은 방식으로, 더 굵은 드릴 비트로 구멍을 냅니다.
    translate([power_x_pos, -(mac_mini_size/2) - 1, power_z_pos]) {
        // X축 기준으로 90도 회전
        rotate([90, 0, 0])
            cylinder(h = back_panel_thickness + 2, r = power_radius);
    }
}
        

>>> 코드의 끝

새로운 코드 해설: 구멍 뚫기 과정

우리의 작업은 difference()라는 커다란 틀 안에서 이루어집니다. 첫 번째로 만든 맥미니 본체라는 '찰흙 덩어리'에서, 이후에 만드는 모양들을 '조각칼'처럼 사용해 파내는 과정이라고 상상하시면 됩니다.

1. 전원 LED 구멍 (세 번째 물체)

먼저 아주 작은 LED 구멍부터 뚫어보겠습니다.

  1. 드릴 비트 만들기: cylinder() 명령어로 길고 가는 원기둥을 만듭니다. 이것이 우리의 '드릴 비트'입니다. 변수에 설정한 대로 반지름은 led_radius인 1mm, 길이는 back_panel_thickness인 5mm보다 조금 더 긴 7mm로 만듭니다.
  2. 드릴 비트 눕히기: 방금 만든 드릴 비트는 Z축 방향, 즉 하늘을 향해 서 있습니다. 우리는 상자의 뒷면에 구멍을 뚫어야 하므로 이 드릴 비트를 눕혀야 합니다. 이때 rotate([90, 0, 0]) 명령을 사용합니다. 오른손 법칙에 따라 X축을 기준으로 90도 회전시키면, 위를 향하던 드릴 비트가 이제 Y축 방향을 향해 눕게 됩니다.
  3. 정확한 위치로 이동하기: 이제 눕혀진 드릴 비트를 구멍 뚫을 위치로 옮겨야 합니다. translate() 명령어가 이 역할을 합니다.
    • x 좌표는 led_x_pos, 즉 오른쪽으로 80mm 이동합니다.
    • y 좌표는 -(mac_mini_size/2) - 1 입니다. -(mac_mini_size/2)는 상자의 가장 뒷면까지 이동하라는 뜻입니다. 여기에 -1을 더한 이유는, 드릴 비트가 벽에 딱 붙어 있으면 계산 오류가 날 수 있으니, 벽을 살짝 뚫고 들어가서 확실하게 구멍을 내기 위함입니다.
    • z 좌표는 led_z_pos, 즉 바닥에서 18mm 위로 띄웁니다.

이렇게 이동한 드릴 비트가 difference() 명령어에 의해 맥미니 본체에서 빠지면서, 그 자리에 깔끔한 원형 구멍이 생기게 됩니다.

2. 전원 포트 구멍 (네 번째 물체)

전원 케이블을 꽂을 구멍을 뚫는 과정은 LED 구멍을 뚫는 것과 완전히 똑같습니다. 단지 드릴 비트의 굵기와 위치만 다를 뿐입니다.

  1. 더 굵은 드릴 비트 만들기: 이번에는 power_radius 변수에 설정된 4mm 반지름을 가진, 더 굵은 cylinder를 만듭니다.
  2. 드릴 비트 눕히기: LED 때와 마찬가지로 rotate([90, 0, 0])을 사용해 Y축을 향하도록 눕힙니다.
  3. 다른 위치로 이동하기:
    • x 좌표는 power_x_pos, 즉 왼쪽으로 -70mm 이동합니다.
    • yz 좌표는 LED 구멍과 동일한 원리로, 상자 뒷면의 같은 높이에 위치시킵니다.

이 굵은 드릴 비트 역시 difference()에 의해 본체에서 빠지면서, 더 큰 전원 포트 구멍을 만들게 됩니다.

이렇게 difference() 블록 안에 빼내고 싶은 모양, 즉 '조각칼'이나 '드릴 비트' 역할을 하는 객체들을 계속해서 추가하면, 아무리 복잡한 모양이라도 정교하게 만들어낼 수 있습니다.

오늘 우리는 rotate 명령어를 사용해 물체를 원하는 방향으로 돌리고, 이를 이용해 상자에 구멍을 뚫는 방법을 배워보았습니다. 직접 변수들의 값을 바꿔보면서 구멍의 위치나 크기를 조절해 보세요.

번호 제목 날짜 조회 수
36 OpenSCAD#9. 시각장애인도 3D 디자인을 - 모서리가 둥근 큐브 만들기 new 2026.03.31 8
35 OpenSCAD#8. 시각장애인도 3D 디자인을 - scale, 빵 만들기 2026.03.27 19
34 OpenSCAD#7. 시각장애인도 3D 디자인을 - 곡면의 이해 - 품질과 성능 2026.03.26 25
» OpenSCAD#6. 시각장애인도 3D 디자인을 - 맥미니에 구멍 뚫기 2026.03.24 34
32 OpenSCAD#5. 시각장애인도 3D 디자인을 - 맥미니(Mac mini) 만들기 2026.03.23 55
31 OpenSCAD#4. 시각장애인도 3D 디자인을 - 미키마우스 머리 만들기 2026.03.20 59
30 [수정] OpenSCAD#3. 시각장애인도 3D 디자인을 - 공간의 이해 - 좌표, 단위, 회전 2026.03.19 74
29 OpenSCAD#2. 시각장애인도 3D 디자인을 - 설치와 실행 2026.03.18 77
28 OpenSCAD#1. 시각장애인도 3D 디자인을 - 소개편 2026.03.17 67
27 센스리더 어센드 멀티라인 점자 출력 기능 2026.02.20 175
26 센스리더 가상커서 해제시 포커스 정보에 관하여 2026.02.09 225
25 센스리더 즐겨찾기 도구의 A.I. 프롬프트 사용 안내 2026.02.03 204
24 센스리더 도구에 대한 간략한 소개 2026.01.27 292
23 alt="" 접근성을 더욱 위배할 수 있다. 2025.05.14 810
22 시각장애 개발자와 함께하는 아이디어 마이닝 #9. 마치며 2024.11.22 1008
21 시각장애 개발자와 함께하는 아이디어 마이닝 #8. 자바스크립트 2024.11.21 853
20 시각장애 개발자와 함께하는 아이디어 마이닝 #7. 스크립트 예시, CMD 2024.11.20 775
19 시각장애 개발자와 함께하는 아이디어 마이닝 #6. 스크립트 언어 2024.11.19 819
18 시각장애 개발자와 함께하는 아이디어 마이닝 #5. HTML 2024.11.18 797
17 시각장애 개발자와 함께하는 아이디어 마이닝 #4. 의사 코드 2024.11.14 692