QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 woaishuijia 于 2010-9-5 10:18 编辑 / J2 l# k2 c% S) C
2 p- u+ s. Q1 W' L" K' P6 T& @/ p
斑竹大人、各位大侠:
  Z0 Z& c- J( \( _* T, w, w我希望在CAD退出的时候,判断CAD中是否有图素发生改变,如新增、修改、删除等,但不包括整个图形的缩放。
  1. Private Sub AcadDocument_BeginClose()
    8 L8 P, |6 R3 e* q, Q1 {8 Q% _
  2. Dim doc As AcadDocument: R# `2 m' X- F1 I3 M: U1 B
  3. Set doc = ThisDrawing.Application.ActiveDocument
      b! W& x- V6 C7 _& _' g3 Q# S  R
  4. If doc.Saved = False Then
    & l( n2 i) O/ b0 K5 T4 X, r
  5. MsgBox "已改变"8 L$ m- R. i9 j
  6. Else6 Q1 H5 O4 d( s: a* j5 U; k1 m
  7. MsgBox "未改变"
    4 k4 L' n! X( c% N( K  j
  8. End If
    # x& T$ \- }/ S% H
  9. End Sub
复制代码
现在有个问题,即使是滚动鼠标滚轮,缩放一下图形,都会认为已经发生改变。我该怎么办呢?
发表于 2010-9-5 12:00:08 | 显示全部楼层 来自: 中国辽宁
要求得越细致,代码就会越复杂,呵呵

  1. ; t$ H( O; @2 M- H1 H( \& b
  2. '声明一个全局变量,用来记录是否发生修改
    ) s8 k. ?1 ]' k0 `0 i% F7 r
  3. Dim B As Boolean
    5 J4 Q+ |4 X* z& x9 Y) E
  4. '在响应文档对象的BeginDocClose事件的代码中检查B变量记录的修改2 Q+ X5 ~. Z3 V% {# ~; t
  5. Private Sub AcadDocument_BeginDocClose(Cancel As Boolean)
    ( y( K* T& }  E2 {( ^6 u
  6.     If B Then- ^% b; q, P! D) m. A1 k  ?- d
  7.         '当文档被修改时用消息框通知用户"已改变",当用户按下"取消"按钮时不关闭文档
    . _+ m2 }! m# i$ J; l
  8.         If MsgBox("已改变", vbOKCancel) = vbCancel Then Cancel = True- ?7 T3 c; j7 m
  9.         '清空记录
    6 ~/ j$ t) v0 k  T* x5 d7 h8 ^
  10.         B = False
    ( h$ h: F& v5 Z3 _# W- q0 `
  11.     Else
    ( q7 Q2 t! ?6 [" l
  12.         MsgBox "未改变"
    - N0 d1 R  f- I* e! X4 ?
  13.     End If' C$ X8 F/ x4 q  t6 K+ E
  14. End Sub
    ! E" F6 b' ?$ ~, H' Q
  15. '在响应文档保存事件的代码中清空记录  e3 f- A: ]5 r5 L
  16. Private Sub AcadDocument_EndSave(ByVal FileName As String)
    9 q0 P# n! \. r/ z- L( l
  17.     B = False% G# E' P+ ?4 a
  18. End Sub) x  D7 b+ A& R8 m: t1 h
  19. '在响应文档对象的ObjectAdded事件(对象被添加到图形中时触发)的代码中记录文档修改
    5 e3 G2 Z# C8 O- \: B& A$ B. n
  20. '可以在代码中检查Object参数的对象类型,以了解是哪一类对象被添加.
    ' ^& W% P, r7 y2 v: x4 H7 l/ r3 L
  21. 'ObjectModified事件代码也一样
    0 T6 q0 q+ C6 R  \! \
  22. Private Sub AcadDocument_ObjectAdded(ByVal Object As Object)2 A4 g+ R0 y  P
  23.     B = True
      t* V5 a0 T0 x" c7 E5 \& d
  24. End Sub2 p8 f: ?9 ^+ B  [' W
  25. '在响应文档对象的ObjectErased事件(对象从图形中删除时触发)的代码中记录文档修改
    2 U; ]& P9 v& e* A
  26. Private Sub AcadDocument_ObjectErased(ByVal ObjectID As Long)
    , C5 m1 R- _: M8 i. X: t1 K. {
  27.     B = True
    ; S9 @6 S8 f, \; b/ X
  28. End Sub! a+ p( O: u' Q2 _9 B( u
  29. '在响应文档对象的ObjectModified事件(图形中的对象被修改时触发)的代码中记录文档修改
    $ {9 g1 m) I1 B
  30. Private Sub AcadDocument_ObjectModified(ByVal Object As Object)& Z% l4 E) @) t4 H" `
  31.     B = True
    & w# h" t# y! g, o- [9 B/ S% @
  32. End Sub* S" E5 E  P/ M& [9 C/ [
复制代码
 楼主| 发表于 2010-9-5 22:32:04 | 显示全部楼层 来自: 中国北京
老大,你太厉害啦,不管我提什么问题,你总能在第一时间给我答复。太感谢了,帮了我很大的忙!
 楼主| 发表于 2010-9-5 22:34:21 | 显示全部楼层 来自: 中国北京
老大,你太厉害啦,不管我提什么问题,你总能在第一时间给我答复。太感谢了,帮了我很大的忙!
  g* V6 y7 {( K* N4 y& r* m) twiner3086 发表于 2010-9-5 22:32 http://www.3dportal.cn/discuz/images/common/back.gif
$ x4 Y$ H+ T* F# M% Q* a
以后我得好好向您学习呢!
发表于 2010-9-5 23:02:15 | 显示全部楼层 来自: 中国辽宁
不用客气,来以这里都是朋友,呵呵.
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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