one by one 处理对象时的一种退出方式,应用于不能用RhinoGet.GetMultipleObjects()而必须用GetOneObject的情况. 用在操作中用while循环,避免了重复操作命令。只好想了这个办法退出,否则按ESC都退不出来。 分享供参考,有更好办法请告知 谢谢 上菜
public static Result Test1(RhinoDoc doc)
{
List<Guid> ids = new List<Guid>();//记录处理过的对象
while (true)
{
//GET CURVES 获取要处理的对象
const Rhino.DocObjects.ObjectType filter = Rhino.DocObjects.ObjectType.Curve;
Rhino.DocObjects.ObjRef objRef;
Rhino.Commands.Result rc =
Rhino.Input.RhinoGet.GetOneObject("选择修改的曲线", false, filter, out objRef);
if (rc == Result.Success)
{
Rhino.Geometry.Curve curve = objRef.Curve();
if (curve != null)
{
Guid id = objRef.ObjectId;
if (ids.Contains(id))
{
Rhino.RhinoApp.WriteLine("通过选择相同的曲线退出了连续操作");
//因为是循环操作,通过这种方法强制退出
return Result.Success;
}
ids.Add(id);//每处理一条曲线就留下一条记录
/*处理方法
*
* 处理方法*/
doc.Views.Redraw();
objRef.Object().Select(false);
}
}
}
}
|
|