天天看點

H5線上CAD背景讀寫CAD檔案

說明

背景提供MxFileConvert.exe程式,它可以将CAD圖紙轉換成前台能加載顯示的格式,程式調用方法見: ​​MxDraw幫助​​中的“如何在自己系統中浏覽dwg檔案”章節,該程式還可以在轉換過程中,使用JS程式設計,讀寫CAD檔案,而讀取的CAD圖紙資料可以寫成json檔案,友善傳給前台使用。

背景如何寫JS程式

原理說明:MxFileConvert.exe啟動Node.js,先加載我們提供的CAD子產品,再加載js程式,然後提取CAD圖紙資料。

H5線上CAD背景讀寫CAD檔案

開發步驟:

A.安裝vs2019,node.js,TypeScript運作環境

B.打開安裝目錄下,Bin\MxDrawNode\MxDrawNode.sln工程

如下圖:

H5線上CAD背景讀寫CAD檔案

例子中用DoGetEntityData得到圖紙上對象資料,比如文本資料,然後寫到json檔案,該檔案前台可以使用Get協定擷取,然後使用。

得到指定層上的文字代碼如下:

export class TestGetEntityData {
    private sDwgFileName: string;
    private getDataFilePath(): string {
        return mxConvert.getConvertPath() + this.sDwgFileName + ".json";
    }
 
    // 得到圖層"飄檐"上的文本
    private getText1() {
        // 把得到資料,寫到sDataFile.
        let sDataFile = this.getDataFilePath();
 
        let ss: Mx.MrxDbgSelSet = new Mx.MrxDbgSelSetClass();
 
        // 建立一個選擇過濾條件.
        let filter: Mx.MrxDbgRbList = new Mx.MrxDbgRbListClass();
 
        // 隻選擇文字對象.
        filter.addString("TEXT", 5020)
 
        // 圖層過濾.
        filter.addString("飄檐", 8);
 
        // 得到圖上所有文字對象.
        ss.allSelect(filter);
 
 
        let dataObject: any = {};
 
        let iCount = ss.count;
 
        for (let i = 0; i < iCount; i++) {
            // 選擇集不為空.
            let txt: Mx.McDbText = Mx.MxType.MxCast<Mx.McDbText>(ss.item(i), Mx.MxType.TypeString.kMcDbText);
 
            // 得到文字對象,文字内容.
            if (txt) {
 
                if (!dataObject[txt.layer]) {
                    dataObject[txt.layer] = [];
                }
                // 把文字對象資料傳回.
                let txtData: any = {};
                txtData.txt = txt.textString;
                txtData.posx = txt.position.x;
                txtData.posy = txt.position.y;
                dataObject[txt.layer].push(txtData);
            }
        }
 
        // 儲存資料檔案.
        MxFun.writeFile(sDataFile, JSON.stringify(dataObject));
    }
 
 
    public Do(filename: string) {
        this.sDwgFileName = filename;
        this.getText1();
    }
}      

C.編譯程式,生成MxConvert.js

把dist\mxconvert目錄下的所有js程式拷到Bin\Release\mxconvert目錄下,覆寫原來的檔案,如下圖:C.編譯程式,生成MxConvert.js

H5線上CAD背景讀寫CAD檔案
H5線上CAD背景讀寫CAD檔案

D.啟動程式

指令行入MxDrawCloudServer\Bin\Release目錄

執行代碼:

MxFileConvert.exe {"srcpath":"0008.dwg","nodejs":1,"nodeparam":"4"}      

運作提取程式,如下圖:

H5線上CAD背景讀寫CAD檔案

成功執行..\Test目錄,生成資料檔案,如下圖:

H5線上CAD背景讀寫CAD檔案

生成的 json檔案内容:

H5線上CAD背景讀寫CAD檔案

E.錯誤檢視,日志檔案位置

在程式運作過程,出現錯誤資訊,會自動寫到日志檔案中,日志檔案,預設在如下目錄:

C:\Users\MxDraw\AppData\Local\Temp\MxCloudDebug

如下截圖:

繼續閱讀