QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 woaishuijia 于 2010-9-5 10:18 编辑
. o, A% k0 w, {- [0 }5 s6 H# ]- y7 I2 ^* y% i; i
斑竹大人、各位大侠:# S# ^6 H9 M  R4 ^2 F
我希望在CAD退出的时候,判断CAD中是否有图素发生改变,如新增、修改、删除等,但不包括整个图形的缩放。
  1. Private Sub AcadDocument_BeginClose()# V7 T, b9 b% L. I
  2. Dim doc As AcadDocument
    8 c9 E* D, V* A2 a0 E
  3. Set doc = ThisDrawing.Application.ActiveDocument: o. `& n4 {3 \+ U: N
  4. If doc.Saved = False Then" M2 e0 o! C! ^4 x5 M
  5. MsgBox "已改变"
    ; Z- k. t8 _& Z5 u# u
  6. Else. R' A8 e8 J3 c  x* e9 ^
  7. MsgBox "未改变"; D$ H4 S# F: p! u3 n  @. s) R( l
  8. End If
    : o" g3 ~  U( k' }; W; V
  9. End Sub
复制代码
现在有个问题,即使是滚动鼠标滚轮,缩放一下图形,都会认为已经发生改变。我该怎么办呢?
发表于 2010-9-5 12:00:08 | 显示全部楼层 来自: 中国辽宁
要求得越细致,代码就会越复杂,呵呵

  1. / o( [6 ^, |1 _6 P7 F$ Y# o
  2. '声明一个全局变量,用来记录是否发生修改
    - n; }# F$ r/ _/ \, g0 N1 {
  3. Dim B As Boolean
    4 I2 K6 P6 |( K$ V6 M2 w
  4. '在响应文档对象的BeginDocClose事件的代码中检查B变量记录的修改
      x! Q* L  D) K! D% x
  5. Private Sub AcadDocument_BeginDocClose(Cancel As Boolean)5 Y& p# I3 N% G- `. }2 L4 Y
  6.     If B Then
    6 \* S- i2 f4 V, ]0 \+ Y) h/ j
  7.         '当文档被修改时用消息框通知用户"已改变",当用户按下"取消"按钮时不关闭文档
    * d9 Y' T( Z- H1 l- u) X
  8.         If MsgBox("已改变", vbOKCancel) = vbCancel Then Cancel = True3 R8 G5 D6 p% d$ z- Y1 V
  9.         '清空记录- D1 V; l+ {2 p
  10.         B = False; V" u& V, G' d5 |3 D& Y. v
  11.     Else
    ( G( a+ f* _) ?, ~' Z% V
  12.         MsgBox "未改变"
    ) c% T$ K5 o, m! p+ W: o; _
  13.     End If
    1 o9 o- M) B, h( R! ^! a& ^
  14. End Sub
    8 D/ N- X% H+ X3 C; y0 _
  15. '在响应文档保存事件的代码中清空记录
    , J- [. l3 f6 V9 h5 B7 C; e
  16. Private Sub AcadDocument_EndSave(ByVal FileName As String)
    ! x( U' j( ~% w
  17.     B = False% ?: Q3 m  B$ B9 ~) Z+ R8 f
  18. End Sub
    9 W, Z3 j/ K' i: Y  @8 _& C; \8 [. g
  19. '在响应文档对象的ObjectAdded事件(对象被添加到图形中时触发)的代码中记录文档修改
    . s9 w' V" E+ ]- R" S" \" e
  20. '可以在代码中检查Object参数的对象类型,以了解是哪一类对象被添加.$ B  q/ i5 A( @* l, Y+ i, @1 I
  21. 'ObjectModified事件代码也一样% a" p6 I5 R3 a( F
  22. Private Sub AcadDocument_ObjectAdded(ByVal Object As Object)
    1 A5 E! L0 s% P1 K
  23.     B = True
    + E/ e1 I8 V1 I8 r% g
  24. End Sub9 x% s2 J  w. L5 o
  25. '在响应文档对象的ObjectErased事件(对象从图形中删除时触发)的代码中记录文档修改0 y1 ]  i) C6 Q* h9 |
  26. Private Sub AcadDocument_ObjectErased(ByVal ObjectID As Long)
    ( h7 S+ D$ G+ B  k. B3 h
  27.     B = True
    . [2 b, k0 X& J. F: B8 Q! \3 v
  28. End Sub5 N% ]4 b; X5 {6 ~4 o" X6 \/ n
  29. '在响应文档对象的ObjectModified事件(图形中的对象被修改时触发)的代码中记录文档修改
    , W( H0 L- M' M) N: d! _9 ?
  30. Private Sub AcadDocument_ObjectModified(ByVal Object As Object)( d- I# \1 i/ v) V
  31.     B = True1 l% s0 N. j. {* l
  32. End Sub
    ' Q: I  w. Q  W8 F9 h) E
复制代码
 楼主| 发表于 2010-9-5 22:32:04 | 显示全部楼层 来自: 中国北京
老大,你太厉害啦,不管我提什么问题,你总能在第一时间给我答复。太感谢了,帮了我很大的忙!
 楼主| 发表于 2010-9-5 22:34:21 | 显示全部楼层 来自: 中国北京
老大,你太厉害啦,不管我提什么问题,你总能在第一时间给我答复。太感谢了,帮了我很大的忙!# H- P- P( l, A. S- Y
winer3086 发表于 2010-9-5 22:32 http://www.3dportal.cn/discuz/images/common/back.gif

6 k, L. L; W- r( _+ R以后我得好好向您学习呢!
发表于 2010-9-5 23:02:15 | 显示全部楼层 来自: 中国辽宁
不用客气,来以这里都是朋友,呵呵.
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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