[CE C#]关于RebarElementId、ObjectId等几个ID的区别和使用

Parents
  • 因为PS是由ACAD开发团队移植到MS上的,它的开发方式还是基于ACAD的,这里的ObjectId跟MS的ElementID不是同一个概念,你发代码中获取具体元素不应该通过SetObjectId的方式,而应该通过PsTransaction类获取,基本方式如下代码:

                //创建选择集
                PsSelection sel = new PsSelection();
                sel.Initialize();
                //创建筛选条件
                PsFilterObject filter = new PsFilterObject();
                //设置筛选条件为:RebarSingle
                filter.set_FilterConcreteRebarSingle(true);
                int id;
                id = sel.PickObject("选择单根钢筋");
                if (filter.CheckObject(id))
                {
                    PsTransaction trans = new PsTransaction();
                    PsRebarSingle rebarSingle = new PsRebarSingle();
                    trans.GetObject(id, PsOpenMode.kForRead, ref rebarSingle);
                    ................
                }

    ---------------------------------------------------------------

    中国市政工程西北设计研究院有限公司武汉分院


  • 还有一个相关问题,就是利用Pickobject函数获取同一根钢筋,关闭文件后再打开获取时,ID是可能变化的,有那个值是固定不变的呢,ElementID是不是应该保持不变?在已知ElementID时,怎么能够获得实体类,类似于trans.GetObject(elementid,.......

Reply Children
No Data