CAD圖紙很小,卻打開很慢甚至打不開的原因
幾十兆甚至上百兆的圖紙用CAD圖紙打開和操作速度慢很正常,但偶爾會碰到這種圖紙,圖紙只有一兩M甚至幾十K,可是用CAD打開時非常慢,打開后操作也相當慢,如果之前打開了其他圖紙,打開這種圖紙時還會因為內存不足導致CAD退出,這是為什么呢?
我正好碰到了幾張這樣的圖紙,研究了一下,發現他們有一個共同點,就是有非常非常密集的填充,出現這種情況的原因有兩種:一是本來應該用SOLID填充,但卻是用了其他有線條組成的填充樣式,由于要得到類似SOLID填充的效果,填充比例設置得非常小;二是確實需要用線條填充圖案,但填充區域面積非常大,從而導致填充的線非常多。無論哪種情況下,如果這樣的填充在圖中只有一兩個,可能還沒什么關系,但問題就出在有時這些填充被定義成圖塊,會在圖中反復插入,或者規劃圖中有很多大區域需要填充,這類密集填充一旦數量比較多,就會照成CAD打開和操作慢。
上面說的只是現象,既然有這種情況,為什么保存的CAD文件那么小,為什么在打開和操作的時候有會占用內存非常多,而且反應特別慢呢?要弄清楚這個問題我們需要從CAD保存圖形的格式和處理文件的模式說起。對于一個填充圖案,在圖紙中只需要保存一些參數,例如原點、圖案樣式名、比例等等,使用SOLID填充或線型填充對于保存文件大小基本沒有影響,只是圖案樣式名不同而已。而要打開和顯示這個填充圖案就不一樣了,如果是SOLID填充的話,CAD會根據邊界形狀將填充分解為一個或多個實線(SOLID)來進行顯示,即使非常復雜的形狀顯示數據量也不會太大,如果是線型填充圖案,就要計算所有線的顯示數據,保證每條線都能顯示出來。
可能這么講大家還是不太理解,我用我手頭的一張圖紙跟大家講一下就很容易理解了。我這兒有一張給排水的圖,圖紙不大,2MB多一點。截圖如下:
當初拿到這張圖,打開巨慢,有時還會退出。我一點點的查,終于找到問題所在。問題出在其中一個消火栓,如下圖所示。
這里肯定應該用SOLID填充,結果用的是ANSI37,比例設置成0.01。我將這個填充復制到一張新圖中炸開,你知道有多少條線嗎?90多萬條,圖中只有這么一個消火栓還好,這一張圖中這樣的消火栓有六七十個,想想這得有多少條線啊!幾千萬條線,CAD吃不消也很正常了。
遇到這種圖應該怎么解決呢?圖紙能打開的話還好說,找到問題所在,將填充圖案改成SOLID。如果上面的消火栓是圖塊還比較簡單,對一個圖塊參照編輯后,其他圖塊就自動修改了。如果圖很復雜,要從中找出問題來很費勁,或者由于內存不足根本就打不開圖紙,那該怎么辦呢?有沒有更好的方法呢?
方法倒有一個,在CAD(僅適用于AUTOCAD和浩辰CAD8)中有一個變量,可以設置單個填充線數量的最大值。當填充的線數量超過這個數值時,填充直接顯示為SOLID填充。這個變量是HPMAXLINES,默認值是1000000。當遇到圖紙很小,但打開很慢或打開時內存溢出的圖紙時,可以先適當調低這個設置,然后再打開圖紙。比如說,輸入HPMAXLINES命令,回車,將這個數值設置成300000萬,然后打開上面那張圖紙,由于消火栓的填充的線數超過300000,打開時被顯示為SOLID填充,因此就可以很輕松就打開,縮放、做其他操作也很順暢。
這種方法只能暫時解決你打開和操作的問題,如果確認是使用了錯誤的填充圖案,最好能找出來并進行修改,修改后保存圖紙,這樣以后自己或其他人在使用這張圖紙的時候就不會面臨相同的問題了。
大家要注意,如果沒有特殊需要,做設備圖塊、公司LOGO等圖形時,盡量使用SOLID填充,避免出現類似問題。而且如果做圖的時候不注意,后面再想找出問題出在什么地方很困難。
當然文件打不開原因還有很多種,比如說文件數據錯誤,文件損壞等等,這些情況都應該會有相應的提示。小文件、打開慢、內存占用大很有可能是這個原因,可以試試這樣的方法。
AUTOCAD及同類CAD軟件都會遇到類似問題,但HPMAXLINES這個變量并不是所有CAD都有,除了AUTOCAD,我只看到浩辰CAD8有這個變量。