Site Tools


3D 점 정렬

.NET

소개

RhinoScript 에는 점을 정렬하는 SortPointsSortPointList 함수가 있습니다. 이 두 가지 함수 모두 .NET SDK 에서 사용할 수 있나요? On3dPointArray 클래스에 QuickSort 메서드가 있음을 발견하였으나, 실행되지 않는 것 같습니다. 커브와 선을 정렬하는 OnUtil 에 메서드가 있으나, 점을 정렬하는 건 찾을 수가 없네요.

답변

말씀하신 RhinoScript 메서드는 .NET SDK 에는 없지만, 자신의 버전을 직접 스크립팅하실 수 있습니다.

다음의 코드에서는 .NET 리스트 개체를 상속하는 Rhino3dPointList 클래스가 사용되었습니다. 이 클래스에서 멤버를 Sort (정렬)하므로, 사용자가 정렬순서와 오름차순/내림차순으로 배열할 것인지를 지정하실 수 있습니다. 이 클래스의 C# 버전을 다운로드하실 수 있습니다:

http://en.wiki.mcneel.com/content/upload/files/Rhino3dPointList.zip

다음은 샘플 코드입니다:

C#

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;
}
ko/developer/sdksamples/sortpoints.txt · Last modified: 2020/08/14 (external edit)