可以检测当前层是否改变?
有没有可能检测出当前图层是否发生了变化?我想更新一个表单来显示当前图层,并确保它保持正确。**** Hidden Message ***** 您可以为系统变量CLAYER设置事件处理程序。 对于任何其他可能想这样做的人来说,下面是我如何完成它的。我肯定它有问题,但它目前有效。感谢惠兹的建议,公共空层更改监视器()。
{。
acApp.SystemVariableChanged+=新的Autodesk.AutoCAD.ApplicationServices.SystemVariableChangedEventHandler(SysVariableChange);。
}。
。
。
空SysVariableChange(对象发送者,Autodesk.AutoCAD.ApplicationServices.SystemVariableChangedEventArgse)。
{。
如果(e.Name=="CLAYER")。
{。
//在这里做任何你想做的,我得到了当前图层,然后用它的名字更新了一个输入框,用与它的值匹配的颜色更新了另一个。。
字符串当前工作空间名称=(string)acApp.GetSystemVariable(e.Name);。
LayerTableRecord myLayer=MyCollectors.GetCurrentLayer();。
CurrentLayerBox.Textmylayer.Name.ToString。
CurrentLayerColorBox.BackColormylayer.Color.ColorValue。
}。
。
}。
对Henrique的apt帖子没有什么要补充的,但是如果您需要了解更多关于图层更改的信息,您可以使用可绑定对象层(BOL),只是要注意额外的开销:
http://through-the-interface . typepad . com/through _ the _ interface/2012/07/finding-out-about-changes-to-AutoCAD-layers-via-the-Bindable-Object-Layer-using-net . html 谢谢
不确定此方法会产生多少额外开销。无论您是否使用过,AutoCAD都在创建可观察集合。订阅其事件的开销不会比订阅Application.SystemVariableChanged.
不确定此方法是否会导致更多额外开销。无论你是否使用它,AutoCAD都在创建一个可观察的集合。订阅其事件并不比订阅application . system variable changed的开销更多。不是事件订阅会消耗更多的开销。
它是给定LayerTableRecord的设置在更改前的每个文档的存储,更改后的后续存储,以及之后的比较功能(如果需要确定哪些LayerTableRecord属性已更改为哪些值?)这将需要额外的开销——同样,只有在需要这种报告的情况下。
页:
[1]