CAD垃圾清理使用心得
CAD垃圾清理使用心得
在我們使用AUTOCAD繪圖的過程中,經(jīng)常會(huì)出現(xiàn)這種情況:圖中內(nèi)容很少,但圖文件所占的空間很大,圖形生成的速度也很慢。這是為什么呢?其實(shí)原因很簡(jiǎn)單:圖中的垃圾很多。
圖文件中產(chǎn)生垃圾的原因很多,其中一個(gè)重要的原因就是使用了一些應(yīng)用軟件。應(yīng)用軟件為了方便用戶使用,在啟動(dòng)圖文件時(shí)增加了許多設(shè)置。增加的設(shè)置是為了適應(yīng)所有可能出現(xiàn)的情況,因此十分全面。實(shí)際上在繪圖的過程中,由于繪圖內(nèi)容差異,不同的圖中總有一些設(shè)置不用。另一方面,在使用應(yīng)用軟件的過程中,許多附加過程會(huì)引入一些過渡性的信息,這些信息在沒用的時(shí)候有的可能會(huì)被清除,而有些信息仍然會(huì)被保存在文件中,這些未被清除的信息就成為垃圾。比如當(dāng)我們插入一個(gè)圖塊,如果圖塊未被打開,有關(guān)此圖塊的記錄就是有用信息,當(dāng)圖塊被打開以后有關(guān)圖元已不再是一個(gè)整體,但圖塊的有關(guān)信息仍保存在文件中,這些信息就成為無用信息即垃圾。如果一個(gè)存在垃圾的圖文件又被另一個(gè)圖文件引用,那么這些文件中的垃圾也就可能被轉(zhuǎn)入新的文件中,造成垃圾積累。為了提高工作效率,在繪圖的過程中應(yīng)當(dāng)經(jīng)常清除垃圾。由于圖中垃圾來源不同,所以清除垃圾的方法也就不同。方法一:
一般來說,一張CAD圖中最常出現(xiàn)的垃圾有以下幾種:未引用過的圖層設(shè)置、線型設(shè)置;未被引用的圖塊(已被打開的圖塊)、標(biāo)準(zhǔn)字樣(STYLE)、外形等等,這些信息可以通過PURGE命令清除。清除過程如下:
①COMMAND:PURGE↓(這個(gè)下箭頭是接下來的意思)
PurgeunusedBlocks/Dimstyle/LAyers/Ltypes/SHapes/Styles/AllBlocks:無用圖塊;
Dimstyle:未被使用的尺寸標(biāo)注格式;LAyers:未被使用的層設(shè)置;LTypes:未被引用的線型設(shè)置;SHapes:無用的外形;
Styles:未被使用過的字樣設(shè)置;All:以上所有各項(xiàng)內(nèi)容。
用戶可以根據(jù)需要按系統(tǒng)提示刪除不同內(nèi)容。每一項(xiàng)被刪除的內(nèi)容系統(tǒng)都會(huì)要求用戶予以確認(rèn)。
注意:此命令的使用必須是打開一個(gè)文件后第一條命令!臼褂谜f明:效果不錯(cuò),屬于積累性的。后來成了我最常使用的一個(gè)命令】方法二:
對(duì)于上面提到的幾項(xiàng)內(nèi)容,也可以通過WBLOCK命令來完成。其過程如下:COMMAND:WBLOCK↓Filesname:(files)↓Blockname:↓
此方法與采用PURGE命令清除垃圾的方法相比,其功能更強(qiáng)大。它清除的內(nèi)容范圍除了上述這些可以用PURGE清除的內(nèi)容之外,還包括更多的內(nèi)容,比如非當(dāng)前使用的用戶坐標(biāo)系。與使用PURGE命令不同,使用此命令時(shí)系統(tǒng)并不給出單項(xiàng)提示,而是直接全部清除,因此該命令的使用應(yīng)謹(jǐn)慎,【試用說明:就是把能選中的東西用塊的形式重新完美組合放在新建的DWG文件中】?兆执
有時(shí)圖文件可能還會(huì)出現(xiàn)空文字串?瘴淖执c空?qǐng)D塊一樣,無法在圖面上直接觀察到,因此也就不能直接用ERASE命令刪除。對(duì)于空字串,可以首先通過QTBXT參數(shù)發(fā)現(xiàn)它,然后再將其刪除。刪除過程如下:①Command:Qtext
On/OFF(OFF)ON↓將QTEXT參數(shù)值設(shè)為ON!贑ommand:Regen按新參數(shù)值重新生成圖形。
這時(shí)圖中文字變成矩形方框,方框的寬度與文字的高度相等,其長(zhǎng)度與文字串的長(zhǎng)度相等。使用此參數(shù)后空字串和文字都會(huì)變成一個(gè)個(gè)方框,這樣就可以發(fā)現(xiàn)空字串了。有時(shí)表示空字串的方框和正常文字難以區(qū)分,這時(shí)可以使用LIST合作進(jìn)行證實(shí),(以文檔形式觀看文字內(nèi)容予以鑒別)。在做完以上工作后,輸入Qtext,再點(diǎn)選off,再選擇“視圖”,消隱。重啟下DWG文件就能改掉那些刪除不掉的垃圾了。經(jīng)過這樣一些處理后圖文件中的垃圾基本上被清除干凈,圖文件的容量可以降到最低,文件的運(yùn)行速度也可以大大加快!驹囉谜f明:此方法可以刪除你看不到,
選不中的,妨礙你正常視圖的不利因素的空字串大壞蛋】
上面方法我只試用了其中3個(gè),(本人使用的是07版本的CAD,07版本中絕對(duì)的管用),此方法也是我網(wǎng)上找到的,我將它更加簡(jiǎn)明的敘述給大家,希望大家能更好的理解這些方法!。。。
擴(kuò)展閱讀:CAD清理垃圾源代碼
(vl-load-com)
(prompt"\\nütt.\\n°°ú.");;;ò
(defunc:tt(/catchit)
(setqcatchit(VL-CATCH-ALL-APPLY"dcl_load))(if(vl-catch-all-error-pcatchit)(progn
(princ"\\nòí:")
(princ(vl-catch-all-error-messagecatchit)))
(princ"\\nòá!"))
(princ);)
;;;°òí
(defunDCL_load(/dcl_idDialog_Returnkeykeyskey1Dcl_FileFSSHCOUNTFLST)
(setqdcl_id(load_dialog(setqDcl_File(Write_Dcl))));°ò
(vl-file-deleteDcl_File);óDCL(setqDialog_Return2)
(setqsh(vlax-create-object"Shell.Application"));Shell.applicationó
(setqfs(vlax-create-object"Scripting.FileSystemObject"));FSOó
(setqfLstnil)
(while(>Dialog_Return1);-°òá(new_dialog"DCL"dcl_id);¨°;;-->-->-°ò->-->--
(setqkeys"("ERR""AC$""TMP""DWL""LOG""PLT""SV$""BAK""USR""UED""ZERO""SF""TF""LF""PF""UF""PATH""SUB""accept""cancel"));±í
(foreachkeykeys;(if(eval(read(strcatkey"_bak")))
(set_tilekey(eval(read(strcatkey"_bak")))));
(action_tilekey"(Action_DCL_Keys$key$value)");÷×÷)
(setqkey1"("ERR""AC$""TMP""DWL""LOG""PLT""SV$""BAK""ZERO""USR"))
(action_tile"ALL""(all_selectkey1)");à
(action_tile"CLR""(all_Clear(cons\\"ALL\\"key1))");à
(action_tile"SEL""(SelectFolderfssh))");ר(action_tile"SHOW""(ShowFilefssh)");(action_tile"SA""(SelectAll)");±íò(action_tile"DA""(DeselectAll)");±íò
(action_tile"help""(helpMsg)");°ú;;--(progn
;;(princ(strcat"\\n"(vlax-getfile"name)))(if(vl-catch-all-error-p(vl-catch-all-apply"vlax-invoke(listpFile"delete1)))(setqerr(1+err))(setqcnt(1+cnt))))
;;(princ(strcat"\\n"(vlax-getfile"path))))
(setqels(cdrels))))
(setqi(1+i)))
(princ(strcat"\\n"(itoacnt)))(princ(strcat"\\n °"(itoaerr)))(princ))
(princ"\\n×÷!")))
(princ"\\n!"))
(done_dialog1);°ò÷Dialog_Return1)
((=key"cancel");{°}(princ"\\n×÷!")
(done_dialog0);°ò÷Dialog_Return0)))
;;;ר
(defunSelectFolder(fssh/pap)
(setqpa(vlax-invokesh"BrowseForFolder0""17));ò°òó(ifpa(progn
(setqp(vlax-get(vlax-getpa"self)"path))(if(/=(vlax-invokefs"FolderExistsp)0)(progn
(and(>(strlenp)3)(setqp(strcatp"\\\\")))
(set_tile"PATH"P)(set_tile"UF""1")))))
(ifpa(vlax-release-objectpa))(princ))
;;;
;;;(bug,í)(defunSelectAll(/stri)(setqSTR"")(setqi0)
(repeat(lengthflst)
(setqstr(strcatstr(itoai)""))(setqi(1+i)))
(set_tile"LST"str)(set_tile"SA""0")(set_tile"DA""0"))
;;;
(defunDeselectAll()(set_tile"LST""")(set_tile"SA""0")(set_tile"DA""0"))
;;;
(defunShowFile(fssh/FILTFOLDLSTSIZESTR)(setqlst(Get_DCL_Data))(setqlst(GetFilterlst))(setqsize(carlst))(setqfilt(cadrlst))(setqfold(caddrlst))(if(or(carsize)filt)(progn
(andfilt(removeDupfilt))(setqfold(removeDupfold))(setqfLstnil)(start_list"LST")(foreachpfold
(if(/=(vlax-invokefs"FolderExistsp)0)(Searchfspsizefilt)))
(end_list)
(setqfLst(reverseFlst))(SelectAll))))
;;;
(defunRemoveDup(lst/tmpLn)(setqtmp(mapcar"strcaselst))(setqtmp(acad_strlsorttmp))(whiletmp
(setqn(cartmp))(setqL(consnL))(while(and(cadrtmp)
(=(cartmp)(cadrtmp)))
(setqtmp(cdrtmp)))
(setqtmp(cdrtmp)))
(reverseL))
;;;
(defunCheckFile(fsfilesizefilLst/nameidxsufres1res2)(and(carsize)(setqres1(=(vlax-getfile"size)0)))(cond
((member"*.*"filLst)(setqres2T))
((setqname(vlax-getfile"name))
(setqidx(vl-string-position(ascii".")name0T))(ifidx
(setqsuf(strcase(substrname(+2idx)))res2(membersuffilLst)))))
(orres1res2))
;;;÷
(defunSearch(fsFoldersizefilLst/rfdfilesfilefdsfdIsShow)(if(/=(vlax-invokefs"FolderExistsFolder)0);íó(×)(progn
(setqrfd(vlax-invokefs"GetFolderFolder));
(setqfiles(vlax-getrfd"files));
(vlax-forfilefiles
(if(checkFilefsfilesizefilLst);ì(progn
(add_list(vlax-getfile"name));ò°ò±í
(setqfLst(consfilefLst));°×±í(setqIsShowT))))
(ifIsShow(progn
(add_listFolder)
(setqfLst(consrfdfLst))));°±í(if(=(cdrsize)"1");é °ü¨×(progn
(setqfds(vlax-getrfd"SubFolders));×(vlax-forfdfds
(Searchfs(vlax-getFd"path)sizefilLst);é)))
;;(vlax-release-objectfiles);;(vlax-release-objectrfd))))
;;;
(defunGetFilter(kLst/KEYLSTPATHSIZESUFUSSIDXSUB)(setqlstkLst)(repeat8
(setqkey(carLst))(if(=(cdrkey)"1")
(setqsuf(cons(carkey)suf));ó×)
(setqlst(cdrlst)))
(setqkey(carLst))(if(=(cdrkey)"1");רó×(progn
(setquss(cdadrLst));í¨×(cond
((or(=uss"*.*")(=uss".*")(=uss"*"))(setqsuf(cons"*.*"suf));ù)
((setqidx(vl-string-position(ascii".")uss0T))(setqsuf(cons(substruss(+2idx))suf));רó×())
((/=uss"")
(setqsuf(consusssuf));רó×))))
(setqlst(cddrlst))
(setqkey(carLst))(if(=(cdrkey)"1")(setqsize0);×)
(setqlst(cdrlst))
(if(=(cdr(assoc"TF"lst))"1")(setqpath(cons(getvar"TEMPPREFIX")path));±)
(if(=(cdr(assoc"SF"lst))"1")(setqpath(cons(getvar"SAVEFILEPATH")path));×±)
(if(=(cdr(assoc"LF"lst))"1")
(setqpath(cons(strcat(GetSpecialPath2)"\\\\")path));±)
(if(=(cdr(assoc"PF"lst))"1")
(setqpath(cons(getvar"DWGPREFIX")path));¤×÷)
(if(=(cdr(assoc"UF"lst))"1")
(setqpath(cons(cdr(assoc"PATH"lst))path));¨)
(setqsize(conssize(get_tile"SUB")));°ü×(andsuf(setqsuf(mapcar"strcasesuf)))(listsizesufpath))
;;;ó×
(defunALL_Select(keys)
(if(=(get_tile"ALL")"1")(progn
(foreachnkeys(set_tilen"1"))
(set_tile"CLR""0"))))
;;;
(defunALL_Clear(keys)
(if(=(get_tile"CLR")"1")(foreachn(cons"CLR"keys)(set_tilen"0"))))
;;;°ú
(defunhelpMsg()
(alert"ê÷:\\n
\\nò±òó×
\\n×÷-××÷\\nòìüSòOAD°ü×I;
\\nרó×è.*.dwgdwgù*\\nòòvlispóò;\\ní
\\ná\\n-¨é\\n
\\nHighflybird201*.1."))
;;;±
(defunGet_DCL_Data(/keylstvalue)(foreachkeykeys
(setqvalue(get_tilekey))
(setqlst(cons(conskeyvalue)lst))
(set(read(strcatkey"_bak"))value))
(reverse(cddrlst)))
;;;¤×÷
(defunGetSpecialPath(n/fsopath)
(setqfso(vlax-create-object"Scripting.FileSystemObject"))
(setqpath(vlax-get(vlax-invokefso"GetSpecialFoldern)"path))(vlax-release-objectfso)path)
;;;±úDcl
(defunWrite_Dcl(/Dcl_Filefilestr)(setqDcl_File(vl-filename-mktempnilnil".Dcl"))(setqfile(openDcl_File"w"))(foreachstr(list"http://°ò""DCL:dialog""{"
"label=\\"CAD¤\\";"":row""{"
":column""{"
":boxed_column""{"
"label=\\"ó×\\";"":toggle""{"
"key=\\"ERR\\";"
"label=\\"(.err)±¨í\\";""}"
":toggle""{"
"key=\\"AC$\\";"
"label=\\"(.ac$)±\\";""}"":toggle""{"
"key=\\"TMP\\";"
"label=\\"(.tmp)±\\";""}"
":toggle""{"
"key=\\"DWL\\";"
"label=\\"(.dwl,dwl2)±\\";""}"
":toggle""{"
"key=\\"LOG\\";"
"label=\\"(.log)\\";""}"
":toggle""{"
"key=\\"PLT\\";"
"label=\\"(.plt)ò\\";""}"
":toggle""{"
"key=\\"SV$\\";"
"label=\\"(.sv$)×\\";""}"
":toggle""{"
"key=\\"BAK\\";"
"label=\\"(.bak)±\\";""}"
":toggle""{"
"key=\\"ZERO\\";"
"label=\\"0×\\";""}"":row""{"
":toggle""{"
"key=\\"USR\\";"
"label=\\"רó×\\";""}"
":edit_box""{""key=\\"UED\\";""fixed_width=true;""width=16;""}""}"
":toggle""{"
"key=\\"ALL\\";"
"label=\\"ù\\";""}"
":toggle""{"
"key=\\"CLR\\";"
"label=\\"\\";""}""}"
":boxed_column""{"
"label=\\"\\";"":toggle""{"
"key=\\"SF\\";"
"label=\\"×±\\";""}"
":toggle""{"
"key=\\"TF\\";"
"label=\\"±\\";""}"
":toggle""{"
"key=\\"LF\\";"
"label=\\"±\\";""}"
":toggle""{"
"key=\\"PF\\";"
"label=\\"±°¤×÷\\";""}"":row""{"
":toggle""{"
"key=\\"UF\\";""label=\\"¨\\";""}"
":button""{"
"key=\\"SEL\\";"
"label=\\"ò(&O)\\";""}""}"
":text""{"
"key=\\"PATH\\";""label=\\"\\";""}""}""}"
":boxed_column""{"
"label=\\"±í\\";""fixed_width=true;""width=60;"":list_box""{"
"key=\\"LST\\";"
"multiple_select=true;""}""}""}"":row""{"
"spacer;"
"ok_cancel_help;""spacer_1;""spacer_1;""spacer_1;"":button""{"
"key=\\"SHOW\\";""label=\\"(&S)\\";""fixed_width=true;""width=12;""}"
":toggle""{"
"key=\\"SUB\\";""label=\\"°ü¨×(&I)\\";""value=\\"1\\";""}"
":toggle""{"
"key=\\"SA\\";"
"label=\\"(&A)\\";""}"
":toggle""{"
"key=\\"DA\\";"
"label=\\"(&D)\\";""}""spacer;""}""}")
(write-linestrfile))
(closefile)Dcl_File)
友情提示:本文中關(guān)于《CAD垃圾清理使用心得》給出的范例僅供您參考拓展思維使用,CAD垃圾清理使用心得:該篇文章建議您自主創(chuàng)作。
來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請(qǐng)聯(lián)系我們及時(shí)刪除。