cad.net 获取块编辑器的块名

这个代码只能用于ACAD2010以上

public static class BEdit
{
    [CommandMethod("TestBEDIT")]
    public static void TestBEdit()
    { 
        Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
        if (Autodesk.AutoCAD.Internal.AcAeUtilities.IsInBlockEditor())
        {
            ed.WriteMessage("\n块编辑器的块名是" + Autodesk.AutoCAD.Internal.AcAeUtilities.GetBlockName());
        }
        else
        {
            ed.WriteMessage("\n没有名字");
        }
    }
}

e大:

cad是调用AcAuthEnviron.arx中的方法.在高版本中有getblockname,在2008只有一个btr.

extern AcString acedGetBlockEditBlockName(void);

没有试验过的想法,用于cad08及以下:

我突然想到了,重写be命令,以及双击块激活be命令重定义到你的命令.
然后be或双击的时候获取块名,再调出be命令,这样就可以预先获取块编辑器的块名了.

如果发送be不能成功调用到块编辑器,那么也可以用win32 API拿这个框框的数据.

(完)

posted @ 2020-06-10 22:36  惊惊  阅读(890)  评论(0编辑  收藏  举报