这个代码只能用于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(" 块编辑器的块名是" + Autodesk.AutoCAD.Internal.AcAeUtilities.GetBlockName()); } else { ed.WriteMessage(" 没有名字"); } } }
c++ e大:
cad是调用AcAuthEnviron.arx中的方法.在高版本中有getblockname,在2008只有一个btr.
extern AcString acedGetBlockEditBlockName(void);
没有试验过的想法,用于cad08及以下:
我突然想到了,重写be命令,以及双击块激活be命令重定义到你的命令.
然后be或双击的时候获取块名,再调出be命令,这样就可以预先获取块编辑器的块名了.
如果发送be不能成功调用到块编辑器,那么也可以用win32 API拿这个框框的数据.