QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 woaishuijia 于 2010-9-5 10:18 编辑
8 P2 o% `$ J. K1 D/ S2 x7 V& K1 ?" h2 r4 V
斑竹大人、各位大侠:; e- v" Q) D: _8 _8 s. ]3 ?4 m- J
我希望在CAD退出的时候,判断CAD中是否有图素发生改变,如新增、修改、删除等,但不包括整个图形的缩放。
  1. Private Sub AcadDocument_BeginClose()9 O5 ?2 i7 s# E% C5 [4 m
  2. Dim doc As AcadDocument" t- j( o, `1 H2 j, e, L+ c/ j- B: _
  3. Set doc = ThisDrawing.Application.ActiveDocument8 g* n& o, ]" t: w! B) ]
  4. If doc.Saved = False Then
    0 u' h4 F' G& F7 S1 v" i
  5. MsgBox "已改变"
    ' I9 v: @* @% l. t" @: `/ z' l% C
  6. Else" ?$ m8 S# Q/ B
  7. MsgBox "未改变"
    , `2 C" J; F9 B" E5 `  _( J+ R
  8. End If
      w( P* [6 _, d, F
  9. End Sub
复制代码
现在有个问题,即使是滚动鼠标滚轮,缩放一下图形,都会认为已经发生改变。我该怎么办呢?
发表于 2010-9-5 12:00:08 | 显示全部楼层 来自: 中国辽宁
要求得越细致,代码就会越复杂,呵呵
  1. , s0 P* B4 r" s2 Y! S  m2 x
  2. '声明一个全局变量,用来记录是否发生修改4 x& h+ A& q! @7 y, s. {0 f8 N' K
  3. Dim B As Boolean
    / f8 r& P4 |  f7 i% N
  4. '在响应文档对象的BeginDocClose事件的代码中检查B变量记录的修改
    : o8 \/ V( `. J3 ~5 C. ?
  5. Private Sub AcadDocument_BeginDocClose(Cancel As Boolean)
    " p- m$ ~5 K, f5 Y( M
  6.     If B Then
    & f! i5 |. w: ~; D" M
  7.         '当文档被修改时用消息框通知用户"已改变",当用户按下"取消"按钮时不关闭文档
    9 I6 ?; b. _5 d# r
  8.         If MsgBox("已改变", vbOKCancel) = vbCancel Then Cancel = True; F* Q+ Q0 l. f! K
  9.         '清空记录2 m5 ~4 G4 a4 N4 |
  10.         B = False8 K) T6 F7 s1 }% v/ v# K' M; |' _7 V
  11.     Else
    ( k: {0 C! K0 O* A. z3 [, l
  12.         MsgBox "未改变"
      |; X: @( }) A! o% g
  13.     End If7 }/ Z9 A, [2 w$ k7 _: U1 z  g
  14. End Sub; r# j8 s  o3 ]2 f2 @
  15. '在响应文档保存事件的代码中清空记录. H: S$ Y: D9 ~) }2 N  y& m! Z% L
  16. Private Sub AcadDocument_EndSave(ByVal FileName As String)
    , p' B4 ~* t6 S
  17.     B = False9 U9 R& `) _6 W9 f+ |( Q1 r; D+ a
  18. End Sub) A: s, u6 M7 g7 m$ }  d% v
  19. '在响应文档对象的ObjectAdded事件(对象被添加到图形中时触发)的代码中记录文档修改2 @- J" Y# S6 k
  20. '可以在代码中检查Object参数的对象类型,以了解是哪一类对象被添加.( H. y& |# ]' t* N: ^& v
  21. 'ObjectModified事件代码也一样
    2 _/ D; Y4 S  P5 Q3 l. g
  22. Private Sub AcadDocument_ObjectAdded(ByVal Object As Object)
    . O! F( a. b' B: ?# y1 U1 x
  23.     B = True
    # l. Q5 w" z. y7 ~- J* k! v* ^
  24. End Sub$ x; t% i6 m5 Z& d7 s5 y. F1 O( \
  25. '在响应文档对象的ObjectErased事件(对象从图形中删除时触发)的代码中记录文档修改/ b! W8 i" I5 W9 u8 u& D
  26. Private Sub AcadDocument_ObjectErased(ByVal ObjectID As Long)
    $ b& H( Y7 m3 T
  27.     B = True
    6 i# q! H6 p) \, T
  28. End Sub. V  Y1 K5 y& T& Q) _' j
  29. '在响应文档对象的ObjectModified事件(图形中的对象被修改时触发)的代码中记录文档修改
    ; }/ _6 v9 E. g
  30. Private Sub AcadDocument_ObjectModified(ByVal Object As Object)
    + ?1 {4 b+ z/ Q1 x" Y7 g: n3 Q' q
  31.     B = True6 X, Y3 j: ?  T3 _3 ^
  32. End Sub
    9 C, A8 q& n; L9 z2 e6 M
复制代码
 楼主| 发表于 2010-9-5 22:32:04 | 显示全部楼层 来自: 中国北京
老大,你太厉害啦,不管我提什么问题,你总能在第一时间给我答复。太感谢了,帮了我很大的忙!
 楼主| 发表于 2010-9-5 22:34:21 | 显示全部楼层 来自: 中国北京
老大,你太厉害啦,不管我提什么问题,你总能在第一时间给我答复。太感谢了,帮了我很大的忙!6 j( @% H1 v) ^, e" s0 [' W8 x, r
winer3086 发表于 2010-9-5 22:32 http://www.3dportal.cn/discuz/images/common/back.gif

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

本版积分规则


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

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

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