QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 woaishuijia 于 2010-9-5 10:18 编辑
1 l- S4 g& r* s6 c/ g, h+ y3 B: \' h
斑竹大人、各位大侠:
& U: V4 u8 Q4 [7 o我希望在CAD退出的时候,判断CAD中是否有图素发生改变,如新增、修改、删除等,但不包括整个图形的缩放。
  1. Private Sub AcadDocument_BeginClose()7 b$ v; Y% x. @" E
  2. Dim doc As AcadDocument
    ; `# m. c9 m! {+ N, |
  3. Set doc = ThisDrawing.Application.ActiveDocument/ t) W4 o5 W, a7 g. s& M
  4. If doc.Saved = False Then+ y# i. Y# q, v6 ^* U
  5. MsgBox "已改变"5 L( H' k" L; s* l9 e9 J5 B
  6. Else4 I& c7 w: ?. M2 E" v9 U
  7. MsgBox "未改变"
    2 ]* c: \4 z) p
  8. End If2 v9 g' x/ H' d  P3 g
  9. End Sub
复制代码
现在有个问题,即使是滚动鼠标滚轮,缩放一下图形,都会认为已经发生改变。我该怎么办呢?
发表于 2010-9-5 12:00:08 | 显示全部楼层 来自: 中国辽宁
要求得越细致,代码就会越复杂,呵呵
  1. & d1 o* C  @& u0 a# ^! E) ?
  2. '声明一个全局变量,用来记录是否发生修改- U5 m$ y% G$ E3 Z
  3. Dim B As Boolean
    , C; r$ Y2 x+ O( d- w7 S
  4. '在响应文档对象的BeginDocClose事件的代码中检查B变量记录的修改
    % \& `, D0 t& q; F1 G& |
  5. Private Sub AcadDocument_BeginDocClose(Cancel As Boolean)
    / o( r1 w4 H. f7 T+ ~/ B$ Y) C
  6.     If B Then* p- U" q& m) I( h2 @# @
  7.         '当文档被修改时用消息框通知用户"已改变",当用户按下"取消"按钮时不关闭文档
    / H" B( R+ h; R  V/ E" c3 {9 n
  8.         If MsgBox("已改变", vbOKCancel) = vbCancel Then Cancel = True
    / ]1 ?( S1 T" Z6 F
  9.         '清空记录
    0 X+ H6 T% o( ^, o
  10.         B = False
    9 e! O7 q: ]/ Z3 D% `/ {0 a) \
  11.     Else
    / H6 n. h- \# n5 J: [  I4 V
  12.         MsgBox "未改变"
    8 o' ~# N1 A4 X+ k1 ~' p& y
  13.     End If
    0 |2 O: N' d* F4 M0 h2 z: l
  14. End Sub
    & C  I: V5 p) j" {: h6 P
  15. '在响应文档保存事件的代码中清空记录9 u2 E4 T* w3 C* `, m6 X
  16. Private Sub AcadDocument_EndSave(ByVal FileName As String)& @  a2 @* `# f( X
  17.     B = False# \0 f5 w/ L$ m* D
  18. End Sub
    2 x$ f% R  @( k8 V: d* ]$ K* Z
  19. '在响应文档对象的ObjectAdded事件(对象被添加到图形中时触发)的代码中记录文档修改
    ' s2 v/ R% v. N5 [5 V! E! l. E0 v
  20. '可以在代码中检查Object参数的对象类型,以了解是哪一类对象被添加., o+ T% f7 I, ~, m
  21. 'ObjectModified事件代码也一样6 V) S  y+ F" i7 v4 @
  22. Private Sub AcadDocument_ObjectAdded(ByVal Object As Object). }! X: a8 [3 _
  23.     B = True/ l) h* x7 h6 E; Z5 y8 |- a
  24. End Sub0 r$ I, x( d/ Z6 [
  25. '在响应文档对象的ObjectErased事件(对象从图形中删除时触发)的代码中记录文档修改+ d+ W. `1 _2 p
  26. Private Sub AcadDocument_ObjectErased(ByVal ObjectID As Long)/ W$ p# s& t$ o" j. U  b* S- K, C
  27.     B = True3 U& G- K4 A" L* j0 p
  28. End Sub
    $ e& w7 Z5 H. Z3 S& ^  U# {. M
  29. '在响应文档对象的ObjectModified事件(图形中的对象被修改时触发)的代码中记录文档修改
    8 s/ ?0 e/ n. P0 \+ x7 r
  30. Private Sub AcadDocument_ObjectModified(ByVal Object As Object). W; ]; }. ~3 a* [  g0 |5 {. o
  31.     B = True5 b: x2 i, D. L5 H* c, h
  32. End Sub
    # ^/ t* ~5 D& `- b# p$ P
复制代码
 楼主| 发表于 2010-9-5 22:32:04 | 显示全部楼层 来自: 中国北京
老大,你太厉害啦,不管我提什么问题,你总能在第一时间给我答复。太感谢了,帮了我很大的忙!
 楼主| 发表于 2010-9-5 22:34:21 | 显示全部楼层 来自: 中国北京
老大,你太厉害啦,不管我提什么问题,你总能在第一时间给我答复。太感谢了,帮了我很大的忙!
, A3 {' P8 g6 j9 n* T0 z2 {winer3086 发表于 2010-9-5 22:32 http://www.3dportal.cn/discuz/images/common/back.gif

5 a  i- G8 p3 R. V; \8 j9 @以后我得好好向您学习呢!
发表于 2010-9-5 23:02:15 | 显示全部楼层 来自: 中国辽宁
不用客气,来以这里都是朋友,呵呵.
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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