AutoCAD C#:如何获取块内修改后的Entity对象
问题:获取AutoCAD块内修改后的实体对象
我正在开发AutoCAD插件,需要获取块内已修改的Entity对象,该块仅包含一个实体。我为对应的BlockTableRecord编写了响应Modified事件的处理程序,但当前方法获取到的是模型空间中该实体的旧版本。
原实现代码
public static Entity GetEntityFromBlock(HooverSpace.Map.WorkSpace ws, BlockReference br, ObjectId entId) { Entity ent = null; ObjectId blockId; if (ws.acBlkTbl.Has(br.Name)) blockId = ws.acBlkTbl[br.Name]; else return null; Entity searchEnt = (Entity)entId.GetObject(OpenMode.ForRead); BlockTableRecord btr = (BlockTableRecord)ws.acTrans.GetObject(blockId, OpenMode.ForRead); foreach (ObjectId blkEntId in btr) { Entity blockEnt = (Entity)ws.acTrans.GetObject(blkEntId, OpenMode.ForWrite); if (blockEnt.BlockName == btr.Name && blockEnt.Layer == searchEnt.Layer) { ent = blockEnt.Clone() as Entity; break; } } ent.TransformBy(br.BlockTransform); return ent; }
补充说明
我通过从br.BlockTableRecord的ID获取BlockTableRecord解决了该问题,感谢大家!
内容的提问来源于stack exchange,提问作者SourceRaR
相关产品推荐
相关产品推荐

