コード例 #1
0
 public void Init()
 {
     restTime = EndTime;
     //模型结构确定
     if (CurrentMotion == MotionType.MoveRotateSingle || CurrentMotion == MotionType.MoveRotateEvery)          //平移+旋转
     {
         for (int i = 0; i < ChildList.Count; i++)
         {
             ChildList[i].parent = EmptyObj.transform;
         }
     }
     else
     {
         for (int i = 0; i < ChildList.Count; i++)
         {
             ChildList[i].parent = ParentTrans;
         }
         if (CurrentMotion == MotionType.VisualPath)
         {
             if (MotionPara.isEditor)                  //显示绿线初始化
             {
                 ParentTrans.gameObject.AddComponent <VisualUnit>();
                 VisualUnit st_VUnit = ParentTrans.gameObject.GetComponent <VisualUnit>();
                 st_VUnit.nodes         = crSpline.controlPoints;
                 st_VUnit.isInitialized = true;
             }
         }
     }
 }
コード例 #2
0
    private float lastFrameTime   = 0f;                                         //记录上一帧时间

    //结构初始化
    public void Init()
    {
        restTime = EndTime;
        if (NeedChange)
        {
            if (FormerCamera != null)
            {
                FormerCamera.enabled = false;
            }
            CurrentCamera.enabled = true;
        }
        if (needSetPos)
        {
            CurrentCamera.transform.position = StartPos;
        }
        if (CurrentMotion == CameraMotionType.VisualPath)
        {
            if (MotionPara.isEditor)  //显示绿线初始化
            {
                CurrentCamera.gameObject.AddComponent <VisualUnit>();
                VisualUnit st_VUnit = CurrentCamera.gameObject.GetComponent <VisualUnit>();
                st_VUnit.nodes         = crSpline.controlPoints;
                st_VUnit.isInitialized = true;
            }
        }
    }
コード例 #3
0
 public void AddUnit(VisualUnit item)
 {
     if (item != null && !Items.Contains(item))
     {
         Items.Add(item);
         //   if (_aggregator != null)
         //      _aggregator.Raise<FlowsheetElementAddedMessage>(new FlowsheetElementAddedMessage { TimeStamp = DateTime.Now, Sender = this, Parameter = item });
     }
 }
コード例 #4
0
        public void RemoveItem(VisualUnit unit)
        {
            Items.Remove(unit);
            var incoming = Connections.Where(c => c.Sink.Owner == unit).ToList();
            var outgoing = Connections.Where(c => c.Source.Owner == unit).ToList();

            foreach (var con in incoming)
            {
                RemoveConnection(con);
            }
            foreach (var con in outgoing)
            {
                RemoveConnection(con);
            }
        }
コード例 #5
0
        public static VisualUnit Create(DocumentationElement element, FlowsheetIcon icon)
        {
            switch (icon.IconType)
            {
            case IconTypes.Text:
            {
                var newItem = new VisualUnit();
                newItem.Name        = "Label01";
                newItem.Type        = "Text";
                newItem.X           = icon.X;
                newItem.Y           = icon.Y;
                newItem.Height      = icon.Height;
                newItem.Width       = icon.Width;
                newItem.DisplayIcon = IconTypes.Text;
                newItem.FillColor   = icon.FillColor;
                newItem.BorderColor = icon.BorderColor;
                newItem.Model       = element;
                return(newItem);
            }

            case IconTypes.StreamTable:
            {
                var newItem = new VisualUnit();
                newItem.Name        = "Table01";
                newItem.Type        = "StreamTable";
                newItem.X           = icon.X;
                newItem.Y           = icon.Y;
                newItem.Height      = icon.Height;
                newItem.Width       = icon.Width;
                newItem.DisplayIcon = IconTypes.StreamTable;
                newItem.FillColor   = icon.FillColor;
                newItem.BorderColor = icon.BorderColor;
                newItem.Model       = element;
                return(newItem);
            }

            case IconTypes.Spreadsheet:
            {
                var newItem = new VisualUnit();
                newItem.Name        = "Sheet01";
                newItem.Type        = "Spreadsheet";
                newItem.X           = icon.X;
                newItem.Y           = icon.Y;
                newItem.Height      = icon.Height;
                newItem.Width       = icon.Width;
                newItem.DisplayIcon = IconTypes.Spreadsheet;
                newItem.FillColor   = icon.FillColor;
                newItem.BorderColor = icon.BorderColor;
                newItem.Model       = element;
                return(newItem);
            }

            default:
            {
                var newItem = new VisualUnit();
                newItem.Name        = "U01";
                newItem.X           = icon.X;
                newItem.Y           = icon.Y;
                newItem.Height      = 60;
                newItem.Width       = 60;
                newItem.DisplayIcon = IconTypes.Block;
                return(newItem);
            }
            }
        }
コード例 #6
0
ファイル: ItemFactory.cs プロジェクト: shao130/OpenFMSL
        public static VisualUnit Create(IconTypes name, double x, double y)
        {
            switch (name)
            {
            case IconTypes.Variable:
            {
                var newItem = new VisualUnit();
                newItem.Name           = "Variable01";
                newItem.Type           = "Variable";
                newItem.FillColor      = "GhostWhite";
                newItem.BorderColor    = "Transparent";
                newItem.IsLabelVisible = false;
                newItem.X           = x;
                newItem.Y           = y;
                newItem.Height      = 20;
                newItem.Width       = 200;
                newItem.DisplayIcon = IconTypes.Variable;
                return(newItem);
            }

            case IconTypes.PIAdapter:
            {
                var newItem = new VisualUnit();
                newItem.Name           = "PIAdapter01";
                newItem.Type           = "PIAdapter";
                newItem.FillColor      = "GhostWhite";
                newItem.BorderColor    = "GhostWhite";
                newItem.IsLabelVisible = false;
                newItem.X           = x;
                newItem.Y           = y;
                newItem.Height      = 300;
                newItem.Width       = 200;
                newItem.DisplayIcon = IconTypes.PIAdapter;

                return(newItem);
            }

            case IconTypes.Spreadsheet:
            {
                var newItem = new VisualUnit();
                newItem.Name           = "Spreadsheet01";
                newItem.Type           = "Spreadsheet";
                newItem.FillColor      = "GhostWhite";
                newItem.BorderColor    = "GhostWhite";
                newItem.IsLabelVisible = false;
                newItem.X           = x;
                newItem.Y           = y;
                newItem.Height      = 300;
                newItem.Width       = 200;
                newItem.DisplayIcon = IconTypes.Spreadsheet;

                return(newItem);
            }

            case IconTypes.Button:
            {
                var newItem = new VisualUnit();
                newItem.Name           = "Button01";
                newItem.Type           = "Button";
                newItem.FillColor      = "GhostWhite";
                newItem.BorderColor    = "GhostWhite";
                newItem.IsLabelVisible = false;
                newItem.X           = x;
                newItem.Y           = y;
                newItem.Height      = 40;
                newItem.Width       = 100;
                newItem.DisplayIcon = IconTypes.Button;

                return(newItem);
            }

            case IconTypes.Equation:
            {
                var newItem = new VisualUnit();
                newItem.Name        = "Equation01";
                newItem.Type        = "Equation";
                newItem.X           = x;
                newItem.Y           = y;
                newItem.Height      = 40;
                newItem.Width       = 80;
                newItem.DisplayIcon = IconTypes.Equation;
                newItem.Report      = "Click to enter equation...";
                newItem.FillColor   = "GhostWhite";
                newItem.BorderColor = "DimGray";
                return(newItem);
            }

            case IconTypes.Text:
            case IconTypes.None:
            {
                var newItem = new VisualUnit();
                newItem.Name        = "Label01";
                newItem.Type        = "Text";
                newItem.X           = x;
                newItem.Y           = y;
                newItem.Height      = 50;
                newItem.Width       = 50;
                newItem.DisplayIcon = IconTypes.Text;
                newItem.Report      = "Enter your text here...";
                newItem.FillColor   = "GhostWhite";
                newItem.BorderColor = "GhostWhite";
                return(newItem);
            }

            case IconTypes.Feed:
            {
                var newItem = new VisualUnit();
                newItem.Name        = "S01";
                newItem.Type        = "MaterialStream";
                newItem.X           = x;
                newItem.Y           = y;
                newItem.Height      = 25;
                newItem.Width       = 50;
                newItem.DisplayIcon = IconTypes.Stream;
                var inlet = new Connector
                {
                    Name      = "Stream",
                    Type      = "Material",
                    X         = 45,
                    Y         = 15,
                    Owner     = newItem,
                    Intent    = ConnectorIntent.Outlet,
                    Direction = ConnectorDirection.Right
                };
                newItem.Connectors.Add(inlet);
                return(newItem);
            }

            case IconTypes.Product:
            {
                var newItem = new VisualUnit();
                newItem.Name        = "P01";
                newItem.Type        = "MaterialStream";
                newItem.X           = x;
                newItem.Y           = y;
                newItem.Height      = 25;
                newItem.Width       = 50;
                newItem.DisplayIcon = IconTypes.Stream;

                var inlet = new Connector
                {
                    Name      = "Stream",
                    Type      = "Material",
                    X         = -5,
                    Y         = 15,
                    Owner     = newItem,
                    Intent    = ConnectorIntent.Inlet,
                    Direction = ConnectorDirection.Left
                };
                newItem.Connectors.Add(inlet);
                return(newItem);
            }

            case IconTypes.Breaker:
            {
                var newItem = new VisualUnit();
                newItem.Name        = "BR01";
                newItem.Type        = "Breaker";
                newItem.X           = x;
                newItem.Y           = y;
                newItem.Height      = 40;
                newItem.Width       = 60;
                newItem.DisplayIcon = IconTypes.Breaker;

                var inlet = new Connector
                {
                    Name      = "In",
                    Type      = "Material",
                    X         = -5,
                    Y         = (int)(newItem.Height / 2) - 5,
                    Owner     = newItem,
                    Direction = ConnectorDirection.Left,
                    Intent    = ConnectorIntent.Inlet
                };
                newItem.Connectors.Add(inlet);

                var outlet1 = new Connector
                {
                    Name      = "Out",
                    Type      = "Material",
                    X         = newItem.Width - 5,
                    Y         = (int)(newItem.Height / 2) - 5,
                    Owner     = newItem,
                    Direction = ConnectorDirection.Right
                };
                newItem.Connectors.Add(outlet1);
                return(newItem);
            }

            case IconTypes.PFR:
            {
                var newItem = new VisualUnit();
                newItem.Name        = "PFR1";
                newItem.Type        = "PFR";
                newItem.X           = x;
                newItem.Y           = y;
                newItem.Height      = 40;
                newItem.Width       = 100;
                newItem.DisplayIcon = IconTypes.PFR;

                var inlet = new Connector
                {
                    Name      = "In",
                    Type      = "Material",
                    X         = -5,
                    Y         = (int)(newItem.Height / 2) - 5,
                    Owner     = newItem,
                    Direction = ConnectorDirection.Left,
                    Intent    = ConnectorIntent.Inlet
                };
                newItem.Connectors.Add(inlet);

                var outlet1 = new Connector
                {
                    Name      = "Out",
                    Type      = "Material",
                    X         = newItem.Width - 5,
                    Y         = (int)(newItem.Height / 2) - 5,
                    Owner     = newItem,
                    Direction = ConnectorDirection.Right
                };
                newItem.Connectors.Add(outlet1);
                return(newItem);
            }

            case IconTypes.TwoPhaseFlash:
            {
                var newItem = new VisualUnit();
                newItem.Name        = "FLA01";
                newItem.Type        = "Flash2";
                newItem.X           = x;
                newItem.Y           = y;
                newItem.Height      = 40;
                newItem.Width       = 40;
                newItem.DisplayIcon = IconTypes.TwoPhaseFlash;
                var inlet = new Connector
                {
                    Name      = "In",
                    Type      = "Material",
                    X         = -5,
                    Y         = 15,
                    Owner     = newItem,
                    IconType  = ConnectorIconTypes.Box,
                    Intent    = ConnectorIntent.Inlet,
                    Direction = ConnectorDirection.Left
                };
                newItem.Connectors.Add(inlet);

                var outlet1 = new Connector
                {
                    Name      = "Vap",
                    Type      = "Material",
                    X         = newItem.Width / 2.0 - 5,
                    Y         = -5,
                    Owner     = newItem,
                    IconType  = ConnectorIconTypes.Box,
                    Intent    = ConnectorIntent.Outlet,
                    Direction = ConnectorDirection.Up
                };
                newItem.Connectors.Add(outlet1);

                var outlet2 = new Connector
                {
                    Name      = "Liq",
                    Type      = "Material",
                    X         = newItem.Width / 2.0 - 5,
                    Y         = newItem.Height - 5,
                    Owner     = newItem,
                    IconType  = ConnectorIconTypes.Box,
                    Intent    = ConnectorIntent.Outlet,
                    Direction = ConnectorDirection.Down
                };
                newItem.Connectors.Add(outlet2);
                return(newItem);
            }

            case IconTypes.FallingFilm:
            {
                var newItem = new VisualUnit();
                newItem.Name        = "FAFI01";
                newItem.Type        = "Flash2";
                newItem.X           = x;
                newItem.Y           = y;
                newItem.Height      = 100;
                newItem.Width       = 60;
                newItem.DisplayIcon = IconTypes.FallingFilm;

                var inlet = new Connector
                {
                    Name      = "In",
                    Type      = "Material",
                    X         = newItem.Width / 2 - 5,
                    Y         = -5,
                    Owner     = newItem,
                    IconType  = ConnectorIconTypes.Box,
                    Intent    = ConnectorIntent.Inlet,
                    Direction = ConnectorDirection.Up
                };
                newItem.Connectors.Add(inlet);

                var outlet1 = new Connector
                {
                    Name      = "Vap",
                    Type      = "Material",
                    X         = -5,
                    Y         = newItem.Height - 20,
                    Owner     = newItem,
                    IconType  = ConnectorIconTypes.Box,
                    Intent    = ConnectorIntent.Outlet,
                    Direction = ConnectorDirection.Left
                };
                newItem.Connectors.Add(outlet1);

                var outlet2 = new Connector
                {
                    Name      = "Liq",
                    Type      = "Material",
                    X         = newItem.Width / 2 - 5,
                    Y         = newItem.Height - 5,
                    Owner     = newItem,
                    IconType  = ConnectorIconTypes.Box,
                    Intent    = ConnectorIntent.Outlet,
                    Direction = ConnectorDirection.Down
                };
                newItem.Connectors.Add(outlet2);
                return(newItem);
            }

            case IconTypes.ThreePhaseFlash:
            {
                var newItem = new VisualUnit();
                newItem.Name        = "F301";
                newItem.Type        = "Flash3";
                newItem.X           = x;
                newItem.Y           = y;
                newItem.Height      = 60;
                newItem.Width       = 100;
                newItem.DisplayIcon = IconTypes.ThreePhaseFlash;
                //newItem.SimulationObject = ModelFactory.Create(system, newItem);
                var inlet = new Connector
                {
                    Name      = "In",
                    Type      = "Material",
                    X         = -5,
                    Y         = newItem.Height / 2.0 - 5,
                    Owner     = newItem,
                    Direction = ConnectorDirection.Left
                };
                newItem.Connectors.Add(inlet);

                var outlet1 = new Connector
                {
                    Name      = "Vap",
                    Type      = "Material",
                    X         = newItem.Width - 25,
                    Y         = -5,
                    Owner     = newItem,
                    Direction = ConnectorDirection.Up
                };
                newItem.Connectors.Add(outlet1);

                var outlet2 = new Connector
                {
                    Name      = "Liq1",
                    Type      = "Material",
                    X         = newItem.Width - 5,
                    Y         = 25,
                    Owner     = newItem,
                    Direction = ConnectorDirection.Right
                };
                newItem.Connectors.Add(outlet2);

                var outlet3 = new Connector
                {
                    Name      = "Liq2",
                    Type      = "Material",
                    X         = newItem.Width - 25,
                    Y         = newItem.Height - 5,
                    Owner     = newItem,
                    Direction = ConnectorDirection.Down
                };
                newItem.Connectors.Add(outlet3);
                return(newItem);
            }

            case IconTypes.Decanter:
            {
                var newItem = new VisualUnit();
                newItem.Name        = "DEC01";
                newItem.Type        = "Decanter";
                newItem.X           = x;
                newItem.Y           = y;
                newItem.Height      = 80;
                newItem.Width       = 120;
                newItem.DisplayIcon = IconTypes.Decanter;
                var inlet = new Connector
                {
                    Name     = "Inlet[0]",
                    Type     = "Material",
                    X        = -5,
                    Y        = (int)(newItem.Height / 2) - 5,
                    Owner    = newItem,
                    IconType = ConnectorIconTypes.NozzleLeft
                };
                newItem.Connectors.Add(inlet);

                var outlet1 = new Connector
                {
                    Name     = "Outlet[0]",
                    Type     = "Material",
                    X        = newItem.Width - 5,
                    Y        = (int)(newItem.Height / 2) - 5,
                    Owner    = newItem,
                    IconType = ConnectorIconTypes.NozzleRight
                };
                newItem.Connectors.Add(outlet1);

                var outlet2 = new Connector
                {
                    Name     = "Outlet[1]",
                    Type     = "Material",
                    X        = newItem.Width / 2.0 - 5,
                    Y        = newItem.Height - 5,
                    Owner    = newItem,
                    IconType = ConnectorIconTypes.NozzleBottom
                };
                newItem.Connectors.Add(outlet2);
                return(newItem);
            }

            case IconTypes.Splitter:
            {
                var newItem = new VisualUnit
                {
                    Name        = "SPLIT01",
                    Type        = "Splitter",
                    X           = x,
                    Y           = y,
                    Height      = 40,
                    Width       = 40,
                    DisplayIcon = IconTypes.Splitter,
                };

                var inlet = new Connector
                {
                    Name      = "In",
                    Type      = "Material",
                    X         = -5,
                    Y         = (int)(newItem.Height / 2) - 5,
                    Owner     = newItem,
                    IconType  = ConnectorIconTypes.Box,
                    Intent    = ConnectorIntent.Inlet,
                    Direction = ConnectorDirection.Left
                };
                newItem.Connectors.Add(inlet);

                var outlet1 = new Connector
                {
                    Name      = "Out1",
                    Type      = "Material",
                    X         = newItem.Width / 2.0 - 5,
                    Y         = -5,
                    Owner     = newItem,
                    IconType  = ConnectorIconTypes.Box,
                    Intent    = ConnectorIntent.Outlet,
                    Direction = ConnectorDirection.Up
                };
                newItem.Connectors.Add(outlet1);

                var outlet2 = new Connector
                {
                    Name      = "Out2",
                    Type      = "Material",
                    X         = newItem.Width / 2.0 - 5,
                    Y         = newItem.Height - 5,
                    Owner     = newItem,
                    IconType  = ConnectorIconTypes.Box,
                    Intent    = ConnectorIntent.Outlet,
                    Direction = ConnectorDirection.Down
                };
                newItem.Connectors.Add(outlet2);
                return(newItem);
            }

            case IconTypes.Mixer:
            {
                var newItem = new VisualUnit
                {
                    Name        = "MIX01",
                    Type        = "Mixer",
                    X           = x,
                    Y           = y,
                    Height      = 40,
                    Width       = 40,
                    DisplayIcon = IconTypes.Mixer,
                };

                var inlet = new Connector
                {
                    Name      = "In",
                    Type      = "Material",
                    X         = -5,
                    Y         = (int)(newItem.Height / 2.0) - 5,
                    Owner     = newItem,
                    IconType  = ConnectorIconTypes.Box,
                    Intent    = ConnectorIntent.Inlet,
                    Direction = ConnectorDirection.Left
                };
                newItem.Connectors.Add(inlet);

                var outlet1 = new Connector
                {
                    Name      = "Out",
                    Type      = "Material",
                    X         = newItem.Width - 5,
                    Y         = (int)(newItem.Height / 2.0) - 5,
                    Owner     = newItem,
                    IconType  = ConnectorIconTypes.Box,
                    Intent    = ConnectorIntent.Outlet,
                    Direction = ConnectorDirection.Right
                };
                newItem.Connectors.Add(outlet1);

                return(newItem);
            }

            case IconTypes.ComponentSplitter:
            {
                var newItem = new VisualUnit
                {
                    Name        = "CSPLIT01",
                    Type        = "ComponentSplitter",
                    X           = x,
                    Y           = y,
                    Height      = 60,
                    Width       = 60,
                    DisplayIcon = IconTypes.Block
                };
                //  newItem.SimulationObject = ModelFactory.Create(system, newItem);
                var inlet = new Connector
                {
                    Name  = "In",
                    Type  = "Material",
                    X     = -5,
                    Y     = (int)(newItem.Height / 2) - 5,
                    Owner = newItem
                };
                newItem.Connectors.Add(inlet);

                var outlet1 = new Connector
                {
                    Name  = "Out1",
                    Type  = "Material",
                    X     = newItem.Width - 5,
                    Y     = 5,
                    Owner = newItem
                };
                newItem.Connectors.Add(outlet1);

                var outlet2 = new Connector
                {
                    Name  = "Out2",
                    Type  = "Material",
                    X     = newItem.Width - 5,
                    Y     = newItem.Height - 15,
                    Owner = newItem
                };
                newItem.Connectors.Add(outlet2);
                return(newItem);
            }

            case IconTypes.Column:
            {
                var newItem = new VisualUnit();
                newItem.Name        = "COL01";
                newItem.Type        = "Column";
                newItem.X           = x;
                newItem.Y           = y;
                newItem.Height      = 260;
                newItem.Width       = 100;
                newItem.DisplayIcon = IconTypes.Column;

                var inlet = new Connector
                {
                    Name  = "Inlet[0]",
                    Type  = "Material",
                    X     = -5,
                    Y     = newItem.Height / 2.0 - 5,
                    Owner = newItem
                };
                newItem.Connectors.Add(inlet);

                var outlet3 = new Connector
                {
                    Name  = "Vapor",
                    Type  = "Material",
                    X     = newItem.Width - 40,
                    Y     = -5,
                    Owner = newItem
                };
                newItem.Connectors.Add(outlet3);


                var outlet1 = new Connector
                {
                    Name  = "Outlet[0]",
                    Type  = "Material",
                    X     = newItem.Width - 40,
                    Y     = 35,
                    Owner = newItem
                };
                newItem.Connectors.Add(outlet1);

                var outlet2 = new Connector
                {
                    Name  = "Outlet[1]",
                    Type  = "Material",
                    X     = newItem.Width - 40,
                    Y     = newItem.Height - 5,
                    Owner = newItem
                };
                newItem.Connectors.Add(outlet2);
                return(newItem);
            }

            case IconTypes.ColumnSection:
            {
                var newItem = new VisualUnit();
                newItem.Name        = "SEC01";
                newItem.Type        = "ColumnSection";
                newItem.X           = x;
                newItem.Y           = y;
                newItem.Height      = 300;
                newItem.Width       = 60;
                newItem.DisplayIcon = IconTypes.ColumnSection;

                var inlet = new Connector
                {
                    Name      = "Feeds",
                    Type      = "Material",
                    X         = -5,
                    Y         = newItem.Height / 2.0 - 5,
                    Owner     = newItem,
                    Intent    = ConnectorIntent.Inlet,
                    Direction = ConnectorDirection.Left
                };
                newItem.Connectors.Add(inlet);

                newItem.Connectors.Add(new Connector
                    {
                        Name      = "LOut",
                        Type      = "Material",
                        X         = newItem.Width / 2.0 - 5,
                        Y         = newItem.Height - 5,
                        Owner     = newItem,
                        Direction = ConnectorDirection.Down,
                        Intent    = ConnectorIntent.Outlet
                    });
                newItem.Connectors.Add(new Connector
                    {
                        Name      = "VOut",
                        Type      = "Material",
                        X         = newItem.Width / 2.0 - 5,
                        Y         = -5,
                        Owner     = newItem,
                        Direction = ConnectorDirection.Up,
                        Intent    = ConnectorIntent.Outlet
                    });

                newItem.Connectors.Add(new Connector
                    {
                        Name      = "LIn",
                        Type      = "Material",
                        X         = newItem.Width - 5,
                        Y         = 30,
                        Owner     = newItem,
                        Direction = ConnectorDirection.Right,
                        Intent    = ConnectorIntent.Inlet
                    });

                newItem.Connectors.Add(new Connector
                    {
                        Name      = "VIn",
                        Type      = "Material",
                        X         = newItem.Width - 5,
                        Y         = newItem.Height - 30,
                        Owner     = newItem,
                        Direction = ConnectorDirection.Right,
                        Intent    = ConnectorIntent.Inlet
                    });
                newItem.Connectors.Add(new Connector
                    {
                        Name      = "Sidestreams",
                        Type      = "Material",
                        X         = newItem.Width - 5,
                        Y         = newItem.Height / 2.0 - 5,
                        Owner     = newItem,
                        Direction = ConnectorDirection.Right,
                        Intent    = ConnectorIntent.Outlet
                    });

                return(newItem);
            }

            case IconTypes.RateBasedSection:
            {
                var newItem = new VisualUnit();
                newItem.Name        = "SEC01";
                newItem.Type        = "RateBasedSection";
                newItem.X           = x;
                newItem.Y           = y;
                newItem.Height      = 160;
                newItem.Width       = 80;
                newItem.DisplayIcon = IconTypes.RateBasedSection;

                newItem.Connectors.Add(new Connector
                    {
                        Name      = "LOut",
                        Type      = "Material",
                        X         = newItem.Width - 15,
                        Y         = newItem.Height - 10,
                        Owner     = newItem,
                        Direction = ConnectorDirection.Down,
                        Intent    = ConnectorIntent.Outlet
                    });
                newItem.Connectors.Add(new Connector
                    {
                        Name      = "VOut",
                        Type      = "Material",
                        X         = 5,
                        Y         = 5,
                        Owner     = newItem,
                        Direction = ConnectorDirection.Up,
                        Intent    = ConnectorIntent.Outlet
                    });

                newItem.Connectors.Add(new Connector
                    {
                        Name      = "LIn",
                        Type      = "Material",
                        X         = newItem.Width - 15,
                        Y         = 5,
                        Owner     = newItem,
                        Direction = ConnectorDirection.Up,
                        Intent    = ConnectorIntent.Inlet
                    });

                newItem.Connectors.Add(new Connector
                    {
                        Name      = "VIn",
                        Type      = "Material",
                        X         = 5,
                        Y         = newItem.Height - 10,
                        Owner     = newItem,
                        Direction = ConnectorDirection.Down,
                        Intent    = ConnectorIntent.Inlet
                    });

                return(newItem);
            }

            case IconTypes.FeedStage:
            {
                var newItem = new VisualUnit();
                newItem.Name        = "EQ01";
                newItem.Type        = "FeedStage";
                newItem.X           = x;
                newItem.Y           = y;
                newItem.Height      = 60;
                newItem.Width       = 80;
                newItem.DisplayIcon = IconTypes.FeedStage;

                newItem.Connectors.Add(new Connector
                    {
                        Name      = "In",
                        Type      = "Material",
                        X         = -5,
                        Y         = newItem.Height / 2 - 5,
                        Owner     = newItem,
                        Direction = ConnectorDirection.Left,
                        Intent    = ConnectorIntent.Inlet
                    });


                newItem.Connectors.Add(new Connector
                    {
                        Name      = "LOut",
                        Type      = "Material",
                        X         = newItem.Width - 15,
                        Y         = newItem.Height - 10,
                        Owner     = newItem,
                        Direction = ConnectorDirection.Down,
                        Intent    = ConnectorIntent.Outlet
                    });
                newItem.Connectors.Add(new Connector
                    {
                        Name      = "VOut",
                        Type      = "Material",
                        X         = 5,
                        Y         = 5,
                        Owner     = newItem,
                        Direction = ConnectorDirection.Up,
                        Intent    = ConnectorIntent.Outlet
                    });

                newItem.Connectors.Add(new Connector
                    {
                        Name      = "LIn",
                        Type      = "Material",
                        X         = newItem.Width - 15,
                        Y         = 5,
                        Owner     = newItem,
                        Direction = ConnectorDirection.Up,
                        Intent    = ConnectorIntent.Inlet
                    });

                newItem.Connectors.Add(new Connector
                    {
                        Name      = "VIn",
                        Type      = "Material",
                        X         = 5,
                        Y         = newItem.Height - 10,
                        Owner     = newItem,
                        Direction = ConnectorDirection.Down,
                        Intent    = ConnectorIntent.Inlet
                    });

                return(newItem);
            }


            case IconTypes.UserModel:
            {
                var newItem = new VisualUnit();
                newItem.Name        = "U01";
                newItem.Type        = "UserModel";
                newItem.X           = x;
                newItem.Y           = y;
                newItem.Height      = 60;
                newItem.Width       = 60;
                newItem.DisplayIcon = IconTypes.Block;
                var inlet = new Connector
                {
                    Name  = "Inlet[0]",
                    Type  = "Material",
                    X     = -5,
                    Y     = (int)(newItem.Height / 2) - 5,
                    Owner = newItem
                };
                newItem.Connectors.Add(inlet);

                var outlet1 = new Connector
                {
                    Name  = "Outlet[0]",
                    Type  = "Material",
                    X     = newItem.Width - 5,
                    Y     = (int)(newItem.Height / 2) - 5,
                    Owner = newItem
                };
                newItem.Connectors.Add(outlet1);

                return(newItem);
            }

            case IconTypes.Heater:
            {
                var newItem = new VisualUnit();
                newItem.Name        = "H01";
                newItem.Type        = "Heater";
                newItem.X           = x;
                newItem.Y           = y;
                newItem.Height      = 40;
                newItem.Width       = 40;
                newItem.DisplayIcon = IconTypes.Heater;
                var inlet = new Connector
                {
                    Name      = "In",
                    Type      = "Material",
                    X         = -5,
                    Y         = (int)(newItem.Height / 2.0) - 5,
                    Owner     = newItem,
                    Direction = ConnectorDirection.Left,
                    Intent    = ConnectorIntent.Inlet
                };
                newItem.Connectors.Add(inlet);

                var outlet1 = new Connector
                {
                    Name      = "Out",
                    Type      = "Material",
                    X         = newItem.Width - 5,
                    Y         = (int)(newItem.Height / 2.0) - 5,
                    Owner     = newItem,
                    Direction = ConnectorDirection.Right,
                    Intent    = ConnectorIntent.Outlet
                };
                newItem.Connectors.Add(outlet1);


                return(newItem);
            }

            case IconTypes.Pump:
            {
                var newItem = new VisualUnit();
                newItem.Name        = "P01";
                newItem.Type        = "Pump";
                newItem.X           = x;
                newItem.Y           = y;
                newItem.Height      = 40;
                newItem.Width       = 40;
                newItem.DisplayIcon = IconTypes.Pump;
                var inlet = new Connector
                {
                    Name      = "Inlet[0]",
                    Type      = "Material",
                    X         = (int)(newItem.Width / 2.0) - 5,
                    Y         = (int)(newItem.Height / 2.0) - 5,
                    Owner     = newItem,
                    Direction = ConnectorDirection.Left,
                    Intent    = ConnectorIntent.Inlet
                };
                newItem.Connectors.Add(inlet);

                var outlet1 = new Connector
                {
                    Name  = "Outlet[0]",
                    Type  = "Material",
                    X     = newItem.Width - 10,
                    Y     = -5,
                    Owner = newItem
                };
                newItem.Connectors.Add(outlet1);


                return(newItem);
            }

            case IconTypes.Valve:
            {
                var newItem = new VisualUnit();
                newItem.Name        = "VA01";
                newItem.Type        = "Valve";
                newItem.X           = x;
                newItem.Y           = y;
                newItem.Height      = 40;
                newItem.Width       = 40;
                newItem.DisplayIcon = IconTypes.Valve;
                var inlet = new Connector
                {
                    Name      = "In",
                    Type      = "Material",
                    X         = -5,
                    Y         = (int)(newItem.Height / 2.0) - 5,
                    Owner     = newItem,
                    Direction = ConnectorDirection.Left,
                    Intent    = ConnectorIntent.Inlet
                };
                newItem.Connectors.Add(inlet);

                var outlet1 = new Connector
                {
                    Name  = "Out",
                    Type  = "Material",
                    X     = newItem.Width - 5,
                    Y     = (int)(newItem.Height / 2.0) - 5,
                    Owner = newItem
                };
                newItem.Connectors.Add(outlet1);
                return(newItem);
            }

            case IconTypes.Compressor:
            {
                var newItem = new VisualUnit();
                newItem.Name        = "C01";
                newItem.Type        = "Compressor";
                newItem.X           = x;
                newItem.Y           = y;
                newItem.Height      = 40;
                newItem.Width       = 40;
                newItem.DisplayIcon = IconTypes.Compressor;

                var inlet = new Connector
                {
                    Name      = "Inlet[0]",
                    Type      = "Material",
                    X         = -5,
                    Y         = (int)(newItem.Height / 2) - 5,
                    Owner     = newItem,
                    Direction = ConnectorDirection.Left,
                    Intent    = ConnectorIntent.Inlet
                };
                newItem.Connectors.Add(inlet);

                var outlet1 = new Connector
                {
                    Name  = "Outlet[0]",
                    Type  = "Material",
                    X     = newItem.Width - 5,
                    Y     = (int)(newItem.Height / 2) - 5,
                    Owner = newItem
                };
                newItem.Connectors.Add(outlet1);


                return(newItem);
            }

            case IconTypes.HeatExchanger:
            {
                var newItem = new VisualUnit();
                newItem.Name        = "HEX01";
                newItem.Type        = "HeatExchanger";
                newItem.X           = x;
                newItem.Y           = y;
                newItem.Height      = 40;
                newItem.Width       = 140;
                newItem.DisplayIcon = IconTypes.HeatExchanger;

                var inlet = new Connector();
                inlet.Name      = "TubeIn";
                inlet.Type      = "Material";
                inlet.Direction = ConnectorDirection.Left;
                // inlet.IconType = ConnectorIconTypes.NozzleLeft;
                inlet.X     = -5;
                inlet.Y     = (int)(newItem.Height / 2) - 5;
                inlet.Owner = newItem;
                newItem.AddConnector(inlet);

                var outlet1 = new Connector();
                outlet1.Name      = "TubeOut";
                outlet1.Type      = "Material";
                outlet1.Direction = ConnectorDirection.Right;
                //outlet1.IconType = ConnectorIconTypes.NozzleRight;
                outlet1.X = newItem.Width - 5;
                outlet1.Y = (int)(newItem.Height / 2) - 5;
                newItem.AddConnector(outlet1);



                var inlet2 = new Connector();
                inlet2.Name      = "ShellIn";
                inlet2.Type      = "Material";
                inlet2.Direction = ConnectorDirection.Up;
                inlet2.X         = newItem.Width - 35;
                inlet2.Y         = -5;
                newItem.AddConnector(inlet2);

                var outlet2 = new Connector();
                outlet2.Name      = "ShellOut";
                outlet2.Type      = "Material";
                outlet2.Direction = ConnectorDirection.Down;

                outlet2.X = 25;
                outlet2.Y = newItem.Height - 5;
                newItem.AddConnector(outlet2);


                return(newItem);
            }

            default:
            {
                var newItem = new VisualUnit();
                newItem.Name        = "U01";
                newItem.X           = x;
                newItem.Y           = y;
                newItem.Height      = 60;
                newItem.Width       = 60;
                newItem.DisplayIcon = IconTypes.Block;
                return(newItem);
            }
            }
        }