這個代碼只能用於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沒有名字"); } } }
c++ e大:
cad是調用AcAuthEnviron.arx中的方法.在高版本中有getblockname,在2008只有一個btr.
extern AcString acedGetBlockEditBlockName(void);
沒有試驗過的想法,用於cad08及以下:
我突然想到了,重寫be命令,以及雙擊塊激活be命令重定義到你的命令.
然后be或雙擊的時候獲取塊名,再調出be命令,這樣就可以預先獲取塊編輯器的塊名了.
如果發送be不能成功調用到塊編輯器,那么也可以用win32 API拿這個框框的數據.
