Example #1
0
 internal PlotStyle(PiaNode baseNode)
 {
     NodeName = baseNode.NodeName;
     Parent   = baseNode.Parent;
     Owner    = baseNode.Owner;
     Values   = baseNode.Values;
 }
Example #2
0
        internal static string _serializeNode(PiaNode node, int level = 0)
        {
            if (node == null)
            {
                throw new ArgumentNullException("node");
            }

            var nodeBuilder = new StringBuilder();
            var whiteSpace  = new string(' ', level);
            var newLine     = Environment.NewLine;

            foreach (var value in node.Values)
            {
                nodeBuilder.AppendFormat("{0}{1}\n", whiteSpace, _serializeValue(value));
            }

            foreach (var child in node.ChildNodes)
            {
                nodeBuilder.AppendFormat("{0}{1}{2}\n", whiteSpace, child.NodeName, "{");
                nodeBuilder.Append(_serializeNode(child, level + 1));
                nodeBuilder.AppendFormat("{0}{1}\n", whiteSpace, "}");
            }

            return(nodeBuilder.ToString());
        }
Example #3
0
        /// <summary>
        /// 判断是否已有同名节点,有就不加入
        /// </summary>
        /// <param name="nodeC"></param>
        /// <param name="name"></param>
        /// <param name="paperAll"></param>
        private void PlusNode(PiaNode nodeC, string name, string paperAll)
        {
            bool yiyou = true;

            foreach (var nodeD in nodeC)
            {
                foreach (var pair in nodeD.Values)
                {
                    if (pair.Key == "media_description_name_str" &&
                        pair.Value == Media_description_name)
                    {
                        yiyou = false;
                        break;
                    }
                }
                if (!yiyou)
                {
                    break;
                }
            }
            if (yiyou)
            {
                nodeC.Add(name, paperAll);
            }
        }
Example #4
0
 internal PlotStyle(PiaNode baseNode)
 {
     NodeName = baseNode.NodeName;
     Parent = baseNode.Parent;
     Owner = baseNode.Owner;
     Values = baseNode.Values;
 }
Example #5
0
        //private string Localized_name = null;
        /// <summary>
        /// 添加pmp纸张-中英对换表
        /// </summary>
        /// <param name="nodeC"></param>
        private void AddPaperEnAndCn(PiaNode nodeC)
        {
            string Localized_name = userdef_name;
            //图纸数量+1就是新建一张图
            var    spl   = '\n';
            int    count = nodeC.Count();
            string name  = count.ToString();

            string[] paper = new string[] {
                name + "{",
                $"caps_type=2",                             //1是系统的,2是用户的.这里严格,可不可以在打印纸看见就是这里了
                $"name=\"{Name}",
                $"localized_name=\"{Localized_name}",
                $"media_description_name=\"{Media_description_name}",
                $"media_group=15",                          //4是系统的,15是用户的.15是以毫米为单位,16是以像素为单位
                "landscape_mode=FALSE\n}",                  //false是系统的,true是用户的
            };
            string paperAll = string.Join(spl + " ", paper) + spl;

            PlusNode(nodeC, name, paperAll);
        }
Example #6
0
        /// <summary>
        /// 添加pmp纸张-信息
        /// </summary>
        /// <param name="nodeC"></param>
        private void AddPaperDescription(PiaNode nodeC)
        {
            var    spl   = '\n';
            int    count = nodeC.Count();
            string name  = count.ToString();

            string[] paper = new string[] {
                name + "{",
                $"caps_type=2",                 //1是系统的,2是用户的.这里严格,可不可以在打印纸看见就是这里了
                $"name=\"{/*Media_description_name*/Name}",
                $"media_bounds_urx={ChangDouble(PaperX)}",
                $"media_bounds_ury={ChangDouble(PaperY)}",
                $"printable_bounds_llx={ChangDouble(Offset_Left)}",
                $"printable_bounds_lly={ChangDouble(Offset_Down)}",
                $"printable_bounds_urx={ChangDouble(PaperX)}",
                $"printable_bounds_ury={ChangDouble(PaperY)}",
                $"printable_area={ChangDouble(PaperX * PaperY)}",
                "dimensional=TRUE\n}",
            };
            string paperAll = string.Join(spl + " ", paper) + spl;

            PlusNode(nodeC, name, paperAll);
        }
Example #7
0
        internal static void _deserializeNode(PiaNode parent, string nodeString)
        {
            if (parent == null && !(parent is PiaFile))
            {
                throw new ArgumentNullException("parent");
            }

            if (nodeString == null)
            {
                throw new ArgumentNullException("nodeString");
            }

            var dataLines = nodeString.Split(new char[] { '\r', '\n' },
                                             StringSplitOptions.RemoveEmptyEntries);

            for (int i = 0; i < dataLines.Length; i++)
            {
                var curLine = dataLines[i];
                if (curLine.Contains('='))
                {
                    var value = _deserializeValue(curLine);

                    if (!parent.Values.ContainsKey(value.Key))
                    {
                        parent.Values.Add(value.Key, value.Value);
                    }
                    else
                    {
                        parent.Values[value.Key] = value.Value;
                    }
                }
                else if (curLine.Contains('{'))
                {
                    var bracketCount = 1;
                    var nodeBuilder  = new StringBuilder();
                    var n            = i + 1;
                    var subLine      = string.Empty;

                    while (bracketCount != 0)
                    {
                        subLine       = dataLines[n++];
                        bracketCount += subLine.Contains('{')
                            ? 1 : subLine.Contains('}')
                            ? -1 : 0;

                        if (bracketCount != 0)
                        {
                            nodeBuilder.AppendLine(subLine);
                        }
                    }

                    var childNode = new PiaNode(nodeBuilder.ToString())
                    {
                        NodeName = curLine.Trim().TrimEnd('{'),
                        Parent   = parent,
                        Owner    = parent.Owner
                    };

                    parent.ChildNodes.Add(childNode);

                    i = n - 1;
                }
            }
        }
Example #8
0
        public PlotterConfiguration AddPrinter(string pmp_FullPath /*,double PaperX,double PaperY*/)
        {
            Name = userdef_name;
            //$"JBS_PDF_({PaperY.ToString("#0.00")}_x_{PaperX.ToString("#0.00")}_MM)";//纸张名称

            // JoinBoxStandard 嘻嘻
            //                                                              (5,_17)这个是默认偏移量
            // media_description_name="ISO_A0_Portrait_841.00W_x_1189.00H_-_(5,_17)_x_(836,_1172)_=959805_MM
            //实际打印面积(虽然因为偏移值是0,等于长乘宽就可以,但是为了日后我忘记这里怎么算的,还是求一下吧)

            double area = (PaperY - (Offset_Left * 2)) * (PaperX - (Offset_Down * 2));

            //如果没有小数点保留,可能cad闪退!
            StringBuilder description_name = new StringBuilder();

            description_name.Append($"JBS_PDF_Portrait_{PaperY.ToString("#0.00")}W_x_{PaperX.ToString("#0.00")}H");
            description_name.Append("_-_");
            description_name.Append($"({Offset_Left.ToString("#0.00")},_{Offset_Down.ToString("#0.00")})");//偏移量
            description_name.Append("_x_");
            description_name.Append($"({(PaperY - Offset_Left).ToString("#0.00")},_{(PaperX - Offset_Down).ToString("#0.00")})_");
            description_name.Append($"={area.ToString("#0.00")}_MM");

            //Media_description_name = description_name.ToString();
            Media_description_name = Name;

            PdfConfig = new PlotterConfiguration(pmp_FullPath)
            {
                TruetypeAsText = true
            };

            //解压了打印机信息之后,遍历打印机节点
            foreach (var nodeA in PdfConfig)
            {
                if (nodeA.NodeName == "udm")
                {
                    foreach (var nodeB in nodeA)
                    {
                        if (nodeB.NodeName == "media")
                        {
                            PiaNode piaNode_size        = null;
                            PiaNode piaNode_description = null;

                            //遍历是否有节点
                            foreach (PiaNode nodeC in nodeB)
                            {
                                string nden = nodeC.NodeName;
                                switch (nden)
                                {
                                case str_size:
                                    piaNode_size = nodeC;
                                    break;

                                case str_description:
                                    piaNode_description = nodeC;
                                    break;
                                }
                            }
                            //找不到就添加节点
                            if (piaNode_size == null)
                            {
                                piaNode_size = nodeB.Add(str_size);
                            }
                            if (piaNode_description == null)
                            {
                                piaNode_description = nodeB.Add(str_description);
                            }
                            //在节点中添加/修改信息
                            AddPaperEnAndCn(piaNode_size);
                            AddPaperDescription(piaNode_description);
                            break;
                        }
                    }
                    break;
                }
            }
            PdfConfig.Saves();
            return(PdfConfig);
        }
Example #9
0
        internal static string _serializeNode(PiaNode node, int level = 0)
        {
            if (node == null)
                throw new ArgumentNullException("node");

            var nodeBuilder = new StringBuilder();
            var whiteSpace = new string(' ', level);
            var newLine = Environment.NewLine;

            foreach (var value in node.Values)
                nodeBuilder.AppendFormat("{0}{1}\n", whiteSpace, _serializeValue(value));

            foreach (var child in node.ChildNodes)
            {
                nodeBuilder.AppendFormat("{0}{1}{2}\n", whiteSpace, child.NodeName, "{");
                nodeBuilder.Append(_serializeNode(child, level + 1));
                nodeBuilder.AppendFormat("{0}{1}\n", whiteSpace, "}");
            }

            return nodeBuilder.ToString();
        }
Example #10
0
        internal static void _deserializeNode(PiaNode parent, string nodeString)
        {
            if (parent == null && !(parent is PiaFile))
                throw new ArgumentNullException("parent");

            if (nodeString == null)
                throw new ArgumentNullException("nodeString");

            var dataLines = nodeString.Split(new char[] { '\r', '\n' },
                                            StringSplitOptions.RemoveEmptyEntries);

            for (int i = 0; i < dataLines.Length; i++)
            {
                var curLine = dataLines[i];
                if (curLine.Contains('='))
                {
                    var value = _deserializeValue(curLine);

                    if (!parent.Values.ContainsKey(value.Key))
                        parent.Values.Add(value.Key, value.Value);
                    else
                        parent.Values[value.Key] = value.Value;
                }
                else if (curLine.Contains('{'))
                {
                    var bracketCount = 1;
                    var nodeBuilder = new StringBuilder();
                    var n = i + 1;
                    var subLine = string.Empty;

                    while (bracketCount != 0)
                    {
                        subLine = dataLines[n++];
                        bracketCount += subLine.Contains('{')
                            ? 1 : subLine.Contains('}')
                            ? -1 : 0;

                        if (bracketCount != 0)
                            nodeBuilder.AppendLine(subLine);
                    }

                    var childNode = new PiaNode(nodeBuilder.ToString())
                    {
                        NodeName = curLine.Trim().TrimEnd('{'),
                        Parent = parent,
                        Owner = parent.Owner
                    };

                    parent.ChildNodes.Add(childNode);

                    i = n - 1;
                }
            }
        }