在编写插件时,有时经常需要查找某一类的对象,就像在EPLAN中使用各类筛选器一样,那EPLAN API中是否也提供了这种筛选器呢?答案是肯定的,那就是利用DMObjectsFinder类。

DMObjectsFinder类
 

命名空间:Eplan.EplApi.DataModel.DMObjectsFinder

API帮助:https://www.eplan.help/en-US/infoportal/content/api/2.9/Eplan.EplApi.DataModelu~Eplan.EplApi.DataModel.DMObjectsFinder.html

介绍:此类允许使用一个过滤器类对象,来对指定的项目进行搜索,并返回符合过滤器要求的结果。从DMObjectFinder所提供的方法来看,针对某类的对象都有专门的Get打头的方法可调用,各方法的参数也都是派生自StorableObjectsFilter类的子类对象。最终的返回结果将是符合条件的对象数组。

使用方法很简单,例如我们想得到项目中所有页类型为“多线原理图”的页时,则可以这样编写:

DMObjectsFinder objectsFinder = new DMObjectsFinder(myProject);//myProject是当前项目对象
PagesFilter pagesFilter = new PagesFilter();
pagesFilter.DocumentType = DocumentTypeManager.DocumentType.Circuit;
Page[] pages = objectsFinder.GetPages(pagesFilter);

‍例如想得到项目中所有PLC连接点时,则可以这样编写:

DMObjectsFinder objectsFinder = new DMObjectsFinder(myProject);//myProject是当前项目对象
FunctionsFilter filter = new FunctionsFilter();
filter.Category = Function.Enums.Category.PLCTerminal;
Terminal[] terminals = objectsFinder.GetTerminals(filter);

在获取项目中某页时,除上述方法外,在一个项目对象中,还提供了一个Filter的可读写属性,同样可以给它指定一个PagesFilter对象来筛选。

Console.WriteLine(myProject.Pages.Length);//筛选前共100页
PagesFilter pagesFilter = new PagesFilter();
pagesFilter.DocumentType = DocumentTypeManager.DocumentType.Circuit;
myProject.Filter = pagesFilter;
Console.WriteLine(myProject.Pages.Length);//筛选后共60页

那如果想得到某一个设备显示名称为”-F66″的对象呢?哈哈,这时候有多个办法,例如用过滤器实现时,就可以先用PlacementsFilter类生成个对象,但这个对象只有一个Page类参数需要指定,在赋值后就会返回一个当前页中所有的已放置对象数组,接下来在通过遍历就可以得到名为”-F66″的对象了:

DMObjectsFinder objectsFinder = new DMObjectsFinder(myProject);
PlacementsFilter pagesFilter = new PlacementsFilter();
pagesFilter.Page = myProject.Pages[0];
Placement[] placement = objectsFinder.GetPlacements(pagesFilter);
foreach (var item in placement)
{
if (item.TypeIdentifier == 17)
if (!item.Properties[Properties.FunctionBase.FUNC_VISIBLENAME].IsEmpty)
if (item.Properties[Properties.FunctionBase.FUNC_VISIBLENAME].ToString() == “-F66”)
//找到了
}

好了,本节就介绍到这里,主要跟大家分享了DMObjectsFinder类的使用方法,通过此类可以很方便地得到某一类的所有对象,电气CAD吧可向终身会员提供技术咨询服务,有哪里不懂的用户可以随时联系我们!下节见。

发表评论

登录... 后才能评论