数字孪生
数字孪生
利用物理模型、传感器数据、历史数据等在虚拟空间中完成映射,反映相对应实体装备的全生命周期过程。
1、开发工具.NET或者Unity
- Windows 使用WPF (windows Present Framework)
- macOS/linux使用maui (multi platform application UI)是WPF的扩展
- 安装maui
- dotnet workload install maui
2、通信仿真
3、创建项目
- 创建解决方案(一个解决方案下可以有多个项目)
dotnet new sln -n 解决方案名
- 创建maui项目
dotnet new maui -n 项目名
-
配置task.json和launch.json 配置时参考命令
-
task.json
1 | { |
- launch.json
1 | { |
-
常用命令
1
2
3
4
5
6dotnet workload install <工作负荷> --version 10.0.1 #安装平台应用
dotnet workload uninstall <工作负荷> #卸载平台应用
dotnet workload search #查询可用平台应用
dotnet workload list #已安装的平台
dotnet --info #dotnet信息
dotnet new globaljson --sdk-version 10.0.100 --force #切换dotnet版本
5、(1)创建项目时要联网,否则一些依赖配置无法下载
(2)运行环境macos系统是15+,.Net10+, Xcode 26+
(3) 各类型项目(例如maui)sdk的版本要和dotnet sdk版本一致否则报错
(4)MAUI 采用原生控件渲染,直接利用平台特定的 UI 组件(如 Android 的 Android.Views 或 iOS 的 UIKit),从而实现接近原生的性能和外观,但需为每个平台编写或适配特定代码;而 MAUI Blazor 将 Blazor(一种基于 Web 技术的框架)集成到 MAUI 中,使用HTML/CSS/JavaScript 渲染 UI,通过 WebView 在原生外壳中显示内容,使 UI 保持跨平台一致性,但可能引入 Web 技术的性能开销。
工程项目讲解
-
App.xaml

-
MainPage.xaml主窗口
3D空间
- 概念:坐标系,点线面,三角顶点网格,材质(贴图),光源,相机
- 模型结构:MeshGemetry3D, Positions, TriangleIndices, Material
- 相机:透视相机、正交相机
- 光源:环境光、平行光、点光源、聚光灯
- 对象容器:ViewPort3D
Unity数字孪生
数字孪生:数字化方式拷贝工厂的物理对象,模拟对象在现实场景中的行为,提高研发效率提前预判错误可能,节约生产成本。
- 设备同步:以生产线为基础搭建一套虚拟生产线,对生产线上的设备3D建模并放置到虚拟场景中,实现真实和虚拟生产线一一对应
- 数据同步:生产线设备通过PLC驱动实现既定动作,采集PLC数据驱动虚拟环境下设备模型实现同样既定动作,实现真实和虚拟设备实时联动
数字孪生需要哪些技术
- 建模:物理世界模型化
- 几何模型(壳子)

- 本构关系模型
,物理规律 - 流程模型

- 逻辑模型

- 几何模型(壳子)
- 物联网技术:将离线模型与真实数据连接,将真实的设备状态上传到模型,操作模型的指令下达到真实设备
- 仿真模拟(核心):建模和仿真是一对孪生体,建模是对物理世界的理解,仿真则是模型验证理解的内容是否符合物理世界,对已有规律的理解
- 机器学习:对未知规律的预测
- 云计算、大数据、多源数据融合

数字孪生软件介绍
- 数字孪生~={green}平台=~软件: 解决数字孤岛问题,通过统一数据源来实现,数据格式是什么实现数据互通
* - 数字孪生~={green}建模=~软件:在计算机上更加直观的了解我们的模拟对象
- 三维GIS(Esri,Skyline)
- 数字孪生~={green}仿真=~软件:将确定的规律和完整的机理转化成软件的方式来模拟物理世界
vscode .NET环境
- 安装:.NET Core SDK, .NET Core Runtime, Visual Studio Code, C# for Visual Studio Code
- 安装WPF项目模版:
dotnet new install Microsoft.DotNet.Wpf.ProjectTemplates - 创建WPF项目:
dotnet new wpf -n <ProjectName> - VScode打开WPF项目
- 运行项目:
dotnet run - C#和XAML开发
技术要点:
- WPF布局(只能在windows中)
- 界面处理
- 图表控件
- 3D模型
- 3D交互:告警
- 设备通信:数据和控制命令
创建项目
- visual studio WPF应用程序对应.NET Core
, 项目名、解决方案名 - 入口程序App.xaml
中StartupUri="MainWindow.xaml"指向资源MainWindow.xaml
WPF框架3D支持
- 坐标系、点线面、三角顶点网格、材质、光源、相机
- 模型结构:MeshGeometry3D, Positions, TriangleIndices, Material
- 相机:环境光、平行光、点光源、聚光灯
- 对象容器:ViewPort3D:放置3D对象,是所有对象的根结点,放所有模型、相机、光源等对象
MainWindow.xaml文件
1 | <Window x:Class="Factory_demo_v1.MainWindow" |


复杂模型搭建过程
- 方法一:使用C#代码来计算出规则的表面点位置,以及组织面域
- 方法二:使用专业建模工具,比如SolidWorks,3DMax,Blender,UE,AutoCAD等等,建模后导出特定格式,再将这特定格式的模型加载到WPF程序里
C#代码
partial 的作用是:允许同一个类 MainWindow 的代码分散写在多个文件中,编译时再合并成一个完整的类。
你的 MainWindow 实际上由两部分组成: 1) 自己写的 MainWindow.xaml.cs;2)MainWindow.xaml,WPF 会根据 XAML 自动生成另一部分 MainWindow 类
InitializeComponent()加载并初始化 MainWindow.xaml 中定义的界面,把 XAML 中的控件真正创建出来,并与 MainWindow.xaml.cs 连接起来。

仿照xaml的标签写C#代码,每个标签对应一个类,标签属性对应该类下的属性
1 | using System.Text; |



