| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248 |
- using CSScriptLib;
- using Prism.Events;
- using Prism.Ioc;
- using Prism.Regions;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Reflection;
- using System.Text;
- using System.Text.RegularExpressions;
- using System.Threading.Tasks;
- using System.Windows.Documents;
- using System.Windows.Forms;
- using TeamAAS_VP.Interfaces;
- using TeamAAS_VP.Models;
- namespace TeamAAS_VP.Core
- {
- public class ScriptHelper
- {
- /// <summary>
- /// 编译脚本
- /// </summary>
- /// <param name="strSourceCode"></param>
- /// <param name="MethodName"></param>
- /// <param name="ClassName"></param>
- /// <returns></returns>
- public static Tuple<bool,List<string>> Compile(string strSourceCode, IRegionManager regionManager, IEventAggregator ea, IContainerProvider container)
- {
- try
- {
- var eval = CSScript.Evaluator.ReferenceDomainAssemblies(DomainAssemblies.AllStatic);
- IBackgroundScripting scripting = eval.LoadCode<IBackgroundScripting>(strSourceCode);
- scripting.regionManager = regionManager;
- scripting.eventAggregator = ea;
- scripting.container = container;
- return new Tuple<bool, List<string>>(true, null);
- }
- catch (CSScriptLib.CompilerException e1)
- {
- string[] items = e1.Message.Split('\n');
- List<string> list = new List<string>();
- foreach (var item in items)
- {
- if (string.IsNullOrEmpty(item))
- {
- break;
- }
- list.Add(item.TrimEnd('\r'));
- }
- return new Tuple<bool, List<string>>(false, list);
- }
- catch (Exception ex)
- {
- List<string> list = new List<string>();
- list.Add(ex.Message);
- return new Tuple<bool, List<string>>(false, list);
- }
- }
- /// <summary>
- /// 编译脚本
- /// </summary>
- /// <param name="strSourceCode"></param>
- /// <param name="MethodName"></param>
- /// <param name="ClassName"></param>
- /// <returns></returns>
- public static Task<Tuple<bool, List<string>>> CompileAsync(string strSourceCode, IRegionManager regionManager, IEventAggregator ea, IContainerProvider container)
- {
- return Task.Run(() => {
- try
- {
- var eval = CSScript.Evaluator.ReferenceDomainAssemblies(DomainAssemblies.AllStatic);
- IBackgroundScripting scripting = eval.LoadCode<IBackgroundScripting>(strSourceCode);
- scripting.regionManager = regionManager;
- scripting.eventAggregator = ea;
- scripting.container = container;
- return Task.FromResult<Tuple<bool, List<string>>>(new Tuple<bool, List<string>>(true, null));
- }
- catch (CSScriptLib.CompilerException e1)
- {
- string[] items = e1.Message.Split('\n');
- List<string> list = new List<string>();
- foreach (var item in items)
- {
- if (string.IsNullOrEmpty(item))
- {
- break;
- }
- list.Add(item.TrimEnd('\r'));
- }
- return Task.FromResult<Tuple<bool, List<string>>>(new Tuple<bool, List<string>>(false, list));
- }
- catch (Exception ex)
- {
- List<string> list = new List<string>();
- list.Add(ex.Message);
- return Task.FromResult<Tuple<bool, List<string>>>(new Tuple<bool, List<string>>(false, list));
- }
- });
- }
- /// <summary>
- /// 执行理脚本
- /// </summary>
- /// <param name="strSourceCode"></param>
- /// <param name="regionManager"></param>
- /// <param name="ea"></param>
- /// <param name="container"></param>
- /// <param name="callback"></param>
- /// <returns></returns>
- public static Task ExecuteScriptingAsync(string strSourceCode, IRegionManager regionManager, IEventAggregator ea, IContainerProvider container,Action<Tuple<bool, string[]>> callback)
- {
- try
- {
- //获取
- IProductService productService = container.Resolve<IProductService>();
- var eval = CSScript.Evaluator.ReferenceDomainAssemblies(DomainAssemblies.AllStatic);
- IBackgroundScripting scripting = eval.LoadCode<IBackgroundScripting>(strSourceCode);
- scripting.regionManager = regionManager;
- scripting.eventAggregator = ea;
- scripting.container = container;
- scripting.management = container.Resolve<Management>();
- scripting.CurrentProduct = productService.GetCurrentProduct();
- return scripting.Execute();
- }
- catch (CSScriptLib.CompilerException e1)
- {
- List<string> list = new List<string>();
- foreach (var item in e1.Message.Split('\n'))
- {
- if (string.IsNullOrEmpty(item))
- {
- break;
- }
- list.Add(item.TrimEnd('\r'));
- }
- callback.Invoke(new Tuple<bool, string[]>(false, list.ToArray()));
- return Task.CompletedTask;
- }
- catch (Exception ex)
- {
- List<string> list = new List<string>();
- list.Add(ex.Message);
- callback.Invoke(new Tuple<bool, string[]>(false, list.ToArray()));
- return Task.CompletedTask;
- }
- }
- /// <summary>
- /// 执行视觉处理脚本
- /// </summary>
- /// <param name="strSourceCode"></param>
- /// <param name="regionManager"></param>
- /// <param name="ea"></param>
- /// <param name="container"></param>
- /// <param name="procedure"></param>
- /// <param name="items"></param>
- /// <param name="callback"></param>
- /// <returns></returns>
- public static async Task<Tuple<bool, List<string>>> ExecuteVisionScriptingAsync(string strSourceCode, IRegionManager regionManager, IEventAggregator ea, IContainerProvider container, ProcedureModel procedure, string[] items, Action<Tuple<bool, string[]>> callback)
- {
- try
- {
- IProductService productService = container.Resolve<IProductService>();
- var eval = CSScript.Evaluator.ReferenceDomainAssemblies(DomainAssemblies.AllStatic);
- IVisionScripting scripting = eval.LoadCode<IVisionScripting>(strSourceCode);
- scripting.regionManager = regionManager;
- scripting.eventAggregator = ea;
- scripting.container= container;
- scripting.management= container.Resolve<Management>();
- scripting.CurrentProduct = productService.GetCurrentProduct();
- await scripting.Execute(procedure, items, rst =>
- {
- callback.Invoke(rst);
- });
- return new Tuple<bool, List<string>>(true, null);
- }
- catch (CSScriptLib.CompilerException e1)
- {
- List<string> list = new List<string>();
- foreach (var item in e1.Message.Split('\n'))
- {
- if (string.IsNullOrEmpty(item))
- {
- break;
- }
- list.Add(item.TrimEnd('\r'));
- }
- return new Tuple<bool, List<string>>(false, list);
- }
- catch (Exception ex)
- {
- List<string> list = new List<string>();
- list.Add(ex.Message);
- return new Tuple<bool, List<string>>(false, list);
- }
- }
- /// <summary>
- /// 编译视觉处理脚本
- /// </summary>
- /// <param name="strSourceCode"></param>
- /// <param name="regionManager"></param>
- /// <param name="ea"></param>
- /// <param name="container"></param>
- /// <param name="procedure"></param>
- /// <param name="items"></param>
- /// <param name="callback"></param>
- /// <returns></returns>
- public static Task<Tuple<bool, List<string>>> CompileVisionScriptingAsync(string strSourceCode, IRegionManager regionManager, IEventAggregator ea, IContainerProvider container, ProcedureModel procedure, string[] items, Action<Tuple<bool, string[]>> callback)
- {
- return Task.Run(async () =>
- {
- try
- {
- var eval = CSScript.Evaluator.ReferenceDomainAssemblies(DomainAssemblies.AllStatic);
- IVisionScripting scripting = eval.LoadCode<IVisionScripting>(strSourceCode);
- scripting.regionManager = regionManager;
- scripting.eventAggregator = ea;
- scripting.container = container;
- return new Tuple<bool, List<string>>(true, null);
- }
- catch (CSScriptLib.CompilerException e1)
- {
- List<string> list = new List<string>();
- foreach (var item in e1.Message.Split('\n'))
- {
- if (string.IsNullOrEmpty(item))
- {
- break;
- }
- list.Add(item.TrimEnd('\r'));
- }
- return new Tuple<bool, List<string>>(false, list);
- }
- catch (Exception ex)
- {
- List<string> list = new List<string>();
- list.Add(ex.Message);
- return new Tuple<bool, List<string>>(false, list);
- }
- });
- }
- }
- }
|