얕고 넓게

[CNC] 3중 나선 모델링 @OpenSCAD 본문

IT/3D Printer, CNC

[CNC] 3중 나선 모델링 @OpenSCAD

블랙오닉스 2026. 6. 27. 11:44

2026.06.27

CNC 척을 모델링하려고 보니 나선관련 함수가 없다.

3차원 Helix는 동일 직경에 Z축으로 나선형이라 안된다.

 

직경은 50mm로 수정 (50/2)

Pitch는 두께1, 간격1 x3중나선이라 6이 맞는 것 같다.

Pitch = thinkness*2*3

// --- 2D 평면 나선 설정 매개변수 ---
turns = 1;             // 나선이 회전하는 바퀴 수
thickness = 1;         // 나선 자체의 두께 (1mm)
pitch = 6;             // 피치 (두께 1mm + 간격 1mm = 2mm)
steps_per_turn = 60;   // 한 바퀴당 점의 개수 (정밀도)

// --- 3중 평면 나선 생성 ---
module triple_2d_helix() {
    // 중심을 기준으로 120도씩 돌려가며 3개의 2D 나선을 배치
    for (angle = [0:120:360]) {
        rotate([0, 0, angle]) {
            single_2d_strand();
        }
    }
}

// --- 수식을 이용한 단일 2D 나선 폴리곤 생성 ---
module single_2d_strand() {
    total_steps = turns * steps_per_turn;
    
    // 나선의 안쪽 궤적과 바깥쪽 궤적의 점들을 계산하여 하나의 폴리곤으로 연결
    points = concat(
        // 1. 안쪽 곡선 점들 (원점에서 바깥으로)
        [ for (i = [0 : total_steps]) 
            let(
                theta = (i / steps_per_turn) * 360,
                r = (i / steps_per_turn) * pitch + 50/2
            )
            [ r * cos(theta), r * sin(theta) ] 
        ],
        // 2. 바깥쪽 곡선 점들 (두께 1mm를 더해 바깥에서 안쪽으로 귀환)
        [ for (i = [total_steps : -1 : 0]) 
            let(
                theta = (i / steps_per_turn) * 360,
                r = (i / steps_per_turn) * pitch + thickness + 50/2
            )
            [ r * cos(theta), r * sin(theta) ] 
        ]
    );
    
    // 점들을 연결하여 2D 면 생성
    polygon(points);
}

// 2D 모델 호출
triple_2d_helix();