1

我正在使用此代码让用户从加载的点云中选择特定点。关键是允许他们手动修剪点云,然后创建自动异常值检测来修剪这些点。但是,我在任何地方都找不到如何删除这些点?

       {
           ObjRef[] obj_refs;
           var rc = Rhino.Input.RhinoGet.GetMultipleObjects("Select point", false, ObjectType.Point, out obj_refs);
           if (rc != Result.Success)
               return rc;
           foreach (var o_ref in obj_refs)
           {
              var point = o_ref.Point();
               RhinoApp.WriteLine("Point: x:{0}, y:{1}, z:{2}",
                 point.Location.X,
                 point.Location.Y,
                 point.Location.Z);

           }
           doc.Objects.UnselectAll();

           doc.Views.Redraw();
           return Result.Success;
       }```
4

2 回答 2

0

您可以先尝试在 PointCloud 对象中获取您正在搜索的特定点的索引。接下来,通过使用此功能

https://developer.rhino3d.com/api/RhinoCommon/html/M_Rhino_Geometry_PointCloud_RemoveAt.htm

所以我认为主线将是

obj_refs.RemoveAt(index);
于 2022-02-17T12:00:13.873 回答
0

在 ForEach 循环中,您可以添加一个 IF 语句以仅选择您想要的那些点。像这样的东西:

foreach (var o_ref in obj_refs)
       {
         if (o_ref.property == "only the one you want")
          {
           var point = o_ref.Point();
           RhinoApp.WriteLine("Point: x:{0}, y:{1}, z:{2}",
             point.Location.X,
             point.Location.Y,
             point.Location.Z);
          }
       }
于 2021-11-05T04:00:00.130 回答