乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 54|回复: 2

如何检测布局名称的改变?

[复制链接]

2

主题

5

帖子

1

银币

初来乍到

Rank: 1

铜币
13
发表于 2017-3-15 04:22:26 | 显示全部楼层 |阅读模式
大家好,
是否有检测布局名称
更改的方法
(如果用户重命名布局;而不是切换到其他布局)
下面的事件SystemVariableChangedEventHandler未触发CTAB sysvar>
提前感谢。
  1.         [CommandMethod("SysVariableChange")]
  2.         public void SysVarChangedmonitor()
  3.         {
  4.             AcadApp.SystemVariableChanged += new Autodesk.AutoCAD.ApplicationServices.SystemVariableChangedEventHandler(SysVariableChange);
  5.         }
  6.         void SysVariableChange(object sender, Autodesk.AutoCAD.ApplicationServices.SystemVariableChangedEventArgs e)
  7.         {
  8.             try
  9.             {
  10.                 object oVal = AcadApp.GetSystemVariable(e.Name);
  11.                 AcadApp.DocumentManager.MdiActiveDocument.Editor.WriteMessage("\n" + e.Name + " was changed." + "\tNew value: " + oVal.ToString());
  12.             }
  13.             catch (Autodesk.AutoCAD.Runtime.Exception ex)
  14.             {
  15.                 AcadApp.DocumentManager.MdiActiveDocument.Editor.WriteMessage("\nSysVarChanged: " + e.Name + " - " + ex.Message + "\n");
  16.             }
  17.         }

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2017-3-15 06:23:16 | 显示全部楼层
您好,CTAB sysvar更改的等价物将是Document.LayoutSwitched事件,但看起来它不是您想要的。要捕获布局重命名,您可以处理Database.ObjectModified事件。Editor ed=Application.DocumentManager.MdiActiveDocument.Editor;。
ObjectId layoutId=ObjectId.Null;。
字符串layoutName;。

[命令方法("TEST")]。
公共无效测试()。
{。
Application.DocumentManager.MdiActiveDocument.Database.ObjectOpenedForModify+=OnObjectOpenedForModify;。
}。

私有空OnObjectOpenedForModify(对象发送者,ObjectEventArgs e)。
{。
如果(e.DBObject布局)。
{。
var布局=(布局)e.DBObject;。
layoutId=layout.ObjectId;。
layoutName=layout.LayoutName;。
layout.Database.ObjectModified+=OnObjectModify;。
}。
}。

无OnObjectModify(对象发送者,ObjectEventArgs e)。
{。
如果(e.DBObject.ObjectId==layoutId)。
{。
e.DBObject.Database.ObjectModified-=OnObjectModify;。
var布局=(布局)e.DBObject;。
如果(layoutName!=layout.LayoutName)。
{。
ed.WriteMessage($"\nLayout'{layoutName}'已重命名:'{layout.LayoutName }'.");。
}。
}。
}。
回复

使用道具 举报

2

主题

5

帖子

1

银币

初来乍到

Rank: 1

铜币
13
发表于 2017-3-15 11:23:54 | 显示全部楼层
非常感谢,吉勒,
按预期工作。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-4 13:46 , Processed in 0.149095 second(s), 58 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表