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 연결 가능


댓글 없음:

댓글 쓰기