项目结构调整

This commit is contained in:
艾竹
2023-04-16 20:11:40 +08:00
parent cbfbf96033
commit 81f91f3f35
2124 changed files with 218 additions and 5516 deletions

View File

@@ -0,0 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<PropertyGroup>
<UseWPF>true</UseWPF>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MathParser.org-mXparser" Version="4.4.2" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\AIStudio.Wpf.DiagramDesigner\AIStudio.Wpf.DiagramDesigner.csproj" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,225 @@
<Project>
<PropertyGroup>
<AssemblyName>AIStudio.Wpf.SFC</AssemblyName>
<IntermediateOutputPath>obj\Debug\</IntermediateOutputPath>
<BaseIntermediateOutputPath>obj\</BaseIntermediateOutputPath>
<MSBuildProjectExtensionsPath>F:\aistudio.-wpf.-diagram\AIStudio.Wpf.SFC\obj\</MSBuildProjectExtensionsPath>
<_TargetAssemblyProjectName>AIStudio.Wpf.SFC</_TargetAssemblyProjectName>
</PropertyGroup>
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk.WindowsDesktop" />
<PropertyGroup>
<UseWPF>true</UseWPF>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MathParser.org-mXparser" Version="4.4.2" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\AIStudio.Wpf.DiagramDesigner\AIStudio.Wpf.DiagramDesigner.csproj" />
</ItemGroup>
<ItemGroup>
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\Accessibility.dll" />
<ReferencePath Include="F:\aistudio.-wpf.-diagram\AIStudio.Wpf.DiagramDesigner\bin\Debug\net5.0-windows\AIStudio.Wpf.DiagramDesigner.dll" />
<ReferencePath Include="C:\Users\Administrator\.nuget\packages\mathparser.org-mxparser\4.4.2\lib\netcoreapp31\MathParser.org-mXparser.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\Microsoft.CSharp.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\Microsoft.VisualBasic.Core.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\Microsoft.VisualBasic.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\Microsoft.Win32.Primitives.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\Microsoft.Win32.Registry.AccessControl.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\Microsoft.Win32.Registry.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\Microsoft.Win32.SystemEvents.dll" />
<ReferencePath Include="C:\Users\Administrator\.nuget\packages\microsoft.xaml.behaviors.wpf\1.1.31\lib\net5.0-windows7.0\Microsoft.Xaml.Behaviors.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\mscorlib.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\netstandard.dll" />
<ReferencePath Include="C:\Users\Administrator\.nuget\packages\newtonsoft.json\13.0.1\lib\netstandard2.0\Newtonsoft.Json.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\PresentationCore.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\PresentationFramework.Aero.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\PresentationFramework.Aero2.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\PresentationFramework.AeroLite.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\PresentationFramework.Classic.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\PresentationFramework.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\PresentationFramework.Luna.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\PresentationFramework.Royale.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\PresentationUI.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\ReachFramework.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.AppContext.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Buffers.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\System.CodeDom.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Collections.Concurrent.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Collections.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Collections.Immutable.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Collections.NonGeneric.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Collections.Specialized.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.ComponentModel.Annotations.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.ComponentModel.DataAnnotations.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.ComponentModel.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.ComponentModel.EventBasedAsync.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.ComponentModel.Primitives.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.ComponentModel.TypeConverter.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\System.Configuration.ConfigurationManager.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Configuration.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Console.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Core.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Data.Common.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Data.DataSetExtensions.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Data.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Diagnostics.Contracts.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Diagnostics.Debug.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Diagnostics.DiagnosticSource.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\System.Diagnostics.EventLog.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Diagnostics.FileVersionInfo.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\System.Diagnostics.PerformanceCounter.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Diagnostics.Process.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Diagnostics.StackTrace.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Diagnostics.TextWriterTraceListener.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Diagnostics.Tools.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Diagnostics.TraceSource.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Diagnostics.Tracing.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\System.DirectoryServices.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.dll" />
<ReferencePath Include="C:\Users\Administrator\.nuget\packages\system.drawing.common\5.0.2\ref\netcoreapp3.0\System.Drawing.Common.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Drawing.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Drawing.Primitives.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Dynamic.Runtime.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Formats.Asn1.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Globalization.Calendars.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Globalization.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Globalization.Extensions.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.IO.Compression.Brotli.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.IO.Compression.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.IO.Compression.FileSystem.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.IO.Compression.ZipFile.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.IO.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\System.IO.FileSystem.AccessControl.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.IO.FileSystem.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.IO.FileSystem.DriveInfo.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.IO.FileSystem.Primitives.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.IO.FileSystem.Watcher.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.IO.IsolatedStorage.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.IO.MemoryMappedFiles.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\System.IO.Packaging.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\System.IO.Pipes.AccessControl.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.IO.Pipes.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.IO.UnmanagedMemoryStream.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Linq.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Linq.Expressions.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Linq.Parallel.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Linq.Queryable.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Memory.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.Http.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.Http.Json.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.HttpListener.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.Mail.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.NameResolution.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.NetworkInformation.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.Ping.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.Primitives.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.Requests.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.Security.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.ServicePoint.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.Sockets.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.WebClient.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.WebHeaderCollection.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.WebProxy.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.WebSockets.Client.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Net.WebSockets.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Numerics.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Numerics.Vectors.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.ObjectModel.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\System.Printing.dll" />
<ReferencePath Include="C:\Users\Administrator\.nuget\packages\system.reactive\5.0.0\lib\net5.0\System.Reactive.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Reflection.DispatchProxy.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Reflection.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Reflection.Emit.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Reflection.Emit.ILGeneration.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Reflection.Emit.Lightweight.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Reflection.Extensions.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Reflection.Metadata.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Reflection.Primitives.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Reflection.TypeExtensions.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\System.Resources.Extensions.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Resources.Reader.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Resources.ResourceManager.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Resources.Writer.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Runtime.CompilerServices.Unsafe.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Runtime.CompilerServices.VisualC.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Runtime.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Runtime.Extensions.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Runtime.Handles.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Runtime.InteropServices.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Runtime.InteropServices.RuntimeInformation.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Runtime.Intrinsics.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Runtime.Loader.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Runtime.Numerics.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Runtime.Serialization.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Runtime.Serialization.Formatters.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Runtime.Serialization.Json.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Runtime.Serialization.Primitives.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Runtime.Serialization.Xml.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\System.Security.AccessControl.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Security.Claims.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Security.Cryptography.Algorithms.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\System.Security.Cryptography.Cng.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Security.Cryptography.Csp.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Security.Cryptography.Encoding.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\System.Security.Cryptography.Pkcs.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Security.Cryptography.Primitives.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\System.Security.Cryptography.ProtectedData.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Security.Cryptography.X509Certificates.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\System.Security.Cryptography.Xml.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Security.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\System.Security.Permissions.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Security.Principal.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\System.Security.Principal.Windows.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Security.SecureString.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.ServiceModel.Web.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.ServiceProcess.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Text.Encoding.CodePages.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Text.Encoding.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Text.Encoding.Extensions.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Text.Encodings.Web.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Text.Json.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Text.RegularExpressions.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\System.Threading.AccessControl.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Threading.Channels.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Threading.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Threading.Overlapped.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Threading.Tasks.Dataflow.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Threading.Tasks.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Threading.Tasks.Extensions.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Threading.Tasks.Parallel.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Threading.Thread.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Threading.ThreadPool.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Threading.Timer.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Transactions.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Transactions.Local.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.ValueTuple.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Web.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Web.HttpUtility.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\System.Windows.Controls.Ribbon.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Windows.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\System.Windows.Extensions.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\System.Windows.Input.Manipulations.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\System.Windows.Presentation.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\System.Xaml.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Xml.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Xml.Linq.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Xml.ReaderWriter.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Xml.Serialization.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Xml.XDocument.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Xml.XmlDocument.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Xml.XmlSerializer.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Xml.XPath.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Xml.XPath.XDocument.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\UIAutomationClient.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\UIAutomationClientSideProviders.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\UIAutomationProvider.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\UIAutomationTypes.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\5.0.0\ref\net5.0\WindowsBase.dll" />
<ReferencePath Include="C:\Users\Administrator\.nuget\packages\wpfanimatedgif\2.0.0\lib\netcoreapp3.0\WpfAnimatedGif.dll" />
</ItemGroup>
<ItemGroup>
<Compile Include="F:\aistudio.-wpf.-diagram\AIStudio.Wpf.SFC\obj\Debug\net5.0-windows\GeneratedInternalTypeHelper.g.cs" />
</ItemGroup>
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk.WindowsDesktop" />
</Project>

View File

@@ -0,0 +1,230 @@
<Project>
<PropertyGroup>
<AssemblyName>AIStudio.Wpf.SFC</AssemblyName>
<IntermediateOutputPath>obj\Debug\</IntermediateOutputPath>
<BaseIntermediateOutputPath>obj\</BaseIntermediateOutputPath>
<MSBuildProjectExtensionsPath>F:\aistudio.-wpf.-diagram\AIStudio.Wpf.SFC\obj\</MSBuildProjectExtensionsPath>
<_TargetAssemblyProjectName>AIStudio.Wpf.SFC</_TargetAssemblyProjectName>
</PropertyGroup>
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk.WindowsDesktop" />
<PropertyGroup>
<UseWPF>true</UseWPF>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MathParser.org-mXparser" Version="4.4.2" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\AIStudio.Wpf.DiagramDesigner\AIStudio.Wpf.DiagramDesigner.csproj" />
</ItemGroup>
<ItemGroup>
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\Accessibility.dll" />
<ReferencePath Include="F:\aistudio.-wpf.-diagram\AIStudio.Wpf.DiagramDesigner\bin\Debug\netcoreapp3.1\AIStudio.Wpf.DiagramDesigner.dll" />
<ReferencePath Include="C:\Users\Administrator\.nuget\packages\mathparser.org-mxparser\4.4.2\lib\netcoreapp31\MathParser.org-mXparser.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\Microsoft.CSharp.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\Microsoft.VisualBasic.Core.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\Microsoft.VisualBasic.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\Microsoft.Win32.Primitives.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\Microsoft.Win32.Registry.AccessControl.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\Microsoft.Win32.Registry.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\Microsoft.Win32.SystemEvents.dll" />
<ReferencePath Include="C:\Users\Administrator\.nuget\packages\microsoft.xaml.behaviors.wpf\1.1.31\lib\netcoreapp3.1\Microsoft.Xaml.Behaviors.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\mscorlib.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\netstandard.dll" />
<ReferencePath Include="C:\Users\Administrator\.nuget\packages\newtonsoft.json\13.0.1\lib\netstandard2.0\Newtonsoft.Json.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\PresentationCore.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\PresentationFramework.Aero.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\PresentationFramework.Aero2.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\PresentationFramework.AeroLite.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\PresentationFramework.Classic.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\PresentationFramework.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\PresentationFramework.Luna.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\PresentationFramework.Royale.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\PresentationUI.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\ReachFramework.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.AppContext.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Buffers.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.CodeDom.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Collections.Concurrent.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Collections.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Collections.Immutable.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Collections.NonGeneric.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Collections.Specialized.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.ComponentModel.Annotations.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.ComponentModel.DataAnnotations.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.ComponentModel.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.ComponentModel.EventBasedAsync.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.ComponentModel.Primitives.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.ComponentModel.TypeConverter.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Configuration.ConfigurationManager.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Configuration.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Console.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Core.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Data.Common.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Data.DataSetExtensions.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Data.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Design.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Diagnostics.Contracts.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Diagnostics.Debug.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Diagnostics.DiagnosticSource.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Diagnostics.EventLog.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Diagnostics.FileVersionInfo.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Diagnostics.PerformanceCounter.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Diagnostics.Process.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Diagnostics.StackTrace.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Diagnostics.TextWriterTraceListener.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Diagnostics.Tools.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Diagnostics.TraceSource.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Diagnostics.Tracing.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.DirectoryServices.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.dll" />
<ReferencePath Include="C:\Users\Administrator\.nuget\packages\system.drawing.common\5.0.2\ref\netcoreapp3.0\System.Drawing.Common.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Drawing.Design.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Drawing.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Drawing.Primitives.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Dynamic.Runtime.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Globalization.Calendars.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Globalization.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Globalization.Extensions.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.IO.Compression.Brotli.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.IO.Compression.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.IO.Compression.FileSystem.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.IO.Compression.ZipFile.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.IO.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.IO.FileSystem.AccessControl.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.IO.FileSystem.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.IO.FileSystem.DriveInfo.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.IO.FileSystem.Primitives.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.IO.FileSystem.Watcher.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.IO.IsolatedStorage.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.IO.MemoryMappedFiles.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.IO.Packaging.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.IO.Pipes.AccessControl.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.IO.Pipes.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.IO.UnmanagedMemoryStream.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Linq.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Linq.Expressions.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Linq.Parallel.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Linq.Queryable.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Memory.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.Http.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.HttpListener.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.Mail.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.NameResolution.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.NetworkInformation.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.Ping.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.Primitives.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.Requests.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.Security.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.ServicePoint.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.Sockets.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.WebClient.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.WebHeaderCollection.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.WebProxy.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.WebSockets.Client.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.WebSockets.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Numerics.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Numerics.Vectors.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.ObjectModel.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Printing.dll" />
<ReferencePath Include="C:\Users\Administrator\.nuget\packages\system.reactive\5.0.0\buildTransitive\netcoreapp3.1\..\..\build\netcoreapp3.1\System.Reactive.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Reflection.DispatchProxy.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Reflection.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Reflection.Emit.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Reflection.Emit.ILGeneration.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Reflection.Emit.Lightweight.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Reflection.Extensions.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Reflection.Metadata.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Reflection.Primitives.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Reflection.TypeExtensions.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Resources.Extensions.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Resources.Reader.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Resources.ResourceManager.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Resources.Writer.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Runtime.CompilerServices.Unsafe.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Runtime.CompilerServices.VisualC.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Runtime.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Runtime.Extensions.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Runtime.Handles.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Runtime.InteropServices.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Runtime.InteropServices.RuntimeInformation.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Runtime.InteropServices.WindowsRuntime.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Runtime.Intrinsics.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Runtime.Loader.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Runtime.Numerics.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Runtime.Serialization.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Runtime.Serialization.Formatters.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Runtime.Serialization.Json.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Runtime.Serialization.Primitives.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Runtime.Serialization.Xml.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Security.AccessControl.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Security.Claims.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Security.Cryptography.Algorithms.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Security.Cryptography.Cng.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Security.Cryptography.Csp.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Security.Cryptography.Encoding.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Security.Cryptography.Pkcs.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Security.Cryptography.Primitives.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Security.Cryptography.ProtectedData.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Security.Cryptography.X509Certificates.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Security.Cryptography.Xml.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Security.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Security.Permissions.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Security.Principal.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Security.Principal.Windows.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Security.SecureString.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.ServiceModel.Web.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.ServiceProcess.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Text.Encoding.CodePages.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Text.Encoding.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Text.Encoding.Extensions.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Text.Encodings.Web.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Text.Json.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Text.RegularExpressions.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Threading.AccessControl.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Threading.Channels.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Threading.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Threading.Overlapped.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Threading.Tasks.Dataflow.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Threading.Tasks.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Threading.Tasks.Extensions.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Threading.Tasks.Parallel.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Threading.Thread.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Threading.ThreadPool.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Threading.Timer.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Transactions.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Transactions.Local.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.ValueTuple.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Web.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Web.HttpUtility.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Windows.Controls.Ribbon.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Windows.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Windows.Extensions.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Windows.Forms.Design.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Windows.Forms.Design.Editors.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Windows.Forms.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Windows.Input.Manipulations.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Windows.Presentation.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Xaml.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Xml.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Xml.Linq.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Xml.ReaderWriter.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Xml.Serialization.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Xml.XDocument.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Xml.XmlDocument.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Xml.XmlSerializer.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Xml.XPath.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Xml.XPath.XDocument.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\UIAutomationClient.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\UIAutomationClientSideProviders.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\UIAutomationProvider.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\UIAutomationTypes.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\WindowsBase.dll" />
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\WindowsFormsIntegration.dll" />
<ReferencePath Include="C:\Users\Administrator\.nuget\packages\wpfanimatedgif\2.0.0\lib\netcoreapp3.0\WpfAnimatedGif.dll" />
</ItemGroup>
<ItemGroup>
<Compile Include="F:\aistudio.-wpf.-diagram\AIStudio.Wpf.SFC\obj\Debug\netcoreapp3.1\GeneratedInternalTypeHelper.g.cs" />
</ItemGroup>
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk.WindowsDesktop" />
</Project>

View File

@@ -0,0 +1,166 @@
<Project>
<PropertyGroup>
<AssemblyName>AIStudio.Wpf.SFC</AssemblyName>
<IntermediateOutputPath>obj\Debug\</IntermediateOutputPath>
<BaseIntermediateOutputPath>obj\</BaseIntermediateOutputPath>
<MSBuildProjectExtensionsPath>F:\aistudio.-wpf.-diagram\AIStudio.Wpf.SFC\obj\</MSBuildProjectExtensionsPath>
<_TargetAssemblyProjectName>AIStudio.Wpf.SFC</_TargetAssemblyProjectName>
</PropertyGroup>
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk.WindowsDesktop" />
<PropertyGroup>
<UseWPF>true</UseWPF>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MathParser.org-mXparser" Version="4.4.2" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\AIStudio.Wpf.DiagramDesigner\AIStudio.Wpf.DiagramDesigner.csproj" />
</ItemGroup>
<ItemGroup>
<ReferencePath Include="F:\aistudio.-wpf.-diagram\AIStudio.Wpf.DiagramDesigner\bin\Debug\net461\AIStudio.Wpf.DiagramDesigner.dll" />
<ReferencePath Include="C:\Users\Administrator\.nuget\packages\mathparser.org-mxparser\4.4.2\lib\net461\MathParser.org-mXparser.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\Microsoft.Win32.Primitives.dll" />
<ReferencePath Include="C:\Users\Administrator\.nuget\packages\microsoft.xaml.behaviors.wpf\1.1.31\lib\net45\Microsoft.Xaml.Behaviors.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\mscorlib.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\netfx.force.conflicts.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\netstandard.dll" />
<ReferencePath Include="C:\Users\Administrator\.nuget\packages\newtonsoft.json\13.0.1\lib\net45\Newtonsoft.Json.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\PresentationCore.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\PresentationFramework.dll" />
<ReferencePath Include="C:\Users\Administrator\.nuget\packages\svgpathproperties\1.1.2\lib\netstandard2.0\SvgPathProperties.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.AppContext.dll" />
<ReferencePath Include="C:\Users\Administrator\.nuget\packages\system.codedom\7.0.0\lib\netstandard2.0\System.CodeDom.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Collections.Concurrent.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Collections.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Collections.NonGeneric.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Collections.Specialized.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.ComponentModel.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.ComponentModel.EventBasedAsync.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.ComponentModel.Primitives.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.ComponentModel.TypeConverter.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Console.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Core.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Data.Common.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Data.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Diagnostics.Contracts.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Diagnostics.Debug.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Diagnostics.FileVersionInfo.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Diagnostics.Process.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Diagnostics.StackTrace.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Diagnostics.TextWriterTraceListener.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Diagnostics.Tools.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Diagnostics.TraceSource.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Diagnostics.Tracing.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Drawing.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Drawing.Primitives.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Dynamic.Runtime.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Globalization.Calendars.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Globalization.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Globalization.Extensions.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.Compression.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.IO.Compression.FileSystem.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.Compression.ZipFile.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.FileSystem.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.FileSystem.DriveInfo.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.FileSystem.Primitives.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.FileSystem.Watcher.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.IsolatedStorage.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.MemoryMappedFiles.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.Pipes.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.UnmanagedMemoryStream.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Linq.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Linq.Expressions.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Linq.Parallel.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Linq.Queryable.dll" />
<ReferencePath Include="C:\Users\Administrator\.nuget\packages\system.management\7.0.0\lib\netstandard2.0\System.Management.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.Http.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.NameResolution.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.NetworkInformation.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.Ping.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.Primitives.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.Requests.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.Security.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.Sockets.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.WebHeaderCollection.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.WebSockets.Client.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.WebSockets.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Numerics.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.ObjectModel.dll" />
<ReferencePath Include="C:\Users\Administrator\.nuget\packages\system.reactive\5.0.0\lib\netstandard2.0\System.Reactive.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Reflection.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Reflection.Extensions.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Reflection.Primitives.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Resources.Reader.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Resources.ResourceManager.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Resources.Writer.dll" />
<ReferencePath Include="C:\Users\Administrator\.nuget\packages\system.runtime.compilerservices.unsafe\4.5.3\ref\net461\System.Runtime.CompilerServices.Unsafe.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.CompilerServices.VisualC.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.Extensions.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.Handles.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.InteropServices.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.InteropServices.RuntimeInformation.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.Numerics.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Runtime.Serialization.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.Serialization.Formatters.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.Serialization.Json.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.Serialization.Primitives.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.Serialization.Xml.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Security.Claims.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Security.Cryptography.Algorithms.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Security.Cryptography.Csp.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Security.Cryptography.Encoding.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Security.Cryptography.Primitives.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Security.Cryptography.X509Certificates.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Security.Principal.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Security.SecureString.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Text.Encoding.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Text.Encoding.Extensions.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Text.RegularExpressions.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Threading.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Threading.Overlapped.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Threading.Tasks.dll" />
<ReferencePath Include="C:\Users\Administrator\.nuget\packages\system.threading.tasks.extensions\4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Threading.Tasks.Parallel.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Threading.Thread.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Threading.ThreadPool.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Threading.Timer.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.ValueTuple.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Windows.Controls.Ribbon.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Xaml.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Xml.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Xml.Linq.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Xml.ReaderWriter.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Xml.XDocument.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Xml.XmlDocument.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Xml.XmlSerializer.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Xml.XPath.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Xml.XPath.XDocument.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\UIAutomationClient.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\UIAutomationClientsideProviders.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\UIAutomationProvider.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\UIAutomationTypes.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\WindowsBase.dll" />
<ReferencePath Include="C:\Users\Administrator\.nuget\packages\wpfanimatedgif\2.0.0\lib\net40\WpfAnimatedGif.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades\System.ComponentModel.Annotations.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades\System.Reflection.Emit.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades\System.Reflection.Emit.ILGeneration.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades\System.Reflection.Emit.Lightweight.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades\System.Runtime.InteropServices.WindowsRuntime.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades\System.ServiceModel.Duplex.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades\System.ServiceModel.Http.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades\System.ServiceModel.NetTcp.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades\System.ServiceModel.Primitives.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades\System.ServiceModel.Security.dll" />
</ItemGroup>
<ItemGroup>
<Compile Include="F:\aistudio.-wpf.-diagram\AIStudio.Wpf.SFC\obj\Debug\net461\GeneratedInternalTypeHelper.g.cs" />
</ItemGroup>
<ItemGroup>
<Analyzer Include="C:\Users\Administrator\.nuget\packages\wpfanalyzers\3.5.4\analyzers\dotnet\cs\Gu.Roslyn.Extensions.dll" />
<Analyzer Include="C:\Users\Administrator\.nuget\packages\wpfanalyzers\3.5.4\analyzers\dotnet\cs\WpfAnalyzers.dll" />
</ItemGroup>
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk.WindowsDesktop" />
</Project>

View File

@@ -0,0 +1,31 @@
using System;
using AIStudio.Wpf.DiagramDesigner;
namespace AIStudio.Wpf.SFC
{
public class LinkPoint: BindableBase
{
public Guid Id { get; set; }
private string _name;
public string Name
{
get { return _name; }
set
{
SetProperty(ref _name, value);
}
}
public string Despcription { get; set; }
private double _value;
public double Value
{
get { return _value; }
set
{
SetProperty(ref _value, value);
}
}
}
}

View File

@@ -0,0 +1,82 @@
using AIStudio.Wpf.SFC.ViewModels;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media;
using System.Xml.Serialization;
using AIStudio.Wpf.DiagramDesigner;
namespace AIStudio.Wpf.SFC.Models
{
public class SFCNodeDesignerItem : DesignerItemBase
{
public SFCNodeDesignerItem()
{
}
public SFCNodeDesignerItem(SFCNode item) : base(item)
{
this.Connectors = new List<FullyCreatedConnectorInfoItem>();
foreach (var fullyCreatedConnectorInfo in item.Connectors)
{
FullyCreatedConnectorInfoItem connector = new FullyCreatedConnectorInfoItem(fullyCreatedConnectorInfo);
this.Connectors.Add(connector);
}
Kind = item.Kind;
Expression = item.Expression;
if (item is SFCActionNode actionNode)
{
LinkPoints = new List<LinkPoint> { actionNode.LinkPoint };
}
else if (item is SFCConditionNode sFCConditionNode)
{
LinkPoints = new List<LinkPoint>(sFCConditionNode.LinkPoint);
}
else if (item is Simulate_SolenoidViewModel simulate_SolenoidViewModel)
{
LinkPoints = new List<LinkPoint> { simulate_SolenoidViewModel.DILinkPoint, simulate_SolenoidViewModel.DOLinkPoint };
}
else if (item is Simulate_StartViewModel simulate_StartViewModel)
{
LinkPoints = new List<LinkPoint> { simulate_StartViewModel.LinkPoint };
}
else if (item is Simulate_TankViewModel simulate_TankViewModel)
{
LinkPoints = new List<LinkPoint> { simulate_TankViewModel.LinkPoint };
}
}
[XmlArray]
public List<FullyCreatedConnectorInfoItem> Connectors { get; set; }
[XmlAttribute]
public SFCNodeKinds Kind { get; set; }
[XmlAttribute]
public string Expression { get; set; }
[XmlIgnore]
public List<LinkPoint> LinkPoints { get; set; } = new List<LinkPoint>();
[JsonIgnore]
[XmlElement("LinkPoint")]
public string XmlLinkPoints
{
get
{
return SFCService.SerializeLinkPoint(LinkPoints);
}
set
{
LinkPoints = SFCService.DeserializeLinkPoint(value);
}
}
}
}

View File

@@ -0,0 +1,21 @@
using System;
using System.Windows.Media;
using AIStudio.Wpf.DiagramDesigner;
namespace AIStudio.Wpf.SFC.Models
{
public class SFCToolBoxData : ToolBoxData
{
public SFCNodeKinds Kind
{
get; set;
}
public SFCToolBoxData(SFCNodeKinds kind, Type type, double width = 32, double height = 32) : base(null, null, type, width, height)
{
Kind = kind;
ColorViewModel.LineColor.Color = Colors.Gray;
ColorViewModel.FillColor.Color = Colors.Blue;
}
}
}

View File

@@ -0,0 +1,908 @@
mXparser - Math Parser Java Android C# .NET (CLS) Library
A flexible mathematical expressions parser for JAVA and C# .NET (CLS)
*** Donation through PayPal ***
*** Did you find the software useful? Please consider donation :-) ***
Developing and maintaining MathParser.org-mXparser takes a lot of time,
mainly my free time. I hope it saved some of your time. If yes, then
buy me a cup coffee :-)
*** http://mathparser.org/donate/ ***
*** Scalar Scientific Calculator, Charts & Scripts ***
*** https://play.google.com/store/apps/details?id=org.mathparser.scalar.lite ***
*** https://play.google.com/store/apps/details?id=org.mathparser.scalar.pro ***
*** http://scalarmath.org/ ***
v.4.4.2 (2020-01-25): Gemoni - bugs fixing
* #200 System.OutOfMemoryException: Array dimensions exceeded supported range (https://github.com/mariuszgromada/MathParser.org-mXparser/issues/200)
* #199 cancelCurrentCalculation does not stop for some expressions (https://github.com/mariuszgromada/MathParser.org-mXparser/issues/199)
v.4.4.0 (2020-01-14): Gemoni - API improvement
* Canonical rounding: Bye bye floating point arithmetic artifacts
ULP rounding is switched of as a default setting (can be enabled / disabled). As a default canonical rounding is switched on (can be disabled / enabled). New methods:
- mXparser.enableCanonicalRounding()
- mXparser.disableCanonicalRounding()
- mXparser.setCanonicalRounding(boolean)
- mXparser.checkIfCanonicalRounding
Example 1
Expression e = new Expression("0.1 + 0.1 + 0.1");
System.out.println("Pure Java : 0.1 + 0.1 + 0.1 = " + (0.1 + 0.1 + 0.1));
System.out.println("mXparser : 0.1 + 0.1 + 0.1 = " + e.calculate());
mXparser.disableCanonicalRounding();
System.out.println("mXparser canonical off: 0.1 + 0.1 + 0.1 = " + e.calculate());
===========
Pure Java : 0.1 + 0.1 + 0.1 = 0.30000000000000004
mXparser : 0.1 + 0.1 + 0.1 = 0.3
mXparser canonical off: 0.1 + 0.1 + 0.1 = 0.30000000000000004
Example 2
Expression e = new Expression("(-1/6.2)^(-3)");
System.out.println("Pure Java : (-1/6.2)^(-3) = " + Math.pow(-1/6.2, -3));
System.out.println("mXparser : (-1/6.2)^(-3) = " + e.calculate());
mXparser.disableCanonicalRounding();
System.out.println("mXparser canonical off: (-1/6.2)^(-3) = " + e.calculate());
===========
Pure Java : (-1/6.2)^(-3) = -238.32800000000003
mXparser : (-1/6.2)^(-3) = -238.328
mXparser canonical off: (-1/6.2)^(-3) = -238.32800000000003
* Argument extension - analogy to Function Extension
Now you can define user arguments implementing your own algorithm in source code.
Example
class PiMultArgExt implements ArgumentExtension {
private int multiple = 0;
public double getArgumentValue() {
multiple++;
return MathConstants.PI * multiple;
}
public PiMultArgExt clone() {
return new PiMultArgExt();
}
}
Argument x = new Argument("x", new PiMultArgExt());
Expression e = new Expression("x/pi", x);
System.out.println("1st calc exec: " + e.calculate());
System.out.println("2nd calc exec: " + e.calculate());
System.out.println("3rd calc exec: " + e.calculate());
===========
1st calc exec: 1.0
2nd calc exec: 2.0
3rd calc exec: 3.0
* Bugs fixed
- #168, #18 Exact special trigonometric values
- #192, #178 Logical operators precedence
- #172 "x + 4 * - 2"
v.4.3.3 (2019-01-27): Bug fix
* No Operator between Argumant and Parentheses #170 https://github.com/mariuszgromada/MathParser.org-mXparser/issues/170
v.4.3.2 (2019-01-25): Nuget package fix
* Could not load file or assembly MathParser.org-mXparser #171 https://github.com/mariuszgromada/MathParser.org-mXparser/issues/171
v.4.3.0 (2019-01-19): Caprica - API improvement
* Cancel ongoing calculation
- mXparser.cancelCurrentCalculation()
- mXparser.resetCancelCurrentCalculationFlag();
* Set default options
- mXparser.setDefaultOptions()
* User defined constants / units
- constant name can be surrounded by square bracket, i.e. [const]
- Expression.getMissingUserDefinedUnits()
* Bug fixing
- #153, #162 Endless Loop
- #164 PrimeCache out of memory - handling error / exception
v.4.2.0 (2018-07-15): Aquaria - Major release
* Broader types of decimal number literals
- No leading zero, i.e.: .2, .312, -.21
* Fraction as number literals
- 1_2 is recognized as 1/2
- 2_3_4 is recognized as 2 + 3/4
- 17_5 is recognized as 17/5
- Just use Expression e = new Expression("2_3_2 + 1_2")
* Double to fraction conversion
- mXparser.toFraction(double value) - double[]
- mXparser.toMixedFraction(double value) - double[]
- mXparser.fractionToString(double[] fraction) - String
- mXparser.toFractionString(double value) - String
- mXparser.toMixedFractionString(double value) - String
* Disable / enable almost int rounding
- mXparser.enableAlmostIntRounding()
- mXparser.disableAlmostIntRounding()
- mXparser.checkIfAlmostIntRounding()
- mXparser.getEpsilon()
- mXparser.setEpsilon()
* Variadic user defined functions
- Function f = new Function("f(...) = sum(i, 1, [npar], par(i)^2 )");
- [npar] - number of available parameters
- par(i) - parameter value
- body extended is supported
* New special functions
- Gamma(x) - Gamma special function Γ(s)
- LambW0(x) - Lambert-W special function, principal branch 0, also called the omega function or product logarithm
- LambW1(x) - Lambert-W special function, branch -1, also called the omega function or product logarithm
- sgnGamma(x) - Signum of Gamma special function, Γ(s)
- logGamma(x) - Log Gamma special function, lnΓ(s)
- diGamma(x) - Digamma function as the logarithmic derivative of the Gamma special function, ψ(x)
- GammaL(s,x) - Lower incomplete gamma special function, γ(s,x)
- GammaU(s,x) - Upper incomplete Gamma special function, Γ(s,x)
- GammaP(s,x), GammaRegL(s,x) - Lower regularized P gamma special function, P(s,x)
- GammaQ(s,x), GammaRegU(s,x) - Upper regularized Q Gamma special function, Q(s,x)
- Beta(x,y) - The Beta special function B(x,y), also called the Euler integral of the first kind
- logBeta(x,y) - The Log Beta special function ln B(x,y), also called the Log Euler integral of the first kind, ln B(x,y)
- BetaInc(x,a,b) - The incomplete beta special function B(x; a, b), also called the incomplete Euler integral of the first kind
- BetaI(x,a,b), BetaReg(x,a,b) - The regularized incomplete beta (or regularized beta) special function I(x; a, b), also called the regularized incomplete Euler integral of the first kind
* Degrees / Radians mode for trigonometrix
- mXparser.setDegreesMode()
- mXparser.setRadiansMode()
- mXparser.checkIfDegreesMode()
- mXparser.checkIfRadiansMode()
* New operator - Tetration
- a^^n is recognized as a^a^a...^a - n times
* Bugs fixed
- Argument.checkSyntax() https://github.com/mariuszgromada/MathParser.org-mXparser/issues/145
- Endless loop with factorial https://github.com/mariuszgromada/MathParser.org-mXparser/issues/136
- StringIndexOutOfBoundsException asking for tokens of empty expression https://github.com/mariuszgromada/MathParser.org-mXparser/issues/135
- Function.checkSyntax() always returns true https://github.com/mariuszgromada/MathParser.org-mXparser/issues/111
- Syntax for unary complement https://github.com/mariuszgromada/MathParser.org-mXparser/issues/114
- Iterative operators descending sequence https://github.com/mariuszgromada/MathParser.org-mXparser/issues/119
- checkSyntax() bug https://github.com/mariuszgromada/MathParser.org-mXparser/issues/80
- Very very very long processing time of gcd https://github.com/mariuszgromada/MathParser.org-mXparser/issues/91
- Priorities of "if", "iff" and other calculus operations https://github.com/mariuszgromada/MathParser.org-mXparser/issues/82
* Other framework support (binaries)
- .NET Core: 2.0, 2.1
- .NET Standard: 2.0
- .NET Framework: 4.7, 4.7.2
- JAVA: 1.9, 1.10
* New regression tests - current tests coverage:
- 1155 expression related tests
- 245 syntax related tests
- 65 API related tests
- 20 performance tests
https://github.com/mariuszgromada/MathParser.org-mXparser/milestone/2
v.4.1.1 (2017-07-28): Aeries - checkSyntax() bug fixing
* Fixed: checkSyntax() returns true "already checked no errors" #75
https://github.com/mariuszgromada/MathParser.org-mXparser/issues/75
v.4.1.0 (2017-06-30): Aeries
* Various numeral systems
- Binary numbers literals
- Octal numbers literals
- Hexadecimal numbers literals
- Number literals with base between 1 and 36
- base(b, digit1, ..., digitn) function to generate numbers in any given base
* Leading zeros support
- 0001
- 0001.12e10
- ...
* Working with digits
- ndig(number, targetBase) function - number of digits - specified numeral system base
- ndig10(number) function - number of digits - base 10
- dig(number, targetBase, position) - digit at position - specified numeral system base
- dig10(number, position) - digit at position - base 10
* Prime factorization
- nfact(number) - number of prime factors
- factval(number, factorId) - factor value
- factexp(number, factorId) - factor exponent
* Not-a-Number
- [NaN] symbol
- isNaN(x) function
- coalesce(a1,...,an) function - first non-NaN value
* Statistics
- med(a1, a2, ..., an) - sample median
- mode(a1, a2, ..., an) - sample mode
* Boolean logic
- [true] symbol
- [false] symbol
- or(a1,...an) - variadic or
- and(a1,...an) - variadic and
- xor(a1,...an) - variadic xor
* Other functions
- root(order, number) - root + support for negative numbers and odd-order
- arcsec(x) - inverse trigonometric secant
- arccsc(x) - inverse trigonometric cosecant
- ndist(v1, v2, ... vn) - number of distinct values
- argmin(v1, v2, ... vn) - index of minimum
- argmax(v1, v2, ... vn) - index of maximum
* New operator
- % support (i.e. 2%, x%)
* Calculus
- der( f(x), x, x0 ) - alternative syntax for derivative (no need to define x as argument)
* Built-in tokens
- Option to override built-in tokens
- Possibility to remove built-in tokens
- Possibility to change built-in token
- Key words: syntax + since
- Get key words list
* Working with expression tokens
- Get missing user defined arguments
- Get missing user defined functions
* Bugs fixed
- Dependent arguments and StackOverflowError #35 (introduction of recursion calls counter)
- FunctionExtension.calculate #32
* New regression tests - current tests coverage:
- 829 expression related tests
- 207 syntax related tests
- 51 api related tests
- 20 performance tests
https://github.com/mariuszgromada/MathParser.org-mXparser/milestone/1
v.4.0.0.2 (2017-04-17): Port to various .NET frameworks
- .NET Core
- .NET Standard
- .NET PCL
- Xamarin.Android
- Xamarin.iOS
v.4.0.0 (2017-03-27): Major update
- Bitwise Operators
- Numbers in scientific notation
- Units, Physical & Astronomical Constants,
- Equations solving via finding function root
- Better tokens handling
- Function Extensions - possibility of using your own implementation
- Bugs fixed
* Bitwise Operators
- @~ Bitwise unary complement
- @& Bitwise AND
- @^ Bitwise exclusive OR
- @| Bitwise inclusive OR
- @<< Signed left shift
- @>> Signed right shift
* Numbers in scientific notation
- 1.2e10
- 1.2e-10
- 1.2e+10
- 1.2E10
- 1.2E-10
- 1.2E+10
- ...
* Units
- [%] <Ratio, Fraction> Percentage = 0.01
- [%%] <Ratio, Fraction> Promil, Per mille = 0.001
- [Y] <Metric prefix> Septillion / Yotta = 10^24
- [sept] <Metric prefix> Septillion / Yotta = 10^24
- [Z] <Metric prefix> Sextillion / Zetta = 10^21
- [sext] <Metric prefix> Sextillion / Zetta = 10^21
- [E] <Metric prefix> Quintillion / Exa = 10^18
- [quint] <Metric prefix> Quintillion / Exa = 10^18
- [P] <Metric prefix> Quadrillion / Peta = 10^15
- [quad] <Metric prefix> Quadrillion / Peta = 10^15
- [T] <Metric prefix> Trillion / Tera = 10^12
- [tril] <Metric prefix> Trillion / Tera = 10^12
- [G] <Metric prefix> Billion / Giga = 10^9
- [bil] <Metric prefix> Billion / Giga = 10^9
- [M] <Metric prefix> Million / Mega = 10^6
- [mil] <Metric prefix> Million / Mega = 10^6
- [k] <Metric prefix> Thousand / Kilo = 10^3
- [th] <Metric prefix> Thousand / Kilo = 10^3
- [hecto] <Metric prefix> Hundred / Hecto = 10^2
- [hund] <Metric prefix> Hundred / Hecto = 10^2
- [deca] <Metric prefix> Ten / Deca = 10
- [ten] <Metric prefix> Ten / Deca = 10
- [deci] <Metric prefix> Tenth / Deci = 0.1
- [centi] <Metric prefix> Hundredth / Centi = 0.01
- [milli] <Metric prefix> Thousandth / Milli = 0.001
- [mic] <Metric prefix> Millionth / Micro = 10^-6
- [n] <Metric prefix> Billionth / Nano = 10^-9
- [p] <Metric prefix> Trillionth / Pico = 10^-12
- [f] <Metric prefix> Quadrillionth / Femto = 10^-15
- [a] <Metric prefix> Quintillionth / Atoo = 10^-18
- [z] <Metric prefix> Sextillionth / Zepto = 10^-21
- [y] <Metric prefix> Septillionth / Yocto = 10^-24
- [m] <Unit of length> Metre / Meter (m=1)
- [km] <Unit of length> Kilometre / Kilometer (m=1)
- [cm] <Unit of length> Centimetre / Centimeter (m=1)
- [mm] <Unit of length> Millimetre / Millimeter (m=1)
- [inch] <Unit of length> Inch (m=1)
- [yd] <Unit of length> Yard (m=1)
- [ft] <Unit of length> Feet (m=1)
- [mile] <Unit of length> Mile (m=1)
- [nmi] <Unit of length> Nautical mile (m=1)
- [m2] <Unit of area> Square metre / Square meter (m=
- [cm2] <Unit of area> Square centimetre / Square cent
- [mm2] <Unit of area> Square millimetre / Square mill
- [are] <Unit of area> Are (m=1)
- [ha] <Unit of area> Hectare (m=1)
- [acre] <Unit of area> Acre (m=1)
- [km2] <Unit of area> Square kilometre / Square kilom
- [mm3] <Unit of volume> Cubic millimetre / Cubic mill
- [cm3] <Unit of volume> Cubic centimetre / Cubic cent
- [m3] <Unit of volume> Cubic metre / Cubic meter (m=
- [km3] <Unit of volume> Cubic kilometre / Cubic kilom
- [ml] <Unit of volume> Millilitre / Milliliter (m=1)
- [l] <Unit of volume> Litre / Liter (m=1)
- [gall] <Unit of volume> Gallon (m=1)
- [pint] <Unit of volume> Pint (m=1)
- [s] <Unit of time> Second (s=1)
- [ms] <Unit of time> Millisecond (s=1)
- [min] <Unit of time> Minute (s=1)
- [h] <Unit of time> Hour (s=1)
- [day] <Unit of time> Day (s=1)
- [week] <Unit of time> Week (s=1)
- [yearj] <Unit of time> Julian year = 365.25 days (s=1)
- [kg] <Unit of mass> Kilogram (kg=1)
- [gr] <Unit of mass> Gram (kg=1)
- [mg] <Unit of mass> Milligram (kg=1)
- [dag] <Unit of mass> Decagram (kg=1)
- [t] <Unit of mass> Tonne (kg=1)
- [oz] <Unit of mass> Ounce (kg=1)
- [lb] <Unit of mass> Pound (kg=1)
- [b] <Unit of information> Bit (bit=1)
- [kb] <Unit of information> Kilobit (bit=1)
- [Mb] <Unit of information> Megabit (bit=1)
- [Gb] <Unit of information> Gigabit (bit=1)
- [Tb] <Unit of information> Terabit (bit=1)
- [Pb] <Unit of information> Petabit (bit=1)
- [Eb] <Unit of information> Exabit (bit=1)
- [Zb] <Unit of information> Zettabit (bit=1)
- [Yb] <Unit of information> Yottabit (bit=1)
- [B] <Unit of information> Byte (bit=1)
- [kB] <Unit of information> Kilobyte (bit=1)
- [MB] <Unit of information> Megabyte (bit=1)
- [GB] <Unit of information> Gigabyte (bit=1)
- [TB] <Unit of information> Terabyte (bit=1)
- [PB] <Unit of information> Petabyte (bit=1)
- [EB] <Unit of information> Exabyte (bit=1)
- [ZB] <Unit of information> Zettabyte (bit=1)
- [YB] <Unit of information> Yottabyte (bit=1)
- [J] <Unit of energy> Joule (m=1, kg=1, s=1)
- [eV] <Unit of energy> Electronovolt (m=1, kg=1, s=1
- [keV] <Unit of energy> Kiloelectronovolt (m=1, kg=1,
- [MeV] <Unit of energy> Megaelectronovolt (m=1, kg=1,
- [GeV] <Unit of energy> Gigaelectronovolt (m=1, kg=1,
- [TeV] <Unit of energy> Teraelectronovolt (m=1, kg=1,
- [m/s] <Unit of speed> Metre / Meter per second (m=1,
- [km/h] <Unit of speed> Kilometre / Kilometer per hour
- [mi/h] <Unit of speed> Mile per hour (m=1, s=1)
- [knot] <Unit of speed> Knot (m=1, s=1)
- [m/s2] <Unit of acceleration> Metre / Meter per squar
- [km/h2] <Unit of acceleration> Kilometre / Kilometer p
- [mi/h2] <Unit of acceleration> Mile per square hour (m
- [rad] <Unit of angle> Radian (rad=1)
- [deg] <Unit of angle> Degree of arc (rad=1)
- ['] <Unit of angle> Minute of arc (rad=1)
- [''] <Unit of angle> Second of arc (rad=1)
* Physical Constants
- [c] Light speed in vacuum [m/s] (m=1, s=1)
- [G.] Gravitational constant (m=1, kg=1, s=1)]
- [g] Gravitational acceleration on Earth [m/s^2] (m=1, s=1)
- [hP] Planck constant (m=1, kg=1, s=1)
- [h-] Reduced Planck constant / Dirac constant (m=1, kg=1, s=1)]
- [lP] Planck length [m] (m=1)
- [mP] Planck mass [kg] (kg=1)
- [tP] Planck time [s] (s=1)
* Astronomical Constants
- [ly] Light year [m] (m=1)
- [au] Astronomical unit [m] (m=1)
- [pc] Parsec [m] (m=1)
- [kpc] Kiloparsec [m] (m=1)
- [Earth-R-eq] Earth equatorial radius [m] (m=1)
- [Earth-R-po] Earth polar radius [m] (m=1)
- [Earth-R] Earth mean radius (m=1)
- [Earth-M] Earth mass [kg] (kg=1)
- [Earth-D] Earth-Sun distance - semi major axis [m] (m=1)
- [Moon-R] Moon mean radius [m] (m=1)
- [Moon-M] Moon mass [kg] (kg=1)
- [Moon-D] Moon-Earth distance - semi major axis [m] (m=1)
- [Solar-R] Solar mean radius [m] (m=1)
- [Solar-M] Solar mass [kg] (kg=1)
- [Mercury-R] Mercury mean radius [m] (m=1)
- [Mercury-M] Mercury mass [kg] (kg=1)
- [Mercury-D] Mercury-Sun distance - semi major axis [m] (m=1)
- [Venus-R] Venus mean radius [m] (m=1)
- [Venus-M] Venus mass [kg] (kg=1)
- [Venus-D] Venus-Sun distance - semi major axis [m] (m=1)
- [Mars-R] Mars mean radius [m] (m=1)
- [Mars-M] Mars mass [kg] (kg=1)
- [Mars-D] Mars-Sun distance - semi major axis [m] (m=1)
- [Jupiter-R] Jupiter mean radius [m] (m=1)
- [Jupiter-M] Jupiter mass [kg] (kg=1)
- [Jupiter-D] Jupiter-Sun distance - semi major axis [m] (m=1)
- [Saturn-R] Saturn mean radius [m] (m=1)
- [Saturn-M] Saturn mass [kg] (kg=1)
- [Saturn-D] Saturn-Sun distance - semi major axis [m] (m=1)
- [Uranus-R] Uranus mean radius [m] (m=1)
- [Uranus-M] Uranus mass [kg] (kg=1)
- [Uranus-D] Uranus-Sun distance - semi major axis [m] (m=1)
- [Neptune-R] Neptune mean radius [m] (m=1)
- [Neptune-M] Neptune mass [kg] (kg=1)
- [Neptune-D] Neptune-Sun distance - semi major axis [m] (m=1)
* Equations solving via finding function root
- solve( f(x), x, a, b ) - solving f(x) = 0
* Function Extensions
- FileExtension interface + new constructor in Function class
* Better tokens handling
- Better handling of invalid / not known tokens
- Looks like functionality
* Bugs fixed
- Exception thrown by getCopyOfInitialTokens() #21
- System.format.exception - system.IO.EndOfStreamException #20
- Expression relating factorial "!" cause the application to hang #17
- Negative sign missing when is right of operators #16
- Negative in if statement #12
- Speed when debugging #11
- User defined arguments ending in e #10
* New regression tests - current tests coverage:
- 622 expression related tests
- 114 syntax related tests
- 30 api related tests
- 20 performance tests
v.3.0.0 (2016-05-16): Major update
Random numbers, Probability distributions & Random variables
Double precision rounding, ULP rounding, epsilon comparison
New special functions
* .NET: since v.3.0.0 dll I started to use different private key for signing.
* Random numbers - new functions
- rUni(a, b) - Random number from uniform continuous distribution U(a,b)
- rUnid(a, b) - Random number from uniform discrete distribution U{a,b}
- rNor(m, s) - Random number from normal distribution N(m,s)
- rList(a1, a2, ..., an) - Random number from given list of numbers
* Probability distributions - new functions
- pUni(x, a, b) - Probability distribution function - Uniform continuous distribution U(a,b)
- cUni(x, a, b) - Cumulative distribution function - Uniform continuous distribution U(a,b)
- qUni(q, a, b) - Quantile function (inverse cumulative distribution function) -
Uniform continuous distribution U(a,b)
- pNor(x, a, b) - Probability distribution function - Normal distribution N(m,s)
- cNor(x, a, b) - Cumulative distribution function - Normal distribution N(m,s)
- qNor(q, m, s) - Quantile function (inverse cumulative distribution function) -
Normal distribution N(m,s)
* Random variables (predefined) - acting as random constant (no parameters)
- [Uni] - Random variable - Uniform continuous distribution U(0,1)
- [Int] - Random variable - random integer
- [Int1] - Random variable - random integer - Uniform discrete distribution U{-10^1, 10^1}
- [Int2] - Random variable - random integer - Uniform discrete distribution U{-10^2, 10^2}
- [Int3] - Random variable - random integer - Uniform discrete distribution U{-10^3, 10^3}
- [Int4] - Random variable - random integer - Uniform discrete distribution U{-10^4, 10^4}
- [Int5] - Random variable - random integer - Uniform discrete distribution U{-10^5, 10^5}
- [Int6] - Random variable - random integer - Uniform discrete distribution U{-10^6, 10^6}
- [Int7] - Random variable - random integer - Uniform discrete distribution U{-10^7, 10^7}
- [Int8] - Random variable - random integer - Uniform discrete distribution U{-10^8, 10^8}
- [Int9] - Random variable - random integer - Uniform discrete distribution U{-10^9, 10^9}
- [nat] - Random variable - random natural number including 0
- [nat1] - Random variable - random natural number including 0 - Uniform discrete distribution U{0, 10^1}
- [nat2] - Random variable - random natural number including 0 - Uniform discrete distribution U{0, 10^2}
- [nat3] - Random variable - random natural number including 0 - Uniform discrete distribution U{0, 10^3}
- [nat4] - Random variable - random natural number including 0 - Uniform discrete distribution U{0, 10^4}
- [nat5] - Random variable - random natural number including 0 - Uniform discrete distribution U{0, 10^5}
- [nat6] - Random variable - random natural number including 0 - Uniform discrete distribution U{0, 10^6}
- [nat7] - Random variable - random natural number including 0 - Uniform discrete distribution U{0, 10^7}
- [nat8] - Random variable - random natural number including 0 - Uniform discrete distribution U{0, 10^8}
- [nat9] - Random variable - random natural number including 0 - Uniform discrete distribution U{0, 10^9}
- [Nat] - Random variable - random natural number
- [Nat1] - Random variable - random natural number - Uniform discrete distribution U{1, 10^1}
- [Nat2] - Random variable - random natural number - Uniform discrete distribution U{1, 10^2}
- [Nat3] - Random variable - random natural number - Uniform discrete distribution U{1, 10^3}
- [Nat4] - Random variable - random natural number - Uniform discrete distribution U{1, 10^4}
- [Nat5] - Random variable - random natural number - Uniform discrete distribution U{1, 10^5}
- [Nat6] - Random variable - random natural number - Uniform discrete distribution U{1, 10^6}
- [Nat7] - Random variable - random natural number - Uniform discrete distribution U{1, 10^7}
- [Nat8] - Random variable - random natural number - Uniform discrete distribution U{1, 10^8}
- [Nat9] - Random variable - random natural number - Uniform discrete distribution U{1, 10^9}
- [Nor] - Random variable - Normal distribution N(0,1)
* Double precision rounding
- round(value, places) - decimal rounding (half-up)
* New special functions
- erf(x) - Gauss error function
- erfc(x) - Gauss complementary error function
- erfInv(x) - Inverse Gauss error function
- erfcInv(x) - Inverse Gauss complementary error function
* Other functions
- ulp(x) - Unit in The Last Place
* Binary relations - epsilon+ulp comparison - enabled as default
If a rel b then applied epsilon is maximum from epsilon and ulp(b)
a eq b if a \in [b-eps; b+eps] inclusive
- mXparser.setExactComparison()
- mXparser.setEpsilonComparison()
- mXparser.setEpsilon(double epsilon)
- mXparser.setDefaultEpsilon()
- mXparser.getEpsilon()
- mXparser.checkIfEpsilonMode()
- mXparser.checkIfExactMode()
* Intelligent automatic double ULP rounding - enabled as default
Try 0.1 + 0.1 + 0.1 - it will give exact 0.3 :-)
- mXparser.enableUlpRounding()
- mXparser.disableUlpRounding()
- mXparser.checkIfUlpRounding()
* Parser tokens definition now public in API
- mxparser.parsertokens.*
* Expression after tokenization now public in API
- Expression.getCopyOfInitialTokens()
- mxparser.parsertokens.*
- mXparser.consolePrintTokens()
* Significant reorganization of code
- Mainly mathcollection & parser tokens
* Backwards compatibility
- is preserved for String API, Expression, Function, Argument,
Constnat, ...
- other public API was reorganized (mainly mxparser.mathcollection)
* Bugs fixed
- bugs related to iterated operators
* Other changes
- Many new regression tests
v.2.4.0 (2016-02-28): Average, variance and standard deviation.
* New functions with variadic parameters:
- mean(a1, a2, ... , an) - sample average
- var(a1, a2, ... , an) - bias-corrected sample variance
- std(a1, a2, ... , an) - bias-corrected sample standard deviation
* New iterative operators:
- mini(i, from, to, f(i), <by>) - minimum from function values
- maxi(i, from, to, f(i), <by>) - maximum from function values
- avg(i, from, to, f(i), <by>) - average from function values
- vari(i, from, to, f(i), <by>) - bias-corrected sample variance from
function values
- stdi(i, from, to, f(i), <by>) - bias-corrected sample standard deviation
from function values
* New regression tests to cover new functions
* Small code reorganization
* Added manifest to jar files containg version information
* .dll files were signed
v.2.3.1 (2016-01-29): Trailing letter 'e' bug fix + some minor changes in the code.
v.2.3.0 (2016-01-17): Prime numbers supported! Multithreading performance tests!
New functions: Exponential/Offset/Logarithmic integral!
* Prime numbers supported:
- new class PrimesCache in mathcollection
- MathFunctions extended with prime testes
- ispr(n) - Prime test function supported in expressions
- Pi(n) - Prime Counting function supported in expressions
- mXparser.initPrimesCache() methods (and others) to initialize prime numbers cache
* Some special functions supported
- Ei(x) - Exponential integral function supported in expressions
- li(x) - Logarithmic integral function supported in expressions
- Li(x) - Offset logarithmic integral function supported in expressions
* New constants
- [G] - Gompertz Constant OEIS A073003 supported in expressions
- [li2] - li(2) A069284 - supported in expressions
* Multithreading performance tests
- Default number of cores taken from the environment
- Possibility to change number of default threads:
- PerformanceTests.start(int threadsNum)
- mXparser.setThreadsNumber(int threadsNumber)
* New regression tests to cover new functionalities
v.2.2.0 (2016-01-10): Android is coming!
* mXparser_jdk1.7.jar - tested with Android !!!
- all regression tests passed
* New public methods in the mXparser class
- static String getConsoleOutput() - returns as string output
produced by mXparser.consolePrin/ln() methods. Using this method
you can capture the output to the string variable.
- static void resetConsoleOutput() - resets the string
representing console output
- Added CONSOLE/PREFIX & CONSOLUE_OUTPUT_STRING/PREFIX + configuration
* Method modified in mXparser class
- consolePrintln()
- consolePrintln(Object o)
- consolePrint(Object o)
Above methods are outputing also to string representing
console output.
* New RunTest method in regressiontesting, method executes
specified scenario according to below params:
- reg - Expression regression tests
- api - mXparser API regression tests
- syn - Syntax checking regression tests
- perf - Performance tests
* Code clean-up
- blank lines
- trailing white spaces
- src folders structure for c-sharp is now the same as in java
v.2.1.1-1 (2016-01-07):
* Binaries for java: 1.5, 1.6, 1.7, 1.8
* Binaries for .NET: 2.0, 3.0, 3.5, 4.0, 4.5, 4.6
v.2.1.1 (2016-01-04):
* fixed bug w min/max function
v.2.1.0 (2016-01-02):
* New static methods in class mxparser
- mXparser.numberToHexString(number) + overloads: int, long, double
- mXparser.hexString2AsciiString(String hexString)
- mXparser.numberToAsciiString(number) + overloads: int, long, double
- additional regression tests for the above methods
* Hello World examples of how to use mXparser binary library (manual includes:
projects, code, screenshots) for:
- JAVA (project done in Eclipse Mars 1)
- C# (project done in Visual Studio 2015)
- Visual Basic (project done in Visual Studio 2015)
- C++/CLI (project done in Visual Studio 2015)
- F# (project done in Visual Studio 2015)
v.2.0.0 (2015-12-31): Major update of the library providing more intuitive and
much simpler to use API, no changes to the MathCollection.
* Methods removed: setRecursiveMode(), disableRecursiveMode()
- No need to manually mark recursive mode, mXparser is recognizing this
mode automatically.
- New handy and super easy (natural to use) constructors:
* Constructors for user defined arguments (Argument / RecursiveArgument
classes), user defined constant (Constant class), user defined functions
(Function class).
Sample code:
Constant c = new Constant("c=5");
Constant c = new Constant("c=5+2");
Argument x = new Argument("x=5");
Constant c = new Constant("c=5+x", x);
Argument y = new Argument("y=2*x", x);
RecursiveArgument f = new RecursiveArgument("f(n)=n*f(n-1)");
Function f = new Function("f(x,y)=sin(x)+y");
Function f = new Function("f(n)=if( n>0, n*f(n-1), 1)");
* New methods: addDefinitions(PrimitiveElement... elements),
removeDefinitions(PrimitiveElement... elements)
* New class PrimitiveElement introduced only to simplify constructors of
arguments, constants, functions and expressions.
* Classes Argument, RecursiveArgument, Constant, Functions inherits now
from PrimitiveElement class, it means you can call one method for
adding / removing definitions by passing comma separated list of elements
that can be different type (supported types: Argument, RecursiveArgument,
Constant, Function).
* Method addArguments(), addConstants(), addFunctions(),removeArguments(),
removeConstants(), removeFunctions() are still public, but this will
change in the future.
Sample code:
Constant c = new Constant("c=5");
Argument x = new Argument("x=10/2");
Expression e = new Expression("c+x");
e.addDefinitions(x,c);
* Modified constructors for classes Argument, RecursiveArgument, Constant,
Function
* Constructors relying on directly given argument / constant / function
name are now checking given name according to the predefined regular
expression (the name must start with letters, and then
digits / underscores/ letters are allowed).
* Constructors removed all constructors relying on ArrayList/List
of arguments, constants, functions or on varidic type Argument, Constant,
Function were substituted based on comma separated prams list of
PrimitiveElement type, where Argument, Constant, Functions
extend / inherit PrimitiveElement).
* C# library is now Common Language Specification Compliant, it means
mXparser is available right now to many other .NET languages
(providing exactly the same API), including:
- C#
- Visual Basic .NET
- C++/CLI
- F#
* Other changes
- New extended list of regression tests (to cover new methods,
constructors, etc...)
- Implemented Performance Tests
- Source code converted from cp150 to UTF-8
- Source code reorganization (some part of package level code of the
Expression class was moved to the mXparser class)
- Some bugs fixed (for sure there are others)
v.1.0.3 (2015-12-15):
* Fixed bug during indirect recursion (infinite loops while syntax checking)
Some minor modification of code making it more portable across platforms
v.1.0.2 (2015-12-06):
* Fixed bug in user defined function related to RecursiveArguments
v.1.0.1 (2010-04-17):
* Fixed BAG BIG Problem with evaluation without parenthesis
ID: 2985722http://sourceforge.net/tracker/index.php?func=detail&aid=2985722&group_id=300839&atid=1268726
v.1.0.0 (2010-02-01):
* Initial release
You may use this software under the condition of Simplified BSD License:
Copyright 2010-2017 MARIUSZ GROMADA. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are
permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of
conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list
of conditions and the following disclaimer in the documentation and/or other materials
provided with the distribution.
THIS SOFTWARE IS PROVIDED BY MARIUSZ GROMADA ``AS IS'' AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MARIUSZ GROMADA OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
The views and conclusions contained in the software and documentation are those of the
authors and should not be interpreted as representing official policies, either expressed
or implied, of MARIUSZ GROMADA.
If you have any questions/bugs feel free to contact:
Mariusz Gromada
mariuszgromada.org@gmail.com
http://mathspace.pl/
http://mathparser.org/
http://github.com/mariuszgromada/MathParser.org-mXparser
http://mariuszgromada.github.io/MathParser.org-mXparser/
http://mxparser.sourceforge.net/
http://bitbucket.org/mariuszgromada/mxparser/
http://mxparser.codeplex.com/
mXparser tutorial:
doc/tutorial.html
mXparser API:
doc/index.html
If you would like to run some regression testing just hit commands listed below:
JAVA:
java -cp mxparser.jar org.mariuszgromada.math.mxparser.Tutorial
java -cp mxparser.jar org.mariuszgromada.math.mxparser.regressiontesting.RunTest reg
java -cp mxparser.jar org.mariuszgromada.math.mxparser.regressiontesting.RunTest api
java -cp mxparser.jar org.mariuszgromada.math.mxparser.regressiontesting.RunTest syn
java -cp mxparser.jar org.mariuszgromada.math.mxparser.regressiontesting.RunTest perf
java -cp mxparser.jar org.mariuszgromada.math.mxparser.regressiontesting.RunTest reg api syn perf
Setting number of threads in performance tests:
java -cp mxparser.jar org.mariuszgromada.math.mxparser.regressiontesting.PerformanceTests 4
C# (using PowerShell):
[Reflection.Assembly]::LoadFile("full\exact\path\to\mxparser.dll")
[org.mariuszgromada.math.mxparser.Tutorial]::Start()
[org.mariuszgromada.math.mxparser.regressiontesting.RunTest]::Start("reg")
[org.mariuszgromada.math.mxparser.regressiontesting.RunTest]::Start("api")
[org.mariuszgromada.math.mxparser.regressiontesting.RunTest]::Start("syn")
[org.mariuszgromada.math.mxparser.regressiontesting.RunTest]::Start("perf")
Setting number of threads in performance tests:
[org.mariuszgromada.math.mxparser.regressiontesting.PerformanceTests]::Start(4)

View File

@@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
namespace AIStudio.Wpf.SFC
{
public enum SFCNodeKinds
{
[Description("开始")]
Start = 1,
[Description("节点")]
Node = 2,
[Description("转移条件")]
Condition = 3,
[Description("动作")]
Action = 4,
[Description("并行开始")]
COBegin = 5,
[Description("并行结束")]
COEnd = 6,
[Description("容器")]
Simulate_Tank = 100,
[Description("阀门")]
Simulate_Solenoid = 101,
[Description("开始")]
Simulate_Start= 102,
[Description("测定清单")]
Simulate_List =103,
}
}

View File

@@ -0,0 +1,220 @@
using AIStudio.Wpf.SFC.ViewModels;
using org.mariuszgromada.math.mxparser;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Media;
using AIStudio.Wpf.DiagramDesigner;
namespace AIStudio.Wpf.SFC
{
public static class SFCService
{
public static List<LinkPoint> LinkPoint { get; set; }
static SFCService()
{
LinkPoint = new List<LinkPoint>();
LinkPoint.Add(new LinkPoint { Id = Guid.Parse("9943AC3B-5E19-4AF4-8CB0-26998FC31545"), Name = "S0", Despcription = "启动按钮", Value = 0 });
LinkPoint.Add(new LinkPoint { Id = Guid.Parse("F60007E3-913B-43C4-B80B-9624B4BD95AC"), Name = "K1_DI", Despcription = "阀门1输入", Value = 0 });
LinkPoint.Add(new LinkPoint { Id = Guid.Parse("8B2CBA04-A9C8-4FF0-BE95-27546292FB90"), Name = "K2_DI", Despcription = "阀门2输入", Value = 0 });
LinkPoint.Add(new LinkPoint { Id = Guid.Parse("F213B720-ADC2-41C9-82B7-D77B56B99CB7"), Name = "K3_DI", Despcription = "阀门3输入", Value = 0 });
LinkPoint.Add(new LinkPoint { Id = Guid.Parse("48BB7F62-A476-4A68-9DB4-5BD4201C1C26"), Name = "K4_DI", Despcription = "阀门4输入", Value = 0 });
LinkPoint.Add(new LinkPoint { Id = Guid.Parse("5E52ACA8-8DB4-4D39-A3BF-73EE3A551253"), Name = "K1_DO", Despcription = "阀门1反馈", Value = 0 });
LinkPoint.Add(new LinkPoint { Id = Guid.Parse("5B8C53FF-A4CA-40BA-9F36-5C228D9D0C5A"), Name = "K2_DO", Despcription = "阀门2反馈", Value = 0 });
LinkPoint.Add(new LinkPoint { Id = Guid.Parse("29496600-74CF-4AB0-88D1-4C5BFAD4C405"), Name = "K3_DO", Despcription = "阀门3反馈", Value = 0 });
LinkPoint.Add(new LinkPoint { Id = Guid.Parse("15733895-96E5-4F90-9BC2-3C7FF0A2B048"), Name = "K4_DO", Despcription = "阀门4反馈", Value = 0 });
LinkPoint.Add(new LinkPoint { Id = Guid.Parse("BD593101-C759-4077-A3F2-F86AA2FC6DF8"), Name = "T1", Despcription = "容器1液位", Value = 100, });
LinkPoint.Add(new LinkPoint { Id = Guid.Parse("2BCBD2C9-9BCE-4F10-B115-088DEE1F4E08"), Name = "T2", Despcription = "容器2液位", Value = 0 });
LinkPoint.Add(new LinkPoint { Id = Guid.Parse("DBD10A3C-7E2E-4DAE-9CB0-A2132DC469DF"), Name = "T3", Despcription = "容器3液位", Value = 20 });
}
/// <summary>
/// 流程数据
/// </summary>
public static Dictionary<IDiagramViewModel, List<SFCNode>> SFCNodes { get; set; } = new Dictionary<IDiagramViewModel, List<SFCNode>>();
/// <summary>
/// 初始化数据
/// </summary>
/// <param name="json"></param>
/// <param name="id"></param>
/// <returns></returns>
public static void InitData(List<SFCNode> nodes, List<ConnectionViewModel> connectors, IDiagramViewModel viewModel)
{
var start = nodes.FirstOrDefault(p => p.Kind == SFCNodeKinds.Start);
if (start == null)
throw new Exception("没有开始节点");
foreach (var edge in connectors)
{
if (edge.IsFullConnection == false) continue;
var source = nodes.FirstOrDefault(p => p == edge.SourceConnectorInfo.DataItem);
if (source != null)
{
source.NextNode.Add(edge.SinkConnectorInfoFully.DataItem as SFCNode);
(edge.SinkConnectorInfoFully.DataItem as SFCNode).PreNode.Add(source);
}
}
SFCNodes.Add(viewModel, nodes);
ResetStatus(viewModel);
}
private static void ResetStatus(IDiagramViewModel viewModel)
{
var nodes = SFCNodes[viewModel];
var start = nodes.FirstOrDefault(p => p.Kind == SFCNodeKinds.Start);
SetStatus(start, 1);
nodes.ForEach(p =>
{
if (p != start)
{
SetStatus(p, 0);
}
});
}
public static void Execute(IDiagramViewModel viewModel)
{
//仅T2进行计算
var tank = SFCNodes[viewModel].OfType<Simulate_TankViewModel>().FirstOrDefault(p => p.Text == "T2");
tank.Execute();
var startbtn = SFCNodes[viewModel].OfType<Simulate_StartViewModel>().FirstOrDefault();
if (startbtn != null && startbtn.LinkPoint.Value == 0)//停止
{
ResetStatus(viewModel);
}
else//启动
{
var currentNodes = SFCNodes[viewModel].Where(p => p.Status == 1);
foreach (var node in currentNodes)
{
if (node.NextNode.OfType<SFCConditionNode>().Count() > 1)//选择分支
{
foreach (var next in node.NextNode)
{
if (next is SFCConditionNode nextconditionNode)
{
List<Argument> args = new List<Argument>();
for (int i = 0; i < nextconditionNode.LinkPoint.Count; i++)
{
Argument x = new Argument($"p{i}", nextconditionNode.LinkPoint[i].Value);
args.Add(x);
}
Expression e = new Expression(nextconditionNode.Expression, args.ToArray());
var result = e.calculate();
if (result == 0)
{
continue;
}
SetStatus(node, 100);
SetStatus(next, 1);
break;
}
}
}
else
{
if (node is SFCConditionNode conditionNode)
{
List<Argument> args = new List<Argument>();
for (int i = 0; i < conditionNode.LinkPoint.Count; i++)
{
Argument x = new Argument($"p{i}", conditionNode.LinkPoint[i].Value);
args.Add(x);
}
Expression e = new Expression(conditionNode.Expression, args.ToArray());
var result = e.calculate();
if (result == 0)
{
continue;
}
}
else if (node is SFCActionNode actionNode)
{
if (actionNode.LinkPoint != null)
{
Expression e = new Expression(actionNode.Expression);
actionNode.LinkPoint.Value = e.calculate();
SetStatus(actionNode, 100);
}
}
else if (node is SFCCOEndNode cOEndNode)
{
//并行结束节点需要前面节点都完成
if (cOEndNode.PreNode.Any(p => p.Status != 100))
{
continue;
}
}
SetStatus(node, 100);
foreach (var next in node.NextNode)
{
if (next is SFCStartNode startNode)
{
ResetStatus(viewModel);
}
else
{
SetStatus(next, 1);
}
}
}
}
}
}
/// <summary>
/// 设置颜色
/// </summary>
/// <param name="flowNode"></param>
/// <param name="status"></param>
/// <param name="remark"></param>
public static void SetStatus(SFCNode node, int status)
{
node.Status = status;
switch (status)
{
case 100:
node.ColorViewModel.FillColor.Color = Colors.Gray;
break;
case 0:
node.ColorViewModel.FillColor.Color = Colors.Blue;
break;
case 1:
node.ColorViewModel.FillColor.Color = Colors.Green;
break;
}
}
public static string SerializeLinkPoint(List<LinkPoint> points)
{
return string.Join(",", points.Select(p => p.Id));
}
public static List<LinkPoint> DeserializeLinkPoint(string point)
{
List<LinkPoint> links = new List<LinkPoint>();
string[] pieces = point.Split(new char[] { ',' });
foreach (var piece in pieces)
{
links.Add(LinkPoint.FirstOrDefault(p => p.Id.ToString() == piece));
}
return links;
}
public static void Dispose(IDiagramViewModel viewModel)
{
SFCNodes.Remove(viewModel);
}
}
}

View File

@@ -0,0 +1,360 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:dd="https://gitee.com/akwkevin/aistudio.-wpf.-diagram"
xmlns:viewmodel="clr-namespace:AIStudio.Wpf.SFC.ViewModels"
xmlns:local="clr-namespace:AIStudio.Wpf.SFC">
<dd:ColorBrushConverter x:Key="ColorBrushConverter"/>
<dd:HalfConverter x:Key="HalfConverter"/>
<dd:IntToBoolConverter x:Key="IntToBoolConverter"/>
<ControlTemplate x:Key="StartStyle" TargetType="{x:Type ContentControl}">
<Grid IsHitTestVisible="False">
<Border BorderThickness="1" BorderBrush="{Binding ColorViewModel.LineColor,Converter={StaticResource ColorBrushConverter}}">
<Border BorderThickness="1" Margin="3" BorderBrush="{Binding ColorViewModel.LineColor,Converter={StaticResource ColorBrushConverter}}" Background="{Binding ColorViewModel.FillColor,Converter={StaticResource ColorBrushConverter}}">
<Grid>
</Grid>
</Border>
</Border>
</Grid>
</ControlTemplate>
<ControlTemplate x:Key="NodeStyle" TargetType="{x:Type ContentControl}">
<Grid IsHitTestVisible="False">
<Border BorderThickness="4" BorderBrush="{Binding ColorViewModel.LineColor,Converter={StaticResource ColorBrushConverter}}" Background="{Binding ColorViewModel.FillColor,Converter={StaticResource ColorBrushConverter}}">
<Grid>
</Grid>
</Border>
</Grid>
</ControlTemplate>
<ControlTemplate x:Key="ConditionStyle" TargetType="{x:Type ContentControl}">
<Grid IsHitTestVisible="False">
<Border BorderThickness="3" HorizontalAlignment="Center" BorderBrush="{Binding ColorViewModel.FillColor,Converter={StaticResource ColorBrushConverter}}">
</Border>
<Border BorderThickness="3" VerticalAlignment="Center" BorderBrush="{Binding ColorViewModel.FillColor,Converter={StaticResource ColorBrushConverter}}">
</Border>
<TextBlock Text="{Binding Text}" RenderTransformOrigin="1,0.5" TextWrapping="Wrap" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="2">
<TextBlock.RenderTransform>
<TranslateTransform X="{Binding ItemWidth}"/>
</TextBlock.RenderTransform>
</TextBlock>
</Grid>
</ControlTemplate>
<ControlTemplate x:Key="ActionStyle" TargetType="{x:Type ContentControl}">
<Grid IsHitTestVisible="False">
<Ellipse StrokeThickness="1" Stroke="{Binding ColorViewModel.LineColor,Converter={StaticResource ColorBrushConverter}}" Fill="{Binding ColorViewModel.FillColor,Converter={StaticResource ColorBrushConverter}}" />
</Grid>
</ControlTemplate>
<ControlTemplate x:Key="COBeginStyle" TargetType="{x:Type ContentControl}">
<Grid IsHitTestVisible="False">
<Border BorderThickness="0,2,0,2" BorderBrush="{Binding ColorViewModel.LineColor,Converter={StaticResource ColorBrushConverter}}" Background="{Binding ColorViewModel.FillColor,Converter={StaticResource ColorBrushConverter}}">
<Grid>
</Grid>
</Border>
</Grid>
</ControlTemplate>
<ControlTemplate x:Key="COEndStyle" TargetType="{x:Type ContentControl}">
<Grid IsHitTestVisible="False">
<Border BorderThickness="0,2,0,2" BorderBrush="{Binding ColorViewModel.LineColor,Converter={StaticResource ColorBrushConverter}}" Background="{Binding ColorViewModel.FillColor,Converter={StaticResource ColorBrushConverter}}">
<Grid>
</Grid>
</Border>
</Grid>
</ControlTemplate>
<ControlTemplate x:Key="TankStyle" TargetType="{x:Type ContentControl}">
<Grid IsHitTestVisible="False">
<Rectangle RadiusX="5" RadiusY="5" StrokeThickness="1" Stroke="{Binding ColorViewModel.LineColor,Converter={StaticResource ColorBrushConverter}}" Fill="{Binding ColorViewModel.FillColor,Converter={StaticResource ColorBrushConverter}}" />
<ProgressBar Orientation="Vertical" Foreground="Green" Background="Red" Value="{Binding LinkPoint.Value,FallbackValue=50}" Width="5" HorizontalAlignment="Right" Margin="5" Maximum="100" Minimum="0"/>
<TextBlock Text="{Binding LinkPoint.Value,StringFormat={}{0}%}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,30,0,0"/>
</Grid>
</ControlTemplate>
<Style TargetType="{x:Type ToggleButton}" x:Key="SolenoidControlToggleButtonStyle">
<Setter Property="Background" Value="Red"/>
<Setter Property="SnapsToDevicePixels" Value="True" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Grid x:Name="Grid" Margin="{TemplateBinding Padding}">
<Ellipse x:Name="path" Fill="Red" Stroke="Black" Stretch="Uniform"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="{DynamicResource GrayBrush8}" />
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Foreground" Value="{DynamicResource Fluent.Ribbon.Brushes.HighlightBrush}" />
</Trigger>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Fill" TargetName="path" Value="Green" />
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Opacity" Value="0.6" TargetName="Grid"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type ToggleButton}" x:Key="SolenoidToggleButtonStyle">
<Setter Property="Background" Value="Red"/>
<Setter Property="SnapsToDevicePixels" Value="True" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Grid x:Name="Grid" Margin="{TemplateBinding Padding}">
<Path x:Name="path1" Data="M192 128l128 128-128 128z" Fill="Red" Stroke="Black" Stretch="Fill" Width="{Binding Path=ActualWidth, RelativeSource={RelativeSource Mode=TemplatedParent}, Converter={StaticResource HalfConverter}}" HorizontalAlignment="Left"/>
<Path x:Name="path2" Data="M450 600L650 800V400z" Fill="Red" Stroke="Black" Stretch="Fill" Width="{Binding Path=ActualWidth, RelativeSource={RelativeSource Mode=TemplatedParent}, Converter={StaticResource HalfConverter}}" HorizontalAlignment="Right"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="{DynamicResource GrayBrush8}" />
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Foreground" Value="{DynamicResource Fluent.Ribbon.Brushes.HighlightBrush}" />
</Trigger>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Fill" TargetName="path1" Value="Green" />
<Setter Property="Fill" TargetName="path2" Value="Green" />
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Opacity" Value="0.6" TargetName="Grid"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type ToggleButton}" x:Key="StartToggleButtonStyle">
<Setter Property="Background" Value="Red"/>
<Setter Property="SnapsToDevicePixels" Value="True" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Grid x:Name="Grid" Margin="{TemplateBinding Padding}" Background="{TemplateBinding Background}">
<TextBlock x:Name="txt" Text="开始" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="{DynamicResource GrayBrush8}" />
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Foreground" Value="{DynamicResource Fluent.Ribbon.Brushes.HighlightBrush}" />
</Trigger>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Background" TargetName="Grid" Value="Green" />
<Setter Property="Text" TargetName="txt" Value="停止" />
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Opacity" Value="0.6" TargetName="Grid"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<ControlTemplate x:Key="SolenoidStyle" TargetType="{x:Type ContentControl}">
<Grid Margin="0,5">
<ToggleButton Style="{StaticResource SolenoidToggleButtonStyle}" IsChecked="{Binding DOLinkPoint.Value, Converter={StaticResource IntToBoolConverter}}" IsHitTestVisible="False" />
<ToggleButton Style="{StaticResource SolenoidControlToggleButtonStyle}" IsChecked="{Binding DILinkPoint.Value, Converter={StaticResource IntToBoolConverter}}" HorizontalAlignment="Center" VerticalAlignment="Center" Width="16" Height="16"/>
<TextBlock Text="{Binding Text}" RenderTransformOrigin="0.5,1" TextWrapping="Wrap" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="2">
<TextBlock.RenderTransform>
<TranslateTransform Y="16"/>
</TextBlock.RenderTransform>
</TextBlock>
</Grid>
</ControlTemplate>
<ControlTemplate x:Key="StartBtnStyle" TargetType="{x:Type ContentControl}">
<Grid Margin="0,5">
<ToggleButton Style="{StaticResource StartToggleButtonStyle}" IsChecked="{Binding LinkPoint.Value, Converter={StaticResource IntToBoolConverter}}"/>
</Grid>
</ControlTemplate>
<ControlTemplate x:Key="ListStyle" TargetType="{x:Type ContentControl}">
<Grid Margin="2">
<ItemsControl ItemsSource="{x:Static local:SFCService.LinkPoint}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="2">
<TextBlock Text="{Binding Name}" Width="45" VerticalAlignment="Center" />
<TextBlock Text="{Binding Despcription}" Width="60" VerticalAlignment="Center" />
<TextBox Text="{Binding Value,Mode=TwoWay}" Width="50" VerticalAlignment="Center"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</ControlTemplate>
<Style x:Key="CustomSFCNodeStyle" TargetType="{x:Type ContentControl}">
<Setter Property="Template" Value="{StaticResource StartStyle}" />
<Style.Triggers>
<DataTrigger Binding="{Binding Kind}" Value="Start">
<Setter Property="Template" Value="{StaticResource StartStyle}" />
</DataTrigger>
<DataTrigger Binding="{Binding Kind}" Value="Node">
<Setter Property="Template" Value="{StaticResource NodeStyle}" />
</DataTrigger>
<DataTrigger Binding="{Binding Kind}" Value="Condition">
<Setter Property="Template" Value="{StaticResource ConditionStyle}" />
</DataTrigger>
<DataTrigger Binding="{Binding Kind}" Value="Action">
<Setter Property="Template" Value="{StaticResource ActionStyle}" />
</DataTrigger>
<DataTrigger Binding="{Binding Kind}" Value="COBegin">
<Setter Property="Template" Value="{StaticResource COBeginStyle}" />
</DataTrigger>
<DataTrigger Binding="{Binding Kind}" Value="COEnd">
<Setter Property="Template" Value="{StaticResource COEndStyle}" />
</DataTrigger>
<DataTrigger Binding="{Binding Kind}" Value="Simulate_Tank">
<Setter Property="Template" Value="{StaticResource TankStyle}" />
</DataTrigger>
<DataTrigger Binding="{Binding Kind}" Value="Simulate_Solenoid">
<Setter Property="Template" Value="{StaticResource SolenoidStyle}" />
</DataTrigger>
<DataTrigger Binding="{Binding Kind}" Value="Simulate_Start">
<Setter Property="Template" Value="{StaticResource StartBtnStyle}" />
</DataTrigger>
<DataTrigger Binding="{Binding Kind}" Value="Simulate_List">
<Setter Property="Template" Value="{StaticResource ListStyle}" />
</DataTrigger>
</Style.Triggers>
</Style>
<DataTemplate DataType="{x:Type viewmodel:SFCNode}">
<Grid>
<ContentControl Style="{StaticResource CustomSFCNodeStyle}"/>
</Grid>
</DataTemplate>
<DataTemplate DataType="{x:Type viewmodel:SFCConditionNodeData}">
<Grid Background="{DynamicResource Fluent.Ribbon.Brushes.AccentBaseColorBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label Grid.Column="0"
Content="条件"
Margin="5" />
<TextBox Grid.Column="1"
Text="{Binding Expression}" VerticalAlignment="Center"
Margin="2"
FontSize="12"/>
<StackPanel Grid.Column="0" Grid.Row="1" Orientation="Horizontal" VerticalAlignment="Top">
<Label
Content="绑定"
Margin="5,5,0,5" />
<Button Command="{Binding AddCommand}" Width="16" Height="16">
<Path Stretch="Fill" Fill="Black" Data="M938.666667 426.666667h-341.333334V85.333333c0-46.933333-38.4-85.333333-85.333333-85.333333s-85.333333 38.4-85.333333 85.333333v341.333334H85.333333c-46.933333 0-85.333333 38.4-85.333333 85.333333s38.4 85.333333 85.333333 85.333333h341.333334v341.333334c0 46.933333 38.4 85.333333 85.333333 85.333333s85.333333-38.4 85.333333-85.333333v-341.333334h341.333334c46.933333 0 85.333333-38.4 85.333333-85.333333s-38.4-85.333333-85.333333-85.333333z"/>
</Button>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Column="1" Grid.Row="1" Margin="2">
<ItemsControl
ItemsSource="{Binding LinkPoint}" AlternationCount="{Binding LinkPoint.Count}" Background="{DynamicResource Fluent.Ribbon.Brushes.AccentBaseColorBrush}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<DockPanel >
<Button DockPanel.Dock="Right" Command="{Binding DataContext.DeleteCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ItemsControl}}}" CommandParameter="{Binding .}" Width="16" Height="16">
<Path Stretch="Fill" Fill="Black" Data="M512 620.544l253.3376 253.3376a76.6976 76.6976 0 1 0 108.544-108.544L620.6464 512l253.2352-253.3376a76.6976 76.6976 0 1 0-108.544-108.544L512 403.3536 258.6624 150.1184a76.6976 76.6976 0 1 0-108.544 108.544L403.3536 512 150.1184 765.3376a76.6976 76.6976 0 1 0 108.544 108.544L512 620.6464z"/>
</Button>
<TextBlock VerticalAlignment="Center" Text="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ContentPresenter}, AncestorLevel=1}, Path=(ItemsControl.AlternationIndex),StringFormat={}p{0}}"/>
<ComboBox SelectedValue="{Binding Name}" ItemsSource="{x:Static local:SFCService.LinkPoint}" VerticalAlignment="Center" SelectedValuePath="Name" DisplayMemberPath="Name" FontSize="12" Margin="2"/>
</DockPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</Grid>
</DataTemplate>
<DataTemplate DataType="{x:Type viewmodel:SFCActionNodeData}">
<Grid Background="{DynamicResource Fluent.Ribbon.Brushes.AccentBaseColorBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label Grid.Column="0"
Content="结果"
Margin="5" />
<TextBox Grid.Column="1"
Text="{Binding Expression}" VerticalAlignment="Center"
Margin="2"
FontSize="12"/>
<Label Grid.Column="0" Grid.Row="1"
Content="测点"
Margin="5" />
<ComboBox Grid.Column="1" Grid.Row="1"
SelectedItem="{Binding LinkPoint}" ItemsSource="{x:Static local:SFCService.LinkPoint}" VerticalAlignment="Center" DisplayMemberPath="Name"
Margin="5"
FontSize="12"/>
</Grid>
</DataTemplate>
<DataTemplate DataType="{x:Type viewmodel:Simulate_SolenoidViewModelData}">
<Grid Background="{DynamicResource Fluent.Ribbon.Brushes.AccentBaseColorBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label Grid.Column="0"
Content="输入"
Margin="5" />
<ComboBox Grid.Column="1" Grid.Row="0"
SelectedItem="{Binding DILinkPoint}" ItemsSource="{x:Static local:SFCService.LinkPoint}" VerticalAlignment="Center" DisplayMemberPath="Name"
Margin="5"
FontSize="12"/>
<Label Grid.Column="0"
Grid.Row="1"
Content="反馈"
Margin="5" />
<ComboBox Grid.Column="1" Grid.Row="1"
SelectedItem="{Binding DOLinkPoint}" ItemsSource="{x:Static local:SFCService.LinkPoint}" VerticalAlignment="Center" DisplayMemberPath="Name"
Margin="5"
FontSize="12"/>
</Grid>
</DataTemplate>
<DataTemplate DataType="{x:Type viewmodel:Simulate_TankViewModelData}">
<Grid Background="{DynamicResource Fluent.Ribbon.Brushes.AccentBaseColorBrush}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label Grid.Column="0"
Content="液位"
Margin="5" />
<ComboBox Grid.Column="1" Grid.Row="0"
SelectedItem="{Binding LinkPoint}" ItemsSource="{x:Static local:SFCService.LinkPoint}" VerticalAlignment="Center" DisplayMemberPath="Name"
Margin="5"
FontSize="12"/>
</Grid>
</DataTemplate>
</ResourceDictionary>

View File

@@ -0,0 +1,53 @@
using System;
using System.Collections.Generic;
using System.Text;
using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.SFC.ViewModels
{
public class SFCActionNode : SFCNode
{
public SFCActionNode() : base(SFCNodeKinds.Action)
{
FontViewModel.FontSize = 10;
ItemWidth = 60;
ItemHeight = 48;
ExecuteAddLeftInput(null);
}
public SFCActionNode(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
}
public SFCActionNode(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
{
}
private LinkPoint _linkPoint;
public LinkPoint LinkPoint
{
get
{
return _linkPoint;
}
set
{
SetProperty(ref _linkPoint, value);
}
}
protected override void ExecuteEditCommand(object parameter)
{
SFCActionNodeData data = new SFCActionNodeData(LinkPoint, Expression);
if (visualiserService.ShowDialog(data) == true)
{
this.LinkPoint = data.LinkPoint;
this.Expression = data.Expression;
}
}
}
}

View File

@@ -0,0 +1,60 @@
using AIStudio.Wpf.DiagramDesigner;
namespace AIStudio.Wpf.SFC.ViewModels
{
/// <summary>
/// This is passed to the PopupWindow.xaml window, where a DataTemplate is used to provide the
/// ContentControl with the look for this data. This class is also used to allow
/// the popup to be cancelled without applying any changes to the calling ViewModel
/// whos data will be updated if the PopupWindow.xaml window is closed successfully
/// </summary>
public class SFCActionNodeData : BindableBase
{
private string _title;
public string Title
{
get
{
return _title;
}
set
{
SetProperty(ref _title, value);
}
}
public SFCActionNodeData(LinkPoint linkPoint, string expression)
{
Title = "输出动作";
LinkPoint = linkPoint;
Expression = expression;
}
private string _expression;
public string Expression
{
get
{
return _expression;
}
set
{
SetProperty(ref _expression, value);
}
}
private LinkPoint _linkPoint;
public LinkPoint LinkPoint
{
get
{
return _linkPoint;
}
set
{
SetProperty(ref _linkPoint, value);
}
}
}
}

View File

@@ -0,0 +1,56 @@
using System;
using System.Collections.Generic;
using System.Text;
using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.SFC.ViewModels
{
public class SFCCOBeginNode : SFCNode
{
public SFCCOBeginNode() : this(null)
{
}
public SFCCOBeginNode(IDiagramViewModel root) : base(root, SFCNodeKinds.COBegin)
{
ItemWidth = 280;
ItemHeight = 10;
ExecuteAddTopInput(null);
ExecuteAddBottomOutput(null);
ExecuteAddBottomOutput(null);
}
public SFCCOBeginNode(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
}
public SFCCOBeginNode(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
{
}
public override void ExecuteAddTopInput(object parameter)
{
FullyCreatedConnectorInfo connector = new FullyCreatedConnectorInfo(this, ConnectorOrientation.Top, true);
connector.YRatio = 0;
connector.XRatio = (40 + Input.Count * 200) / ItemWidth;
Input.Add(Input.Count, connector);
AddConnector(connector);
}
public override void ExecuteAddBottomOutput(object parameter)
{
FullyCreatedConnectorInfo connector = new FullyCreatedConnectorInfo(this, ConnectorOrientation.Bottom, true);
connector.YRatio = 1;
connector.XRatio = (40 + Output.Count * 200) / ItemWidth;
Output.Add(Output.Count, connector);
AddConnector(connector);
}
}
}

View File

@@ -0,0 +1,56 @@
using System;
using System.Collections.Generic;
using System.Text;
using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.SFC.ViewModels
{
public class SFCCOEndNode : SFCNode
{
public SFCCOEndNode() : this(null)
{
}
public SFCCOEndNode(IDiagramViewModel root) : base(root, SFCNodeKinds.COEnd)
{
ItemWidth = 280;
ItemHeight = 10;
ExecuteAddBottomOutput(null);
ExecuteAddTopInput(null);
ExecuteAddTopInput(null);
}
public SFCCOEndNode(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
}
public SFCCOEndNode(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
{
}
public override void ExecuteAddTopInput(object parameter)
{
FullyCreatedConnectorInfo connector = new FullyCreatedConnectorInfo(this, ConnectorOrientation.Top, true);
connector.YRatio = 0;
connector.XRatio = (40 + Input.Count * 200) / ItemWidth;
Input.Add(Input.Count, connector);
AddConnector(connector);
}
public override void ExecuteAddBottomOutput(object parameter)
{
FullyCreatedConnectorInfo connector = new FullyCreatedConnectorInfo(this, ConnectorOrientation.Bottom, true);
connector.YRatio = 1;
connector.XRatio = (40 + Output.Count * 200) / ItemWidth;
Output.Add(Output.Count, connector);
AddConnector(connector);
}
}
}

View File

@@ -0,0 +1,72 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Windows.Media;
using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.SFC.ViewModels
{
public class SFCConditionNode : SFCNode
{
public SFCConditionNode() : this(null)
{
}
public SFCConditionNode(IDiagramViewModel root) : base(root, SFCNodeKinds.Condition)
{
ColorViewModel.LineColor.Color = Colors.Black;
ItemWidth = 30;
ItemHeight = 30;
ExecuteAddTopInput(null);
ExecuteAddBottomOutput(null);
}
public SFCConditionNode(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
}
public SFCConditionNode(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
{
}
protected override void Init(IDiagramViewModel root, bool initNew)
{
base.Init(root, initNew);
CustomText = true;
}
protected override void InitNew()
{
base.InitNew();
}
private ObservableCollection<LinkPoint> _linkPoint = new ObservableCollection<LinkPoint>();
public ObservableCollection<LinkPoint> LinkPoint
{
get
{
return _linkPoint;
}
set
{
SetProperty(ref _linkPoint, value);
}
}
protected override void ExecuteEditCommand(object parameter)
{
SFCConditionNodeData data = new SFCConditionNodeData(LinkPoint, Expression);
if (visualiserService.ShowDialog(data) == true)
{
this.LinkPoint = new ObservableCollection<LinkPoint>(data.LinkPoint.Select(p => SFCService.LinkPoint.FirstOrDefault(q => q.Name == p.Name)));
this.Expression = data.Expression;
}
}
}
}

View File

@@ -0,0 +1,91 @@
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Windows.Input;
using AIStudio.Wpf.DiagramDesigner;
namespace AIStudio.Wpf.SFC.ViewModels
{
/// <summary>
/// This is passed to the PopupWindow.xaml window, where a DataTemplate is used to provide the
/// ContentControl with the look for this data. This class is also used to allow
/// the popup to be cancelled without applying any changes to the calling ViewModel
/// whos data will be updated if the PopupWindow.xaml window is closed successfully
/// </summary>
public class SFCConditionNodeData : BindableBase
{
private string _title;
public string Title
{
get
{
return _title;
}
set
{
SetProperty(ref _title, value);
}
}
public SFCConditionNodeData(IEnumerable<LinkPoint> linkPoint, string expression)
{
Title = "转移条件";
LinkPoint = new ObservableCollection<LinkPoint>(linkPoint);
Expression = expression;
}
private string _expression;
public string Expression
{
get
{
return _expression;
}
set
{
SetProperty(ref _expression, value);
}
}
private ObservableCollection<LinkPoint> _linkPoint;
public ObservableCollection<LinkPoint> LinkPoint
{
get
{
return _linkPoint;
}
set
{
SetProperty(ref _linkPoint, value);
}
}
private ICommand _addCommand;
public ICommand AddCommand
{
get
{
return this._addCommand ?? (this._addCommand = new SimpleCommand(para => { return true; }, para => this.AddExecuted(para)));
}
}
private ICommand _deleteCommand;
public ICommand DeleteCommand
{
get
{
return this._deleteCommand ?? (this._deleteCommand = new SimpleCommand(para => { return true; }, para => this.DeleteExecuted(para)));
}
}
private void AddExecuted(object para)
{
LinkPoint.Add(new SFC.LinkPoint());
}
private void DeleteExecuted(object para)
{
LinkPoint.Remove(para as SFC.LinkPoint);
}
}
}

View File

@@ -0,0 +1,225 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Windows.Media;
using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Models;
using AIStudio.Wpf.DiagramDesigner.Services;
using AIStudio.Wpf.SFC.Models;
namespace AIStudio.Wpf.SFC.ViewModels
{
public class SFCNode : DesignerItemViewModelBase
{
protected IUIVisualizerService visualiserService;
public SFCNode(SFCNodeKinds kind) : this(null, kind)
{
}
public SFCNode(IDiagramViewModel root, SFCNodeKinds kind) : base(root)
{
ColorViewModel.FillColor.Color = Colors.Blue;
Kind = kind;
ItemWidth = 80;
ItemHeight = 40;
}
public SFCNode(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
}
public SFCNode(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
{
}
public override SelectableItemBase GetSerializableObject()
{
return new SFCNodeDesignerItem(this);
}
protected override void Init(IDiagramViewModel root, bool initNew)
{
IsInnerConnector = true;
ShowRotate = false;
ShowArrow = false;
ShowText = true;
IsReadOnlyText = true;
base.Init(root, initNew);
visualiserService = ApplicationServicesProvider.Instance.Provider.VisualizerService;
}
protected override void InitNew()
{
ClearConnectors();
}
protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{
base.LoadDesignerItemViewModel(designerbase);
if (designerbase is SFCNodeDesignerItem designer)
{
this.Kind = designer.Kind;
this.Expression = designer.Expression;
foreach (var connector in designer.Connectors)
{
FullyCreatedConnectorInfo fullyCreatedConnectorInfo = new FullyCreatedConnectorInfo(this.Root, this, connector);
if (fullyCreatedConnectorInfo.Orientation == ConnectorOrientation.Left)
{
Input.Add(Input.Count, fullyCreatedConnectorInfo);
}
else if (fullyCreatedConnectorInfo.Orientation == ConnectorOrientation.Right)
{
Output.Add(Output.Count, fullyCreatedConnectorInfo);
}
AddConnector(fullyCreatedConnectorInfo);
}
if (this is SFCActionNode actionNode)
{
actionNode.LinkPoint = designer.LinkPoints.FirstOrDefault();
}
else if (this is SFCConditionNode sFCConditionNode)
{
sFCConditionNode.LinkPoint = new System.Collections.ObjectModel.ObservableCollection<LinkPoint>(designer.LinkPoints);
}
else if (this is Simulate_SolenoidViewModel simulate_SolenoidViewModel)
{
simulate_SolenoidViewModel.DILinkPoint = designer.LinkPoints.FirstOrDefault();
simulate_SolenoidViewModel.DOLinkPoint = designer.LinkPoints.LastOrDefault();
}
else if (this is Simulate_StartViewModel simulate_StartViewModel)
{
simulate_StartViewModel.LinkPoint = designer.LinkPoints.FirstOrDefault();
}
else if (this is Simulate_TankViewModel simulate_TankViewModel)
{
simulate_TankViewModel.LinkPoint = designer.LinkPoints.FirstOrDefault();
}
}
}
public Dictionary<int, FullyCreatedConnectorInfo> Input { get; set; } = new Dictionary<int, FullyCreatedConnectorInfo>();
public Dictionary<int, FullyCreatedConnectorInfo> Output { get; set; } = new Dictionary<int, FullyCreatedConnectorInfo>();
public Dictionary<int, FullyCreatedConnectorInfo> Action { get; set; } = new Dictionary<int, FullyCreatedConnectorInfo>();
public virtual void ExecuteAddLeftInput(object parameter)
{
FullyCreatedConnectorInfo connector = new FullyCreatedConnectorInfo(this, ConnectorOrientation.Left, true);
connector.XRatio = 0;
Input.Add(Input.Count, connector);
for (int i = 0; i < Input.Values.Count; i++)
{
Input[i].YRatio = (i + 1.0) / (Input.Values.Count + 1.0);
}
AddConnector(connector);
}
public virtual void ExecuteAddTopInput(object parameter)
{
FullyCreatedConnectorInfo connector = new FullyCreatedConnectorInfo(this, ConnectorOrientation.Top, true);
connector.YRatio = 0;
Input.Add(Input.Count, connector);
for (int i = 0; i < Input.Values.Count; i++)
{
Input[i].XRatio = (i + 1.0) / (Input.Values.Count + 1.0);
if (Output.ContainsKey(i))
{
Output[i].XRatio = Input[i].XRatio;
}
}
AddConnector(connector);
}
public virtual void ExecuteAddRightOutput(object parameter)
{
FullyCreatedConnectorInfo connector = new FullyCreatedConnectorInfo(this, ConnectorOrientation.Right, true);
connector.XRatio = 1;
Output.Add(Output.Count, connector);
for (int i = 0; i < Output.Values.Count; i++)
{
Output[i].YRatio = (i + 1.0) / (Output.Values.Count + 1.0);
}
AddConnector(connector);
}
public virtual void ExecuteAddBottomOutput(object parameter)
{
FullyCreatedConnectorInfo connector = new FullyCreatedConnectorInfo(this, ConnectorOrientation.Bottom, true);
connector.YRatio = 1;
Output.Add(Output.Count, connector);
for (int i = 0; i < Output.Values.Count; i++)
{
Output[i].XRatio = (i + 1.0) / (Output.Values.Count + 1.0);
if (Input.ContainsKey(i))
{
Input[i].XRatio = Output[i].XRatio;
}
}
AddConnector(connector);
}
public virtual void ExecuteAddActionOutput(object parameter)
{
FullyCreatedConnectorInfo connector = new FullyCreatedConnectorInfo(this, ConnectorOrientation.Right, true);
connector.XRatio = 1;
Action.Add(Action.Count, connector);
Action[Action.Count - 1].YRatio = 0.5;
AddConnector(connector);
}
[Browsable(false)]
public SFCNodeKinds Kind { get; set; }
private double _value;
public double Value
{
get
{
return _value;
}
set
{
SetProperty(ref _value, value);
}
}
private string _expression;
public string Expression
{
get
{
return _expression;
}
set
{
SetProperty(ref _expression, value);
}
}
#region
private int _status;
public int Status
{
get { return _status; }
set
{
SetProperty(ref _status, value);
}
}
public List<SFCNode> NextNode { get; set; } = new List<SFCNode>();
public List<SFCNode> PreNode { get; set; } = new List<SFCNode>();
#endregion
}
}

View File

@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Text;
using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.SFC.ViewModels
{
public class SFCNodeNode : SFCNode
{
public SFCNodeNode() : base(SFCNodeKinds.Node)
{
ExecuteAddTopInput(null);
ExecuteAddBottomOutput(null);
ExecuteAddActionOutput(null);
}
public SFCNodeNode(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
}
public SFCNodeNode(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
{
}
}
}

View File

@@ -0,0 +1,31 @@
using System;
using System.Collections.Generic;
using System.Text;
using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.SFC.ViewModels
{
public class SFCStartNode : SFCNode
{
public SFCStartNode() : this(null)
{
}
public SFCStartNode(IDiagramViewModel root) : base(root, SFCNodeKinds.Start)
{
ExecuteAddTopInput(null);
ExecuteAddBottomOutput(null);
}
public SFCStartNode(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
}
public SFCStartNode(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
{
}
}
}

View File

@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.SFC.ViewModels
{
public class Simulate_ListViewModel : SFCNode
{
public Simulate_ListViewModel() : base(SFCNodeKinds.Simulate_List)
{
ItemWidth = 170;
ItemHeight = 260;
}
public Simulate_ListViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
}
public Simulate_ListViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
{
}
}
}

View File

@@ -0,0 +1,125 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Reactive.Linq;
using System.Text;
using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.SFC.ViewModels
{
public class Simulate_SolenoidViewModel : SFCNode
{
private IDisposable diChangedSubscription;
public Simulate_SolenoidViewModel() : this(null)
{
}
public Simulate_SolenoidViewModel(IDiagramViewModel root) : base(root, SFCNodeKinds.Simulate_Solenoid)
{
ItemWidth = 32;
ItemHeight = 32;
ExecuteAddLeftInput(null);
ExecuteAddRightOutput(null);
}
public Simulate_SolenoidViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
}
public Simulate_SolenoidViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
{
}
protected override void Init(IDiagramViewModel root, bool initNew)
{
base.Init(root, initNew);
CustomText = true;
if (diChangedSubscription != null)
{
diChangedSubscription.Dispose();
}
Random random = new Random();
diChangedSubscription = WhenPropertyChanged.Where(o => o.ToString() == "Value").Throttle(TimeSpan.FromSeconds(random.Next(1,10))).Subscribe(OnValueChanged);//Sample
}
protected override void InitNew()
{
base.InitNew();
}
/// <summary>
/// 输入
/// </summary>
private LinkPoint _dILinkPoint;
public LinkPoint DILinkPoint
{
get
{
return _dILinkPoint;
}
set
{
if (_dILinkPoint != null)
{
_dILinkPoint.PropertyChanged -= _dILinkPoint_PropertyChanged;
}
SetProperty(ref _dILinkPoint, value);
if (_dILinkPoint != null)
{
_dILinkPoint.PropertyChanged += _dILinkPoint_PropertyChanged;
}
}
}
private void _dILinkPoint_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (e.PropertyName == "Value")
{
if (DOLinkPoint != null)
{
Value = DILinkPoint.Value;
}
}
}
private void OnValueChanged(string propertyName)
{
if (DOLinkPoint != null)
{
DOLinkPoint.Value = Value;
}
}
/// <summary>
/// 反馈
/// </summary>
private LinkPoint _dOLinkPoint;
public LinkPoint DOLinkPoint
{
get
{
return _dOLinkPoint;
}
set
{
SetProperty(ref _dOLinkPoint, value);
}
}
protected override void ExecuteEditCommand(object parameter)
{
Simulate_SolenoidViewModelData data = new Simulate_SolenoidViewModelData(DILinkPoint, DOLinkPoint);
if (visualiserService.ShowDialog(data) == true)
{
this.DILinkPoint = data.DILinkPoint;
this.DOLinkPoint = data.DOLinkPoint;
}
}
}
}

View File

@@ -0,0 +1,60 @@
using AIStudio.Wpf.DiagramDesigner;
namespace AIStudio.Wpf.SFC.ViewModels
{
public class Simulate_SolenoidViewModelData : BindableBase
{
private string _title;
public string Title
{
get
{
return _title;
}
set
{
SetProperty(ref _title, value);
}
}
public Simulate_SolenoidViewModelData(LinkPoint dILinkPoint, LinkPoint dOLinkPoint)
{
Title = "阀门";
DILinkPoint = dILinkPoint;
DOLinkPoint = dOLinkPoint;
}
/// <summary>
/// 输入
/// </summary>
private LinkPoint _dILinkPoint;
public LinkPoint DILinkPoint
{
get
{
return _dILinkPoint;
}
set
{
SetProperty(ref _dILinkPoint, value);
}
}
/// <summary>
/// 反馈
/// </summary>
private LinkPoint _dOLinkPoint;
public LinkPoint DOLinkPoint
{
get
{
return _dOLinkPoint;
}
set
{
SetProperty(ref _dOLinkPoint, value);
}
}
}
}

View File

@@ -0,0 +1,48 @@
using System;
using System.Collections.Generic;
using System.Text;
using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.SFC.ViewModels
{
public class Simulate_StartViewModel : SFCNode
{
public Simulate_StartViewModel() : this(null)
{
}
public Simulate_StartViewModel(IDiagramViewModel root) : base(root, SFCNodeKinds.Simulate_Start)
{
ItemWidth = 32;
ItemHeight = 32;
ExecuteAddLeftInput(null);
ExecuteAddRightOutput(null);
}
public Simulate_StartViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
}
public Simulate_StartViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
{
}
private LinkPoint linkPoint;
public LinkPoint LinkPoint
{
get
{
return linkPoint;
}
set
{
SetProperty(ref linkPoint, value);
}
}
}
}

View File

@@ -0,0 +1,94 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.SFC.ViewModels
{
public class Simulate_TankViewModel : SFCNode
{
public Simulate_TankViewModel() : this(null)
{
}
public Simulate_TankViewModel(IDiagramViewModel root) : base(root, SFCNodeKinds.Simulate_Tank)
{
ItemWidth = 50;
ItemHeight = 120;
ExecuteAddLeftInput(null);
ExecuteAddLeftInput(null);
ExecuteAddRightOutput(null);
ExecuteAddRightOutput(null);
}
public Simulate_TankViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
}
public Simulate_TankViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
{
}
public override void ExecuteAddLeftInput(object parameter)
{
FullyCreatedConnectorInfo connector = new FullyCreatedConnectorInfo(this, ConnectorOrientation.Left, true);
connector.XRatio = 0;
connector.YRatio = (30 + Input.Count * 60) / ItemHeight;
Input.Add(Input.Count, connector);
AddConnector(connector);
}
public override void ExecuteAddRightOutput(object parameter)
{
FullyCreatedConnectorInfo connector = new FullyCreatedConnectorInfo(this, ConnectorOrientation.Right, true);
connector.XRatio = 1;
connector.YRatio = (30 + Output.Count * 60) / ItemHeight;
Output.Add(Output.Count, connector);
AddConnector(connector);
}
/// <summary>
/// 液位
/// </summary>
private LinkPoint linkPoint;
public LinkPoint LinkPoint
{
get
{
return linkPoint;
}
set
{
SetProperty(ref linkPoint, value);
}
}
protected override void ExecuteEditCommand(object parameter)
{
Simulate_TankViewModelData data = new Simulate_TankViewModelData(LinkPoint);
if (visualiserService.ShowDialog(data) == true)
{
this.LinkPoint = data.LinkPoint;
}
}
public void Execute()
{
double input = PreNode.OfType<Simulate_SolenoidViewModel>().Sum(p => p.DOLinkPoint?.Value ?? 0);
double output = NextNode.OfType<Simulate_SolenoidViewModel>().Sum(p => p.DOLinkPoint?.Value ?? 0);
if (LinkPoint != null)
{
LinkPoint.Value += input - output;
}
}
}
}

View File

@@ -0,0 +1,43 @@
using AIStudio.Wpf.DiagramDesigner;
namespace AIStudio.Wpf.SFC.ViewModels
{
public class Simulate_TankViewModelData : BindableBase
{
private string _title;
public string Title
{
get
{
return _title;
}
set
{
SetProperty(ref _title, value);
}
}
public Simulate_TankViewModelData(LinkPoint linkPoint)
{
Title = "容器";
LinkPoint = linkPoint;
}
/// <summary>
/// 液位
/// </summary>
private LinkPoint linkPoint;
public LinkPoint LinkPoint
{
get
{
return linkPoint;
}
set
{
SetProperty(ref linkPoint, value);
}
}
}
}