feat: Initial release v0.1.0

STP/STEP 3D viewer (WPF, .NET 8) - CADability + HelixToolkit.Wpf:

- Multi-file import (STEP/STL/DXF) with STEP assembly tree
  (per-node visibility/color cascade, zoom-to)
- Measurements: point / distance / edge / face / circle / angle /
  face-to-face distance (B-rep exact where available)
- Assembly verification: two-point align (translate), 3-point align
  (rotate+translate via RigidAlign), axis rotate 90, interference
  check (tri-tri intersection + min gap)
- Section view (CPU mesh clipping, originals preserved)
- mm/inch toggle, CSV export (UTF-8 BOM), 2x PNG screenshot
- Performance: per-file merged edge lines, per-leaf merged mesh in
  browse mode, no BackMaterial on closed solids, edge suspend during
  camera interaction, parallel leaf triangulation with retry
- SmokeTest CLI: import pipeline, --tree, --clip-test,
  --interference-test, --align-test (all passing)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-13 00:16:10 +08:00
co-authored by Claude Opus 4.8
commit 0e19dbae1b
33 changed files with 4155 additions and 0 deletions
+24
View File
@@ -0,0 +1,24 @@
# secret/ — 本機敏感資料集中地
本資料夾除 `README.md``*.example` 外全部 gitignored(規則見根目錄 `.gitignore`)。
## 內含物件
| 檔案 | git | 用途 |
|---|---|---|
| `README.md` | ✅ committed | 本說明 |
| `run-STPViewer.ps1.example` | ✅ committed | Windows 啟動腳本範本 |
| `run-STPViewer.sh.example` | ✅ committed | Git Bash 啟動腳本範本 |
| `run-STPViewer.ps1` / `.sh` | 🚫 ignored | 從範本複製後的本機實值版 |
> STPViewer 為離線桌面工具,目前**沒有任何 DB 密碼 / ApiKey**
> 腳本僅做 build + run。未來若加入需要 secret 的功能(雲端授權、回報伺服器等),
> 依範本內註解加上 env var 注入。
## 第一次使用
```powershell
cd secret
Copy-Item run-STPViewer.ps1.example run-STPViewer.ps1
.\run-STPViewer.ps1
```
+31
View File
@@ -0,0 +1,31 @@
# ══════════════════════════════════════════════════════════════════
# run-STPViewer.ps1 範本
#
# 第一次 clone 下來:
# cd secret
# Copy-Item run-STPViewer.ps1.example run-STPViewer.ps1
# .\run-STPViewer.ps1
#
# 若 PowerShell 擋執行 script,執行一次:
# Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
#
# secret/ 下除 README.md 和 .example 外皆已 gitignore。
# ══════════════════════════════════════════════════════════════════
$ErrorActionPreference = 'Stop'
# ─── secret(本專案目前無 DB / ApiKey;未來需要時在此加 env var) ──
# $env:SomeService__ApiKey = '__CHANGE_ME__'
# ══════════════════════════════════════════════════════════════════
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
$RepoRoot = Resolve-Path (Join-Path $ScriptDir '..')
Push-Location $RepoRoot
try {
dotnet run --project src/STPViewer
}
finally {
Pop-Location
}
+25
View File
@@ -0,0 +1,25 @@
#!/usr/bin/env bash
# ══════════════════════════════════════════════════════════════════
# run-STPViewer.sh 範本(Git Bash on Windows
#
# 第一次 clone 下來:
# cd secret
# cp run-STPViewer.sh.example run-STPViewer.sh
# chmod +x run-STPViewer.sh
# ./run-STPViewer.sh
#
# secret/ 下除 README.md 和 .example 外皆已 gitignore。
# ══════════════════════════════════════════════════════════════════
set -euo pipefail
# ─── secret(本專案目前無 DB / ApiKey;未來需要時在此 export) ────
# export SomeService__ApiKey="__CHANGE_ME__"
# ══════════════════════════════════════════════════════════════════
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
cd "${REPO_ROOT}"
exec dotnet run --project src/STPViewer