QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 woaishuijia 于 2010-9-5 10:18 编辑
7 r0 {, Z( f6 I
& k# t" Y( d: \. V% _" l+ P8 t% {斑竹大人、各位大侠:& Z. |2 g* n; \4 q1 e/ ~0 L
我希望在CAD退出的时候,判断CAD中是否有图素发生改变,如新增、修改、删除等,但不包括整个图形的缩放。
  1. Private Sub AcadDocument_BeginClose()
    9 ]& d8 M  Q$ _2 L& l8 X
  2. Dim doc As AcadDocument" Z" x! K9 R$ q7 t7 q5 s
  3. Set doc = ThisDrawing.Application.ActiveDocument
    % o6 z/ N; `9 K) }9 T9 e
  4. If doc.Saved = False Then
    . z' |4 i: S# N% r+ t$ S$ A: h$ ^9 V4 D
  5. MsgBox "已改变"
    , V4 h! ]" v- \9 B" ^( x
  6. Else
    % T0 J3 m0 n  w; g( e9 U
  7. MsgBox "未改变"
    - l" n3 {. ?' }* o
  8. End If
    # u7 i& |# t# X/ g; ?- s
  9. End Sub
复制代码
现在有个问题,即使是滚动鼠标滚轮,缩放一下图形,都会认为已经发生改变。我该怎么办呢?
发表于 2010-9-5 12:00:08 | 显示全部楼层 来自: 中国辽宁
要求得越细致,代码就会越复杂,呵呵

  1. 3 ^, I- T# @1 X1 k4 ]
  2. '声明一个全局变量,用来记录是否发生修改. B' m# {( r9 Y% g' z" ~4 ?" j
  3. Dim B As Boolean
    . u; ~6 Q( e+ b+ G* D
  4. '在响应文档对象的BeginDocClose事件的代码中检查B变量记录的修改
    ' f! B1 r+ F; E9 @* C9 l9 {3 E
  5. Private Sub AcadDocument_BeginDocClose(Cancel As Boolean)- X- L2 S9 {( l& s
  6.     If B Then' _2 R' Z& J8 j2 l0 G! h  e4 j
  7.         '当文档被修改时用消息框通知用户"已改变",当用户按下"取消"按钮时不关闭文档9 i& Y! ?& N9 y! D' n
  8.         If MsgBox("已改变", vbOKCancel) = vbCancel Then Cancel = True
    9 X% g) d% M2 O; |+ L
  9.         '清空记录9 C5 F, j+ }( Q3 c7 V8 I: Q
  10.         B = False
    ) W) V1 q- R+ Y
  11.     Else6 ~$ v; ^- J3 V2 L$ C
  12.         MsgBox "未改变"
    , |* s$ X5 }# D+ e1 I' C
  13.     End If
    ' f% L5 R; W/ X( W
  14. End Sub
    % d5 Q( W, o' G! o% P2 h
  15. '在响应文档保存事件的代码中清空记录8 g7 Q, J: t& ?
  16. Private Sub AcadDocument_EndSave(ByVal FileName As String)
    , v* L; f8 q3 w. w' {+ o
  17.     B = False5 B2 _' j( }# g4 L
  18. End Sub/ X4 f7 ?8 ?6 g! N/ }$ D
  19. '在响应文档对象的ObjectAdded事件(对象被添加到图形中时触发)的代码中记录文档修改0 S0 o% d' N$ `8 ~; h7 ^' c) @* r  p
  20. '可以在代码中检查Object参数的对象类型,以了解是哪一类对象被添加.! a0 |1 e; B, O6 X$ ~& r7 l
  21. 'ObjectModified事件代码也一样
    ; R- q" v8 x* R  `6 p  v; J# t  Z) `
  22. Private Sub AcadDocument_ObjectAdded(ByVal Object As Object)$ t& _" F5 ]1 ~5 X8 ~
  23.     B = True, d( b2 T$ i2 g, t" _8 T
  24. End Sub6 j" J& F; ^4 E" n, [5 {
  25. '在响应文档对象的ObjectErased事件(对象从图形中删除时触发)的代码中记录文档修改9 x+ A/ f5 t. x" s! {
  26. Private Sub AcadDocument_ObjectErased(ByVal ObjectID As Long)# e! H. ~- w; y& }$ K# P
  27.     B = True# R8 ~# a5 p& i0 S
  28. End Sub6 ]$ L$ d- U' ~3 k8 y1 w
  29. '在响应文档对象的ObjectModified事件(图形中的对象被修改时触发)的代码中记录文档修改
    + E3 w  z2 B8 f9 H2 m0 e6 F: a
  30. Private Sub AcadDocument_ObjectModified(ByVal Object As Object); P  w0 U, |7 K- [- G" u3 k
  31.     B = True; b* h$ i% Y! g3 E
  32. End Sub+ b+ ?0 n! n1 Z1 }
复制代码
 楼主| 发表于 2010-9-5 22:32:04 | 显示全部楼层 来自: 中国北京
老大,你太厉害啦,不管我提什么问题,你总能在第一时间给我答复。太感谢了,帮了我很大的忙!
 楼主| 发表于 2010-9-5 22:34:21 | 显示全部楼层 来自: 中国北京
老大,你太厉害啦,不管我提什么问题,你总能在第一时间给我答复。太感谢了,帮了我很大的忙!& y0 _5 V! l8 y8 ]9 s9 X6 t  N# [( e
winer3086 发表于 2010-9-5 22:32 http://www.3dportal.cn/discuz/images/common/back.gif

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

本版积分规则


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

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

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