找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1096|回复: 7

[VBA程序]:能帮我优化一下吗?

[复制链接]
发表于 2002-12-1 22:20:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
上传文件是一个dwg文件,内嵌一个vba程序,我的计划是,在vbaide后设一个程序口令,不知道的不能修改vba程序。
vba里设一对话框,输入口令,通过后修改dwg文件没有任何限制,否则,只能使用zoom,pan等命令。这个功能由锁定图层,先命令后选择,并取消不许使用的命令。
由于这个文件在acadr2002中生成,可以打开多文档,故激活别的文档时,本文档需全不可见,并将一些功能复原,当激活本文档时,可以看见本图。
本图在打开时acad能预览,但打开是什么也看不见,需要双击鼠标,这是程序设置的,如有更好的办法,请指教。
本程序只是限制拿到这个图的人只能用acad看,不能修改,除非我给密码。我看vba能嵌入很不错,很简单,所以就用了。网上有dwg文件加密的东西,但那是另编程序,我把dwg拷给别人不能也将那程序也拷了去:)
大家帮我看看?
;
;这个没有爱心币了:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2002-12-1 22:25:53 | 显示全部楼层
不明白
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-12-1 22:37:26 | 显示全部楼层
效果不错。

我有个建议,visible = false 是没有用的。随便用一个dwg convert程序,convert成低版本的不支持visible属性和vba的dwg格式即可解密。所以建议你这个换个思路。

禁止使用某些命令的方法不错,我没想到。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-12-2 13:31:19 | 显示全部楼层
我写这个的目的就是为了别人只能看,不能修改,包括使用中间的任何局部,以至于要关掉中间的复制功能。但是,不好有附加的安装软件呀。
将这个dwg文件给别人,很多时候别人会对这个图作出修改,所以我得限制。。。
文件是完全拷贝的,只读功能别人能改过来,所以我得在这里面加点功夫。
我们要防备的人也只会看autocad的dwg,这段程序,足够挡着他们了。
有没有更好的思路,只是局限在这个dwg图形里的,多多指教!!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 181个

财富等级: 日进斗金

发表于 2002-12-2 13:44:15 | 显示全部楼层
修改程序如下:

  1.   [FONT=courier new]
  2. '在ThisDrawing模块中
  3. Option Explicit

  4. Private Sub AcadDocument_BeginCommand(ByVal CommandName As String)
  5.     Debug.Print CommandName
  6.     If UserForm1.Flag = True Then Exit Sub
  7.     Select Case CommandName
  8.         Case "NEW", "OPEN" '允许新建、打开
  9.         Case "PREVIEW", "PLOT" '允许预览、打印
  10.         Case "COPYCLIP", "CUTCLIP", "PASTECLIP", "ERASE"
  11.             If ThisDrawing.PickfirstSelectionSet.Count <> 0 Then
  12.                 SendKeys "{U}" & vbCr '如果已经选择了实体,则取消对实体的操作
  13.             Else
  14.                 SendKeys "{ESC}" '如果没有选择实体,则取消命令
  15.             End If
  16.         Case "ZOOM", "PAN" '允许平移、缩放
  17.         Case Else
  18.             SendKeys "{ESC}" '取消命令
  19.     End Select
  20. End Sub

  21. Private Sub AcadDocument_BeginDoubleClick(ByVal PickPoint As Variant)
  22.     If UserForm1.Flag = False Then
  23.         UserForm1.Show
  24.     End If
  25.     SendKeys "{ESC}"
  26. End Sub

  27.   [/FONT]

  1.   [FONT=courier new]
  2. 在'UserForm窗体中
  3. Option Explicit
  4. Public Flag As Boolean

  5. Private Sub cmdCancel_Click()
  6.     Me.Hide
  7. End Sub

  8. Private Sub cmdOK_Click()
  9.     If TextBox1.Text = "tianxia" Then
  10.         Flag = True
  11.     Else
  12.         Flag = False
  13.     End If
  14.     Me.Hide
  15. End Sub
  16.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-12-2 17:25:16 | 显示全部楼层
大概我没表达清楚,我的意思是任何人可以看到图(预设双击鼠标),但是想修改本图,或者将图另存,将本图局部拷出都是禁止的,除非我给出密码。
所以:
Private Sub AcadDocument_BeginDoubleClick(ByVal PickPoint As Variant)
    If UserForm1.Flag = False Then
        UserForm1.Show
    End If
    SendKeys "{ESC}"
End Sub

这个是不希望的,我想让双击直按显出图形。
但是,当我在按钮上解锁所有图层(图层不多,手工一个一个地打开也不费时),后用wblock命令时,没起到预想的效果,能将图拷出,是不是也要将所有按钮也禁止?但是我不想改变autocad的界面外观呀。。。。多谢指教了!!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 181个

财富等级: 日进斗金

发表于 2002-12-2 17:33:29 | 显示全部楼层
没错啊,这些命令放在BeginCommand处理就可以了,看看上面的代码,除了只有几个命令允许外,其它的操作都禁止了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-12-3 12:49:54 | 显示全部楼层
就是象wblock等对话框命令,先在工具按纽上解锁图层后,运行wblock,弹出密码框,取消后,再进入了wblock对话框,点选第一次会输出一个{ESC},第二次就正常,将本图全拷出到另一文件,能限制么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-6 19:13 , Processed in 0.356102 second(s), 47 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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