因为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); ................ }
---------------------------------------------------------------
中国市政工程西北设计研究院有限公司武汉分院
谢谢郑工!我获取对象的时候也是通过了PsTransaction类,但对应属性不全,所有我想通过ID获取对应PsShapeInfo的信息,进行属性的不全。但传入ID值,调用Getinfo后信息已经为空,所以就不清楚差哪里了!