# Dorisoy.CNC-Simulator **Repository Path**: zhangsanDev/Dorisoy.CNC-Simulator ## Basic Information - **Project Name**: Dorisoy.CNC-Simulator - **Description**: 基于WPF的工控系统 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-15 - **Last Updated**: 2026-05-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Dorisoy.CNC-Simulator Dorisoy.CNC-Simulator 是一个基于 .NET Core 8.0 的机床仿真平台,是 [**MachineSimulation.DX**](https://github.com/federicocoppa75/MachineSimulation.DX) 的演进版本,用于机器结构、工装和工具的编辑、加载与可视化。项目采用 WPF 和 MVVM 模式开发,3D 视图基于 HelixToolkit.Wpf.SharpDX 实现。核心功能包括材料移除仿真、多种数据源支持(JSON、XML、REST)以及加工路径解析。项目已从 MVVMLightLib 迁移到 CommunityToolkit.Mvvm,实现了更现代化的技术栈。通过客户端-服务器架构,支持数据同步和分布式管理,为数控机床的仿真和测试提供了完整的解决方案。 * 从 .NET Framework 切换至 .NET Core 8.0; * 从服务器 REST 加载机器数据; * 从 MVVMLightLib 迁移到 CommunityToolkit.Mvvm; * 从 HelixToolkit.Wpf 迁移到 HelixToolkit.Wpf.SharpDX; * 更轻量级的视图模型; * 更高效的材料移除库; * 在材料移除中管理不同类型的工具; * 模块间更少的耦合。 ## Client 用于加载机器元素模型文件 (*.stl) 并将其发布到数据服务器的应用程序。 ## Client.Machine 用于加载由 [**MachineEditor**](https://github.com/federicocoppa75/MachineEditor#machineeditor) 制作的机器结构文件 (*.xml) 并发布到数据服务器或保存为 JSON 文件的应用程序。 ## Client.Tooling 用于加载由 [**ToolingEditor**](https://github.com/federicocoppa75/MachineEditor#toolingeditor) 制作的机器工装文件 (*.tooling) 并发布到数据服务器或保存为 jTooling 文件(JSON 格式)的应用程序。 ## Client.Tools 用于加载由 [**ToolEditor**](https://github.com/federicocoppa75/MachineEditor#toolingeditor) 制作的工具文件 (*.tools) 并发布到数据服务器或保存为 JTools 文件(JSON 格式)的应用程序。 ## 示例 此文件夹包含用于模拟简单 3 轴数控机床加工的文件。 * Simple3AxesCnc.json:机器结构 * Models:包含机器元素模型 (*.stl 文件) * SimpleToolSet.jTools:工具数据库 * SimpleTooling.jTooling:工装示例 * SimpleTooling2.jTooling:用于执行测试 *test news.msteps* 的工装 * Simple3AxesCnc.jenv:工作环境(包含结构、元素模型、工具和工装) * Simple3AxesCnc(news).jenv:用于执行 *test news.msteps* 的工作环境 * antina.msteps:机床示例 * test news.msteps:新开发示例 ## Machine.3D.Geometry.Provider 用于解耦机器元素模型加载的模块。 ## Machine.3D.Views 3D 视图的实现,依赖于 [**helix-toolkit**](https://github.com/helix-toolkit/helix-toolkit) 并与其其他模块解耦。 ## Machine.Data 数据模型类库。 ## Machine.Data.Base 由 [Machine.Data](#Machine.Data) 使用的基础结构类库。 ## Machine.Data.Converters 用于序列化/反序列化数据模型的转换器类库。 ## Machine.Data.Enums 定义数据模型枚举的类库。 ## Machine.Data.Extensions.ViewModels 数据模型视图模型扩展类库。 ## Machine.Data.Factories 数据模型工厂类库。 ## Machine.Data.Interfaces 定义数据模型接口的类库。 ## Machine.DataSource.Client.Rest 用于从服务器 REST 读取/写入数据模型的类库。 ## Machine.DataSource.File.Json 用于从 JSON 文件读取/写入数据模型的类库。 ## Machine.DataSource.File.Xml 用于从 XML 文件读取数据模型的类库。 ## Machine.Editor 用于编辑机器结构的应用程序,数据可以从本解决方案的应用程序制作的文件或数据服务器加载。 ## Machine.Steps.ViewModels 用于定义管理机器步骤的视图模型的类库。 ## Machine.Steps.ViewModels.Extensions 机器步骤视图模型扩展类库。 ## Machine.Steps.ViewModels.Interfaces 定义机器步骤视图模型接口的类库。 ## Machine.StepsSource.File.Iso 用于读取和转换 ISO 文件为机器步骤的模块。 ## Machine.StepsSource.File.Msteps 用于从文件加载机器步骤的模块。 ## Machine.ViewModels 视图模型类库。 ## Machine.ViewModels.Base 用于实现 MVVM 模式的基类元素类库。 ## Machine.ViewModels.Base.Implementation MVVM 基类元素实现类库。 ## Machine.ViewModels.Interfaces 定义视图模型接口的类库。 ## Machine.ViewModels.Interfaces.Bridge 定义视图模型桥接接口的类库。 ## Machine.ViewModels.Ioc "控制反转"的简单实现。 ## Machine.ViewModels.Messages 视图模型消息定义类库。 ## Machine.ViewModels.Messaging 消息传递实现。 ## Machine.ViewModels.UI 视图模型UI组件类库。 ## Machine.Views 数据视图类库。 ## Machine.Views.Converters 视图转换器类库。 ## MachineModels.Extensions 机器模型扩展类库。 ## MaterialRemove.Geometry 实现材料移除的类库。代码来源于 [geometry3Sharp](https://github.com/gradientspace/geometry3Sharp),用于尝试提高计算速度。 ## MaterialRemove.Interfaces 定义与材料移除库交互接口的类库。 ## MaterialRemove.Machine.Bridge 实现材料移除 ([MaterialRemove.ViewModels](#MaterialRemove.ViewModels)) 库与其它视图模型 ([Machine.ViewModels](#Machine.ViewModels)) 之间必要耦合的类库。 ## MaterialRemove.Test 用于测试和开发材料移除库的测试应用程序。 ## MaterialRemove.ViewModels 实现材料移除的类库。 ## MaterialRemove.ViewModels.3D [MaterialRemove.ViewModels](#MaterialRemove.ViewModels) 的部分实现,依赖于 [helix-toolkit](https://github.com/helix-toolkit/helix-toolkit):通过这种方式,材料移除的核心与该库解耦。 ## Mesh.Data 机器元素模型数据模型库。 ## Server 用于存储和获取机器数据(结构、工装、元素模型)的 REST 服务器。数据通过 SQLite 存储。 ## Tools.Editor 用于编辑工具集的应用程序,数据可以从本解决方案的应用程序制作的文件或数据服务器加载。 ## Tooling.Editor 用于编辑在 [Machine.Viewer](#Machine.Viewer) 中使用的工装的应用程序。 ## 屏幕截图 以下是一些应用程序的屏幕截图: ### 工具编辑器 ![](./images/tools.editor.JPG) ### 工装编辑器 ![](./images/tooling.editor.JPG) ### 测试新闻示例 [![](./images/test_news.JPG)](https://youtu.be/UX5DP2LnBV0)