diff --git a/AIStudio.Wpf.Diagram.sln b/AIStudio.Wpf.Diagram.sln
index 10ecfc6..754b77b 100644
--- a/AIStudio.Wpf.Diagram.sln
+++ b/AIStudio.Wpf.Diagram.sln
@@ -19,7 +19,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "解决方案项", "解决
ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
Directory.Build.Props = Directory.Build.Props
- test-zzp.txt = test-zzp.txt
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{2BE1891E-16C9-4191-998A-45AEEEEA1F0D}"
@@ -34,6 +33,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Demos", "Demos", "{62DC8608
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AIStudio.Wpf.DiagramDesigner.Demo", "Demos\AIStudio.Wpf.DiagramDesigner.Demo\AIStudio.Wpf.DiagramDesigner.Demo.csproj", "{FCFC5ABF-8459-4B45-ABA0-9B820C7ED5C6}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AIStudio.Wpf.Script", "Extensions\AIStudio.Wpf.Script\AIStudio.Wpf.Script.csproj", "{27A4C86D-3792-4D14-BAEE-3B103A709872}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -76,6 +77,10 @@ Global
{FCFC5ABF-8459-4B45-ABA0-9B820C7ED5C6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FCFC5ABF-8459-4B45-ABA0-9B820C7ED5C6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FCFC5ABF-8459-4B45-ABA0-9B820C7ED5C6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {27A4C86D-3792-4D14-BAEE-3B103A709872}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {27A4C86D-3792-4D14-BAEE-3B103A709872}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {27A4C86D-3792-4D14-BAEE-3B103A709872}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {27A4C86D-3792-4D14-BAEE-3B103A709872}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -86,6 +91,7 @@ Global
{2AB69067-277E-4EE0-9949-8326A145EEE4} = {4959F170-02FB-4B7F-8F53-93DAF22713F9}
{85C437B9-16D2-4076-ABCD-52029AC232FC} = {4959F170-02FB-4B7F-8F53-93DAF22713F9}
{FCFC5ABF-8459-4B45-ABA0-9B820C7ED5C6} = {62DC8608-D98F-47BB-9F19-ABB0C60B72FF}
+ {27A4C86D-3792-4D14-BAEE-3B103A709872} = {4959F170-02FB-4B7F-8F53-93DAF22713F9}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {D30FC641-F06C-4E35-AEA5-48A9B6E59CE0}
diff --git a/AIStudio.Wpf.DiagramApp/AIStudio.Wpf.DiagramApp.csproj b/AIStudio.Wpf.DiagramApp/AIStudio.Wpf.DiagramApp.csproj
index e7062d0..a3724a5 100644
--- a/AIStudio.Wpf.DiagramApp/AIStudio.Wpf.DiagramApp.csproj
+++ b/AIStudio.Wpf.DiagramApp/AIStudio.Wpf.DiagramApp.csproj
@@ -131,9 +131,34 @@
+
+
+
+ ..\Extensions\AIStudio.Wpf.Script\Dlls\net5.0-windows\AIStudio.Wpf.Script.Core.dll
+
+
+
+
+
+ ..\Extensions\AIStudio.Wpf.Script\Dlls\net6.0-windows\AIStudio.Wpf.Script.Core.dll
+
+
+
+
+
+ ..\Extensions\AIStudio.Wpf.Script\Dlls\netcoreapp3.1\AIStudio.Wpf.Script.Core.dll
+
+
+
+
+
+ ..\Extensions\AIStudio.Wpf.Script\Dlls\net461\AIStudio.Wpf.Script.Core.dll
+
+
+
diff --git a/AIStudio.Wpf.DiagramApp/App.xaml b/AIStudio.Wpf.DiagramApp/App.xaml
index 1006b6c..7e1527f 100644
--- a/AIStudio.Wpf.DiagramApp/App.xaml
+++ b/AIStudio.Wpf.DiagramApp/App.xaml
@@ -8,12 +8,15 @@
-
+
+
+
+
diff --git a/AIStudio.Wpf.DiagramApp/ViewModels/ScriptViewModel.cs b/AIStudio.Wpf.DiagramApp/ViewModels/ScriptViewModel.cs
index 1f26f7e..992db08 100644
--- a/AIStudio.Wpf.DiagramApp/ViewModels/ScriptViewModel.cs
+++ b/AIStudio.Wpf.DiagramApp/ViewModels/ScriptViewModel.cs
@@ -1,15 +1,30 @@
using System;
using System.Collections.Generic;
using System.Linq;
+using System.Reflection;
using System.Text;
using System.Threading.Tasks;
+using System.Timers;
+using System.Windows;
+using System.Windows.Media;
using AIStudio.Wpf.DiagramApp.Models;
using AIStudio.Wpf.DiagramDesigner;
+using AIStudio.Wpf.Script.Core.Helpers;
+using AIStudio.Wpf.Script.Core.Models;
+using AIStudio.Wpf.Script.Core.ViewModels;
+using AIStudio.Wpf.Script.ViewModels;
+using AIStudio.Wpf.SFC;
+using Microsoft.CodeAnalysis;
namespace AIStudio.Wpf.DiagramApp.ViewModels
{
public class ScriptViewModel : PageViewModel
{
+ static ScriptViewModel()
+ {
+ TextEditorThemeHelper.SetCurrentTheme("VS2019_Dark");
+ }
+
public ScriptViewModel(string title, string status, DiagramType diagramType) : base(title, status, diagramType)
{
Init(true);
@@ -19,17 +34,177 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
{
if (DiagramViewModel != null)
{
-
+
}
-
+ readDataTimer.Elapsed += timeCycle;
+ readDataTimer.Interval = 1000;
+ readDataTimer.AutoReset = false;
+ readDataTimer.Start();
}
protected override void InitDiagramViewModel()
{
base.InitDiagramViewModel();
+ DiagramViewModel.PageSizeType = PageSizeType.Custom;
+ DiagramViewModel.PageSize = new Size(double.NaN, double.NaN);
+ DiagramViewModel.ColorViewModel = new ColorViewModel();
+ DiagramViewModel.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
+ }
+ private System.Timers.Timer readDataTimer = new System.Timers.Timer();
+ protected override void Init(bool initNew)
+ {
+ base.Init(initNew);
+
+ ConsoleLogViewModel logNode = new ConsoleLogViewModel(DiagramViewModel) { Name = "Log", Left = 150, Top = 420 };
+ DiagramViewModel.Add(logNode);
+
+ IntScriptViewModel intLog = new IntScriptViewModel(DiagramViewModel) { Name = "Int", Left = 40, Top = 220 };
+ DiagramViewModel.Add(intLog);
+
+ ColorBoxFactoryScriptViewModel factoryNode = new ColorBoxFactoryScriptViewModel(DiagramViewModel) { Name = "ColorBoxFactory", Left = 150, Top = 150 };
+ DiagramViewModel.Add(factoryNode);
+
+ BoolScriptViewModel boolNode = new BoolScriptViewModel(DiagramViewModel) { Name = "Bool", TrueString = "形状", FalseString = "颜色", Left = 410, Top = 190 };
+ DiagramViewModel.Add(boolNode);
+
+ ColorBoxSwitchScriptViewModel switchNode = new ColorBoxSwitchScriptViewModel(DiagramViewModel) { Name = "ColorBoxSwitch", Left = 500, Top = 150 };
+ DiagramViewModel.Add(switchNode);
+
+ TextScriptViewModel textNode = new TextScriptViewModel(DiagramViewModel) { Name = "Text", Text = "AIStudio Diagram", Left = 150, Top = 50, ItemWidth = 450, ItemHeight = 60 };
+ DiagramViewModel.Add(textNode);
+
+ ColorBoxIfScriptViewModel ifNode = new ColorBoxIfScriptViewModel(DiagramViewModel) { Name = "ColorBoxIf", Left = 660, Top = 60 };
+ DiagramViewModel.Add(ifNode);
+
+ ColorBoxCollectorScriptViewModel collectorNode1_1 = new ColorBoxCollectorScriptViewModel(DiagramViewModel) { Name = "Collector1_1", Left = 790, Top = 40 };
+ collectorNode1_1.Tag = new ColorBoxModel("红色|圆形", "M 10,20 A 20,20 0 1 1 50,20 A 20,20 0 1 1 10,20", Colors.Red);
+ DiagramViewModel.Add(collectorNode1_1);
+
+ ColorBoxCollectorScriptViewModel collectorNode1_2 = new ColorBoxCollectorScriptViewModel(DiagramViewModel) { Name = "Collector1_2", Left = 790, Top = 120 };
+ collectorNode1_2.Tag = new ColorBoxModel("红色|圆形", "M 10,20 A 20,20 0 1 1 50,20 A 20,20 0 1 1 10,20", Colors.Red);
+ DiagramViewModel.Add(collectorNode1_2);
+
+ ColorBoxCollectorScriptViewModel collectorNode2 = new ColorBoxCollectorScriptViewModel(DiagramViewModel) { Name = "Collector2", Left = 790, Top = 220 };
+ collectorNode2.Tag = new ColorBoxModel("橙色|三角形", "M1,21H23L12,2", Colors.Orange);
+ DiagramViewModel.Add(collectorNode2);
+
+ ColorBoxCollectorScriptViewModel collectorNode3 = new ColorBoxCollectorScriptViewModel(DiagramViewModel) { Name = "Collector3", Left = 790, Top = 305 };
+ collectorNode3.Tag = new ColorBoxModel("黄色|方形", "M3,3V21H21V3", Colors.Yellow);
+ DiagramViewModel.Add(collectorNode3);
+
+ ColorBoxCollectorScriptViewModel collectorNode4 = new ColorBoxCollectorScriptViewModel(DiagramViewModel) { Name = "Collector4", Left = 790, Top = 390 };
+ collectorNode4.Tag = new ColorBoxModel("绿色|菱形", "M 0,20 L 30 0 L 60,20 L 30,40 Z", Colors.Green);
+ DiagramViewModel.Add(collectorNode4);
+
+ ColorBoxCollectorScriptViewModel collectorNode5 = new ColorBoxCollectorScriptViewModel(DiagramViewModel) { Name = "Collector5", Left = 790, Top = 475 };
+ collectorNode5.Tag = new ColorBoxModel("青色|梯形", "M 0 0 H 60 L 50 40 H 10 Z", Colors.Cyan);
+ DiagramViewModel.Add(collectorNode5);
+
+ ColorBoxCollectorScriptViewModel collectorNode6 = new ColorBoxCollectorScriptViewModel(DiagramViewModel) { Name = "Collector6", Left = 790, Top = 560 };
+ collectorNode6.Tag = new ColorBoxModel("蓝色|五角星", "M 9,2 11,7 17,7 12,10 14,15 9,12 4,15 6,10 1,7 7,7 Z", Colors.Blue);
+ DiagramViewModel.Add(collectorNode6);
+
+ ColorBoxCollectorScriptViewModel collectorNode7 = new ColorBoxCollectorScriptViewModel(DiagramViewModel) { Name = "Collector7", Left = 790, Top = 645 };
+ collectorNode7.Tag = new ColorBoxModel("紫色|六边形", "M 0,20 L 10,0 H 50 L 60,20 L 50,40 H10 Z", Colors.Purple);
+ DiagramViewModel.Add(collectorNode7);
+
+ ConnectionViewModel int_factoryConnector = new ConnectionViewModel(DiagramViewModel, intLog.Output[0], factoryNode.Input[0], DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
+ DiagramViewModel.Add(int_factoryConnector);
+
+ ConnectionViewModel bool_switchConnector = new ConnectionViewModel(DiagramViewModel, boolNode.Output[0], switchNode.Input[0], DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
+ DiagramViewModel.Add(bool_switchConnector);
+
+ ConnectionViewModel factory_switchConnector = new ConnectionViewModel(DiagramViewModel, factoryNode.Output[0], switchNode.Input[1], DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
+ factory_switchConnector.AnimationViewModel.Repeat = false;
+ factory_switchConnector.AnimationViewModel.Animation = LineAnimation.PathAnimation;
+ DiagramViewModel.Add(factory_switchConnector);
+
+ ConnectionViewModel switch_textConnector = new ConnectionViewModel(DiagramViewModel, switchNode.Output[0], textNode.Input[0], DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal);
+ switch_textConnector.SetPathGeneratorParameter(null, null, 5, 10);
+ DiagramViewModel.Add(switch_textConnector);
+
+ ConnectionViewModel switch_ifConnector = new ConnectionViewModel(DiagramViewModel, switchNode.Output[1], ifNode.Input[2], DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
+ switch_ifConnector.AnimationViewModel.Repeat = false;
+ switch_ifConnector.AnimationViewModel.Animation = LineAnimation.PathAnimation;
+ DiagramViewModel.Add(switch_ifConnector);
+
+ ConnectionViewModel if_collector1_1Connector = new ConnectionViewModel(DiagramViewModel, ifNode.Output[0], collectorNode1_1.Input[0], DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
+ if_collector1_1Connector.AnimationViewModel.Repeat = false;
+ if_collector1_1Connector.AnimationViewModel.Animation = LineAnimation.PathAnimation;
+ DiagramViewModel.Add(if_collector1_1Connector);
+
+ ConnectionViewModel if_collector1_2Connector = new ConnectionViewModel(DiagramViewModel, ifNode.Output[1], collectorNode1_2.Input[0], DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
+ if_collector1_2Connector.AnimationViewModel.Repeat = false;
+ if_collector1_2Connector.AnimationViewModel.Animation = LineAnimation.PathAnimation;
+ DiagramViewModel.Add(if_collector1_2Connector);
+
+ ConnectionViewModel collector1_1_if_Connector = new ConnectionViewModel(DiagramViewModel, collectorNode1_1.Output[0], ifNode.Input[0], DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal);
+ collector1_1_if_Connector.SetPathGeneratorParameter(null, null, 5, 30);
+ DiagramViewModel.Add(collector1_1_if_Connector);
+
+ ConnectionViewModel collector1_2_if_Connector = new ConnectionViewModel(DiagramViewModel, collectorNode1_2.Output[0], ifNode.Input[1], DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal);
+ collector1_2_if_Connector.SetPathGeneratorParameter(null, null, 5, 10);
+ DiagramViewModel.Add(collector1_2_if_Connector);
+
+ ConnectionViewModel switch_collector2Connector = new ConnectionViewModel(DiagramViewModel, switchNode.Output[2], collectorNode2.Input[0], DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
+ switch_collector2Connector.AnimationViewModel.Repeat = false;
+ switch_collector2Connector.AnimationViewModel.Animation = LineAnimation.PathAnimation;
+ DiagramViewModel.Add(switch_collector2Connector);
+
+ ConnectionViewModel switch_collector3Connector = new ConnectionViewModel(DiagramViewModel, switchNode.Output[3], collectorNode3.Input[0], DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
+ switch_collector3Connector.AnimationViewModel.Repeat = false;
+ switch_collector3Connector.AnimationViewModel.Animation = LineAnimation.PathAnimation;
+ DiagramViewModel.Add(switch_collector3Connector);
+
+ ConnectionViewModel switch_collector4Connector = new ConnectionViewModel(DiagramViewModel, switchNode.Output[4], collectorNode4.Input[0], DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
+ switch_collector4Connector.AnimationViewModel.Repeat = false;
+ switch_collector4Connector.AnimationViewModel.Animation = LineAnimation.PathAnimation;
+ DiagramViewModel.Add(switch_collector4Connector);
+
+ ConnectionViewModel switch_collector5Connector = new ConnectionViewModel(DiagramViewModel, switchNode.Output[5], collectorNode5.Input[0], DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
+ switch_collector5Connector.AnimationViewModel.Repeat = false;
+ switch_collector5Connector.AnimationViewModel.Animation = LineAnimation.PathAnimation;
+ DiagramViewModel.Add(switch_collector5Connector);
+
+ ConnectionViewModel switch_collector6Connector = new ConnectionViewModel(DiagramViewModel, switchNode.Output[6], collectorNode6.Input[0], DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
+ switch_collector6Connector.AnimationViewModel.Repeat = false;
+ switch_collector6Connector.AnimationViewModel.Animation = LineAnimation.PathAnimation;
+ DiagramViewModel.Add(switch_collector6Connector);
+
+ ConnectionViewModel switch_collector7Connector = new ConnectionViewModel(DiagramViewModel, switchNode.Output[7], collectorNode7.Input[0], DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
+ switch_collector7Connector.AnimationViewModel.Repeat = false;
+ switch_collector7Connector.AnimationViewModel.Animation = LineAnimation.PathAnimation;
+ DiagramViewModel.Add(switch_collector7Connector);
+
+ readDataTimer.Elapsed += timeCycle;
+ readDataTimer.Interval = 1000;
+ readDataTimer.AutoReset = false;
+ readDataTimer.Start();
+ }
+
+ private void timeCycle(object sender, ElapsedEventArgs e)
+ {
+ foreach (var item in DiagramViewModel.Items.OfType().OrderBy(p => p.OrderNumber).ToList())
+ {
+ item.Execute();
+ }
+ readDataTimer.Start();
+ }
+
+ public override void Dispose()
+ {
+ base.Dispose();
+
+ readDataTimer.Stop();
+ readDataTimer.Dispose();
+
+ foreach (var item in DiagramViewModel.Items.OfType().OrderBy(p => p.OrderNumber).ToList())
+ {
+ item.Dispose();
+ }
}
}
}
diff --git a/AIStudio.Wpf.DiagramDesigner/AIStudio.Wpf.DiagramDesigner.csproj b/AIStudio.Wpf.DiagramDesigner/AIStudio.Wpf.DiagramDesigner.csproj
index f631e7f..c397978 100644
--- a/AIStudio.Wpf.DiagramDesigner/AIStudio.Wpf.DiagramDesigner.csproj
+++ b/AIStudio.Wpf.DiagramDesigner/AIStudio.Wpf.DiagramDesigner.csproj
@@ -8,7 +8,7 @@
A.png
- 1.1.4
+ 1.1.5
一个Wpf的Diagram控件基础库
diff --git a/AIStudio.Wpf.DiagramDesigner/Styles/ZoomBox.xaml b/AIStudio.Wpf.DiagramDesigner/Styles/ZoomBox.xaml
index ad7df7d..97f6502 100644
--- a/AIStudio.Wpf.DiagramDesigner/Styles/ZoomBox.xaml
+++ b/AIStudio.Wpf.DiagramDesigner/Styles/ZoomBox.xaml
@@ -170,7 +170,7 @@
BorderThickness="1"
Background="#EEE"
BorderBrush="DimGray">
-
{
+ await Application.Current.Dispatcher.Invoke(async () => {
await DoAnimation();
});
break;
diff --git a/Directory.Build.Props b/Directory.Build.Props
index 44deea0..2eece1a 100644
--- a/Directory.Build.Props
+++ b/Directory.Build.Props
@@ -1,7 +1,7 @@
- net6.0-windows
+ net461;netcoreapp3.1;net5.0-windows;net6.0-windows
diff --git a/Extensions/AIStudio.Wpf.Script/AIStudio.Wpf.Script.csproj b/Extensions/AIStudio.Wpf.Script/AIStudio.Wpf.Script.csproj
new file mode 100644
index 0000000..316b0f8
--- /dev/null
+++ b/Extensions/AIStudio.Wpf.Script/AIStudio.Wpf.Script.csproj
@@ -0,0 +1,73 @@
+
+
+
+ true
+ AIStudio.Wpf.Controls
+ akwkevin
+ https://gitee.com/akwkevin
+ A.png
+
+
+ 1.0.6
+ 一个Wpf的脚本生成模块
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Dlls\net5.0-windows\AIStudio.Wpf.Script.Core.dll
+
+
+ Dlls\net5.0-windows\HL.dll
+
+
+ Dlls\net5.0-windows\TextEditLib.dll
+
+
+
+
+
+ Dlls\net6.0-windows\AIStudio.Wpf.Script.Core.dll
+
+
+ Dlls\net6.0-windows\HL.dll
+
+
+ Dlls\net6.0-windows\TextEditLib.dll
+
+
+
+
+
+ Dlls\netcoreapp3.1\AIStudio.Wpf.Script.Core.dll
+
+
+ Dlls\netcoreapp3.1\HL.dll
+
+
+ Dlls\netcoreapp3.1\TextEditLib.dll
+
+
+
+
+
+ Dlls\net461\AIStudio.Wpf.Script.Core.dll
+
+
+ Dlls\net461\HL.dll
+
+
+ Dlls\net461\TextEditLib.dll
+
+
+
+
diff --git a/Extensions/AIStudio.Wpf.Script/Dlls/net461/AIStudio.Wpf.Script.Core.dll b/Extensions/AIStudio.Wpf.Script/Dlls/net461/AIStudio.Wpf.Script.Core.dll
new file mode 100644
index 0000000..0f69246
Binary files /dev/null and b/Extensions/AIStudio.Wpf.Script/Dlls/net461/AIStudio.Wpf.Script.Core.dll differ
diff --git a/Extensions/AIStudio.Wpf.Script/Dlls/net461/HL.dll b/Extensions/AIStudio.Wpf.Script/Dlls/net461/HL.dll
new file mode 100644
index 0000000..cf7ddcc
Binary files /dev/null and b/Extensions/AIStudio.Wpf.Script/Dlls/net461/HL.dll differ
diff --git a/Extensions/AIStudio.Wpf.Script/Dlls/net461/TextEditLib.dll b/Extensions/AIStudio.Wpf.Script/Dlls/net461/TextEditLib.dll
new file mode 100644
index 0000000..d75d67f
Binary files /dev/null and b/Extensions/AIStudio.Wpf.Script/Dlls/net461/TextEditLib.dll differ
diff --git a/Extensions/AIStudio.Wpf.Script/Dlls/net5.0-windows/AIStudio.Wpf.Script.Core.dll b/Extensions/AIStudio.Wpf.Script/Dlls/net5.0-windows/AIStudio.Wpf.Script.Core.dll
new file mode 100644
index 0000000..a907778
Binary files /dev/null and b/Extensions/AIStudio.Wpf.Script/Dlls/net5.0-windows/AIStudio.Wpf.Script.Core.dll differ
diff --git a/Extensions/AIStudio.Wpf.Script/Dlls/net5.0-windows/HL.dll b/Extensions/AIStudio.Wpf.Script/Dlls/net5.0-windows/HL.dll
new file mode 100644
index 0000000..bda4cfb
Binary files /dev/null and b/Extensions/AIStudio.Wpf.Script/Dlls/net5.0-windows/HL.dll differ
diff --git a/Extensions/AIStudio.Wpf.Script/Dlls/net5.0-windows/TextEditLib.dll b/Extensions/AIStudio.Wpf.Script/Dlls/net5.0-windows/TextEditLib.dll
new file mode 100644
index 0000000..7925962
Binary files /dev/null and b/Extensions/AIStudio.Wpf.Script/Dlls/net5.0-windows/TextEditLib.dll differ
diff --git a/Extensions/AIStudio.Wpf.Script/Dlls/net6.0-windows/AIStudio.Wpf.Script.Core.dll b/Extensions/AIStudio.Wpf.Script/Dlls/net6.0-windows/AIStudio.Wpf.Script.Core.dll
new file mode 100644
index 0000000..869a979
Binary files /dev/null and b/Extensions/AIStudio.Wpf.Script/Dlls/net6.0-windows/AIStudio.Wpf.Script.Core.dll differ
diff --git a/Extensions/AIStudio.Wpf.Script/Dlls/net6.0-windows/HL.dll b/Extensions/AIStudio.Wpf.Script/Dlls/net6.0-windows/HL.dll
new file mode 100644
index 0000000..2742612
Binary files /dev/null and b/Extensions/AIStudio.Wpf.Script/Dlls/net6.0-windows/HL.dll differ
diff --git a/Extensions/AIStudio.Wpf.Script/Dlls/net6.0-windows/TextEditLib.dll b/Extensions/AIStudio.Wpf.Script/Dlls/net6.0-windows/TextEditLib.dll
new file mode 100644
index 0000000..292aefe
Binary files /dev/null and b/Extensions/AIStudio.Wpf.Script/Dlls/net6.0-windows/TextEditLib.dll differ
diff --git a/Extensions/AIStudio.Wpf.Script/Dlls/netcoreapp3.1/AIStudio.Wpf.Script.Core.dll b/Extensions/AIStudio.Wpf.Script/Dlls/netcoreapp3.1/AIStudio.Wpf.Script.Core.dll
new file mode 100644
index 0000000..8b60527
Binary files /dev/null and b/Extensions/AIStudio.Wpf.Script/Dlls/netcoreapp3.1/AIStudio.Wpf.Script.Core.dll differ
diff --git a/Extensions/AIStudio.Wpf.Script/Dlls/netcoreapp3.1/HL.dll b/Extensions/AIStudio.Wpf.Script/Dlls/netcoreapp3.1/HL.dll
new file mode 100644
index 0000000..fc58997
Binary files /dev/null and b/Extensions/AIStudio.Wpf.Script/Dlls/netcoreapp3.1/HL.dll differ
diff --git a/Extensions/AIStudio.Wpf.Script/Dlls/netcoreapp3.1/TextEditLib.dll b/Extensions/AIStudio.Wpf.Script/Dlls/netcoreapp3.1/TextEditLib.dll
new file mode 100644
index 0000000..f89dd29
Binary files /dev/null and b/Extensions/AIStudio.Wpf.Script/Dlls/netcoreapp3.1/TextEditLib.dll differ
diff --git a/Extensions/AIStudio.Wpf.Script/Properties/AssemblyInfo.cs b/Extensions/AIStudio.Wpf.Script/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..858ca0a
--- /dev/null
+++ b/Extensions/AIStudio.Wpf.Script/Properties/AssemblyInfo.cs
@@ -0,0 +1,16 @@
+using System.Windows;
+using System.Windows.Markup;
+
+[assembly: ThemeInfo(
+ ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
+ //(used if a resource is not found in the page,
+ // or application resource dictionaries)
+ ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
+ //(used if a resource is not found in the page,
+ // app, or any theme specific resource dictionaries)
+)]
+
+[assembly: XmlnsDefinition("https://gitee.com/akwkevin/aistudio.-wpf.-diagram", "AIStudio.Wpf.Script")]
+
+
+[assembly: XmlnsPrefix("https://gitee.com/akwkevin/aistudio.-wpf.-diagram", "dd")]
diff --git a/Extensions/AIStudio.Wpf.Script/Themes/ColorBoxCollectorScriptViewModel.xaml b/Extensions/AIStudio.Wpf.Script/Themes/ColorBoxCollectorScriptViewModel.xaml
new file mode 100644
index 0000000..51d191b
--- /dev/null
+++ b/Extensions/AIStudio.Wpf.Script/Themes/ColorBoxCollectorScriptViewModel.xaml
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Extensions/AIStudio.Wpf.Script/Themes/ColorBoxFactoryScriptViewModel.xaml b/Extensions/AIStudio.Wpf.Script/Themes/ColorBoxFactoryScriptViewModel.xaml
new file mode 100644
index 0000000..41a8992
--- /dev/null
+++ b/Extensions/AIStudio.Wpf.Script/Themes/ColorBoxFactoryScriptViewModel.xaml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Extensions/AIStudio.Wpf.Script/ViewModels/ColorBoxCollectorScriptViewModel.cs b/Extensions/AIStudio.Wpf.Script/ViewModels/ColorBoxCollectorScriptViewModel.cs
new file mode 100644
index 0000000..32d1305
--- /dev/null
+++ b/Extensions/AIStudio.Wpf.Script/ViewModels/ColorBoxCollectorScriptViewModel.cs
@@ -0,0 +1,78 @@
+using AIStudio.Wpf.DiagramDesigner;
+using AIStudio.Wpf.DiagramDesigner.Models;
+using AIStudio.Wpf.Script.Core.Models;
+using AIStudio.Wpf.Script.Core.ViewModels;
+using System.Collections.Generic;
+
+namespace AIStudio.Wpf.Script.ViewModels
+{
+ public class ColorBoxCollectorScriptViewModel : RoslynScriptViewModel
+ {
+ public ColorBoxCollectorScriptViewModel()
+ {
+ }
+
+ public ColorBoxCollectorScriptViewModel(IDiagramViewModel root) : base(root)
+ {
+ }
+
+ public ColorBoxCollectorScriptViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
+ {
+ }
+
+ public ColorBoxCollectorScriptViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
+ {
+ }
+
+ protected override void InitNew()
+ {
+ base.InitNew();
+
+ ItemWidth = 230;
+ ItemHeight = 76;
+ Code = @"using System;
+using System.Collections.Generic;
+using AIStudio.Wpf.Script.Core.Models;
+using System.Windows.Media;
+using System.Linq;
+
+namespace AIStudio.Wpf.CSharpScript
+{
+ public class ColorBoxFactory
+ {
+ private List ItemsSource { get; set;} = new List();
+ public ColorBoxModel Input {private get; set;}
+ public int Count{ get; private set;}
+
+ public void Execute()
+ {
+ if (Input != null)
+ {
+ ItemsSource.Add(Input);
+ Input = null;
+ Console.WriteLine($""收集到{Input.Text}号Box"");
+ }
+
+ Count = ItemsSource.Count;
+ }
+ }
+}";
+ }
+
+ private List _itemsSource;
+ public List ItemsSource
+ {
+ get
+ {
+ return _itemsSource;
+ }
+ set
+ {
+ SetProperty(ref _itemsSource, value);
+ }
+ }
+
+ public ColorBoxModel Tag { get; set; }
+
+ }
+}
diff --git a/Extensions/AIStudio.Wpf.Script/ViewModels/ColorBoxFactoryScriptViewModel.cs b/Extensions/AIStudio.Wpf.Script/ViewModels/ColorBoxFactoryScriptViewModel.cs
new file mode 100644
index 0000000..b46561e
--- /dev/null
+++ b/Extensions/AIStudio.Wpf.Script/ViewModels/ColorBoxFactoryScriptViewModel.cs
@@ -0,0 +1,102 @@
+using AIStudio.Wpf.DiagramDesigner;
+using AIStudio.Wpf.DiagramDesigner.Models;
+using AIStudio.Wpf.Script.Core.Models;
+using AIStudio.Wpf.Script.Core.ViewModels;
+using System.Collections.Generic;
+
+namespace AIStudio.Wpf.Script.ViewModels
+{
+ public class ColorBoxFactoryScriptViewModel : RoslynScriptViewModel
+ {
+ public ColorBoxFactoryScriptViewModel()
+ {
+ }
+
+ public ColorBoxFactoryScriptViewModel(IDiagramViewModel root) : base(root)
+ {
+ }
+
+ public ColorBoxFactoryScriptViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
+ {
+ }
+
+ public ColorBoxFactoryScriptViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
+ {
+ }
+
+ protected override void InitNew()
+ {
+ base.InitNew();
+
+ ItemWidth = 230;
+ ItemHeight = 230;
+ Code = @"using System;
+using System.Collections.Generic;
+using AIStudio.Wpf.Script.Core.Models;
+using System.Windows.Media;
+using System.Linq;
+
+namespace AIStudio.Wpf.CSharpScript
+{
+ public class ColorBoxFactory
+ {
+ public int Count{private get;set;} = 100;
+ private List ItemsSource { get; set;} = new List();
+ public ColorBoxModel Output {get;private set;}
+
+ public void Execute()
+ {
+ if (ItemsSource.Count == 0)
+ {
+ Random random = new Random();
+
+ for (int i = 0; i < Count; i++)
+ {
+ var sharpindex = random.Next(0, 8);
+ if (sharpindex == 7)
+ {
+ sharpindex = 0;
+ }
+
+ var colorindex = random.Next(0, 8);
+ if (colorindex == 7)
+ {
+ colorindex = 0;
+ }
+ string sharp = ColorBoxModel.SettingSharps[sharpindex];
+ Color color = ColorBoxModel.SettingColors[colorindex];
+
+ ColorBoxModel colorBoxModel = new ColorBoxModel(i.ToString(), sharp, color);
+ ItemsSource.Add(colorBoxModel);
+ }
+ Console.WriteLine($""初始化完成,一共初始化Box{Count}个"");
+ }
+ else if (Output == null)
+ {
+ Output = ItemsSource.FirstOrDefault();
+ ItemsSource.RemoveAt(0);
+ Console.WriteLine($""装配{Output.Text}号Box"");
+ }
+ }
+ }
+}";
+ }
+
+ private List _itemsSource;
+ public List ItemsSource
+ {
+ get
+ {
+ return _itemsSource;
+ }
+ set
+ {
+ SetProperty(ref _itemsSource, value);
+ }
+ }
+
+
+ }
+
+
+}
diff --git a/Extensions/AIStudio.Wpf.Script/ViewModels/ColorBoxIfScriptViewModel.cs b/Extensions/AIStudio.Wpf.Script/ViewModels/ColorBoxIfScriptViewModel.cs
new file mode 100644
index 0000000..9a3291e
--- /dev/null
+++ b/Extensions/AIStudio.Wpf.Script/ViewModels/ColorBoxIfScriptViewModel.cs
@@ -0,0 +1,96 @@
+using AIStudio.Wpf.DiagramDesigner;
+using AIStudio.Wpf.DiagramDesigner.Models;
+using AIStudio.Wpf.Script.Core.Models;
+using AIStudio.Wpf.Script.Core.ViewModels;
+using System.Collections.Generic;
+
+namespace AIStudio.Wpf.Script.ViewModels
+{
+ public class ColorBoxIfScriptViewModel : RoslynScriptViewModel
+ {
+ public ColorBoxIfScriptViewModel()
+ {
+ }
+
+ public ColorBoxIfScriptViewModel(IDiagramViewModel root) : base(root)
+ {
+ }
+
+ public ColorBoxIfScriptViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
+ {
+ }
+
+ public ColorBoxIfScriptViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
+ {
+ }
+
+ protected override void InitNew()
+ {
+ base.InitNew();
+
+ ItemWidth = 80;
+ ItemHeight = 80;
+ Text = "均衡分配器";
+ Code = @"using System;
+using System.Collections.Generic;
+using AIStudio.Wpf.Script.Core.Models;
+using System.Windows.Media;
+using System.Linq;
+
+namespace AIStudio.Wpf.CSharpScript
+{
+ public class ColorBoxIfScript
+ {
+ public int Count1 {private get;set;}
+ public int Count2 {private get;set;}
+ public ColorBoxModel Input {private get; set;}
+ public ColorBoxModel Output1 {get;private set;}
+ public ColorBoxModel Output2 {get;private set;}
+
+ public void Execute()
+ {
+ if (Input != null)
+ {
+ Console.WriteLine($""等待均衡负载{Input.Text}号Box"");
+ if (Count1 <= Count2)
+ {
+ if (Output1 == null)
+ {
+ Output1 = Input;
+ Input = null;
+ Console.WriteLine($""{Output1.Text}号Box均衡负载完毕,送往1号出口"");
+ }
+ }
+ else
+ {
+ if (Output2 == null)
+ {
+ Output2 = Input;
+ Input = null;
+ Console.WriteLine($""{Output2.Text}号Box均衡负载完毕,送往2号出口"");
+ }
+ }
+ }
+ }
+ }
+}";
+ }
+
+ private List _itemsSource;
+ public List ItemsSource
+ {
+ get
+ {
+ return _itemsSource;
+ }
+ set
+ {
+ SetProperty(ref _itemsSource, value);
+ }
+ }
+
+
+ }
+
+
+}
diff --git a/Extensions/AIStudio.Wpf.Script/ViewModels/ColorBoxSwitchScriptViewModel.cs b/Extensions/AIStudio.Wpf.Script/ViewModels/ColorBoxSwitchScriptViewModel.cs
new file mode 100644
index 0000000..34c6997
--- /dev/null
+++ b/Extensions/AIStudio.Wpf.Script/ViewModels/ColorBoxSwitchScriptViewModel.cs
@@ -0,0 +1,189 @@
+using AIStudio.Wpf.DiagramDesigner;
+using AIStudio.Wpf.DiagramDesigner.Models;
+using AIStudio.Wpf.Script.Core.ViewModels;
+
+namespace AIStudio.Wpf.Script.ViewModels
+{
+ public class ColorBoxSwitchScriptViewModel : RoslynScriptViewModel
+ {
+ public ColorBoxSwitchScriptViewModel()
+ {
+ }
+
+ public ColorBoxSwitchScriptViewModel(IDiagramViewModel root) : base(root)
+ {
+ }
+
+ public ColorBoxSwitchScriptViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
+ {
+ }
+
+ public ColorBoxSwitchScriptViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
+ {
+ }
+
+ protected override void InitNew()
+ {
+ base.InitNew();
+
+ Text = "ColorBox分配器";
+ ItemWidth = 100;
+ ItemHeight = 230;
+ Code = @"using AIStudio.Wpf.Script.Core.Models;
+using System;
+
+namespace AIStudio.Wpf.CSharpScript
+{
+ public class ColorBoxSwitch
+ {
+ public bool Mode { private get; set; }
+ public string Description { get; private set; }
+ public ColorBoxModel Input { private get; set; }
+ public ColorBoxModel Output1 { get; private set; }
+ public ColorBoxModel Output2 { get; private set; }
+ public ColorBoxModel Output3 { get; private set; }
+ public ColorBoxModel Output4 { get; private set; }
+ public ColorBoxModel Output5 { get; private set; }
+ public ColorBoxModel Output6 { get; private set; }
+ public ColorBoxModel Output7 { get; private set; }
+
+ public void Execute()
+ {
+ if (Input == null)
+ return;
+
+ if (Mode == false)
+ {
+ Console.WriteLine($""正在使用按颜色分配,等待分配{Input.Text}号Box"");
+ Description = ""欢迎来到AIStudio Diagream Box装配工厂,正在使用按颜色分配Box"";
+ switch (Input.Color.ToString())
+ {
+ case ""#FFFF0000"":
+ if (Output1 == null)
+ {
+ Output1 = Input;
+ Input = null;
+ Console.WriteLine($""{Output1.Text}号Box分配完毕,送往1号出口"");
+ }
+ break;
+ case ""#FFFFA500"":
+ if (Output2 == null)
+ {
+ Output2 = Input;
+ Input = null;
+ Console.WriteLine($""{Output2.Text}号Box分配完毕,送往2号出口"");
+ }
+ break;
+ case ""#FFFFFF00"":
+ if (Output3 == null)
+ {
+ Output3 = Input;
+ Input = null;
+ Console.WriteLine($""{Output3.Text}号Box分配完毕,送往3号出口"");
+ }
+ break;
+ case ""#FF008000"":
+ if (Output4 == null)
+ {
+ Output4 = Input;
+ Input = null;
+ Console.WriteLine($""{Output4.Text}号Box分配完毕,送往4号出口"");
+ }
+ break;
+ case ""#FF00FFFF"":
+ if (Output5 == null)
+ {
+ Output5 = Input;
+ Input = null;
+ Console.WriteLine($""{Output5.Text}号Box分配完毕,送往5号出口"");
+ }
+ break;
+ case ""#FF0000FF"":
+ if (Output6 == null)
+ {
+ Output6 = Input;
+ Input = null;
+ Console.WriteLine($""{Output6.Text}号Box分配完毕,送往6号出口"");
+ }
+ break;
+ default:
+ if (Output7 == null)
+ {
+ Output7 = Input;
+ Input = null;
+ Console.WriteLine($""{Output7.Text}号Box分配完毕,送往7号出口"");
+ }
+ break;
+ }
+ }
+ else
+ {
+ Console.WriteLine($""正在使用按形状分配,等待分配{Input.Text}号Box"");
+ Description = ""欢迎来到AIStudio Diagream Box装配工厂,正在使用按形状分配Box"";
+ switch (Input.Path)
+ {
+ case ""M 10,20 A 20,20 0 1 1 50,20 A 20,20 0 1 1 10,20"":
+ if (Output1 == null)
+ {
+ Output1 = Input;
+ Input = null;
+ Console.WriteLine($""{Output1.Text}号Box分配完毕,送往1号出口"");
+ }
+ break;
+ case ""M1,21H23L12,2"":
+ if (Output2 == null)
+ {
+ Output2 = Input;
+ Input = null;
+ Console.WriteLine($""{Output2.Text}号Box分配完毕,送往2号出口"");
+ }
+ break;
+ case ""M3,3V21H21V3"":
+ if (Output3 == null)
+ {
+ Output3 = Input;
+ Input = null;
+ Console.WriteLine($""{Output3.Text}号Box分配完毕,送往3号出口"");
+ }
+ break;
+ case ""M 0,20 L 30 0 L 60,20 L 30,40 Z"":
+ if (Output4 == null)
+ {
+ Output4 = Input;
+ Input = null;
+ Console.WriteLine($""{Output4.Text}号Box分配完毕,送往4号出口"");
+ }
+ break;
+ case ""M 0 0 H 60 L 50 40 H 10 Z"":
+ if (Output5 == null)
+ {
+ Output5 = Input;
+ Input = null;
+ Console.WriteLine($""{Output5.Text}号Box分配完毕,送往5号出口"");
+ }
+ break;
+ case ""M 9,2 11,7 17,7 12,10 14,15 9,12 4,15 6,10 1,7 7,7 Z"":
+ if (Output6 == null)
+ {
+ Output6 = Input;
+ Input = null;
+ Console.WriteLine($""{Output6.Text}号Box分配完毕,送往6号出口"");
+ }
+ break;
+ default:
+ if (Output7 == null)
+ {
+ Output7 = Input;
+ Input = null;
+ Console.WriteLine($""{Output7.Text}号Box分配完毕,送往7号出口"");
+ }
+ break;
+ }
+ }
+ }
+ }
+}";
+ }
+
+ }
+}