Example #1
0
        private static RobotSystem Create(XElement element, Plane basePlane)
        {
            var type         = element.Name.LocalName;
            var name         = element.Attribute(XName.Get("name")).Value;
            var manufacturer = (Manufacturers)Enum.Parse(typeof(Manufacturers), element.Attribute(XName.Get("manufacturer")).Value);
            var mechanisms   = new List <Mechanism>();

            var mechanicalGroups = new List <MechanicalGroup>();

            foreach (var mechanicalGroup in element.Elements(XName.Get("Mechanisms")))
            {
                mechanicalGroups.Add(MechanicalGroup.Create(mechanicalGroup));
            }

            IO       io        = null;
            XElement ioElement = element.Element(XName.Get("IO"));

            if (ioElement != null)
            {
                string[] doNames = null, diNames = null, aoNames = null, aiNames = null;

                var doElement = ioElement.Element(XName.Get("DO"));
                var diElement = ioElement.Element(XName.Get("DI"));
                var aoElement = ioElement.Element(XName.Get("AO"));
                var aiElement = ioElement.Element(XName.Get("AI"));

                if (doElement != null)
                {
                    doNames = doElement.Attribute(XName.Get("names")).Value.Split(',');
                }
                if (diElement != null)
                {
                    diNames = diElement.Attribute(XName.Get("names")).Value.Split(',');
                }
                if (aoElement != null)
                {
                    aoNames = aoElement.Attribute(XName.Get("names")).Value.Split(',');
                }
                if (aiElement != null)
                {
                    aiNames = aiElement.Attribute(XName.Get("names")).Value.Split(',');
                }

                io = new IO()
                {
                    DO = doNames, DI = diNames, AO = aoNames, AI = aiNames
                };
            }

            Mesh environment = null;

            if (type == "RobotCell")
            {
                switch (manufacturer)
                {
                case (Manufacturers.ABB):
                    return(new RobotCellAbb(name, mechanicalGroups, io, basePlane, environment));

                case (Manufacturers.KUKA):
                    return(new RobotCellKuka(name, mechanicalGroups, io, basePlane, environment));

                case (Manufacturers.UR):
                    return(new RobotCellUR(name, mechanicalGroups[0].Robot, io, basePlane, environment));

                case (Manufacturers.FANUC):
                    return(new RobotCellFanuc(name, mechanicalGroups, io, basePlane, environment));

                case (Manufacturers.Staubli):
                    return(new RobotCellStaubli(name, mechanicalGroups, io, basePlane, environment));
                }
            }

            return(null);
        }