2024년 9월 3일 화요일

Sheet(도면화), 각각의 뷰를 원하는 시트의 원하는 위치에 배치


뷰 > 시트 배치에 대한 개념 설명


1) 시트와 뷰를 String 문자 정보로 [Category.ByName] 노드의 인풋 입력
[All Elements of Category] 노드를 통한 시트, 뷰 elements 전체 추출

2) 1층 편면도 찾기 및 element list 구분

뷰 elements를 [String from Object] 노드로 TEXT 정보로 변환
[String.Contains] 노드에 1층 평면도 혹은 찾아야 할 도면의 특정 단어 입력
[List.FilterByBoolMask] 노드로 in : 해당 뷰 (true), out : 나머지 뷰 들(false) 추출

3) Sheet, Viewport의 다양한 노드 라이브러리 확인

4) Input / Output을 확인하며, view, views를 인풋으로 받고, out으로 sheet를 출력하는 노드들 확인 가능. [Viewport.BySheetViewLocation] 노드는 sheet, view, location을 받아 해당 시트에 뷰의 위치를 설정 가능함을 확인

5) [Sheet.ByNameNumberTitleBlock] 노드는 sheetName, sheetNumber, Family Types 정보를 받아 Sheet를 생성하지만, sheetNumber의 경우 숫자라고 생각할 수 있지만 text 정보이기 때문에 String 정보를 입력 필요.

6) [viewport.BysheetviewLocation] 노드는 sheet, view, location 정보를 받아 viewport 위치를 지정 가능하며, location Point 위치가 중요
7) location에 origin (x,y,z = 0,0,0) 입력 시 아래 이미지와 같이 좌측 하단에 배치 모습 확인
해당 위치가 0,0,0 임을 확인하며, sheet의 크기 재 확인 필요
8) 배치된 viewport를 [Viewport.BoxOutline] , [BoundingBox.ToCuboid] 노드를 사용하여 BoundingBox > Cuboid로 output 생성 및 확인
 

9) Sheet의 크기 확인은 아래 이미지와 같이 840 x 594 로 확인
viewport cuboid의 크기는 252 x 295 로 확인

10) sheet의 크기를 [Rectangle.ByWidthLength] 노드를 활용하여 Rectangle 형상 추출

11) 배치된 sheet의 위치와 일치하는 배치를 위하여 [Geometry.Translate] 노드에 각 길이의 1/2 만큼의 거리를 이동

** Cuboid와 sheet의 크기 개념
2분할 배치 개념
1:1 배치 후 Scale 변경 개념
12) sheet 형상에서 Line을 추출하여 가로, 세로 Line 별도 추출

13) 각 Line의 중심 점 추출을 위해 [Curve.PointAtParameter]의 0.5 값 사용
14) 추출한 두 점의 X,Y 값을 활용하여 sheet 중심 점 추출
15) viewport의 위치 location 값을 sheet 중심 점으로 변경하여, 
sheet 이동 확인 후 Cuboid 형상 확인

16) 해당 sheet의 특성 중 뷰 축척 1:100 확인 가능
17) viewport의 Cuboid 이전에 BoundingBox를 활용하여 Min, Max Point 추출
[Cuboid.Width], [Cuboid.Length] 노드로 길이 확인
18) BoundingBox의 Min, Max Point를 [Line.ByStartPointEndPoint]를 활용하여 Line 생성 후 [Curve.Length] 노드로 길이 확인

19) 기존 sheet의 가로 세로 Line의 point 추출 각 커브에 [Curve.PointAtParameter] 0, 1 위치로 start, end Point 추출 후 Line 생성
20) 두 Line의 길이를 비교하여 비율을 계산 및 추측
21)[Math.Floor] 노드의 값이 2 임을 확인하여, 약 2배 차이임을 확인

22) 1:100보다 2배 커지는 상황이기 때문에 스케일 1:50으로 변경
Viewport element에 [Element.SetParameterByName]을 통하여 "뷰 축척"에 50 값 입력

**하단 내용은 분할 배치로 재 업로드 예정












2024년 8월 2일 금요일

Annotation(주석표기), 단일슬라브를 하나의 바닥으로 작성시 구조보경계를 기준으로 해당 슬라브의 주석각각표기

 슬라브의 높이가, 유형(Type)이 다른 상황에서 구조프레임을 통해 슬라브를 분할하여 주석을 배치하는 프로세스를 실험한다. 

Sample File



높이가 다른 3개의 바닥 확인 (-150, 0, 150)
Level 1





Input 1 : 한글/영어
Input 2 : 카테고리 선택 (바닥) 
Input 3 : Level 선택 (Level 1)
Input 4 : 카테고리 선택 (구조 프레임)


sample 파일의 바닥 3개의 element 확인


구조 프레임을 불러온 뒤, GetLocation 노드를 통하여 Line을 추출한다.



Floor의 Surface를 분할하기 위해 틀을 짜듯 형상을 만들고, Solid 하나도 변경

솔리드를 분할 후 Solid.Separate를 통해 나누어진 solid List 정리


Floor 생성을 위하여 각 분할 된 Floor Solid를 Curve로 변경




Floor 생성 및 유형 일치시키기 




기존 정보를 연결해주는 구간으로, 상황에 따라 변경 가능


기존 넓은 Floor 요소를 삭제하는 구간의 오류로 인하여 삭제 보류