首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

從 DWG 到 XAML (III):XPS Packaging 與 DWFx 類庫實作

     編輯:關於.NET

最簡單的檢視方式:DocumentViewer

若只需在 WPF 前端顯示 DWG 內容,最直接的做法是:

  1. AutoCAD / TrueView 將 DWG 匯出為 DWFx。
  2. 使用 WPF 內建 DocumentViewer 控件載入 DWFx 檔案。

程式碼:

XpsDocument xpsDocument = null;
if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
    if (xpsDocument != null) xpsDocument.Close();
    try
    {
        xpsDocument = new XpsDocument(dlg.FileName, FileAccess.Read);
    }
    catch (UnauthorizedAccessException)
    {
        MessageBox.Show($"Unable to access {dlg.FileName}");
        return;
    }
    docViewer.Document = xpsDocument.GetFixedDocumentSequence();
}

執行畫面:

DocumentViewer 顯示 DWFx

DWFx 相容 XPS,所有圖形幾何資訊(含區塊參考經變換後)皆寫入 FixedPage,故顯示精確度與 AutoCAD 一致。

代價:失去結構資訊

匯出過程將所有變換「展開」寫入 FixedPage,導致:

  • 無法得知原始區塊定義與參考關係。
  • 無法反推幾何變換矩陣。
  • 缺乏實體語義(如「這是一台電腦」)。

解決方案:自訂屬性

在 DWG 設計階段為同類區塊加入自訂屬性(如 EntityId=Computer、AssetTag=PC-001)。匯出 DWFx 時,這些屬性會保存在套件內的 Object Definition File 中。應用程式讀取該檔案即可建立「幾何圖形 ↔ 業務實體」的對應,實現互動式系統(如網咖管理:點擊電腦圖形 → 執行殺毒/部署)。

.NET XPS Packaging 類庫

命名空間 System.Windows.Xps.Packaging 提供 XpsDocument、FixedDocumentSequenceReader/Writer、FixedDocumentReader/Writer、FixedPageReader/Writer 等型別,對應 XPS 文件層級結構。但此為通用 XPS API,無法直接操作 DWFx 專有結構(如 Object Definition、2D Streaming Graphics)。

DWFx Packaging & Converting Library 實作

作者提供一個 C# 類庫專案(四個子專案):

  • JeffreySun.Dwfx:基礎型別與錯誤處理。
  • JeffreySun.Dwfx.Packing:讀取 DWFx 套件內容。
  • JeffreySun.Dwfx.Converting:將 DWFx 內容轉換為 XAML + 自訂屬性。
  • JeffreySun.DWFX2XAMLConverter:示範程式。

專案結構:

類庫專案結構

重要聲明

此類庫僅供學習參考,不保證完整性與無錯誤,不提供技術支援。強烈建議研讀 DWFx 規格後自行實作。生產環境請務必修改命名空間與組件名稱。

下一步

系列至此結束。核心觀念:DWFx 保留精確幾何,自訂屬性賦予語義,兩者結合才能構建智慧型工程圖面應用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved