明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2288|回复: 9

如何利用vba禁止删除Autocad中某一对象?

[复制链接]
发表于 2005-4-17 13:18:00 | 显示全部楼层 |阅读模式
如何利用vba禁止删除AutoCAD中某一对象?


如果创建某一实体,要求只能在自己的vba程序中做删除该实体,而在autocad的图形界面中不能删除此实体,请问如何实现?
发表于 2005-4-18 09:39:00 | 显示全部楼层
不妨利用程序跟踪系统的AcadDocument_BeginCommand及AcadDocument_EndCommand两事件,并作相应判断即可。
发表于 2005-4-18 10:40:00 | 显示全部楼层
大哥能不能具体讲讲啊,比如用户已经通过VBA的程序画了一条线:line1。后面要加上什么代码才能实现搂主要的功能呢?
发表于 2005-4-18 13:33:00 | 显示全部楼层
在AcadDocument_BeginCommand及AcadDocument_EndCommand事件中,有命令的名称,判断是不是"DELETE",是就调用SendCommand的Undo命令回退。
发表于 2005-4-18 19:22:00 | 显示全部楼层
不知道直接用delete键删除的行不行?
 楼主| 发表于 2005-4-18 22:38:00 | 显示全部楼层
我已经试过可以利用pickfirstselectionset选择集遍历判断选中对象是否为禁止利用cad命令删除对象,如是则发送ESC,使不能选中对象,这样禁止了使用键盘delete键删除对象,但是在使用begincommand和endcommand禁止使用命令删除时,当选中对象非常多时,要判断删除对象是否为禁止删除对象时,执行速度非常慢,因为删除对象太多,执行代码次数太多,效果不理想!也试过使用ObjectErased事件


存在同样现象!
发表于 2005-4-19 08:55:00 | 显示全部楼层
确实如果选中对象非常多时,会存在上述现象!
发表于 2005-5-6 16:34:00 | 显示全部楼层
每个对象都有一个Modify事件,编一程序在此事件被激发时而运行,该程序完成事情就是重绘被删图元即可.
发表于 2005-5-7 18:18:00 | 显示全部楼层
有几点建议:


1.如果Modify事件中完成截获的话,除非你的图形均在几k以下,否则将导致cad长时间不能退出等总之很多问题(经验之谈)


2.建议将该类对象放在专用层,配合层锁定功能实现。


3.如果一定要截获命令的话,需要注意使用人员的cut 、erase等多种删除对象的问题。
 楼主| 发表于 2005-5-13 22:25:00 | 显示全部楼层
我现在用的方法就是锁定专用图层,但锁定层方法的激发除了在截获一系列删除命令时激发外,还有好的方法吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-27 16:35 , Processed in 0.175019 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表