Files
STPViewer/README.zh-TW.md
etwenandClaude Fable 5 38eb6d92d9 docs: Refresh ARCHITECTURE/README (EN+zh-TW) for v0.5.0 feature set
- READMEs: version badge 0.5.0, hotkey column in measure table,
  circle-center snap / standard views / ortho / tree search & isolate /
  volume / 3-pt section / multi-file interference / STEP export /
  settings & MRU; version history adds v0.4.0 and v0.5.0
- ARCHITECTURE: overview bullets, data models (ModelNodeViewModel,
  MeasureMode.Volume) brought up to date

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 09:00:56 +08:00

11 KiB
Raw Permalink Blame History

STPViewer

English 繁體中文

STP/STEP 3D 檢視器(Windows 桌面程式,C# .NET 8 WPF)— 多檔匯入、裝配樹、點/距離/邊/面/圓量測。

version platform .NET UI


📖 目錄


功能特色

快速開啟機構件 STEP 檔做確認與量測,不需安裝 SolidWorks / Creo 等重量級 CAD。

  • 多檔匯入 — STEP / STL / DXF,工具列匯入(可複選)、拖放到視窗、命令列 STPViewer.exe a.stp b.stl,或最近檔案下拉(▾,最近 10 筆)

  • 裝配樹 — STEP product structure 還原成樹(組件→零件);逐節點 顯示/隱藏、換色(cascade)、Zoom-to;檔案層級可移除、開關輪廓邊線;名稱搜尋過濾;右鍵 只顯示此節點 / 反轉顯示 / 全部顯示 / 量體積質心;tooltip 顯示外形尺寸 L×W×H

  • 量測(工具列切換模式或快速鍵,點擊模型):

    模式 快速鍵 輸出
    📍 P XYZ 座標(自動吸附鄰近 B-rep 頂點或圓心
    📏 距離 D 兩點直線距離 + ΔX/ΔY/ΔZ — 點兩個孔緣即吸附圓心=直接量 pin pitch
    📐 E 直線長 / 曲線長 / 圓弧長 + 半徑
    F 面積(網格近似)+ 曲面類型(平面法向量、圓柱半徑/軸向)
    C 圓心 / 半徑 / 直徑 / 周長
    ∠ 角度 A 兩面(法向量)/ 兩直線邊 夾角 + 補角
    ⇔ 面距 M 面到面最短距離(網格近似)+ 最近點對
    ⚖ 體積 (樹右鍵) 網格 signed volume + 質心標記 + 外形尺寸(封閉實體)
    ⤚ 對齊(兩點) 點「要移動零件」一點 + 目標點 → 純平移使兩點貼合
    🎯 對齊(三點) 來源檔 3 點 + 目標檔 3 對應點 → 旋轉+平移一次貼合

    同鍵再按 = 退出模式;Esc 先取消進行中的點選、再按退出模式。

  • 旋轉 — 樹面板選檔案 + 工具列 ↻X/↻Y/↻Z 繞中心 +90°(擺正方向用,連按累加)

  • 拖曳 🖐 — 手形游標模式,左鍵按住零件沿螢幕平面拖動、放開定位(右鍵轉視角不受影響)

  • 操作器 ⊹ — 樹面板選檔案 → XYZ 三色箭頭 + 旋轉環(Fusion 360 風格);拖箭頭沿該軸移動(與視角無關)、拖環繞軸轉。永遠浮在最上層、不被實體遮擋

  • 干涉檢查 🧩 — 2 個以上可見檔案兩兩配對檢查:相交時顯示紅色干涉交線 + 相交三角形對數;無相交時回報最小間隙 gap(gap≈0 即為配合 match,共面貼合不算干涉)

  • 剖面 ✂ — X/Y/Z 軸或在模型上點 3 點定義任意平面;位置滑桿 + 數值輸入 + 反向;CPU 網格裁切(背景平行運算),原始幾何保留(量測仍精確)

  • 單位 — mm ⇄ inch 一鍵切換,既有量測(清單與 3D 標籤)即時換算

  • 匯出 — 量測結果 CSVUTF-8 BOMExcel 中文不亂碼)、3D 視圖 2× PNG 截圖、📤 STEP 匯出:可見零件以目前對齊位置寫成新 STEP 檔(原始檔不動)

  • 視角 — 右鍵旋轉、滾輪縮放、中鍵平移、ViewCube;一鍵 等角/前/上/右 標準視圖與 正交⇄透視 切換

  • 記住設定 — 視窗位置大小、單位、最近檔案自動保存;左右面板可拖曳調寬

量測原則:邊長、圓半徑、角度取 B-rep 精確值;面積為三角網格加總近似(三角化精度依模型尺寸自適應 0.02–0.5 mm)。


💻 系統需求

項目 需求
作業系統 Windows 10 / 11x64
執行階段 .NET 8 Desktop Runtime(框架相依版)— Portable 版則免裝
建置 SDK .NET 8 SDK(僅從原始碼建置時需要)

📥 安裝

下載發佈版直接執行,免安裝。

  • 框架相依版(檔案較小):需 .NET 8 Desktop Runtime,執行 STPViewer v0.5.0.exe
  • Portable 版self-contained):內含 runtime,免安裝 / 免系統管理員,執行 STPViewer v0.5.0.exe

或從原始碼建置(見下)。

git clone https://github.com/ETWen/STPViewer.git
cd STPViewer
dotnet build STPViewer.sln

🚀 快速開始

# 建置並執行
dotnet build STPViewer.sln
dotnet run --project src/STPViewer

# 發佈免安裝資料夾
dotnet publish src/STPViewer -c Release -o publish/STPViewer

接著匯入 .stp 檔(工具列「匯入」、拖放、或命令列帶檔),選一個量測模式,點擊模型即可。


📚 使用指南

  1. 匯入 一個或多個 CAD 檔,每個檔案成為裝配樹的一個 root,視角自動 Zoom 到全景。
  2. 操作樹 — 名稱搜尋、顯示/隱藏(或右鍵隔離顯示)、換色、Zoom-to 某節點,或移除檔案。
  3. 量測 — 工具列選模式或按快速鍵(P/D/E/F/C/A/M),點擊模型;點孔緣自動吸圓心,兩下就是 pin pitch;Esc 取消。結果顯示於右側面板,可單筆刪除或全部清除。
  4. 裝配 — 用 對齊(兩點/三點)、旋轉、拖曳、操作器擺位,再用干涉檢查(可見檔全部兩兩檢查)驗證配合。
  5. 剖面 — 開啟 ✂、選軸向或點 3 點定義任意平面、滑動(或輸入 %)剖切;量測仍以原始幾何精確計算。
  6. 匯出 — 量測結果存 CSV、截 2× PNG,或把對齊後的場景寫成新 STEP 檔交接給 CAD。

無 UI 匯入管線與幾何數學驗證:

dotnet run --project tools/SmokeTest -- "path\to\model.stp"   # 匯入 + 裝配樹
dotnet run --project tools/SmokeTest -- --clip-test           # 剖切裁切數學
dotnet run --project tools/SmokeTest -- --interference-test   # 干涉 相交/分離/貼合
dotnet run --project tools/SmokeTest -- --align-test          # 三點對齊剛體變換數學
dotnet run --project tools/SmokeTest -- --export-test in.stp out.stp  # STEP 匯出往返驗證

🔨 從原始碼建置

dotnet build STPViewer.sln -c Debug
dotnet run --project src/STPViewer
dotnet publish src/STPViewer -c Release -o publish/STPViewer

NuGet 相依(自動還原):CADabilityHelixToolkit.WpfCommunityToolkit.Mvvm


📁 專案結構

STPViewer/
├── ARCHITECTURE.md            # 設計、資料流、開發 Phase
├── CLAUDE.md                  # 專案記憶 & 開發慣例
├── STPViewer.sln
├── src/STPViewer/
│   ├── STPViewer.csproj       # net8.0-windows、UseWPF、單一版號來源 <Version>
│   ├── MainWindow.xaml / .cs   # 版面 + 滑鼠拾取轉發
│   ├── Models/                 # FaceInfo、MeasureMode、MeasurementResult、UnitSystem
│   ├── Services/               # StepImport、Measurement、Interference、Section、RigidAlign、Settings
│   └── ViewModels/             # MainViewModelpartialDrag/Gizmo/Section/Interference/Export)、ModelNodeViewModel
└── tools/SmokeTest/           # 無 UI 匯入 + 幾何數學驗證

⚠️ 已知限制

  • 大型 STEP(數千面)匯入需數十秒(CADability 解析成本),匯入期間有進度提示、UI 不凍結。
  • 輪廓邊線超過 30,000 線段的檔案預設關閉邊線(WPF LinesVisual3D 轉動視角時效能限制),可在樹面板手動開啟。
  • IGES 不支援CADability 無 IGES reader);STL 無 B-rep,僅支援 點/距離/角度/面距 量測;DXF 為線架構檢視。
  • 剖切面無封口(cap),剖開處顯示內部背面材質(深灰)。
  • STEP 匯出為「目前位置的 Solid/Shell 平面清單」,不保留原始裝配階層與 product 名稱;STL 網格、DXF 線架構無 B-rep 不匯出。
  • 面積、面距、體積/質心為三角網格近似值;邊長/圓半徑/角度為 B-rep 精確值。
  • 少數 AP242 檔案 CADability 支援不完整,匯入失敗會提示訊息(不閃退)。
  • 唯讀檢視器,不寫入/修改原始檔案。

🤝 貢獻

  1. Fork 並建立 feature 分支:git checkout -b feature/your-feature
  2. 遵循 Conventional Commitsfeat(scope): summary
  3. Push 後開 Pull Request

📜 版本紀錄

v0.5.0

  • 功能擴充: 圓心吸附(兩下量孔對孔 pitch)、量測快速鍵(P/D/E/F/C/A/M+ Esc、標準視圖(等角/前/上/右)+ 正交投影、裝配樹搜尋/隔離顯示/反轉、體積與質心、3點任意剖切平面 + 位置數值輸入、干涉檢查支援 3+ 檔(兩兩配對)、對齊後場景匯出 STEP、面板可調寬、視窗/單位/最近檔案自動保存。

v0.4.0

  • 效能: 剖面裁切改背景平行運算(大檔拉滑桿不再凍結 UI);零件變換烘焙(拖曳/操作器放開)平行化;干涉間隙精修以 AABB 快速拒絕加速。
  • 穩定性: 全域例外處理(記 log 至 %LOCALAPPDATA%\STPViewer\error.log + 訊息框,不閃退);背景運算期間停用會改動幾何的指令;匯入防重入。

v0.3.2

  • 效能: 大組件量測模式下轉動視角不再卡頓。量測模式改為渲染合併網格(每檔 1 個 model),並用命中三角形的頂點 index 反查回是哪個面,不再掛數萬個逐面 model;逐面渲染只保留給剖面模式。
  • 相機互動暫停事件加訂 HelixViewport3D.CameraChanged,避免相機實例被換掉時訂閱失效。

v0.3.1

  • 操作器 always-on-top 疊圖層(永遠浮在零件上、不被實體遮擋)。

v0.3.0

  • 旋轉對齊:軸向旋轉(↻X/↻Y/↻Z)、三點對齊,以及統一的 TransformRoot 剛體變換路徑。

v0.2.x

  • 拖曳模式、兩點對齊、干涉檢查、剖面、角度/面距量測、裝配樹、STL/DXF 支援、mm ⇄ inch。

🙏 致謝

詳細設計與開發 Phase 見 ARCHITECTURE.md