2025-07-18 20:25:57 +08:00

107 lines
3.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Hi.Sample.Webapi
這是一個展示如何使用 Hi.Webapi 功能的範例專案。
## 專案描述
本專案示範了如何:
- 使用 Hi.Webapi 的 RenderingService 和 RenderingHub
- 建立自訂的 Controller 來創建測試 3D 物件
- 整合 SignalR 進行即時渲染通訊
- 實作 IDisplayee 介面來定義自訂的 3D 物件
## 功能特點
- **3D 物件渲染**:使用 Hi.Disp 引擎渲染 3D 圖形
- **即時通訊**:透過 SignalR 實現客戶端與服務器的即時互動
- **測試物件**:包含坐標軸、立方體和地面網格的示範物件
- **WebGL 渲染**:使用 HTML5 Canvas 進行硬體加速渲染
- **多種前端範例**:提供原生 JavaScript 和 Vue.js 兩種實作方式
## 執行專案
### 前置需求
- .NET 9.0 SDK
- Visual Studio 2022 或 VS Code
### 啟動步驟
1. 在專案目錄下執行:
```bash
dotnet build
dotnet run
```
2. 開啟瀏覽器訪問:
- 原生 JavaScript 版本http://localhost:5180/demo-native.html
- Vue.js 內嵌版本http://localhost:5180/demo-vue-inline.html
## 專案結構
```
Hi.Sample.Webapi/
├── Controllers/
│ └── RenderingController.cs # 範例控制器,展示如何創建測試物件
├── wwwroot/
│ ├── demo-native.html # 原生 JavaScript 範例頁面
│ └── demo-vue-inline.html # Vue.js 內嵌式範例頁面
├── Program.cs # 應用程式進入點
├── appsettings.json # 應用程式設定
├── Properties/
│ └── launchSettings.json # 啟動設定
└── Hi.Sample.Webapi.csproj # 專案檔案
```
## 使用說明
### 鍵盤控制
- **F1-F4**:切換不同視圖
- **方向鍵**:旋轉視圖
- **PageUp/PageDown**:縮放
- **Home**:重置視圖
### 滑鼠控制
- **左鍵拖曳**:旋轉視圖
- **右鍵拖曳**:平移視圖
- **滾輪**:縮放
## API 端點
- `GET /api/rendering/engines/count` - 獲取活動的渲染引擎數量
- `POST /api/rendering/test-objects/{sessionId}` - 為指定會話創建測試物件
## 重要類別說明
### TestDisplayee
實作 IDisplayee 介面的範例類別,展示如何創建自訂的 3D 物件:
- 使用 Drawing 類別創建圖形元素
- 實作 Display 方法來渲染物件
- 實作 ExpandToBox3d 方法來定義物件邊界
## 前端實作比較
### demo-native.html
- 使用原生 JavaScript
- 詳細的實作範例
- 適合學習底層 API 使用
### demo-vue-inline.html
- 使用 Vue.js 3
- 所有程式碼內嵌在單一 HTML 檔案中
- 展示如何用 Vue.js 整合渲染功能
- 無需外部依賴檔案,方便複製使用
## 依賴項目
- Hi.Webapi - 提供 Web API 和 SignalR 支援
- HiNc - 核心 NC 功能
- HiDisp - 顯示引擎
- HiGeom - 幾何運算
- 其他 HiAPI 相關專案
## 注意事項
這是一個範例專案,主要用於展示 Hi.Webapi 的使用方式。實際專案中可能需要根據具體需求進行調整和擴展。
### 關於 Vue.js 元件
如果您需要使用模組化的 Vue.js 元件(如 Hi.Webapi 專案中的 rendering-canvas.js請參考 Hi.Webapi 專案的實作方式。本範例使用內嵌方式是為了保持簡單和獨立性。