RhinoScript 에는 점을 정렬하는 SortPoints와 SortPointList 함수가 있습니다. 이 두 가지 함수 모두 .NET SDK 에서 사용할 수 있나요? On3dPointArray 클래스에 QuickSort 메서드가 있음을 발견하였으나, 실행되지 않는 것 같습니다. 커브와 선을 정렬하는 OnUtil 에 메서드가 있으나, 점을 정렬하는 건 찾을 수가 없네요.
말씀하신 RhinoScript 메서드는 .NET SDK 에는 없지만, 자신의 버전을 직접 스크립팅하실 수 있습니다.
다음의 코드에서는 .NET 리스트 개체를 상속하는 Rhino3dPointList 클래스가 사용되었습니다. 이 클래스에서 멤버를 Sort (정렬)하므로, 사용자가 정렬순서와 오름차순/내림차순으로 배열할 것인지를 지정하실 수 있습니다. 이 클래스의 C# 버전을 다운로드하실 수 있습니다:
http://en.wiki.mcneel.com/content/upload/files/Rhino3dPointList.zip
다음은 샘플 코드입니다:
public override IRhinoCommand.result RunCommand(IRhinoCommandContext context) { Rhino3dPointList points = new Rhino3dPointList(); points.Add(new On3dPoint(0, 0, 0)); points.Add(new On3dPoint(0, 0, 1)); points.Add(new On3dPoint(0, 1, 0)); points.Add(new On3dPoint(0, 1, 1)); points.Add(new On3dPoint(1, 0, 0)); points.Add(new On3dPoint(1, 0, 1)); points.Add(new On3dPoint(1, 1, 0)); points.Add(new On3dPoint(1, 1, 1)); RhUtil.RhinoApp().Print("Before sort...\n"); points.Print(); points.Sort(Rhino3dPointList.sort_method.sort_xyz, true); RhUtil.RhinoApp().Print("Sort ascending...\n"); points.Print(); points.Sort(Rhino3dPointList.sort_method.sort_xyz, false); RhUtil.RhinoApp().Print("Sort descending...\n"); points.Print(); context.m_doc.AddPointCloudObject(points.ToPointArray()); context.m_doc.Redraw(); return IRhinoCommand.result.success; }