본문 바로가기
Grasshopper

[인표몬의 그래스호퍼]목재 데크 자동설계 알고리즘

by 인표몬 2024. 7. 30.
반응형

 먼저, 이 포스팅은 개인 기록용임을 알립니다.
 
 해당 알고리즘은 제작자가 현재 재직중인 회사에서 개인적으로 사용하고 있습니다. 회사의 업무지시에 의해 제작하진 않았지만 회사의 정보(재산)이 공유될 위험이 있으므로 포스팅 내용에 정보성이 일부 제한적일 수 있으며, 외부로 알고리즘 파일을 절대 배포하지 않습니다.
 
※ 이 알고리즘은 지식 재산권으로 보호받으며 저작자의 허가를 받은 사람 외에 아래와 같은 행위를 엄금합니다.
1. 저작자의 허가를 받지 않은 다른 사람의 복제·전송·배포·개작 등의 이용.
2. 외부/타인에게 배포하는 행위.
*허가받은 사용자: 저작자로부터 직접 배포받은 사람.
*저작자: 홍인표


 

 

 목재 데크 자동 설계 알고리즘입니다.

 

 위 이미지에서 보셨듯 가로 세로 폭 설정만으로 목재 상판 배열 및 데크보 길이가 결정됩니다.

 

 우측에 보이는 알고리즘은 클러스터로 묶어놓은 상태이며, 해체 시 아래와 같이 펼쳐집니다.

 

 

 

 Input 먼저 살펴봅시다.

 

 

 데크 전체 사이즈의 가로/세로 폭(mm)을 입력하고

 본 목재데크는 원형 기둥에 사용할 목적이었기에 원기둥의 반지름을 입력합니다.

 데크 보의 폭과 두께를 입력합니다.

 기둥 턱가공 Offset 이란, 원기둥의 외경에서 몇 mm만큼 오프셋 하여 턱가공을 할 지 설정합니다.

 상판 데크재의 폭과 두께를 설정합니다.

 

 

 

우선 Rectangle 노드를 이용하여 {0,0,0}에 데크 상판이 될 사각형을 그립니다.

이 때, 위에서 소개했던 Input 값 중에 "[상판 데크재]의 폭" 값을 가져와 사용합니다.

그리고 길이는 기본적으로 "데크의 세로 폭" 값을 따르지만, 여기에 +원기둥 반지름(55)*2 만큼 더한 값을 입력해줍니다.

현재 "[상판 데크재]의 폭"은 137mm 이며, "데크의 세로 폭"은 1000mm로 설정했으므로,

 

137mm 폭에 길이 1100mm 짜리 직사각형이 출력 된 모습입니다.

 

 

 

"데크의 세로 폭", "데크의 가로 폭"으로 인해 생성 된 1000*1000 짜리 사각형에 Area 를 사용하여 중심점을 생성합니다.

 

 

 그 중심점을 활용하여 ArrayPolar 알고리즘으로 137*1110 짜리 직사각형을 2개로 원형배열 합니다.

 현재로썬 ArrayPolar가 아닌 Mirror 해도 무방합니다. 사다리꼴이나 곡선이 들어간 데크를 만드는게 아닌 직사각형 모듈 데크를 생성하므로 Mirror를 해도 문제는 없습니다.

 

 

 

 ArrayPolar 된 직사각형에 Area 를 사용하여 중심점을 찍으면 양쪽 직사각형 모두에 중심점이 형성됩니다.

 

 

 

 

 형성 된 2개의 중심점에 ListItem 노드를 2개 사용하여

 하나는 0, 하나는 1을 입력하여 시작점과 끝점을 각각 선별해준 후,

 Line 을 긋습니다.

 

 

 LinearArray 를 활용하여 Line을 "데크의 가로 폭" 을 "[상판 데크재]의 폭"으로 Division(나누기) 한 후, Addition(더하기) "1" 을 하여 개수를 설정, 배치합니다.

 

 

 

 그 후, 직사각형들을 BoxRectangle 로 돌출시켜 직육면체로 만들면 데크 상판 배열이 완료됩니다.

 

 

 이렇게 데크 가로 폭과 세로 폭 값을 조절해주면 데크 상판 배열이 자연스럽게 됩니다.

 

 다음 포스팅에서는 데크 보 배열 알고리즘을 작성하겠습니다. 감사합니다.

 

 

반응형