[MS C++] 查找带有某个EC属性的元素

各位老师  我给元素附上了自定义的EC属性  现在想要在模型的一堆元素中扫描查找带有该EC属性的元素 

有什么方法可以筛选这类元素吗?

提前感谢!

  • 请参考如下代码:

    public static void TestECInstanceToElement()
            {
                string SchemaName = "TunnelAttributes";
                string ClassName = "TunnelCode";
                FindInstancesScope scope = FindInstancesScope.CreateScope(Session.Instance.GetActiveDgnModel(), new FindInstancesScopeOption(DgnECHostType.Element));
                FindInstancesScope scopeTemp = FindInstancesScope.CreateScope(Session.Instance.GetActiveDgnFile(), new FindInstancesScopeOption());
                int verMaj = 01, verMin = 0;
                IECSchema ecschema = DgnECManager.Manager.LocateSchemaInScope(scopeTemp, SchemaName, verMaj, verMin, SchemaMatchType.Latest);
                scopeTemp = FindInstancesScope.CreateScope(Session.Instance.GetActiveDgnFile(), new FindInstancesScopeOption());
                ecschema = DgnECManager.Manager.LocateSchemaInScope(scopeTemp, SchemaName, verMaj, verMin, SchemaMatchType.Latest);
                IECClass ecClass = ecschema.GetClass(ClassName);
                IECClass[] ecClassArr = new IECClass[1];
                ecClassArr[0] = ecClass;
                ECQuery ecQuery = new ECQuery(ecClassArr);
                DgnECInstanceCollection dgnECInsCol = DgnECManager.Manager.FindInstances(scope, ecQuery);
                foreach(var curVar in dgnECInsCol)
                {
                    MessageCenter.Instance.ShowInfoMessage(curVar.Element.ElementId.ToString(), "", false);
                }
            }

    Answer Verified By: mkt