///
///点选直到满足条件///
/// 图形数据库
/// 过滤类型,数组
/// 块外
/// 块内
/// 点选到的图元的ObjectId
public static object WhileEntsel(thisEditor ed, Transaction tr,
PromptEntityOptions peo= null, PromptNestedEntityOptions opt = null, IEnumerable entType = null)
{
ed.SetImpliedSelection(new ObjectId[0]); //清空当前选择集
object idOrKeyword = null;
ObjectId idget=ObjectId.Null;bool flag = true;
PromptEntityResult res;
PromptNestedEntityResult pnes;while(flag)
{if (peo != null)
{
res=ed.GetEntity(peo);switch(res.Status)
{casePromptStatus.Keyword:
idOrKeyword=res.StringResult;
flag= false;break;casePromptStatus.Cancel:casePromptStatus.None:casePromptStatus.Error:
flag= false;break;casePromptStatus.OK:
idget=res.ObjectId;break;
}
}else if (opt != null)
{
pnes=ed.GetNestedEntity(opt);switch(pnes.Status)
{casePromptStatus.Cancel:
flag= false;break;casePromptStatus.None:
flag= false;break;casePromptStatus.Error:
flag= false;break;casePromptStatus.OK:
idget=pnes.ObjectId;break;
}
}var listtype = new List();//类型要求为空,代表任何类型都接受,否则加入表内判断.
if (entType != null)
{foreach (var item inentType)
{
listtype.Add(item.ToString());
}
}if(idget.IsOk())
{//图元类型匹配
Entity ent =idget.ToEntity(tr);if (entType == null || entType.Count == 0)
{
flag= false;
idOrKeyword=idget;
}else if(listtype.Contains(ent.GetType().Name))
{
flag= false;
idOrKeyword=idget;
}
}else{break;
}
}
CadSystem.Setvar("errno", "0");//空格结束产生的错误系统变量,会影响到下一次使用错误系统变量的判断.
returnidOrKeyword;
}