QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 woaishuijia 于 2010-9-5 10:18 编辑 ' ^3 B8 f6 b! Z
2 o! Y  M6 I" d: _8 T
斑竹大人、各位大侠:
" R* }& l3 N# B/ p我希望在CAD退出的时候,判断CAD中是否有图素发生改变,如新增、修改、删除等,但不包括整个图形的缩放。
  1. Private Sub AcadDocument_BeginClose()
    + \3 I& \& t' m7 q/ F% x8 [6 P
  2. Dim doc As AcadDocument
    % z9 K; Q1 ]# U, {
  3. Set doc = ThisDrawing.Application.ActiveDocument! `9 r. M( v3 A3 N/ L1 Q
  4. If doc.Saved = False Then& Y% y& Z! {- h4 E% u' m
  5. MsgBox "已改变"& g4 k8 [; f% O
  6. Else8 [1 k2 V+ A3 n8 v
  7. MsgBox "未改变"5 B$ U# o, u; p7 G2 r; M
  8. End If
    ! O8 S$ e" j% @; l+ s) C. |7 v
  9. End Sub
复制代码
现在有个问题,即使是滚动鼠标滚轮,缩放一下图形,都会认为已经发生改变。我该怎么办呢?
发表于 2010-9-5 12:00:08 | 显示全部楼层 来自: 中国辽宁
要求得越细致,代码就会越复杂,呵呵

  1. ' j; G6 o0 f; M0 A( |& U
  2. '声明一个全局变量,用来记录是否发生修改8 S6 E) u8 Z: C) w9 ]/ ?( H) s8 [
  3. Dim B As Boolean8 a, o8 t- C" p- d- ?; I  Z( Z: u
  4. '在响应文档对象的BeginDocClose事件的代码中检查B变量记录的修改
    % n0 t/ X. S  P3 G- Q4 A' D& p
  5. Private Sub AcadDocument_BeginDocClose(Cancel As Boolean)
    ( k' h7 B( k8 h4 H
  6.     If B Then
    5 W2 S. H( S+ d, E6 K/ I  h7 s1 y( H( x7 M
  7.         '当文档被修改时用消息框通知用户"已改变",当用户按下"取消"按钮时不关闭文档- P0 @# z$ d0 r- X( o" B* R
  8.         If MsgBox("已改变", vbOKCancel) = vbCancel Then Cancel = True
    ) X6 m0 F7 q5 C2 W& F
  9.         '清空记录
    6 B, l) r* C9 o( X
  10.         B = False, s: Q* R0 \5 _8 X/ `% {# `
  11.     Else
    # q% i' Z8 r8 I# c
  12.         MsgBox "未改变"7 J# R5 c' v1 p
  13.     End If; J$ O. D/ |: S
  14. End Sub$ C: ?2 U3 q/ r0 v8 O( Y4 r
  15. '在响应文档保存事件的代码中清空记录% d/ H+ V* L+ N) V; P+ `
  16. Private Sub AcadDocument_EndSave(ByVal FileName As String)* n# x8 g2 ^3 x0 G5 E9 Y1 E
  17.     B = False" R& y% o; s& W3 d. e
  18. End Sub
    * R) B) [- Z& [7 C0 \
  19. '在响应文档对象的ObjectAdded事件(对象被添加到图形中时触发)的代码中记录文档修改
    3 U7 k* w1 D8 k1 ?3 m4 T  w
  20. '可以在代码中检查Object参数的对象类型,以了解是哪一类对象被添加." ]+ Z1 @& l; I$ u3 z4 l
  21. 'ObjectModified事件代码也一样
    + U$ S( v$ e* E7 v
  22. Private Sub AcadDocument_ObjectAdded(ByVal Object As Object)
    & k. V' ~9 D- E2 U+ `6 K( s8 ]
  23.     B = True  e! j  m+ V# G% }' n3 B) N
  24. End Sub
    * d' r. H5 \1 C! T+ W, u' }
  25. '在响应文档对象的ObjectErased事件(对象从图形中删除时触发)的代码中记录文档修改7 k* l" @' Y6 Z# O9 ]
  26. Private Sub AcadDocument_ObjectErased(ByVal ObjectID As Long)
    $ N1 @2 u- c2 [; Y: W
  27.     B = True
    # G# _- f0 N3 c: o( m1 O. N
  28. End Sub
    ! |! L" V1 f* l
  29. '在响应文档对象的ObjectModified事件(图形中的对象被修改时触发)的代码中记录文档修改+ ~/ \2 P) o) P* z
  30. Private Sub AcadDocument_ObjectModified(ByVal Object As Object): B/ a( a* {0 w: u8 S5 ~
  31.     B = True
    & b& z( d# [+ K4 ?  c4 k
  32. End Sub8 ~" J& k" E: k* M. s4 [9 m5 E
复制代码
 楼主| 发表于 2010-9-5 22:32:04 | 显示全部楼层 来自: 中国北京
老大,你太厉害啦,不管我提什么问题,你总能在第一时间给我答复。太感谢了,帮了我很大的忙!
 楼主| 发表于 2010-9-5 22:34:21 | 显示全部楼层 来自: 中国北京
老大,你太厉害啦,不管我提什么问题,你总能在第一时间给我答复。太感谢了,帮了我很大的忙!
, o, q" @! k0 owiner3086 发表于 2010-9-5 22:32 http://www.3dportal.cn/discuz/images/common/back.gif

" y; P& B* ~2 j+ ]' h4 m; I# O以后我得好好向您学习呢!
发表于 2010-9-5 23:02:15 | 显示全部楼层 来自: 中国辽宁
不用客气,来以这里都是朋友,呵呵.
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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