QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
6天前
查看: 2573|回复: 4
收起左侧

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

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

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

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

x
本帖最后由 woaishuijia 于 2010-9-5 10:18 编辑
+ M8 T, `9 D. n: f% z4 D5 U; F+ V% |# X, Z0 j4 V0 m
斑竹大人、各位大侠:( `0 z" k' c7 }# H
我希望在CAD退出的时候,判断CAD中是否有图素发生改变,如新增、修改、删除等,但不包括整个图形的缩放。
  1. Private Sub AcadDocument_BeginClose()
    / E+ Q$ z3 G! {& C8 ?, |% v- k
  2. Dim doc As AcadDocument
    9 H9 E) @4 i% M
  3. Set doc = ThisDrawing.Application.ActiveDocument+ ]( g6 I" R! F
  4. If doc.Saved = False Then+ |% |5 D- x0 V# b
  5. MsgBox "已改变"! g" |' N) b$ P2 Y
  6. Else% a0 u( b1 z, N5 O9 H* [/ B5 b( y8 W
  7. MsgBox "未改变"
    3 K+ f6 O! C5 Y# |
  8. End If7 t- N1 s  v' d; o+ U' l  M
  9. End Sub
复制代码
现在有个问题,即使是滚动鼠标滚轮,缩放一下图形,都会认为已经发生改变。我该怎么办呢?
发表于 2010-9-5 12:00:08 | 显示全部楼层 来自: 中国辽宁
要求得越细致,代码就会越复杂,呵呵

  1. : J2 b5 s. ?& @+ Y
  2. '声明一个全局变量,用来记录是否发生修改
    " h) _0 j) W: k* x$ Z( A
  3. Dim B As Boolean( ], o3 d8 h2 _: g
  4. '在响应文档对象的BeginDocClose事件的代码中检查B变量记录的修改4 o8 O. s' d8 A1 O- g0 h
  5. Private Sub AcadDocument_BeginDocClose(Cancel As Boolean)4 Y. T  W6 X9 [2 f, U& c
  6.     If B Then+ {+ n3 r+ ]! l( p4 p) ~& Z1 y
  7.         '当文档被修改时用消息框通知用户"已改变",当用户按下"取消"按钮时不关闭文档( o5 v: X6 J" J% p$ g$ f! m7 Q2 w1 Q" A
  8.         If MsgBox("已改变", vbOKCancel) = vbCancel Then Cancel = True; r/ |2 `/ B+ k% F
  9.         '清空记录4 e  }  w, |9 \$ ?
  10.         B = False
    ; S0 L4 D/ [7 Y0 w
  11.     Else$ B% P* e$ W% c: h
  12.         MsgBox "未改变"6 \! g" V1 r3 @
  13.     End If+ [' @; W- _2 t4 @1 x$ l
  14. End Sub' |$ e% q- G  Y
  15. '在响应文档保存事件的代码中清空记录& Z) k# a  e& @: C+ X7 M( g" X
  16. Private Sub AcadDocument_EndSave(ByVal FileName As String)" S# j; m( i3 @: U' h+ p5 r$ U! ?
  17.     B = False! W& j. k0 r- o0 o# s+ I! e+ h
  18. End Sub
    ( h. Q  d8 q5 q9 ~& ~& N2 E6 j
  19. '在响应文档对象的ObjectAdded事件(对象被添加到图形中时触发)的代码中记录文档修改
    ; w2 B2 \5 Y4 Z
  20. '可以在代码中检查Object参数的对象类型,以了解是哪一类对象被添加.
    % k3 h1 M8 E# i; y( N8 v7 ]! M2 U+ c" N
  21. 'ObjectModified事件代码也一样$ p# n# a$ ~3 E0 ~$ F7 J" ^
  22. Private Sub AcadDocument_ObjectAdded(ByVal Object As Object)
    9 l: t7 q/ j% x( A+ w/ H; \0 o6 S
  23.     B = True! s/ C7 y0 B3 ~: O9 L; i. f
  24. End Sub
    4 c+ V( O- l6 i0 k; Q
  25. '在响应文档对象的ObjectErased事件(对象从图形中删除时触发)的代码中记录文档修改: n5 B: _$ y  E1 D8 @
  26. Private Sub AcadDocument_ObjectErased(ByVal ObjectID As Long)
    9 X1 ^  T5 N; n
  27.     B = True
    9 O% O8 z; o- D
  28. End Sub
    5 @- C! |/ p1 Q* H6 H4 u
  29. '在响应文档对象的ObjectModified事件(图形中的对象被修改时触发)的代码中记录文档修改$ Q* t) H9 Y1 \$ \  Z# c
  30. Private Sub AcadDocument_ObjectModified(ByVal Object As Object)) P' y% v: o; z3 v$ n" R# e
  31.     B = True
    & R# ~( u5 I" n1 j* _# N: [
  32. End Sub5 \7 ?7 ^3 V: r, N. C& Z
复制代码
 楼主| 发表于 2010-9-5 22:32:04 | 显示全部楼层 来自: 中国北京
老大,你太厉害啦,不管我提什么问题,你总能在第一时间给我答复。太感谢了,帮了我很大的忙!
 楼主| 发表于 2010-9-5 22:34:21 | 显示全部楼层 来自: 中国北京
老大,你太厉害啦,不管我提什么问题,你总能在第一时间给我答复。太感谢了,帮了我很大的忙!
' b4 n; K. x6 }; l- `7 \4 ^winer3086 发表于 2010-9-5 22:32 http://www.3dportal.cn/discuz/images/common/back.gif

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

本版积分规则


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

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

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