QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 woaishuijia 于 2010-9-5 10:18 编辑 * Z$ z2 M! e, J% K1 w: s$ Y

+ a2 e( ^* O# i- e& r2 i斑竹大人、各位大侠:3 c. x9 U7 p* c7 U
我希望在CAD退出的时候,判断CAD中是否有图素发生改变,如新增、修改、删除等,但不包括整个图形的缩放。
  1. Private Sub AcadDocument_BeginClose()
    / l, E7 x/ g$ m$ A" S0 z
  2. Dim doc As AcadDocument# c; I3 l& ^0 e8 d# c/ F% G# W
  3. Set doc = ThisDrawing.Application.ActiveDocument$ I% C; w1 C+ W. l
  4. If doc.Saved = False Then. Y8 b8 o0 O9 k9 Z  d
  5. MsgBox "已改变"# S, z) [# i: a' M' p# k& n  q
  6. Else
    , v* ]. ~. U7 h  o2 s: k* M* x/ p' E
  7. MsgBox "未改变"
    6 ^. t2 t5 _4 L1 X
  8. End If" `# k/ `: i. D; l8 j- r
  9. End Sub
复制代码
现在有个问题,即使是滚动鼠标滚轮,缩放一下图形,都会认为已经发生改变。我该怎么办呢?
发表于 2010-9-5 12:00:08 | 显示全部楼层 来自: 中国辽宁
要求得越细致,代码就会越复杂,呵呵
  1. 0 D4 B1 s- ]/ ~
  2. '声明一个全局变量,用来记录是否发生修改8 c! l) u. c) q* P
  3. Dim B As Boolean
    + N4 H$ K* {$ Y+ x) x
  4. '在响应文档对象的BeginDocClose事件的代码中检查B变量记录的修改/ w! N! q5 f, I- z. X4 P$ x1 [
  5. Private Sub AcadDocument_BeginDocClose(Cancel As Boolean)
    : c4 ~# O2 D8 U
  6.     If B Then
    ; @9 c* q5 R7 f: E  r, ]8 k& V
  7.         '当文档被修改时用消息框通知用户"已改变",当用户按下"取消"按钮时不关闭文档+ s! T( W6 y+ r) i$ n# r' h
  8.         If MsgBox("已改变", vbOKCancel) = vbCancel Then Cancel = True
    0 W$ X( \  o) r
  9.         '清空记录
    7 c0 u9 C. a( e6 V- p3 ?! w
  10.         B = False
    0 {' K  a; a2 [) F( _, Y1 f4 i
  11.     Else9 S! M' J  A# c/ ?
  12.         MsgBox "未改变"7 N7 A' ^8 c& J& R7 _
  13.     End If
    $ `+ `- _$ }& M/ `
  14. End Sub
    4 g% _; e5 t6 s% S
  15. '在响应文档保存事件的代码中清空记录/ m" p4 K$ W% w2 p$ D" @" ?" L
  16. Private Sub AcadDocument_EndSave(ByVal FileName As String)
    2 R, w5 O1 b" H+ n
  17.     B = False
    / K' e( `  P7 X9 W9 K& S
  18. End Sub
    & q# f) C1 }* ]/ e1 `
  19. '在响应文档对象的ObjectAdded事件(对象被添加到图形中时触发)的代码中记录文档修改
    & Q8 }. R/ n7 |  d2 Y
  20. '可以在代码中检查Object参数的对象类型,以了解是哪一类对象被添加.
    + P' u9 k" v# l2 Y' s; q; l4 G
  21. 'ObjectModified事件代码也一样! n+ ]( A' F: l# O
  22. Private Sub AcadDocument_ObjectAdded(ByVal Object As Object)
    ' _+ u+ N8 r- r1 \8 k
  23.     B = True
    & g+ S" F% G3 t7 s" g' s0 ?
  24. End Sub
    : v$ i& e% ~: f7 ]
  25. '在响应文档对象的ObjectErased事件(对象从图形中删除时触发)的代码中记录文档修改
    3 x' ^/ K+ i  B7 o( `
  26. Private Sub AcadDocument_ObjectErased(ByVal ObjectID As Long)
    & s* L; c$ [- g& b0 Y( c
  27.     B = True9 k/ @" `9 T9 u1 Q
  28. End Sub( x5 h7 R7 I- s" U8 |. g/ H$ g
  29. '在响应文档对象的ObjectModified事件(图形中的对象被修改时触发)的代码中记录文档修改8 i! ]* Q6 p- S# f- E
  30. Private Sub AcadDocument_ObjectModified(ByVal Object As Object)7 y3 z5 x& b% m, M8 z, }  o: N+ G/ \
  31.     B = True
    * G3 I5 [' [. g9 o
  32. End Sub
    , W. {+ [- x$ j4 H
复制代码
 楼主| 发表于 2010-9-5 22:32:04 | 显示全部楼层 来自: 中国北京
老大,你太厉害啦,不管我提什么问题,你总能在第一时间给我答复。太感谢了,帮了我很大的忙!
 楼主| 发表于 2010-9-5 22:34:21 | 显示全部楼层 来自: 中国北京
老大,你太厉害啦,不管我提什么问题,你总能在第一时间给我答复。太感谢了,帮了我很大的忙!
! D6 q3 J+ b* k3 I1 Wwiner3086 发表于 2010-9-5 22:32 http://www.3dportal.cn/discuz/images/common/back.gif

. F) o7 f0 ^0 \, M以后我得好好向您学习呢!
发表于 2010-9-5 23:02:15 | 显示全部楼层 来自: 中国辽宁
不用客气,来以这里都是朋友,呵呵.
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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