找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: eachy

[密技]:再谈图形“加密”

[复制链接]
发表于 2002-11-24 20:44:28 | 显示全部楼层
不好意思,我不太明白为什么要这么做呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-12-4 20:36:31 | 显示全部楼层
加密还是保护?
关于图形文件的加密,在论坛上有许多的文章都讨论过。在一般的情况下,真正的加密对于AutoCAD图形来说是不现实的。原因如下:首先,我们没有必要给自己加密,那是多此一举的行为;另外,作为实际应用来说,AutoCAD是倡导资源共享的,如果文件都被加密了,如何共享?让大家在脑袋中除了记日常无数密码的同时,再多记几个AutoCAD的密码?我想这不对。试想,如果加密在实际应用中真的那么重要,我想Autodesk也早就在设计AutoCAD时提供了,大家也不用等到16版了。事实上,即使你用16版给图形文件加了密码,我觉得那和提供一个加了特长密码的压缩文件没有什么不同。最多骗骗别人那是一个图形文件罢了。可那也只能骗骗不太懂AutoCAD的人。在实际的图形共享过程中,你无法加密码,这就如同你加了一道锁,却要把钥匙给别人,加不加意义不大。或者别人指定要14的图,那么16的加密只是天上的馅儿饼罢了---看上去很美,但是用处不大。
大部分的时候,我们给图形文件加密的目的是防止别人对图形文件的可能非法利用。这在现在这个开放、一体化的世界中似乎在同世界潮流唱反调,想想看,我们在画图时又用了多少共享资源?为什么只许我们用别人的,就不许别人用我们的?当然在实际工作中,因为有经济利益的因素在作用,我们希望可以保护自己的劳动成果,以免成果被别人利用而使自己的利益受到损失。在这种情况下,我们要做的工作就是保护我们的劳动成果而不是加密我们的劳动成果。
一般说来,我觉得保护图形文件和保护LISP文件差不多。根据程序设计的原理,加密都应该能被解密。所以Visual LISP在最后变成了ARX和VLX,因为这样才是真正整整彻底的保护,否则,加密的都会被解掉。
不过用这种方法和原理处理后的图形,是无法还原的。因为这是最为彻底的保护。如同无法将ARX和VLX文件还原回去一样。转换图形有许多方法,在论坛上都能找到。

在这里介绍的是一种非常彻底的转换方法,代价是文件会变得很庞大。但是处理效果绝对好,不仔细看看不出来。而且只能看和打印,要想继续编辑,呵呵,这老兄要很有些耐心才行。程序处理图形的机制如下:
1.        定义一个DXB打印机,并设定打印范围为100x100。
2.        将所有的可炸开的图块炸开,炸开前将所有的块内属性使用普通文本实体代替。这个过程连续执行8次(AutoCAD的最大图块嵌套层数)。
3.        删除图内所有的属性定义(块内属性已经被解析出来,属性已经没有用了)。
4.        将所有的填充实体定义成一个临时块,块基点为0,0,0(由于填充会带来太大量的线,所以不处理填充)。
5.        由用户指定一个打印范围,此范围必须为水平方向长的矩形框,框内实体为准备保护处理的实体。
6.        程序将一层一层地将框内实体打印到临时的DXB文件。
7.        删除图内所有实体。
8.        调用命令DXBIN将所有临时的DXB文件调用当前图内,调用时,将按层读入的实体改变图层到0,颜色到原属图层的颜色。
9.        处理缩放,将DXB数据的图放大到原始的位置。
10.        插入包含填充的临时图块并处理各个图块的图层、颜色。

经过这样处理过的图形,有颜色,但是图层只有0层,所有的实体都是线和少量的填充。差不多是最彻底的图形数据保护了。
我不太会用2002打印,所以不清楚如何在2002中设定DXB打印。所以不知道在2002程序运行情况。如果有人知道,欢迎测试并告知测试结果。



附件包括两个文件:
DXBLOCK.ARX:编译后的了执行文件。在R14下用
DXBLOCK.VLX:编译后的了执行文件。在200x下用
DXBLOCK.LSP:Visual LISP源程序,调用了一部分OASis的函数。

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

使用道具 举报

发表于 2002-12-5 12:58:45 | 显示全部楼层
:)这种处理方法也太疯狂了吧
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-12-9 20:10:26 | 显示全部楼层
图形加密后应能恢复。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-12-10 15:37:02 | 显示全部楼层
2. 将所有的可炸开的图块炸开,炸开前将所有的块内属性使用普通文本实体代替。这个过程连续执行8次(AutoCAD的最大图块嵌套层数)。
实际上不止8次  我试了镶套了10多次
第二 块被用XCLIP剪切过后一旦炸开 就把隐藏的部分暴露了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-12-14 14:04:39 | 显示全部楼层
那么多东西转来换去的麻烦死了,我用winrar压缩加密,没有密码连文件名都不让看哈。哈。哈。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-12-27 18:38:56 | 显示全部楼层
做成块在X、Y方向上使用不同的比例也是一个好办法.
同时第18贴所述的方法我也试了,结果如下:在ACAD2002上使用:先解压缩文件DXBLOCK.ZIP后先运行DXBLOCK。VLX,出现系统将重置的提示,回车后出现
命令: dxblock
正在处理含有属性的复杂图块,请等候...
; 错误: no function definition: C:OAS_SYSTEM_INITIALIZE
再用APPLOAD调入DXBLOCK。VLX,使用命令:dxblock后
则屏幕上什么也没有了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-12-27 21:46:33 | 显示全部楼层
谢谢saintdog的测试,我会再检查一下

另外,最近我发现实际上直接使用WMFOUT将全部图形数据(建议不要包括填充和非连续线型的线)  之后删除所有实体,使用WMFIN调入,方法简单,有效。
而且精度基本可以接受
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-1-22 17:13:09 | 显示全部楼层

Re: Two Reference pure Visual LISP files to do the drawing lockup.

最初由 mmmm 发布
[B]Two Reference pure Visual LISP files to do the drawing lockup.

On more and detail, visit at:
http://KozMos.diy.163.com/helpcenter/oasis-pa/lockup.htm [/B]



谢谢您提供这个好程序,我用LOCKUP.LSP制作的块如果是带属性的能否有办法还能修改属性呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-1-22 20:54:34 | 显示全部楼层
一般情况下,LOCKUP.LSP会把整个图形转换成无名块。这个过程应该不会产生属性,除非你的图形原来含有ATTDEF实体。
如果想编辑块内附着文本、属性的内容的话,可以参考
http://kozmos.diy.163.com/helpcenter/oasis-pa/sddedit.htm
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-1-22 22:35:12 | 显示全部楼层
最初由 mmmm 发布
[B]一般情况下,LOCKUP.LSP会把整个图形转换成无名块。这个过程应该不会产生属性,除非你的图形原来含有ATTDEF实体。
如果想编辑块内附着文本、属性的内容的话,可以参考
[url]http://kozmos.diy.163.com/helpcenter/... [/B]


mmmm大侠,我是刚接触LISP的.是这样的。我用LOCKUP.LSP选择图形中的某些实体制作成无名块,而这些实体中包含有带属性的文字.结果如我所愿,这些无名块是炸不开了,但同时这无名块内的属性也无法用"DDATTE"修改了,我就想这些无名块内的属性还能修改.我按您上面提供给我的网址的代码制作的LSP(我英文不好,网页内容看不明白),可是我在R14中运行后提示错误,如下:
命令: SDDEdit
错误: 空函数
(C:OAS_SYSTEM_INITIALIZE)
(C:SUPERDDEDIT)
(C:SDDEDIT)
*取消*



附代码:

  1. (Defun C:SDDEdit () (C:SuperDDEdit))
  2. (Defun C:SuperDDEdit (/ Parent Object EType ECode Nova)
  3.   (setq Var:OAS:ApplicationName "SuperDDEdit")
  4.   (C:OAS_System_Initialize)
  5.   (while (setq Object (C:OAS_GUI_GetObjectByPick
  6.             (list "ATTRIB" "ATTDEF" "TEXT" "DIMENSION")
  7.               )
  8.      )
  9.     (setq Parent (cadr Object)  Object (car Object)
  10.       EType (cdr (assoc 0 (entget Object)))
  11.       ECode (if (= EType "ATTDEF")  2  1)
  12.     )
  13.     (if (setq Nova
  14.            (dos_getstring
  15.          (C:OAS_System_GetMessage "DOSLib.Title.03" nil)
  16.          (C:OAS_System_GetMessage
  17.            -1006
  18.           (list (cons "%AppName%" "SuperDDEdit")
  19.              (cons "%Value%"  (C:OAS_System_GetObjectName "STRING") )
  20.            )
  21.          )
  22.          (cdr (assoc ECode (entget Object)))
  23.            )
  24.     )
  25.       (progn
  26.     (C:OAS_DXF_EditDXFCode  Object ECode Nova)
  27.     (if (not (equal Parent Object))
  28.       (entupd Parent)
  29.     )
  30.       )
  31.     )
  32.   )
  33.   (C:OAS_System_Restore)
  34. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-1-23 20:11:00 | 显示全部楼层
正好我今天从原来很早的文件中找了个东西出来,
本来想单独发个帖子,直接贴在这里算了
这个程序正好可以做到你的要求。

SDDEdit是绿洲系统的应用程序,需要绿洲系统的支持
才能运行。
如果想参考程序的话,我想这个可以帮助你理解

老掉牙的程序,今天偶然翻出来,和大家分享
现在根本不用了,不过希望能对其他的朋友有帮助。

这个程序是词库,可以按照分类保存常用的文字内容。
修改源程序可以加入自己的常用词形成自己的词库。

共有三个命令:
TLIB    : 打开图库,可以写内容到图中或从图中提取字符串,图库会
          自动保存推出时的内容字符串。
MEDIT   : 使用上次调用词库是的字符串为缺省字符串,打开图库修改点取文本的内容。
MEDIT0  : 使用点取的内容为缺省字符串,打开图库修改其内容。


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

使用道具 举报

发表于 2003-1-23 21:30:56 | 显示全部楼层
mmmm兄,绿洲系统及网站是不是您搞的?这觉得很不错,可惜我英文不好,里面很多东东看不明,也不知如何注册程序,我会再翻翻词典啦。。。呵呵。。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-1-26 12:08:46 | 显示全部楼层
在 autocad中将dwg文件输出为dwf格式,对方在安装了voloview or voloview express 后就可以看图,也可以用ie浏览器看图。dwf格式室矢量格式,可以放大缩小。但觉得没有更改的可能。而且文件体积很小,便于网上发布。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-1-26 14:48:20 | 显示全部楼层
加密做到这个份上,已经有耍赖的意思,
建议直接耍赖,不用这么绕弯。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 01:34 , Processed in 0.226377 second(s), 53 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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