QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
goto3d 说: 此次SW竞赛获奖名单公布如下,抱歉晚了,版主最近太忙:一等奖:塔山817;二等奖:a9041、飞鱼;三等奖:wx_dfA5IKla、xwj960414、bzlgl、hklecon;请以上各位和版主联系,领取奖金!!!
2022-03-11
全站
goto3d 说: 在线网校新上线表哥同事(Mastercam2022)+虞为民版大(inventor2022)的最新课程,来围观吧!
2021-06-26
查看: 2413|回复: 4
收起左侧

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

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

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

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

x
本帖最后由 woaishuijia 于 2010-9-5 10:18 编辑
' ^) a8 b" r: e( x9 X+ g9 K5 V4 ?" f4 j' k: k- i' _7 h
斑竹大人、各位大侠:! d7 S/ _/ q/ P% e# h* Y& {0 M
我希望在CAD退出的时候,判断CAD中是否有图素发生改变,如新增、修改、删除等,但不包括整个图形的缩放。
  1. Private Sub AcadDocument_BeginClose()
    ! C+ \. b0 T& ?) i. H4 ^; m! |
  2. Dim doc As AcadDocument3 ^1 _* H, z; T! w
  3. Set doc = ThisDrawing.Application.ActiveDocument% |. X5 V: o6 `& _- T( ?; a
  4. If doc.Saved = False Then
    1 c* T0 J5 L: @
  5. MsgBox "已改变"
    0 b' k: T- ?3 f3 h- H
  6. Else3 R+ T. E0 j+ A1 ?" b% y
  7. MsgBox "未改变"
    8 J6 W& I% ?6 H5 c
  8. End If
    4 l2 S3 i3 l; x% S
  9. End Sub
复制代码
现在有个问题,即使是滚动鼠标滚轮,缩放一下图形,都会认为已经发生改变。我该怎么办呢?
发表于 2010-9-5 12:00:08 | 显示全部楼层
要求得越细致,代码就会越复杂,呵呵
  1. - }5 K8 @. ^- g5 e/ D
  2. '声明一个全局变量,用来记录是否发生修改
    # Q( W6 u/ b0 W, z8 N
  3. Dim B As Boolean
    ; O% S* j: ~& l. A8 c
  4. '在响应文档对象的BeginDocClose事件的代码中检查B变量记录的修改
    & @# o3 d; W  O! k6 e8 ~* E3 B
  5. Private Sub AcadDocument_BeginDocClose(Cancel As Boolean)
    3 S1 m1 w3 @! p/ S8 o: c
  6.     If B Then
    - y/ @4 o; f- Z+ O: p
  7.         '当文档被修改时用消息框通知用户"已改变",当用户按下"取消"按钮时不关闭文档* ~* f/ {; e6 r+ S! f7 ^
  8.         If MsgBox("已改变", vbOKCancel) = vbCancel Then Cancel = True7 U- s( x) _: R( w
  9.         '清空记录- g5 f+ V! L) ?# o7 D1 {
  10.         B = False
    " e  H4 Q4 H7 x& {# t7 k, V: f
  11.     Else+ `2 c4 h2 r1 E
  12.         MsgBox "未改变"
    0 l$ w' r# ^# J9 j/ m6 F
  13.     End If
    1 R* C. p7 y! F
  14. End Sub; C6 @( I5 W& M! ?
  15. '在响应文档保存事件的代码中清空记录* P, T7 W' ?. W
  16. Private Sub AcadDocument_EndSave(ByVal FileName As String)0 C( M; \# Z0 ]+ m$ ~
  17.     B = False
    8 t+ o) |5 }6 }
  18. End Sub
    0 W$ w$ `. N, n1 A! W4 z' G. s, c- |
  19. '在响应文档对象的ObjectAdded事件(对象被添加到图形中时触发)的代码中记录文档修改
    & H, t2 p& e6 U1 Q& u2 G
  20. '可以在代码中检查Object参数的对象类型,以了解是哪一类对象被添加.) M3 X! l% c3 P
  21. 'ObjectModified事件代码也一样" p. w% B( V' p- i* S% T
  22. Private Sub AcadDocument_ObjectAdded(ByVal Object As Object)9 U  K+ p$ o4 [% H% J+ v! G/ i
  23.     B = True
    : g: D% `" ?0 l) E+ X
  24. End Sub6 P* v( o4 }0 J( d
  25. '在响应文档对象的ObjectErased事件(对象从图形中删除时触发)的代码中记录文档修改
    % b6 X6 J& a3 g6 z0 j6 r
  26. Private Sub AcadDocument_ObjectErased(ByVal ObjectID As Long)
    3 r. p2 @! X* p0 B' N
  27.     B = True
    % F9 n* z3 m: r6 b
  28. End Sub
    & h. [- Z! j8 s2 g  u. Q2 Y+ i- y
  29. '在响应文档对象的ObjectModified事件(图形中的对象被修改时触发)的代码中记录文档修改" {( w0 N. ?, h. C' `& ]# y  b
  30. Private Sub AcadDocument_ObjectModified(ByVal Object As Object)
    9 H  v/ v( S* F3 ]3 n0 [
  31.     B = True8 ~( b) P5 d/ ^- D/ i( _- R) V6 k
  32. End Sub4 A2 ]( E+ @5 H& I- ?% l, \
复制代码
 楼主| 发表于 2010-9-5 22:32:04 | 显示全部楼层
老大,你太厉害啦,不管我提什么问题,你总能在第一时间给我答复。太感谢了,帮了我很大的忙!
 楼主| 发表于 2010-9-5 22:34:21 | 显示全部楼层
老大,你太厉害啦,不管我提什么问题,你总能在第一时间给我答复。太感谢了,帮了我很大的忙!
( n( w! @$ t& _winer3086 发表于 2010-9-5 22:32 http://www.3dportal.cn/discuz/images/common/back.gif
0 |! X7 n# |7 i* K, t7 {
以后我得好好向您学习呢!
发表于 2010-9-5 23:02:15 | 显示全部楼层
不用客气,来以这里都是朋友,呵呵.
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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