如何利用vba禁止删除Autocad中某一对象?
如何利用vba禁止删除Autocad中某一对象?如果创建某一实体,要求只能在自己的vba程序中做删除该实体,而在autocad的图形界面中不能删除此实体,请问如何实现? 不妨利用程序跟踪系统的AcadDocument_BeginCommand及AcadDocument_EndCommand两事件,并作相应判断即可。 大哥能不能具体讲讲啊,比如用户已经通过VBA的程序画了一条线:line1。后面要加上什么代码才能实现搂主要的功能呢? 在AcadDocument_BeginCommand及AcadDocument_EndCommand事件中,有命令的名称,判断是不是"DELETE",是就调用SendCommand的Undo命令回退。 不知道直接用delete键删除的行不行? 我已经试过可以利用pickfirstselectionset选择集遍历判断选中对象是否为禁止利用cad命令删除对象,如是则发送ESC,使不能选中对象,这样禁止了使用键盘delete键删除对象,但是在使用begincommand和endcommand禁止使用命令删除时,当选中对象非常多时,要判断删除对象是否为禁止删除对象时,执行速度非常慢,因为删除对象太多,执行代码次数太多,效果不理想!也试过使用ObjectErased事件
存在同样现象! 确实如果选中对象非常多时,会存在上述现象! 每个对象都有一个Modify事件,编一程序在此事件被激发时而运行,该程序完成事情就是重绘被删图元即可. 有几点建议:
1.如果Modify事件中完成截获的话,除非你的图形均在几k以下,否则将导致cad长时间不能退出等总之很多问题(经验之谈)
2.建议将该类对象放在专用层,配合层锁定功能实现。
3.如果一定要截获命令的话,需要注意使用人员的cut 、erase等多种删除对象的问题。 我现在用的方法就是锁定专用图层,但锁定层方法的激发除了在截获一系列删除命令时激发外,还有好的方法吗?
页:
[1]