我想看一级黄色大片_久久亚洲国产精品一区二区_久久精品免视看国产明星_91久久青青青国产免费

您的位置:網站首頁 > CAD新聞

關于AutoCAD中的打開/關閉文檔操作詳解

時間:2010-01-12 10:33:15 來源:

在AutoCAD R14的時候,SDI模式下,打開文檔很多時候直接用ads_command(RTSTR, "_open", RTSTR, sFileName, RTNONE)這樣的方法去打開,基于有些時候我們需要程序控制原文檔是否保存(往往是放棄保存),因此往往需要檢查當前文檔是否已經被修改,是否會提示用戶保存,否則,傳入的sFileName往往就被當作了系統提問是否保存Yes/No的回答,然后就亂七八糟了。判斷當前文檔是否處于被修改狀態可以通過ads_getvar("DBMOD",&rb)進行查詢,如果發現文檔被修改,這時就有3個解決方法:要么欺騙系統,讓系統認為該文檔在保存后沒有被修改,要么把當前文件save到一個tmp.dwg中,要么就是在ads_command執行open后,系統提示是否存盤時再傳入一個"N"。關于第一個方案,正常情況下,DBMOD是只讀的,AutoCAD提供了一個extern long acdbSetDbmod(class AcDbDatabase* pDb, long newVal)讓用戶強行修改。第2種方案,很直接的,可以把這個tmp.dwg寫到一個temp目錄下,例如C:temp,或者軟件的安裝目錄,不過碰到文件比較大,這個操作就需要耗點時間,而且畢竟不是一個體面的操作模式。第3種方案,為了系統是通過文字提問而非彈出對話框,需要修改FILEDIA 的值為0,然后就可以調用ads_command了。不過在實際操作過程中,發現第3種方法在某些情況下不管用,暫時也沒有分析清楚,以后有機會再分析吧。

    在AutoCAD 2000/2002下,支持了MDI,因此常用操作有了一些改變。當然,并不是說ads_command不能用了,只是我更喜歡使用 acDocManager->appContextOpenDocument(filename)這樣的模式,調用此函數前,需要確認當前處于 Application Context(利用acDocManager->isApplicationContext()進行判斷),如果當前不是處于 Application Context,可以通過調用acDocManager->executeInApplicationContext執行。在AutoCAD 2000/2002設定為“單文檔兼容模式”時,也可以調用acedSyncFileOpen來打開文檔,不過這種方式在MDI時無法工作。

    總體說來,目前對AutoCAD中打開文檔的操作的了解還不夠深入,需要進行進一步整理,待有時間整理了操作,封裝好了再寫一次這個話題吧。