QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
5天前
查看: 2585|回复: 4
收起左侧

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

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

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

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

x
本帖最后由 woaishuijia 于 2010-9-5 10:18 编辑 8 J2 x$ a& \. `
9 g+ P3 E* Y4 r: T3 \7 u- N) I
斑竹大人、各位大侠:
4 X# M  j9 Y5 ^我希望在CAD退出的时候,判断CAD中是否有图素发生改变,如新增、修改、删除等,但不包括整个图形的缩放。
  1. Private Sub AcadDocument_BeginClose()
    ' Q  K; n" f1 G) Q$ k
  2. Dim doc As AcadDocument1 r% u- S4 }5 {0 r9 O+ I( R
  3. Set doc = ThisDrawing.Application.ActiveDocument- ^5 s6 u- k( _3 T" `
  4. If doc.Saved = False Then
    8 t, ]" A2 {( l  @$ e$ Z
  5. MsgBox "已改变"
    8 G% e) ?! z) H$ @
  6. Else
    5 p- c: P& p: R- k, Z8 v+ w
  7. MsgBox "未改变"# i* q; p9 D7 i5 o* E1 h/ [
  8. End If5 g$ p' s  L1 s. ?
  9. End Sub
复制代码
现在有个问题,即使是滚动鼠标滚轮,缩放一下图形,都会认为已经发生改变。我该怎么办呢?
发表于 2010-9-5 12:00:08 | 显示全部楼层 来自: 中国辽宁
要求得越细致,代码就会越复杂,呵呵

  1. - y( P  |" M0 I; l* @' Q2 ?
  2. '声明一个全局变量,用来记录是否发生修改3 V" p5 S) a0 D7 O' u1 Y( n
  3. Dim B As Boolean
    $ O, K4 R& q  _$ N
  4. '在响应文档对象的BeginDocClose事件的代码中检查B变量记录的修改
    . _9 l- M* |6 h( m2 ]  v
  5. Private Sub AcadDocument_BeginDocClose(Cancel As Boolean). P: w4 I1 e* _4 N
  6.     If B Then/ c0 Y# R, U) }. W9 {! D9 c
  7.         '当文档被修改时用消息框通知用户"已改变",当用户按下"取消"按钮时不关闭文档- L2 a/ k% f- _7 V
  8.         If MsgBox("已改变", vbOKCancel) = vbCancel Then Cancel = True9 ?& c2 s* V! E
  9.         '清空记录
    $ M$ J# h# y8 r% M9 M1 l* y
  10.         B = False
    ) t5 O( @/ O7 J
  11.     Else
    8 \) X" M" q6 |) u1 T  w; r
  12.         MsgBox "未改变"
    ! Z9 Q7 ^4 Y+ S: J# X
  13.     End If
    3 H8 |$ x( N* z  X! R
  14. End Sub  }- N% k: G: K
  15. '在响应文档保存事件的代码中清空记录
    3 O" {( k$ ~- z' m1 f
  16. Private Sub AcadDocument_EndSave(ByVal FileName As String)
    : ^5 c0 T" o) Q' v$ X8 X
  17.     B = False# X- y6 `- x* }0 S/ m
  18. End Sub( W( S6 i: D7 f
  19. '在响应文档对象的ObjectAdded事件(对象被添加到图形中时触发)的代码中记录文档修改
    ! m2 R) \* c" S# }2 q/ d6 M  V
  20. '可以在代码中检查Object参数的对象类型,以了解是哪一类对象被添加.
    6 F! Z, g5 i; u* U9 o+ I, q% f
  21. 'ObjectModified事件代码也一样0 A" G& X$ J' o# T  X
  22. Private Sub AcadDocument_ObjectAdded(ByVal Object As Object)# |' a& X8 l, T" p+ G4 ^
  23.     B = True1 k+ j8 d) ?8 V8 q# p6 e
  24. End Sub
    , @+ |9 n3 d/ i6 O
  25. '在响应文档对象的ObjectErased事件(对象从图形中删除时触发)的代码中记录文档修改
    $ A: t3 p. i5 c2 l& I: M
  26. Private Sub AcadDocument_ObjectErased(ByVal ObjectID As Long)
    + z+ a4 ^2 ]/ A, J6 T! Y4 {  O6 V
  27.     B = True
    % P* J& z" d9 p, ^
  28. End Sub( }* F8 v9 e0 k4 L; W. |( D
  29. '在响应文档对象的ObjectModified事件(图形中的对象被修改时触发)的代码中记录文档修改
    - d3 V7 t& m0 x4 I
  30. Private Sub AcadDocument_ObjectModified(ByVal Object As Object)6 j- K0 x6 V# I  x- r, W
  31.     B = True
    6 y  E8 Y' Z+ V
  32. End Sub, @2 r5 Z7 l8 b; V5 G; U6 z
复制代码
 楼主| 发表于 2010-9-5 22:32:04 | 显示全部楼层 来自: 中国北京
老大,你太厉害啦,不管我提什么问题,你总能在第一时间给我答复。太感谢了,帮了我很大的忙!
 楼主| 发表于 2010-9-5 22:34:21 | 显示全部楼层 来自: 中国北京
老大,你太厉害啦,不管我提什么问题,你总能在第一时间给我答复。太感谢了,帮了我很大的忙!
# C0 ~: K* h) \5 k4 V+ G9 @winer3086 发表于 2010-9-5 22:32 http://www.3dportal.cn/discuz/images/common/back.gif

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

本版积分规则


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

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

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