[MSCE C#]元素个数获取与操作

我想查找出一个Model中Element的个数,然后通过循环的方式(其他方式也可以),遍历每一个Element,然后执行相关的函数。

 class Convert : ElementGraphicsProcessor
    {
        public static void Material2(string unparsed)
        {
            Bentley.DgnPlatformNET.DgnModel dgnModel = Session.Instance.GetActiveDgnModel();
            Bentley.DgnPlatformNET.DgnFile dgnFile = Session.Instance.GetActiveDgnFile();
            //读取model

            if (0 == dgnModel.GetElementCount(DgnModelSections.Model))
            {
                MessageCenter.Instance.ShowInfoMessage("未找到可读取元素!", null, true);
                return;
            }
            
            uint i,j;

            Element ele = null;
            j = dgnModel.GetElementCount(DgnModelSections.Model);
            for (i = 0; i < j; i++)
            {
                // 返回数组的第i的个元素
                ele =;//不知如何获取
                
                Material3(dgnModel,dgnFile,ele);
            }

现在的问题是我不知道用什么函数来调用模型的Element中的element顺序

Parents
  • 可以用ScanCriteria类来扫描模型里的元素:

            int elemNo = 1;
            private StatusInt Scan(Element element, DgnModelRef modelRef)
            {
                string myStr = elemNo++.ToString() + " -- " + element.TypeName.ToString();
                MessageCenter.Instance.ShowMessage(MessageType.Info, myStr, myStr, MessageAlert.None);
                return StatusInt.Success;
            }
            private void ScanTest()
            {
                ScanCriteria sc = new ScanCriteria();
                sc.SetModelRef(Session.Instance.GetActiveDgnModel());
                sc.SetModelSections(DgnModelSections.GraphicElements);
                sc.Scan(new ScanDelegate(Scan));
            }

Reply
  • 可以用ScanCriteria类来扫描模型里的元素:

            int elemNo = 1;
            private StatusInt Scan(Element element, DgnModelRef modelRef)
            {
                string myStr = elemNo++.ToString() + " -- " + element.TypeName.ToString();
                MessageCenter.Instance.ShowMessage(MessageType.Info, myStr, myStr, MessageAlert.None);
                return StatusInt.Success;
            }
            private void ScanTest()
            {
                ScanCriteria sc = new ScanCriteria();
                sc.SetModelRef(Session.Instance.GetActiveDgnModel());
                sc.SetModelSections(DgnModelSections.GraphicElements);
                sc.Scan(new ScanDelegate(Scan));
            }

Children