2025년 4월 12일 토요일

루버 배치 및 디자인 v1

 




루버 배치를 위한 기준  Face 를 선택 후 [Surface.PerimeterCurves]로 NurbsCurve를 추출 및 선택

[Curve.Length]로 길이를 추출하여 500mm 단위로 배치 가능한 point를 추출
[Curve.PointAtSegmentLength] 노드를 사용하며, 간격은 추후에 인풋값으로 변경 가능


NurbsCurve를 평면으로 펼친다는 가정으로 사각형을 생성


NurbsCurve의 length를 [Rectangle.ByWidthLength]의 인풋에 연결하면, 추후의 형태 변형시 자동으로 길이값이 변경가능


사각형을 [Geometry.Explode]를 활용하여 Line 들로 분해 후 짧은 Line들을 선택
[List.SortByFunction]의 인풋으로 [Curve.Length]를 사용하여 0,1 index는 짧은 line들이 2,3 index는 긴 line들이 정렬 됨
[List.TakeItems] input 2를 입력하여 짧은 line 2개를 선택 가능


[List.TakeItems] input -2로 긴 line들을 선택하여 [Curve.PointAtParameter] 인풋으로 입력 후, 일정 간격의 point 추출 가능



기존 NurbsCurve의 500 간격 point의 개수를 확인 후, 간은 간격으로 사각형의 긴 line에 point를 배치


각각의 line의 방향성이 다르기 때문에 [List.Reverse]로 point list를 정렬 후 line 생성



곡면 루버 배치를 위한 새롭게 변하는 커브를 만들기 위해 기준 라인을 생성


[Number Slider]의 변화에 따라 곡선의 변화 가능
[Number Slider]를 Input으로 설정하여  Generative Design의 변수로 확인


새롭게 생성되어 변하는 커드와 기존 배치될 라인들의 [Geometry.Intersect]  교차점 추출하여 point Y 값을 추출
이 부분은 생성하는 사각형의 형태 및 높이, 방향에 따라 변경 가능한 구간
그리고 Y값이 +,- 값을 보이기 때문에, 높이의 중간값인 7000을 더하여 + 값으로 변경


추출한 값의 Sum은 디장인에 활용된 부분의 길이 값의 합이기 때문에 OUTPUT으로 설정
그리고 해당 길이는 Revit Family의 parameter에 입력해야 하기 때문에 [Gate] 노드로 연결


[Gate]노드를 사용하여 point들과 루버의 길이를 분리 후, [FamilyInstance.ByPointAndLevel]로 패밀리를 배치, [Element.SetParameterByName]로 루버의 길이 값을 입력


Generative Design 연결 가능


2025년 4월 5일 토요일

Rhino SAT 형상을 Revit 바닥 형상으로 생성하기

 도면화 작업 시 Rhino에서 작업한 패턴이 바닥 형상 이외에서도 보이는 현상이 발생한다. 그렇기 때문에 필요한 형상 부분만을 추출하여 Revit의 바닥 형상으로 대체하는 방법으로 진행 한다.



1. import SAT Geometry


2. Revit Floor 형상 가져오기


3. Rhino SAT 패턴 형상이 표현될 Revit Floor 형상 선택


4. SAT 파일의 Solid 이외의 Surface 형상을 확인하여,  Solid 형상만 분리 후 [Solid.ByUnion] 노드를 사용하여 하나의 Solid로 변경


5. SAT 형상을 바닥 위치로 이동


6. 바닥 형상과 SAT 형상의 교차 형상 추출



7. [DirectShape.ByGeometry] 노드를 활용하여 카테고리, 재료, 이름을 지정 후  revit 형상 작성










2025년 4월 4일 금요일

구조 파일 넘버링 응용

 요청사항 / 미션

  1. Structural Piles 의 넘버링 순서 표기

  2. 서로 다른 기준 Level을 기준으로 구룹을 이루어 넘버링 순서 표기

  3. 구룹은 1xx, 2xx, 3xx … 의 순서로 표기

구조 기초 카테고리 중 pile 문자를 포함하는 패밀리 추출

element 와 Solid 형상 List 분리


구조 파일의 중심점을 추출하여 point.Z 값으로 list 정리


높이별로 구룹이 구분된 point들을 활용하여 element list 구조 재구성

구룹별 count 수와,  1xx, 2xx, 3xx, … 순서로 구룹 list 정리











2025년 4월 3일 목요일

파일 넘버링 기본

 

파일 넘버링 기본 방식 

 배치된 파일들의 마크 매개변수에 정렬된 번호로 넘버링을 하는 방식입니다. 


[Select Model Elements By Category] 노드로 구조 기초 카테고리 파일들을 선택
[Element.Geometry] 노드로 형상 확인 
> 형상에 Line과 Solid가 함께 있는 현황 확인 가능
> Solid를 제외한 나머지 Geometry 제거 필요


[List.LastItem] 노드를 활용하여 Solid만 추출
[Solid.Centroid] 노드로 Solid의 중심 점 추출
[List.SortByFunction]의 sortFuction Input 값을 [Point.X]로 연결하여 X 좌표값으로 정렬
정렬된 Points를 [Geometry.Translate] _ 10000, [Vector.ZAzis]로  Z 방향으로 10000mm 만큼 이동하여 형상을 확인


두번째 정렬 방식인 Y열 정렬을 위하여 [Point.Y] 값의 소수 점 정리
[List.UniqueItems] _ [List.Sort] _ [List.Reverse]를 활용하여 List의 Y열로 재 정렬



[List.SortByFunction] _ [Point.X] Y열로 정렬된 List를 X 열로 다시 한번 정렬
[List.Flatten]으로 Lv 1에 모든 포인트 순서 확인



Geometry _ Solid 들의 List와 정렬된 Point들의 List 순서를 맞추는 작업 필요
> 정렬된 Point와 Solid List들을 준비



[Geometry.DoesIntersect]를 활용하여 Point 기준으로 Solid List 재정렬
[List.FilterByBoolMask]로 List 정렬 확인


Element List를 같은 [List.FilterByBoolMask] 값으로 재 정렬
[Element.SetParameterByName] _ "마크" _ [String from Object] 노드로 문자(숫자를 문자로 변경) 값을 입력