示例#1
0
 /// <summary>
 /// —оздает новый экземпл¤р класса <see cref="Macro"/>, загружа¤ его из файла.
 /// </summary>
 /// <param name="filename">»м¤ файла.</param>
 public Macro(string filename)
 {
     try
     {
         Elems = new List <MacroElem>(0);
         XmlDocument document = new XmlDocument();
         document.Load(filename);
         Name        = document.ChildNodes[1].ChildNodes[0].Attributes[0].Value;
         Discr       = document.ChildNodes[1].ChildNodes[0].Attributes[1].Value;
         PicFileName = document.ChildNodes[1].ChildNodes[0].Attributes[2].Value;
         string[] PicSizeValues = document.ChildNodes[1].ChildNodes[0].Attributes[3].Value.Split('_');
         PicSize        = new SizeF(float.Parse(PicSizeValues[0], CultureInfo.InvariantCulture), float.Parse(PicSizeValues[1], CultureInfo.InvariantCulture));
         CreatedVersion = new Version(
             int.Parse(document.ChildNodes[1].ChildNodes[1].Attributes[0].Value),
             int.Parse(document.ChildNodes[1].ChildNodes[1].Attributes[1].Value),
             int.Parse(document.ChildNodes[1].ChildNodes[1].Attributes[2].Value),
             int.Parse(document.ChildNodes[1].ChildNodes[1].Attributes[3].Value));
         Elems = new List <MacroElem>();
         for (int i = 2; i <= document.ChildNodes[1].ChildNodes.Count - 1; i++)
         {
             MacroElemType type          = MacroElem.ShortedTypeToNormal(ExOperators.GetEnum <MacroElemTypeShorted>(document.ChildNodes[1].ChildNodes[i].Attributes[0].Value));
             int           toolmove      = int.Parse(document.ChildNodes[1].ChildNodes[i].Attributes[1].Value);
             string[]      MoveToPointS  = document.ChildNodes[1].ChildNodes[i].Attributes[2].Value.Split('_');
             PointF        MoveToPoint   = new PointF(float.Parse(MoveToPointS[0], CultureInfo.InvariantCulture), float.Parse(MoveToPointS[1], CultureInfo.InvariantCulture));
             string[]      MoveRelativeS = document.ChildNodes[1].ChildNodes[i].Attributes[3].Value.Split('_');
             PointF        MoveRelative  = new PointF(float.Parse(MoveRelativeS[0], CultureInfo.InvariantCulture), float.Parse(MoveRelativeS[1], CultureInfo.InvariantCulture));
             float         Delay         = float.Parse(document.ChildNodes[1].ChildNodes[i].Attributes[4].Value, CultureInfo.InvariantCulture);
             Elems.Add(new MacroElem()
             {
                 Delay = Delay, MoveRelative = MoveRelative, MoveToPoint = MoveToPoint, ToolMove = toolmove, Type = type
             });
         }
     }
     catch (Exception e)
     {
         throw new FileLoadException("Unknown error", e);
     }
 }
示例#2
0
        /// <summary>
        /// —охран¤ет макрос в файл с разширением .pcmacros.
        /// </summary>
        /// <param name="filename">»м¤ файла дл¤ сохранени¤.</param>
        public void Save(string filename)
        {
            XmlTextWriter textWritter = new XmlTextWriter(filename, Encoding.UTF8);

            textWritter.WriteStartDocument();
            textWritter.WriteStartElement("MACRO");
            textWritter.WriteEndElement();
            textWritter.Close();
            XmlDocument doc = new XmlDocument();

            doc.Load(filename);
            XmlNode el = doc.CreateElement("S");

            doc.DocumentElement.AppendChild(el);
            AppendAttrToNode(doc, el, "N", Name);
            AppendAttrToNode(doc, el, "D", Discr);
            AppendAttrToNode(doc, el, "PN", PicFileName);
            AppendAttrToNode(doc, el, "PS", string.Format("{0}_{1}", PicSize.Width, PicSize.Height));
            XmlNode vers = doc.CreateElement("V");

            AppendAttrToNode(doc, vers, "MV", CreatedVersion.Major.ToString());
            AppendAttrToNode(doc, vers, "MnrV", CreatedVersion.Minor.ToString());
            AppendAttrToNode(doc, vers, "BNr", CreatedVersion.Build.ToString());
            AppendAttrToNode(doc, vers, "R", CreatedVersion.Revision.ToString());
            doc.DocumentElement.AppendChild(vers);
            foreach (var a in Elems)
            {
                XmlNode node = doc.CreateElement("ME");
                doc.DocumentElement.AppendChild(node);
                AppendAttrToNode(doc, node, "T", MacroElem.NormalToShorted(a.Type).ToString());
                AppendAttrToNode(doc, node, "TM", a.ToolMove.ToString());
                AppendAttrToNode(doc, node, "MTP", string.Format("{0}_{1}", a.MoveToPoint.X, a.MoveToPoint.Y));
                AppendAttrToNode(doc, node, "MR", string.Format("{0}_{1}", a.MoveRelative.X, a.MoveRelative.Y));
                AppendAttrToNode(doc, node, "D", a.Delay.ToString(CultureInfo.InvariantCulture));
            }
            doc.Save(filename);
        }