当前位置:   article > 正文

autocad.net 画多段线_cad.net 判断点在多段线内-射线法

c# autocad getnestedentity

///

///点选直到满足条件///

/// 图形数据库

/// 过滤类型,数组

/// 块外

/// 块内

/// 点选到的图元的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;

}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/114368
推荐阅读
相关标签
  

闽ICP备14008679号