You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 00:50:36