說明
背景提供MxFileConvert.exe程式,它可以将CAD圖紙轉換成前台能加載顯示的格式,程式調用方法見: MxDraw幫助中的“如何在自己系統中浏覽dwg檔案”章節,該程式還可以在轉換過程中,使用JS程式設計,讀寫CAD檔案,而讀取的CAD圖紙資料可以寫成json檔案,友善傳給前台使用。
背景如何寫JS程式
原理說明:MxFileConvert.exe啟動Node.js,先加載我們提供的CAD子產品,再加載js程式,然後提取CAD圖紙資料。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5yN3gTM3UmZ0MTMwMTNjdDZyYzX4QDNwcTMwIzLcdDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
開發步驟:
A.安裝vs2019,node.js,TypeScript運作環境
B.打開安裝目錄下,Bin\MxDrawNode\MxDrawNode.sln工程
如下圖:
例子中用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
D.啟動程式
指令行入MxDrawCloudServer\Bin\Release目錄
執行代碼:
MxFileConvert.exe {"srcpath":"0008.dwg","nodejs":1,"nodeparam":"4"}
運作提取程式,如下圖:
成功執行..\Test目錄,生成資料檔案,如下圖:
生成的 json檔案内容:
E.錯誤檢視,日志檔案位置
在程式運作過程,出現錯誤資訊,會自動寫到日志檔案中,日志檔案,預設在如下目錄:
C:\Users\MxDraw\AppData\Local\Temp\MxCloudDebug
如下截圖: