TUM.CMS.VPLControl 开源项目教程
1. 项目介绍
TUM.CMS.VPLControl 是一个基于 WPF 的 .NET 可视化编程控件。它允许非程序员通过简单的图形界面编写程序或流程,而无需了解其内部构建方式。该控件支持从零开始进行简单的可视化编程,包括赋值、布尔表达式、数学表达式和脚本。用户还可以轻松添加自定义节点以满足特定需求。该项目主要受到 Dynamo 和 Grasshopper 等知名可视化编程工具的启发。
2. 项目快速启动
2.1 下载和克隆项目
首先,下载或克隆 TUM.CMS.VPLControl 项目到本地:
git clone https://github.com/tumcms/TUM.CMS.VPLControl.git
2.2 运行测试项目
- 打开 Visual Studio 并加载项目。
- 运行测试项目以查看示例应用程序。
2.3 添加自定义节点
在测试项目中,找到 TemplateNode.cs
文件,这是一个自定义节点的模板。你可以根据需要修改和扩展该节点。
using System.Windows.Controls;
using TUM.CMS.VplControl.Nodes;
namespace TUM.CMS.VplControl.Test.Nodes
{
public class TemplateNode : Node
{
public TemplateNode(VplControl hostCanvas) : base(hostCanvas)
{
AddInputPortToNode("Test", typeof(object));
AddOutputPortToNode("Test", typeof(object));
AddControlToNode(new Label { Content = "TemplateNode" });
}
public override void Calculate()
{
OutputPorts[0].Data = InputPorts[0].Data;
}
public override void SerializeNetwork(XmlWriter xmlWriter)
{
base.SerializeNetwork(xmlWriter);
// 添加你的 XML 序列化方法
}
public override void DeserializeNetwork(XmlReader xmlReader)
{
base.DeserializeNetwork(xmlReader);
// 添加你的 XML 反序列化方法
}
public override Node Clone()
{
return new TemplateNode(HostCanvas)
{
Top = Top,
Left = Left
};
}
}
}
2.4 在项目中使用 TUM.CMS.VplControl
- 创建一个新的 WPF 项目。
- 添加对
TUM.CMS.VplControl.dll
的引用。 - 在
App.xaml
文件中添加资源字典:
<Application x:Class="KBEControlCenter2.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/TUM.CMS.VplControl.component/Themes/Generic.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
- 在主窗口中添加
VplControl
元素:
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:VplControl="clr-namespace:TUM.CMS.VplControl;assembly=TUM.CMS.VplControl"
x:Class="TUM.CMS.VplControl.Test.MainWindow"
Title="MainWindow"
WindowStartupLocation="CenterScreen"
WindowState="Maximized">
<Grid>
<VplControl:VplControl Name="VplControl" />
</Grid>
</Window>
- 将主控件/窗口的按键事件路由到
VplControl
:
KeyDown += VplControl.VplControl_KeyDown;
KeyUp += VplControl.VplControl_KeyUp;
3. 应用案例和最佳实践
3.1 自动化流程设计
TUM.CMS.VPLControl 可以用于设计自动化流程,例如数据处理、图像处理和业务流程自动化。通过可视化编程,用户可以快速构建复杂的流程,而无需编写大量代码。
3.2 教育培训
该控件非常适合用于教育培训,帮助学生理解编程概念。通过可视化编程,学生可以直观地看到代码的执行过程,从而更好地理解编程逻辑。
3.3 原型设计
在软件开发过程中,TUM.CMS.VPLControl 可以用于快速原型设计。开发人员可以通过可视化编程快速构建应用程序的原型,并进行测试和迭代。
4. 典型生态项目
4.1 Dynamo
Dynamo 是一个开源的可视化编程工具,主要用于建筑信息建模(BIM)。它允许用户通过图形界面创建复杂的建筑模型和自动化流程。
4.2 Grasshopper
Grasshopper 是一个基于 Rhino 的插件,用于参数化设计和生成式设计。它通过可视化编程界面,帮助设计师快速创建复杂的建筑和产品设计。
4.3 Node-RED
Node-RED 是一个基于浏览器的可视化编程工具,主要用于物联网(IoT)应用。它允许用户通过拖放节点来创建复杂的物联网应用。
通过这些生态项目,TUM.CMS.VPLControl 可以进一步扩展其应用场景,满足不同领域的需求。