[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);
                    ................
                }

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

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


Reply
  • 因为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);
                    ................
                }

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

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


Children