QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 woaishuijia 于 2010-9-5 10:18 编辑 6 L- q, L; s3 n7 E: |- z# p

  G9 ?4 q& f7 J斑竹大人、各位大侠:
2 D9 e2 U$ Y( \) H1 r0 i我希望在CAD退出的时候,判断CAD中是否有图素发生改变,如新增、修改、删除等,但不包括整个图形的缩放。
  1. Private Sub AcadDocument_BeginClose()" C* t5 U% d( j- z
  2. Dim doc As AcadDocument
    ' }8 E, z6 @1 [# j
  3. Set doc = ThisDrawing.Application.ActiveDocument' u; L: @8 w) O2 i+ x* B
  4. If doc.Saved = False Then) l$ \! p0 q4 N. v! x3 h' O
  5. MsgBox "已改变"
    * |* x- ^; {% ?) t+ i+ U
  6. Else% w8 \2 J8 s" A# |+ b/ {( K* e" T
  7. MsgBox "未改变"( f# S/ _! }5 s$ w* d) b
  8. End If! k2 A; a. W" f/ _" E
  9. End Sub
复制代码
现在有个问题,即使是滚动鼠标滚轮,缩放一下图形,都会认为已经发生改变。我该怎么办呢?
发表于 2010-9-5 12:00:08 | 显示全部楼层 来自: 中国辽宁
要求得越细致,代码就会越复杂,呵呵

  1. . H1 u# {5 Z: `8 l$ O
  2. '声明一个全局变量,用来记录是否发生修改
    ( J3 C1 x4 @( ^* Y' Q
  3. Dim B As Boolean" `3 H2 u" B0 S0 g
  4. '在响应文档对象的BeginDocClose事件的代码中检查B变量记录的修改: _6 {& N5 H4 d+ K4 ]
  5. Private Sub AcadDocument_BeginDocClose(Cancel As Boolean)
    ' `9 C2 o( h: K" m9 F  ~" Z
  6.     If B Then& \8 E" s2 ?5 O# S8 b0 o- V
  7.         '当文档被修改时用消息框通知用户"已改变",当用户按下"取消"按钮时不关闭文档7 k8 a' p/ f% V+ {& B, L
  8.         If MsgBox("已改变", vbOKCancel) = vbCancel Then Cancel = True5 i" {3 }& `: D1 T- e! C
  9.         '清空记录' O$ p1 S: e& F- _0 d: z$ @# v
  10.         B = False( ~7 d' V0 k3 f1 \2 N! ?# G
  11.     Else
    + O4 T3 d" g. g+ ~) Z
  12.         MsgBox "未改变"
    ; X- I& f* O% m2 u, l, I  {
  13.     End If
    7 a! T6 R8 D/ J5 f3 ~& o, [& n( D1 k
  14. End Sub, }4 P% v9 N% }7 `$ N4 Z
  15. '在响应文档保存事件的代码中清空记录
    * r+ u$ g# O: Y; t0 u' D0 m7 s
  16. Private Sub AcadDocument_EndSave(ByVal FileName As String). O! r( E( ^7 W+ T9 c: [
  17.     B = False  S5 o5 Q: `) N) ?) x  S8 H5 _
  18. End Sub9 Y) H* |' o0 H# S6 `7 b, j/ w
  19. '在响应文档对象的ObjectAdded事件(对象被添加到图形中时触发)的代码中记录文档修改
    6 n5 h9 t( L; n/ {
  20. '可以在代码中检查Object参数的对象类型,以了解是哪一类对象被添加.
    2 _4 [9 U& `7 c, Y) }  k! f
  21. 'ObjectModified事件代码也一样
    9 m2 l7 X3 l; Q' Y  T7 Q
  22. Private Sub AcadDocument_ObjectAdded(ByVal Object As Object)
    % ]  P. z  Y" D: I
  23.     B = True
    / U8 c5 H# b+ g+ U' C
  24. End Sub9 j1 ]- O0 R# R4 P( x4 a
  25. '在响应文档对象的ObjectErased事件(对象从图形中删除时触发)的代码中记录文档修改
      l- ^/ y- ?1 Y
  26. Private Sub AcadDocument_ObjectErased(ByVal ObjectID As Long)
    & e; \% ~+ n7 F7 L2 q
  27.     B = True
    2 y% ]5 f& y+ S" p3 k6 e
  28. End Sub: [9 o+ |  }% w3 P1 @" }; z
  29. '在响应文档对象的ObjectModified事件(图形中的对象被修改时触发)的代码中记录文档修改
    ! y1 J% R# v) [3 |+ t$ h9 q
  30. Private Sub AcadDocument_ObjectModified(ByVal Object As Object)1 z8 h( V: J6 [, Y7 s& p& c
  31.     B = True
      F+ K* h9 L# z( c0 i& {
  32. End Sub
    5 X- A2 _7 C+ S) T; l, |
复制代码
 楼主| 发表于 2010-9-5 22:32:04 | 显示全部楼层 来自: 中国北京
老大,你太厉害啦,不管我提什么问题,你总能在第一时间给我答复。太感谢了,帮了我很大的忙!
 楼主| 发表于 2010-9-5 22:34:21 | 显示全部楼层 来自: 中国北京
老大,你太厉害啦,不管我提什么问题,你总能在第一时间给我答复。太感谢了,帮了我很大的忙!" j# P" I7 |2 T, J# N: y# U+ x9 I# D
winer3086 发表于 2010-9-5 22:32 http://www.3dportal.cn/discuz/images/common/back.gif

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

本版积分规则


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

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

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