QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
1天前
查看: 2583|回复: 4
收起左侧

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

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

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

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

x
本帖最后由 woaishuijia 于 2010-9-5 10:18 编辑
% g  v% l% _7 b. V( J7 |: N
* J: z- v6 v$ D" Q; z- g斑竹大人、各位大侠:
0 S& I+ ~4 D( L. k& @0 `* [" K/ W我希望在CAD退出的时候,判断CAD中是否有图素发生改变,如新增、修改、删除等,但不包括整个图形的缩放。
  1. Private Sub AcadDocument_BeginClose()
    ' s3 j6 u. E. o6 L
  2. Dim doc As AcadDocument1 q: P5 ?) [* d
  3. Set doc = ThisDrawing.Application.ActiveDocument
    3 v! P7 a  Y, C/ C2 @/ u5 R
  4. If doc.Saved = False Then9 t* R! q8 U# |$ c/ V2 z
  5. MsgBox "已改变"
    2 \  h& `6 P& B- F0 U. v. G8 e* j. \
  6. Else/ T; M- P' M. ~0 `
  7. MsgBox "未改变"
    / B" Y# ^2 Q5 f) V& L
  8. End If
    ! P( t# q. m. ^6 n: S
  9. End Sub
复制代码
现在有个问题,即使是滚动鼠标滚轮,缩放一下图形,都会认为已经发生改变。我该怎么办呢?
发表于 2010-9-5 12:00:08 | 显示全部楼层 来自: 中国辽宁
要求得越细致,代码就会越复杂,呵呵

  1. 0 Y  N5 H! M2 _" J) v: y2 L3 F: G
  2. '声明一个全局变量,用来记录是否发生修改+ t  @4 M, K' ~+ P) j0 J
  3. Dim B As Boolean( x9 D8 r5 M( I" h2 K; o  {
  4. '在响应文档对象的BeginDocClose事件的代码中检查B变量记录的修改
    . i, S4 m, R1 ^# Z! [' ~* z' y
  5. Private Sub AcadDocument_BeginDocClose(Cancel As Boolean)
    9 w4 _* _" R4 K
  6.     If B Then' A; U: x( z2 q. I5 z
  7.         '当文档被修改时用消息框通知用户"已改变",当用户按下"取消"按钮时不关闭文档; ]$ v' c/ l- Z, z, ~, f9 ?
  8.         If MsgBox("已改变", vbOKCancel) = vbCancel Then Cancel = True
    " z! Z7 x/ i0 t( n
  9.         '清空记录- W- R2 U! J. ?
  10.         B = False
    , }5 E1 N% w9 s/ q8 k/ J" ?
  11.     Else
    7 `, g. z: {$ ]! \" J" [7 y' H
  12.         MsgBox "未改变"  _4 ~7 E" `5 M
  13.     End If
    * M& w+ g$ v7 p
  14. End Sub
    # h2 E# `7 s% @- ^9 q
  15. '在响应文档保存事件的代码中清空记录
    9 q5 b0 r: i* H2 k
  16. Private Sub AcadDocument_EndSave(ByVal FileName As String)- \& W6 R& H4 O- `6 r) p
  17.     B = False6 n' W, v$ u9 N. g! l) F: F. f
  18. End Sub
    7 q3 a7 M' A7 k3 R; t! l& m1 Y
  19. '在响应文档对象的ObjectAdded事件(对象被添加到图形中时触发)的代码中记录文档修改3 w' u5 j5 M7 C6 j4 _
  20. '可以在代码中检查Object参数的对象类型,以了解是哪一类对象被添加.
    ; o; w4 {. \# o* m; |% n
  21. 'ObjectModified事件代码也一样1 g: B' o: K- C1 f- ]5 G
  22. Private Sub AcadDocument_ObjectAdded(ByVal Object As Object)
    , b$ s7 r4 ]+ d- k1 A, A
  23.     B = True/ c+ ?& ^+ W. b( g) j& @# y% m4 s  U6 f
  24. End Sub# v+ c+ ^$ p3 r9 [1 F& K
  25. '在响应文档对象的ObjectErased事件(对象从图形中删除时触发)的代码中记录文档修改
    5 \# o  q4 M) s0 {
  26. Private Sub AcadDocument_ObjectErased(ByVal ObjectID As Long)
      X$ ~& l& y! i/ l$ K3 K# N
  27.     B = True
    " |; W$ t+ e1 H
  28. End Sub0 t+ W: O( H+ T
  29. '在响应文档对象的ObjectModified事件(图形中的对象被修改时触发)的代码中记录文档修改
    ! I6 C4 U2 u& ~" p
  30. Private Sub AcadDocument_ObjectModified(ByVal Object As Object)$ o* k' m( X* o, ?0 E) g! o
  31.     B = True
    3 g* b; ~  R) y) y: U7 i
  32. End Sub0 e. o/ N# c8 M$ U
复制代码
 楼主| 发表于 2010-9-5 22:32:04 | 显示全部楼层 来自: 中国北京
老大,你太厉害啦,不管我提什么问题,你总能在第一时间给我答复。太感谢了,帮了我很大的忙!
 楼主| 发表于 2010-9-5 22:34:21 | 显示全部楼层 来自: 中国北京
老大,你太厉害啦,不管我提什么问题,你总能在第一时间给我答复。太感谢了,帮了我很大的忙!
/ v. j9 c2 \2 c) Lwiner3086 发表于 2010-9-5 22:32 http://www.3dportal.cn/discuz/images/common/back.gif

, m6 ?* N' W* ~7 m以后我得好好向您学习呢!
发表于 2010-9-5 23:02:15 | 显示全部楼层 来自: 中国辽宁
不用客气,来以这里都是朋友,呵呵.
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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