| 网站首页 | 供求 | 视频 | 建筑 | 景观 | 结构 | 给排 | 暖通 | 电气 | 交通 | 水利 | 图片 | 读书 | 规范 | 下载 | 留言 | 搜索 | 
您现在的位置: 863建筑工程网 >> 电气 >> 软件应用 >> 正文 用户登录 新用户注册 发表文章
CAD“病毒”ACAD.LSP浅析         ★★★★ 【字体:
CAD“病毒”ACAD.LSP浅析
作者:佚名    文章来源:不详    点击数:    更新时间:2006-11-13



文章摘要 无标题文档 ACAD有个很大的优点,就是开放性,它有很多开放的接口,这给用户自定义以及第三方二次开发提供了极大的方便。ACAD用户化门槛不算高,只要有兴趣、有些耐心,你总可以亲自动手不同程度地进行自定义。 马上要讨论的是关于启动自动化的AUTOLISP接口,这个接口现在被人用来搞了点恶作剧。 在ACAD启动或开图时会被自动加载的LSP文件 浅见,这种LSP包括: ACAD.LSP,新装的纯ACAD里面没有这个文件。一般由用户自己编写或者第三方软件提供,放在ACAD目录或SUPPORT子夹都可以。 ACA......



无标题文档

ACAD有个很大的优点,就是开放性,它有很多开放的接口,这给用户自定义以及第三方二次开发提供了极大的方便。ACAD用户化门槛不算高,只要有兴趣、有些耐心,你总可以亲自动手不同程度地进行自定义。

马上要讨论的是关于启动自动化的AUTOLISP接口,这个接口现在被人用来搞了点恶作剧。

在ACAD启动或开图时会被自动加载的LSP文件

浅见,这种LSP包括:

ACAD.LSP,新装的纯ACAD里面没有这个文件。一般由用户自己编写或者第三方软件提供,放在ACAD目录或SUPPORT子夹都可以。

ACADR$.LSP,$是系统版本号,比如ACADR14.LSP,在SUPPORT子夹。

还有一种先不说了.

加载时自动运行的由defun函数定义的函数名

就一种,S::STARTUP,它和ACAD.LSP配套,同时不支持其他扩展名为LSP的文件

可能是因为这个原因,目标被定位于ACAD.LSP? 不知道了,其实不一定非用S::STARTUP,用了那就说明这位大虾是个追求完美的人~

铺垫好了,来看看这个病毒acad.lsp的作用~

{00.定义自动函数S::STARTUP

{01.获取CMDECHO变量,改设为0,一般程序最后会再改回去,

目的是悄悄地进村打枪地不要.大家都喜欢这么干 }

{02.通过搜索base.dcl文件,获取ACAD安装路径(support子夹) }

{03.获取菜单文件完整路径和名称,后来又没用~}

{04.获取当前图形文件完整路径和名称,截取当前工作路径}

{05.获取当前首选ACAD.LSP文件完整路径和名称,截取其路径}

{06.预设程序标记变量LSPBJ为0,意思是假设还没得手}

{07.用只读方式打开support中的ACAD.LSP,如文件不存在则建立同名文件

逐行检查此ACAD.LSP文件内容,一旦发现某行开头为(load "acadapp")

则设程序标记变量LSPBJ为1,表示已经得手过

只读任务结束,关闭文件}

{08.如果找到的ACAD.LSP路径和当前工作路径不同,

并且不在ACAD\support里面,则

{如果LSPBJ为0,也即尚未得手,那么

就在ACAD\support\acad.lsp文件末尾添加(load "acadapp")(princ),

即ACAD启动或开图时自动加载acadapp.lsp并隐蔽命令行反应。

然后同路径创建acadapp.lsp文件,作为刚改过的acad.lsp的备份. }

{如果LSPBJ为1,即已得手,且当前绘图不是未命名的新绘图任务,则

用复写ACAD\support\acadapp.lsp的方式

在当前工作路径创建acad.lsp. }

}

;注:到此为止,ACAD启动时必搜的程序文件路径里面都放好了此acad.lsp!

{09.程序开始做真正让大家不愉快的事情,

它取消了3个系统预设的命令名: 不止explode, 还有xref和xbind

可能因为Xref和xbind不是每个人都常用,所以好象报案的不多,

而explode几乎是所有用ACAD画图的人都难以避免使用的,就显得很典型}

S::STARTUP函数定义结束}

还没完,前面取消了那3个命令的定义,现在要重新定义它们,幸好这位大虾良心不算坏,只是让命令不起作用或者改成其他加法命令,并没写成破坏性函数或OS命令

EXPLODE的新功能和交互情况是:

command: EXPLODE

Seltct objects: 200 found

Select objects:

200 was not able to be explode

command:

随你怎么选,它就是说炸不了

然后XREF和XBIND这对难兄难弟双双被改成了insert,交互响应制作很不精良,根本就是空白,可能大虾忽然觉得倦了吧.

最后,它还重新定义了BONUS和EXPRESS TOOLS工具集里面提供的BURST命令,其实是个外部函数(c:burst)

BURST原来的用途是"Explode Attributes to Text",把属性文本炸成text类物体

被重新定义后这样:

command: BURST

BURST----将图块中的文字炸开后成为实体

Select objects: 200 found

Select objects:

command:





收藏文章:
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    最新热点

    最新推荐
     

    相关文章
    基于OrCAD/PSpice9的电路优化…
    在Word2000中插入AutoCAD图形…
    调度SCADA系统与MIS局域网的…
    ICA Cable 2001电缆选型软件…
    国产CAD软件,困境与突围
    企业如何选择微机平台三维CA…
    AutoCAD 绘制建筑电气图的技…
    浅论ADSL宽带网接入技术
    SCADA系统的远程访问
    利用EPP并行口实坝PC机之间通…

    广告合作