QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 woaishuijia 于 2010-9-5 10:18 编辑
& `7 d+ Z# G2 M/ {6 p' `
+ W- h3 M/ j8 Q9 R8 u斑竹大人、各位大侠:' K. K0 n% o' _2 u  {- h- o* H, y
我希望在CAD退出的时候,判断CAD中是否有图素发生改变,如新增、修改、删除等,但不包括整个图形的缩放。
  1. Private Sub AcadDocument_BeginClose()
    9 n8 q/ o6 |! i7 C* o
  2. Dim doc As AcadDocument
    + I3 \, ^/ w( D) s9 {# C7 K! f
  3. Set doc = ThisDrawing.Application.ActiveDocument
    . e7 U4 q( {% W6 l$ n
  4. If doc.Saved = False Then
    : i. t5 y( E3 i& y
  5. MsgBox "已改变"
    3 Y# s& d' k' J1 |. v; d
  6. Else4 A% a+ b4 f% m  d9 X; I. d
  7. MsgBox "未改变"! _9 U& U* q& f& D. q
  8. End If
    9 D: y. _& w( `. P$ T# p9 e+ T
  9. End Sub
复制代码
现在有个问题,即使是滚动鼠标滚轮,缩放一下图形,都会认为已经发生改变。我该怎么办呢?
发表于 2010-9-5 12:00:08 | 显示全部楼层 来自: 中国辽宁
要求得越细致,代码就会越复杂,呵呵
  1. 8 q* K- H+ ]& j4 m7 D
  2. '声明一个全局变量,用来记录是否发生修改
    9 ^4 p$ n  n4 I
  3. Dim B As Boolean
    5 k: _, Y1 S% x
  4. '在响应文档对象的BeginDocClose事件的代码中检查B变量记录的修改
    + I( H+ I# y2 Q4 |' G# x8 i/ M
  5. Private Sub AcadDocument_BeginDocClose(Cancel As Boolean)
    7 T0 _) v+ Z: a! ~3 X, C
  6.     If B Then
    $ \4 i& g& S  h! k+ i
  7.         '当文档被修改时用消息框通知用户"已改变",当用户按下"取消"按钮时不关闭文档
    " j# `$ c6 g. B1 @$ C
  8.         If MsgBox("已改变", vbOKCancel) = vbCancel Then Cancel = True
    : _8 ?3 j8 H! b  M6 }
  9.         '清空记录& e, _* T1 A# s
  10.         B = False( i; m7 d, L% ]9 h2 i
  11.     Else  Q8 C  }( ]& S* A! v0 E7 b
  12.         MsgBox "未改变"! R  Z3 {; M2 v3 D  x
  13.     End If
      C, L' H- Z6 e8 P" O% v
  14. End Sub
    . w7 O+ d- T6 r
  15. '在响应文档保存事件的代码中清空记录
    5 m( x; t9 ]6 F
  16. Private Sub AcadDocument_EndSave(ByVal FileName As String); k) i' X0 I; I5 o) t
  17.     B = False) B2 t' y5 I  V$ l! u! K/ ^4 L1 B
  18. End Sub
    ; C7 T2 }2 O/ v/ G
  19. '在响应文档对象的ObjectAdded事件(对象被添加到图形中时触发)的代码中记录文档修改
    + u9 M' M2 s+ f- G
  20. '可以在代码中检查Object参数的对象类型,以了解是哪一类对象被添加.# P( p' t5 W6 k6 i% d  D
  21. 'ObjectModified事件代码也一样
    + B0 k: J% C5 l
  22. Private Sub AcadDocument_ObjectAdded(ByVal Object As Object)
    ; E  Q# Y6 K( i4 k7 p. r
  23.     B = True
    & ?/ w. x0 g/ z7 W4 ~, ~
  24. End Sub
    3 j( C# k2 I& n7 V4 T0 L
  25. '在响应文档对象的ObjectErased事件(对象从图形中删除时触发)的代码中记录文档修改
    5 e( ]  i; s7 A  \
  26. Private Sub AcadDocument_ObjectErased(ByVal ObjectID As Long)" ~6 o# p7 k, [& b, `
  27.     B = True9 }+ m1 P  U  w! }7 C# _
  28. End Sub
    5 z4 H3 ~9 h2 @% v; _! Y4 J$ m/ r
  29. '在响应文档对象的ObjectModified事件(图形中的对象被修改时触发)的代码中记录文档修改- Q! U3 k: h6 f3 S1 v% U: a" j
  30. Private Sub AcadDocument_ObjectModified(ByVal Object As Object)
    4 Y  E# v/ H/ J
  31.     B = True& g$ f8 S" q' ?% @- m/ |
  32. End Sub
    % i  M+ r6 c  s3 d4 x' W8 ~
复制代码
 楼主| 发表于 2010-9-5 22:32:04 | 显示全部楼层 来自: 中国北京
老大,你太厉害啦,不管我提什么问题,你总能在第一时间给我答复。太感谢了,帮了我很大的忙!
 楼主| 发表于 2010-9-5 22:34:21 | 显示全部楼层 来自: 中国北京
老大,你太厉害啦,不管我提什么问题,你总能在第一时间给我答复。太感谢了,帮了我很大的忙!" m1 q4 a: V4 E$ P( H6 D) a
winer3086 发表于 2010-9-5 22:32 http://www.3dportal.cn/discuz/images/common/back.gif

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

本版积分规则


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

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

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