QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 2577|回复: 4
收起左侧

[已答复] 如何判断CAD中有图素发生改变

[复制链接]
发表于 2010-9-5 08:18:19 | 显示全部楼层 |阅读模式 来自: 中国北京

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 woaishuijia 于 2010-9-5 10:18 编辑
0 b& `- C# u- r$ a$ B6 b% R* H" r* d" B# h2 }+ C  S
斑竹大人、各位大侠:
3 o% i8 A, S5 ~我希望在CAD退出的时候,判断CAD中是否有图素发生改变,如新增、修改、删除等,但不包括整个图形的缩放。
  1. Private Sub AcadDocument_BeginClose()
    % B1 ]+ f0 f9 F% N
  2. Dim doc As AcadDocument/ T/ X. h/ `  ^9 \, B! n
  3. Set doc = ThisDrawing.Application.ActiveDocument
    + F) e) j& l7 [+ E; l7 ^: D  g
  4. If doc.Saved = False Then
    " M- W: T8 B% d: g
  5. MsgBox "已改变"
    $ s: p* t( J6 D+ Q9 w3 H- L
  6. Else+ d1 R. q6 c. M6 R3 h
  7. MsgBox "未改变"
    $ O2 V6 [* U, @1 t6 \3 U
  8. End If0 w! G* M$ G$ h+ n
  9. End Sub
复制代码
现在有个问题,即使是滚动鼠标滚轮,缩放一下图形,都会认为已经发生改变。我该怎么办呢?
发表于 2010-9-5 12:00:08 | 显示全部楼层 来自: 中国辽宁
要求得越细致,代码就会越复杂,呵呵
  1. 2 y+ ^9 p" ~( i% `
  2. '声明一个全局变量,用来记录是否发生修改
    3 ^5 N7 e( A: Z3 p0 ^; r  x
  3. Dim B As Boolean/ l% o7 Q( q9 a- M
  4. '在响应文档对象的BeginDocClose事件的代码中检查B变量记录的修改( b+ m$ s# V4 o0 Q* D
  5. Private Sub AcadDocument_BeginDocClose(Cancel As Boolean)+ p0 I2 [0 m% u; w# G: C% S
  6.     If B Then. V) Q" d3 q2 h2 l6 t
  7.         '当文档被修改时用消息框通知用户"已改变",当用户按下"取消"按钮时不关闭文档
    & a, u9 n8 P* w8 O
  8.         If MsgBox("已改变", vbOKCancel) = vbCancel Then Cancel = True. ~7 i1 ?( M4 X3 f: R) M% {8 l
  9.         '清空记录# m; ?( N. \& n& j$ r7 B1 m
  10.         B = False. v  O# ]+ {. A# k+ ~
  11.     Else9 E" j3 m# Q& o- `2 v$ W: T9 O, ]
  12.         MsgBox "未改变"
    5 E: L8 x7 Q) }6 _% \
  13.     End If
    1 _6 v6 W; N& J
  14. End Sub9 W) i/ l% E- Z/ D4 _
  15. '在响应文档保存事件的代码中清空记录$ p$ }4 D4 e0 V& f
  16. Private Sub AcadDocument_EndSave(ByVal FileName As String)  U* T0 g# c" g' |0 ~
  17.     B = False
    6 H% h. [  |6 X# y; [
  18. End Sub, i1 s% z. A, S; |
  19. '在响应文档对象的ObjectAdded事件(对象被添加到图形中时触发)的代码中记录文档修改7 [" ?& Q% P# b. g3 I# ~
  20. '可以在代码中检查Object参数的对象类型,以了解是哪一类对象被添加.# Q$ o9 I/ N9 z$ Q9 P, A
  21. 'ObjectModified事件代码也一样2 F6 T$ }, H& }. k
  22. Private Sub AcadDocument_ObjectAdded(ByVal Object As Object)% d# z! |' Q( e' h( d8 O& p
  23.     B = True
    / Y% J; o6 R4 g6 a. ?/ j+ O
  24. End Sub6 E# r/ r2 P) p+ L( C+ p
  25. '在响应文档对象的ObjectErased事件(对象从图形中删除时触发)的代码中记录文档修改
    6 d% ?6 f4 m# S
  26. Private Sub AcadDocument_ObjectErased(ByVal ObjectID As Long)  _6 I+ S2 s5 v& n9 ^* N/ L9 p1 ]
  27.     B = True
    6 }( f  M, q4 B& M
  28. End Sub
    ! b6 L2 w7 }' j; `4 J
  29. '在响应文档对象的ObjectModified事件(图形中的对象被修改时触发)的代码中记录文档修改! s+ J6 T7 S+ _. X4 V
  30. Private Sub AcadDocument_ObjectModified(ByVal Object As Object)' n2 o  Y+ }; Y$ P
  31.     B = True
    7 N) s& S1 \7 g# e* Q% c$ D
  32. End Sub. S+ C% _* U( }) H* ^8 n
复制代码
 楼主| 发表于 2010-9-5 22:32:04 | 显示全部楼层 来自: 中国北京
老大,你太厉害啦,不管我提什么问题,你总能在第一时间给我答复。太感谢了,帮了我很大的忙!
 楼主| 发表于 2010-9-5 22:34:21 | 显示全部楼层 来自: 中国北京
老大,你太厉害啦,不管我提什么问题,你总能在第一时间给我答复。太感谢了,帮了我很大的忙!% \5 R) |; {. ~) E- e
winer3086 发表于 2010-9-5 22:32 http://www.3dportal.cn/discuz/images/common/back.gif
/ i6 T' a! y* [% U4 n$ s
以后我得好好向您学习呢!
发表于 2010-9-5 23:02:15 | 显示全部楼层 来自: 中国辽宁
不用客气,来以这里都是朋友,呵呵.
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

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