| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767 | 
							- using System;
 
- using System.Collections.ObjectModel;
 
- using System.ComponentModel;
 
- using System.Diagnostics;
 
- using System.IO;
 
- using System.Linq;
 
- using Newtonsoft.Json;
 
- using Newtonsoft.Json.Converters;
 
- using PunkHPX8_Core.Attributes;
 
- namespace PunkHPX8_Core
 
- {
 
-     public enum RecipeType
 
-     {
 
-         Chuck,
 
-         DeChuck,
 
-         Process,
 
-         Clean,
 
-     }
 
-     public enum StepType
 
-     {
 
-         Time,
 
-         Stable,
 
-         EndPoint,
 
-         OverEtch,
 
-     }
 
-     public enum ProcessModule
 
-     {
 
-         Pressure,
 
-         TCP,            // Transformer Coupled Plasma (转换耦合等离子)
 
-         Bias,
 
-         Gas,
 
-         ESC,
 
-         Process,
 
-         Compound,
 
-     }
 
-     public enum GeneratorMode
 
-     {
 
-         CW,
 
-         Pulsing,
 
-     }
 
-     public enum PressureUnitMode
 
-     {
 
-         Pressure,
 
-         Valve
 
-     }
 
-     public enum Suspect
 
-     {
 
-         Origin,
 
-         Position1,
 
-         Position2,
 
-         Position3,
 
-         Position4,
 
-         Position5
 
-     }
 
-     public enum TargetMode
 
-     {
 
-         Step,
 
-         Cycle
 
-     }
 
-     public enum ToleranceMode
 
-     {
 
-         None,
 
-         Value,
 
-         Percent
 
-     }
 
-     public enum MatchWorkMode
 
-     {
 
-         Auto,
 
-         Manual
 
-     }
 
-     public class VenusTolerance
 
-     {
 
-     }
 
-     public class RecipeHead : INotifyPropertyChanged
 
-     {
 
-         private string m_name;
 
-         [IsOnlyRead]
 
-         public string Name
 
-         {
 
-             get { return m_name; }
 
-             set { m_name = value; InvokePropertyChanged("Name"); }
 
-         }
 
-         private string _Version = "TestVersion";
 
-         public string Version
 
-         {
 
-             get { return _Version; }
 
-             set { _Version = value; InvokePropertyChanged("Version"); }
 
-         }
 
-         private JetChamber _ChamberType = JetChamber.Venus;
 
-         public JetChamber ChamberType
 
-         {
 
-             get { return _ChamberType; }
 
-             set { _ChamberType = value; InvokePropertyChanged("ChamberType"); }
 
-         }
 
-         private RecipeType m_Type;
 
-         [JsonConverter(typeof(StringEnumConverter))]
 
-         public RecipeType Type
 
-         {
 
-             get { return m_Type; }
 
-             set { m_Type = value; InvokePropertyChanged("Type"); }
 
-         }
 
-         private string m_ChunckRecipe;
 
-         public string ChuckRecipe
 
-         {
 
-             get { return m_ChunckRecipe; }
 
-             set { m_ChunckRecipe = value; InvokePropertyChanged("ChuckRecipe"); }
 
-         }
 
-         private string m_DechuckRecipe;
 
-         public string DechuckRecipe
 
-         {
 
-             get { return m_DechuckRecipe; }
 
-             set { m_DechuckRecipe = value; InvokePropertyChanged("DechuckRecipe"); }
 
-         }
 
-         private bool m_IsShowTolerance;
 
-         public bool IsShowTolerance
 
-         {
 
-             get { return m_IsShowTolerance; }
 
-             set { m_IsShowTolerance = value; InvokePropertyChanged("IsShowTolerance"); }
 
-         }
 
-         private string m_CreateTime;
 
-         [IsOnlyRead]
 
-         public string CreateTime
 
-         {
 
-             get { return m_CreateTime; }
 
-             set { m_CreateTime = value; InvokePropertyChanged("CreateTime"); }
 
-         }
 
-         private string m_EditTime;
 
-         [IsOnlyRead]
 
-         public string EditTime
 
-         {
 
-             get { return m_EditTime; }
 
-             set { m_EditTime = value; InvokePropertyChanged("EditTime"); }
 
-         }
 
-         private string m_LastModifiedBy;
 
-         [IsOnlyRead]
 
-         public string LastModifiedBy
 
-         {
 
-             get { return m_LastModifiedBy; }
 
-             set { m_LastModifiedBy = value; InvokePropertyChanged("LastModifiedBy"); }
 
-         }
 
-         private string m_Barcode;
 
-         public string Barcode
 
-         {
 
-             get { return m_Barcode; }
 
-             set { m_Barcode = value; InvokePropertyChanged("Barcode"); }
 
-         }
 
-         private string m_BasePressure;
 
-         public string BasePressure
 
-         {
 
-             get { return m_BasePressure; }
 
-             set { m_BasePressure = value; InvokePropertyChanged("BasePressure"); }
 
-         }
 
-         private string m_ChillerTemp;
 
-         public string ChillerTemp
 
-         {
 
-             get { return m_ChillerTemp; }
 
-             set { m_ChillerTemp = value; InvokePropertyChanged("ChillerTemp"); }
 
-         }
 
-         private int m_RFHoldTime = 1000;
 
-         public int RFHoldTime
 
-         {
 
-             get { return m_RFHoldTime; }
 
-             set { m_RFHoldTime = value; InvokePropertyChanged("RFHoldTime"); }
 
-         }
 
-         private int m_BiasRFHoldTime = 1000;
 
-         public int BiasRFHoldTime
 
-         {
 
-             get { return m_BiasRFHoldTime; }
 
-             set { m_BiasRFHoldTime = value; InvokePropertyChanged("BiasRFHoldTime"); }
 
-         }
 
-         private string m_Comment;
 
-         public string Comment
 
-         {
 
-             get { return m_Comment; }
 
-             set { m_Comment = value; InvokePropertyChanged("Comment"); }
 
-         }
 
-         //private string m_ChillerTemp1;
 
-         //public string ChillerTemp1
 
-         //{
 
-         //    get { return m_ChillerTemp1; }
 
-         //    set { m_ChillerTemp1 = value; InvokePropertyChanged("ChillerTemp1"); }
 
-         //}
 
-         //private string m_ChillerTemp2;
 
-         //public string ChillerTemp2
 
-         //{
 
-         //    get { return m_ChillerTemp2; }
 
-         //    set { m_ChillerTemp2 = value; InvokePropertyChanged("ChillerTemp2"); }
 
-         //}
 
-         //private string m_ChillerTemp3;
 
-         //public string ChillerTemp3
 
-         //{
 
-         //    get { return m_ChillerTemp3; }
 
-         //    set { m_ChillerTemp3 = value; InvokePropertyChanged("ChillerTemp3"); }
 
-         //}
 
-         //private string m_ChillerTemp4;
 
-         //public string ChillerTemp4
 
-         //{
 
-         //    get { return m_ChillerTemp4; }
 
-         //    set { m_ChillerTemp4 = value; InvokePropertyChanged("ChillerTemp4"); }
 
-         //}
 
-         public event PropertyChangedEventHandler PropertyChanged;
 
-         public void InvokePropertyChanged(string propertyName)
 
-         {
 
-             if (PropertyChanged != null)
 
-             {
 
-                 PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));
 
-             }
 
-         }
 
-     }
 
-     public class ProcessUnitBase
 
-     {
 
-         [JsonIgnore]
 
-         public Func<ProcessUnitBase, RecipeStep, RState> checker;
 
-         [JsonIgnore]
 
-         public Func<ProcessUnitBase, RecipeStep, RState> starter;
 
-         [JsonIgnore]
 
-         public Action<ProcessUnitBase, RecipeStep> end;
 
-         //[JsonIgnore]
 
-         //public string Name { get; set; }
 
-         //[JsonIgnore]
 
-         //public ProcessModule Moudle { get; set; }
 
-         public RState Start(RecipeStep step)
 
-         {
 
-             if (starter != null)
 
-                 return starter(this, step);
 
-             return RState.Running;
 
-         }
 
-         public RState Run(RecipeStep step)
 
-         {
 
-             if (checker != null)
 
-                 return checker(this, step);
 
-             return RState.Running;
 
-         }
 
-         public void End(RecipeStep step)
 
-         {
 
-             if (end != null)
 
-                 end(this, step);
 
-         }
 
-     }
 
-     [Serializable]
 
-     public class RecipeStep : INotifyPropertyChanged
 
-     {
 
-         [JsonIgnore]
 
-         public Func<RecipeStep, RState> checker;
 
-         [JsonIgnore]
 
-         public Func<RecipeStep, RState> starter;
 
-         [JsonIgnore]
 
-         public Func<RecipeStep, RState> ender;
 
-         private int m_StepNo = 1;
 
-         [IsOnlyRead]
 
-         public int StepNo
 
-         {
 
-             get { return m_StepNo; }
 
-             set { m_StepNo = value; InvokePropertyChanged("StepNo"); }
 
-         }
 
-         private StepType m_StepType;
 
-         [JsonConverter(typeof(StringEnumConverter))]
 
-         public StepType Type
 
-         {
 
-             get { return m_StepType; }
 
-             set { m_StepType = value; InvokePropertyChanged("Type"); }
 
-         }
 
-         private int m_Time;
 
-         public int Time
 
-         {
 
-             get { return m_Time; }
 
-             set { m_Time = value; InvokePropertyChanged("Time"); }
 
-         }
 
-         private string m_Description;
 
-         public string Description
 
-         {
 
-             get { return m_Description; }
 
-             set { m_Description = value; InvokePropertyChanged("Description"); }
 
-         }
 
-         private string m_EPDConfigName;
 
-         public string EPDConfig
 
-         {
 
-             get { return m_EPDConfigName; }
 
-             set { m_EPDConfigName = value; InvokePropertyChanged("EPDConfig"); }
 
-         }
 
-         private int m_MinEndPointTime;
 
-         public int MinEndPointTime
 
-         {
 
-             get { return m_MinEndPointTime; }
 
-             set { m_MinEndPointTime = value; InvokePropertyChanged("MinEndPointTime"); }
 
-         }
 
-         private int m_MaxEndPointTime;
 
-         public int MaxEndPointTime
 
-         {
 
-             get { return m_MaxEndPointTime; }
 
-             set { m_MaxEndPointTime = value; InvokePropertyChanged("MaxEndPointTime"); }
 
-         }
 
-         //private bool m_EnableRamp;
 
-         //public bool EnableRamp
 
-         //{
 
-         //    get { return m_EnableRamp; }
 
-         //    set { m_EnableRamp = value; InvokePropertyChanged("EnableRamp"); }
 
-         //}
 
-         private int m_OverEtchPercent;
 
-         public int OverEtchPercent
 
-         {
 
-             get { return m_OverEtchPercent; }
 
-             set { m_OverEtchPercent = value; InvokePropertyChanged("OverEtchPercent"); }
 
-         }
 
-         private bool m_CycleStart;
 
-         public bool CycleStart
 
-         {
 
-             get { return m_CycleStart; }
 
-             set { m_CycleStart = value; InvokePropertyChanged("CycleStart"); }
 
-         }
 
-         private bool m_CycleEnd;
 
-         public bool CycleEnd
 
-         {
 
-             get { return m_CycleEnd; }
 
-             set { m_CycleEnd = value; InvokePropertyChanged("CycleEnd"); }
 
-         }
 
-         private int m_CycleNumber;
 
-         public int CycleNumber
 
-         {
 
-             get { return m_CycleNumber; }
 
-             set { m_CycleNumber = value; InvokePropertyChanged("CycleNumber"); }
 
-         }
 
-         private ObservableCollection<Object> lstUnit = new ObservableCollection<Object>();
 
-         public ObservableCollection<Object> LstUnit
 
-         {
 
-             get { return lstUnit; }
 
-             set { lstUnit = value; InvokePropertyChanged("LstUnit"); }
 
-         }
 
-         private Stopwatch _stepTimer = new Stopwatch();
 
-         public long ElapsedTime()
 
-         {
 
-             return _stepTimer.ElapsedMilliseconds;
 
-         }
 
-         public void StartStepTimer()
 
-         {
 
-             _stepTimer.Restart();
 
-         }
 
-         private long _lastEPDStepTimne = 0;
 
-         public void RecordEPDStepTime()
 
-         {
 
-             _lastEPDStepTimne = _stepTimer.ElapsedMilliseconds;
 
-         }
 
-         public long GetLastEPDStepTime()
 
-         {
 
-             return _lastEPDStepTimne;
 
-         }
 
-         public RState Start()
 
-         {
 
-             starter(this);
 
-             foreach (var unit in lstUnit)
 
-             {
 
-                 var processUnit = unit as ProcessUnitBase;
 
-                 if (processUnit != null)
 
-                 {
 
-                     var state = processUnit.Start(this);
 
-                     if (state != RState.Running)
 
-                         return state;
 
-                 }
 
-                 else
 
-                     return RState.Failed;
 
-             }
 
-             return RState.Running;
 
-         }
 
-         public RState Start(int steps, int currentstep)
 
-         {
 
-             starter(this);
 
-             foreach (var unit in lstUnit)
 
-             {
 
-                 var processUnit = unit as ProcessUnitBase;
 
-                 if (processUnit != null)
 
-                 {
 
-                     var state = processUnit.Start(this);
 
-                     if (state != RState.Running)
 
-                         return state;
 
-                 }
 
-                 else
 
-                     return RState.Failed;
 
-             }
 
-             return RState.Running;
 
-         }
 
-         public RState Run()
 
-         {
 
-             if (checker(this) == RState.End)
 
-                 return RState.End;
 
-             bool bStable = true;
 
-             foreach (var unit in lstUnit)
 
-             {
 
-                 var processUnit = unit as ProcessUnitBase;
 
-                 if (processUnit != null)
 
-                 {
 
-                     var state = processUnit.Run(this);
 
-                     if (Type == StepType.Stable)
 
-                     {
 
-                         if (state != RState.Running && state != RState.End)
 
-                             return state;
 
-                         if (state == RState.Running)
 
-                             bStable = false;
 
-                     }
 
-                     else
 
-                     {
 
-                         if (state != RState.Running)
 
-                             return state;
 
-                     }
 
-                 }
 
-                 else
 
-                     return RState.Failed;
 
-             }
 
-             return (Type == StepType.Stable && bStable) ? RState.End : RState.Running;
 
-         }
 
-         public void End()
 
-         {
 
-             foreach (var unit in lstUnit)
 
-             {
 
-                 var processUnit = unit as ProcessUnitBase;
 
-                 if (processUnit != null)
 
-                 {
 
-                     processUnit.End(this);
 
-                 }
 
-             }
 
-             ender(this);
 
-         }
 
-         public double RampFactor()
 
-         {
 
-             return _stepTimer.ElapsedMilliseconds / (Time * 1000.0);
 
-         }
 
-         public void AppendUnit(ProcessUnitBase unit)
 
-         {
 
-             lstUnit.Append(unit);
 
-         }
 
-         public event PropertyChangedEventHandler PropertyChanged;
 
-         public void InvokePropertyChanged(string propertyName)
 
-         {
 
-             if (PropertyChanged != null)
 
-             {
 
-                 PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));
 
-             }
 
-         }
 
-     }
 
-     public class Recipe : INotifyPropertyChanged
 
-     {
 
-         private RecipeHead m_Header = new RecipeHead();
 
-         public RecipeHead Header
 
-         {
 
-             get { return m_Header; }
 
-             set { m_Header = value; InvokePropertyChanged("Header"); }
 
-         }
 
-         private ObservableCollection<RecipeStep> m_Steps;
 
-         public ObservableCollection<RecipeStep> Steps
 
-         {
 
-             get { return m_Steps; }
 
-             set { m_Steps = value; InvokePropertyChanged("Steps"); }
 
-         }
 
-         public static Recipe Load(string recipeFile)
 
-         {
 
-             var recipe = JsonConvert.DeserializeObject<Recipe>(recipeFile);
 
-             if (recipe == null)
 
-             {
 
-                 return null;
 
-             }
 
-             foreach (var step in recipe.Steps)
 
-             {
 
-                 ObservableCollection<ProcessUnitBase> unit = new ObservableCollection<ProcessUnitBase>();
 
-                 for (int i = 0; i < step.LstUnit.Count; i++)
 
-                 {
 
-                     string value = step.LstUnit[i].ToString();
 
-                     string[] striparr = value.Split(new string[] { "\r\n" }, StringSplitOptions.None);
 
-                     string item1 = striparr[1].Remove(0, 15);
 
-                     string item2 = item1.Remove(item1.Length - 2, 2);
 
-                     switch (item2)
 
-                     {
 
-                         case "PressureModeUnit":
 
-                             unit.Add(JsonConvert.DeserializeObject<PressureByPressureModeUnit>(step.LstUnit[i].ToString()));
 
-                             break;
 
-                         //case "PressureByValveModeUnit":
 
-                         //    unit.Add(JsonConvert.DeserializeObject<PressureByValveModeUnit>(step.LstUnit[i].ToString()));
 
-                         //    break;
 
-                         case "TCPUnit":
 
-                             unit.Add(JsonConvert.DeserializeObject<TCPUnit>(step.LstUnit[i].ToString()));
 
-                             break;
 
-                         case "BiasUnit":
 
-                             unit.Add(JsonConvert.DeserializeObject<BiasUnit>(step.LstUnit[i].ToString()));
 
-                             break;
 
-                         case "GasControlUnit":
 
-                             unit.Add(JsonConvert.DeserializeObject<GasControlUnit>(step.LstUnit[i].ToString()));
 
-                             break;
 
-                         case "ESCHVUnit":
 
-                             unit.Add(JsonConvert.DeserializeObject<ESCHVUnit>(step.LstUnit[i].ToString()));
 
-                             break;
 
-                         case "ProcessKitUnit":
 
-                             unit.Add(JsonConvert.DeserializeObject<ProcessKitUnit>(step.LstUnit[i].ToString()));
 
-                             break;
 
-                         case "HeaterUnit":
 
-                             unit.Add(JsonConvert.DeserializeObject<HeaterUnit>(step.LstUnit[i].ToString()));
 
-                             break;
 
-                         case "GasUnit":
 
-                             unit.Add(JsonConvert.DeserializeObject<Kepler2200GasControlUnit>(step.LstUnit[i].ToString()));
 
-                             break;
 
-                         case "SEGasControlUnit":
 
-                             unit.Add(JsonConvert.DeserializeObject<VenusSEGasControlUnit>(step.LstUnit[i].ToString()));
 
-                             break;
 
-                     }
 
-                 }
 
-                 step.LstUnit.Clear();
 
-                 unit.ToList().ForEach(x =>
 
-                 {
 
-                     step.LstUnit.Add(x);
 
-                 });
 
-             }
 
-             return recipe;
 
-         }
 
-         public bool Validate()
 
-         {
 
-             return true;
 
-         }
 
-         public bool Save(string recipeFile)
 
-         {
 
-             return true;
 
-         }
 
-         public event PropertyChangedEventHandler PropertyChanged;
 
-         public void InvokePropertyChanged(string propertyName)
 
-         {
 
-             if (PropertyChanged != null)
 
-             {
 
-                 PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));
 
-             }
 
-         }
 
-     }
 
-     public class RecipeUnity
 
-     {
 
-         public static string ConvertJsonString(string str)
 
-         {
 
-             JsonSerializer serializer = new JsonSerializer();
 
-             TextReader tr = new StringReader(str);
 
-             JsonTextReader jtr = new JsonTextReader(tr);
 
-             object obj = serializer.Deserialize(jtr);
 
-             if (obj != null)
 
-             {
 
-                 StringWriter textWriter = new StringWriter();
 
-                 JsonTextWriter jsonWriter = new JsonTextWriter(textWriter)
 
-                 {
 
-                     Formatting = Newtonsoft.Json.Formatting.Indented,
 
-                     Indentation = 4,
 
-                     IndentChar = ' '
 
-                 };
 
-                 serializer.Serialize(jsonWriter, obj);
 
-                 return textWriter.ToString();
 
-             }
 
-             else
 
-             {
 
-                 return str;
 
-             }
 
-         }
 
-         public static string RecipeToString(Recipe recipe)
 
-         {
 
-             return JsonConvert.SerializeObject(recipe);
 
-         }
 
-         public static String CreateRecipe(JetChamber currentChamber, RecipeType recipeType, string recipeName)
 
-         {
 
-             Recipe recipe = new Recipe();
 
-             recipe.Header = new RecipeHead();
 
-             recipe.Header.CreateTime = DateTime.Now.ToString();
 
-             recipe.Header.EditTime = DateTime.Now.ToString();
 
-             recipe.Header.Type = recipeType;
 
-             recipe.Header.ChamberType = currentChamber;
 
-             recipe.Header.Name = recipeName;
 
-             recipe.Header.LastModifiedBy = "Admin";
 
-             recipe.Steps = new ObservableCollection<RecipeStep>();
 
-             RecipeStep recipeStep = new RecipeStep();
 
-             recipeStep.LstUnit = GetAllUnits(currentChamber, recipeType);
 
-             recipe.Steps.Add(recipeStep);
 
-             var recipeString = JsonConvert.SerializeObject(recipe);
 
-             return recipeString;
 
-         }
 
-         public static ObservableCollection<Object> GetAllUnits(JetChamber jetChamber)
 
-         {
 
-             ObservableCollection<Object> LstUnit = new ObservableCollection<object>();
 
-             switch (jetChamber)
 
-             {
 
-                 case JetChamber.Venus:
 
-                     foreach (var item in Enum.GetValues(typeof(VenusUnits)))
 
-                     {
 
-                         Type t = Type.GetType($"PunkHPX8_Core.{item.ToString()}");
 
-                         var obj = System.Activator.CreateInstance(t);
 
-                         LstUnit.Add(obj);
 
-                     }
 
-                     break;
 
-                 case JetChamber.Kepler2300:
 
-                     foreach (var item in Enum.GetValues(typeof(Kepler2300Uints)))
 
-                     {
 
-                         Type t = Type.GetType($"PunkHPX8_Core.{item.ToString()}");
 
-                         var obj = System.Activator.CreateInstance(t);
 
-                         LstUnit.Add(obj);
 
-                     }
 
-                     break;
 
-                 case JetChamber.Kepler2200A:
 
-                     foreach (var item in Enum.GetValues(typeof(Kepler2200AUnits)))
 
-                     {
 
-                         Type t = Type.GetType($"PunkHPX8_Core.{item.ToString()}");
 
-                         var obj = System.Activator.CreateInstance(t);
 
-                         LstUnit.Add(obj);
 
-                     }
 
-                     break;
 
-                 case JetChamber.Kepler2200B:
 
-                     foreach (var item in Enum.GetValues(typeof(Kepler2200BUnits)))
 
-                     {
 
-                         Type t = Type.GetType($"PunkHPX8_Core.{item.ToString()}");
 
-                         var obj = System.Activator.CreateInstance(t);
 
-                         LstUnit.Add(obj);
 
-                     }
 
-                     break;
 
-                 case JetChamber.VenusSE:
 
-                     foreach (var item in Enum.GetValues(typeof(VenusSEUnits)))
 
-                     {
 
-                         Type t = Type.GetType($"PunkHPX8_Core.{item.ToString()}");
 
-                         var obj = System.Activator.CreateInstance(t);
 
-                         LstUnit.Add(obj);
 
-                     }
 
-                     break;
 
-             }
 
-             return LstUnit;
 
-         }
 
-         public static ObservableCollection<Object> GetAllUnits(JetChamber jetChamber, RecipeType recipeType)
 
-         {
 
-             ObservableCollection<Object> LstUnit = new ObservableCollection<object>();
 
-             switch (jetChamber)
 
-             {
 
-                 case JetChamber.Venus:
 
-                     if (recipeType == RecipeType.Clean)
 
-                     {
 
-                         foreach (var item in Enum.GetValues(typeof(VenusCleanRecipeUnits)))
 
-                         {
 
-                             Type t = Type.GetType($"PunkHPX8_Core.{item.ToString()}");
 
-                             var obj = System.Activator.CreateInstance(t);
 
-                             LstUnit.Add(obj);
 
-                         }
 
-                     }
 
-                     else
 
-                     {
 
-                         foreach (var item in Enum.GetValues(typeof(VenusUnits)))
 
-                         {
 
-                             Type t = Type.GetType($"PunkHPX8_Core.{item.ToString()}");
 
-                             var obj = System.Activator.CreateInstance(t);
 
-                             LstUnit.Add(obj);
 
-                         }
 
-                     }
 
-                     break;
 
-                 case JetChamber.Kepler2300:
 
-                     if (recipeType == RecipeType.Clean)
 
-                     {
 
-                         foreach (var item in Enum.GetValues(typeof(Kepler2300CleanRecipeUints)))
 
-                         {
 
-                             Type t = Type.GetType($"PunkHPX8_Core.{item.ToString()}");
 
-                             var obj = System.Activator.CreateInstance(t);
 
-                             LstUnit.Add(obj);
 
-                         }
 
-                     }
 
-                     else
 
-                     {
 
-                         foreach (var item in Enum.GetValues(typeof(Kepler2300Uints)))
 
-                         {
 
-                             Type t = Type.GetType($"PunkHPX8_Core.{item.ToString()}");
 
-                             var obj = System.Activator.CreateInstance(t);
 
-                             LstUnit.Add(obj);
 
-                         }
 
-                     }
 
-                     break;
 
-                 case JetChamber.Kepler2200A:
 
-                     foreach (var item in Enum.GetValues(typeof(Kepler2200AUnits)))
 
-                     {
 
-                         Type t = Type.GetType($"PunkHPX8_Core.{item.ToString()}");
 
-                         var obj = System.Activator.CreateInstance(t);
 
-                         LstUnit.Add(obj);
 
-                     }
 
-                     break;
 
-                 case JetChamber.Kepler2200B:
 
-                     foreach (var item in Enum.GetValues(typeof(Kepler2200BUnits)))
 
-                     {
 
-                         Type t = Type.GetType($"PunkHPX8_Core.{item.ToString()}");
 
-                         var obj = System.Activator.CreateInstance(t);
 
-                         LstUnit.Add(obj);
 
-                     }
 
-                     break;
 
-                 case JetChamber.VenusSE:
 
-                     foreach (var item in Enum.GetValues(typeof(VenusSEUnits)))
 
-                     {
 
-                         Type t = Type.GetType($"PunkHPX8_Core.{item.ToString()}");
 
-                         var obj = System.Activator.CreateInstance(t);
 
-                         LstUnit.Add(obj);
 
-                     }
 
-                     break;
 
-             }
 
-             return LstUnit;
 
-         }
 
-     }
 
- }
 
 
  |