/*public void ResetPoly() { SvgElementCollection col= tlVectorControl1.SVGDocument.SelectCollection; if(col.Count<1){ return; } SvgElementCollection.ISvgElementEnumerator enumerator1 = tlVectorControl1.DrawArea.ElementList.GetEnumerator(); foreach(SvgElement ele in col){ if (ele.GetType().ToString() == "ItopVector.Core.Figure.Polygon") { glebeProperty p=new glebeProperty(); p.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; p.EleID = ((IGraph)ele).ID; p = Services.BaseService.GetObject("SelectglebePropertyByEleID", p); if(p!=null){ PointF[] tfArray1 = TLMath.getPolygonPoints(ele); GraphicsPath selectAreaPath = new GraphicsPath(); selectAreaPath.AddLines(tfArray1); selectAreaPath.CloseFigure(); Region region1 = new Region(selectAreaPath); while (enumerator1.MoveNext()) { IGraph graph1 = (IGraph)enumerator1.Current; GraphicsPath path1 = (GraphicsPath)graph1.GPath.Clone(); path1.Transform(graph1.GraphTransform.Matrix); Region region2 = new Region(path1); region2.Intersect(region1); if (!region2.GetBounds(Graphics.FromHwnd(IntPtr.Zero)).IsEmpty) { glebeProperty p1 = new glebeProperty(); p1.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; p1.EleID = graph1.ID; p1 = Services.BaseService.GetObject("SelectglebePropertyByEleID", p1); if(p1!=null){ p1.ParentEleID = p.UID; Services.BaseService.Update("UpdateglebePropertyAreaAll", p1); } } } } } } MessageBox.Show("更新完成。","提示",MessageBoxButtons.OK,MessageBoxIcon.Information); }*/ private void contextMenuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { try { if (e.ClickedItem.Text == "属性") { XmlElement xml1 = (XmlElement)tlVectorControl1.SVGDocument.CurrentElement; //PointF[] pf = TLMath.getPolygonPoints(xml1); //((Polygon)xml1).Transform.Matrix.TransformPoints(pf); // 规划 if (getlayer(SvgDocument.currentLayer, "电网规划层", tlVectorControl1.SVGDocument.getLayerList())) { if (xml1 == null || tlVectorControl1.SVGDocument.CurrentElement.ID == "svg") { MessageBox.Show("请先选择规划区域。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (tlVectorControl1.SVGDocument.CurrentElement.GetType().ToString() == "ItopVector.Core.Figure.RectangleElement") { //frmImgManager frm = new frmImgManager(); //frm.Show(); } if (tlVectorControl1.SVGDocument.CurrentElement.GetType().ToString() == "ItopVector.Core.Figure.Polygon") { XmlNodeList n1 = tlVectorControl1.SVGDocument.GetElementsByTagName("use"); PointF[] tfArray1 = TLMath.getPolygonPoints(xml1); string str220 = ""; string str110 = ""; string str66 = ""; GraphicsPath selectAreaPath = new GraphicsPath(); selectAreaPath.AddLines(tfArray1); selectAreaPath.CloseFigure(); //Matrix x=new Matrix( //Region region1 = new Region(selectAreaPath); for (int i = 0; i < n1.Count; i++) { float OffX = 0f; float OffY = 0f; bool ck = false; Use use = (Use)n1[i]; if (use.GetAttribute("xlink:href").Contains("Substation")) { string strMatrix = use.GetAttribute("transform"); if (strMatrix != "") { strMatrix = strMatrix.Replace("matrix(", ""); strMatrix = strMatrix.Replace(")", ""); string[] mat = strMatrix.Split(','); if (mat.Length > 5) { OffX = Convert.ToSingle(mat[4]); OffY = Convert.ToSingle(mat[5]); } } if (frmlar.getSelectedLayer().Contains(use.GetAttribute("layer"))) { ck = true; } PointF TempPoint = TLMath.getUseOffset(use.GetAttribute("xlink:href")); if (selectAreaPath.IsVisible(use.X + TempPoint.X + OffX, use.Y + TempPoint.Y + OffY) && ck) { if (use.GetAttribute("xlink:href").Contains("220")) { str220 = str220 + "'" + use.GetAttribute("id") + "',"; } if (use.GetAttribute("xlink:href").Contains("110")) { str110 = str110 + "'" + use.GetAttribute("id") + "',"; } if (use.GetAttribute("xlink:href").Contains("66")) { str66 = str66 + "'" + use.GetAttribute("id") + "',"; } } } } if (str220.Length > 1) { str220 = str220.Substring(0, str220.Length - 1); } if (str110.Length > 1) { str110 = str110.Substring(0, str110.Length - 1); } if (str66.Length > 1) { str66 = str66.Substring(0, str66.Length - 1); } glebeProperty _gle = new glebeProperty(); _gle.EleID = tlVectorControl1.SVGDocument.CurrentElement.ID; _gle.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; IList<glebeProperty> UseProList = Services.BaseService.GetList<glebeProperty>("SelectglebePropertyByEleID", _gle); if (UseProList.Count > 0) { _gle = UseProList[0]; _gle.LayerID = SvgDocument.currentLayer; frmMainProperty f = new frmMainProperty(); f.InitData(_gle, str220, str110, str66); f.ShowDialog(); if (f.checkBox1.Checked == false) { tlVectorControl1.SVGDocument.RootElement.RemoveChild(tlVectorControl1.SVGDocument.CurrentElement); } //tlVectorControl1.Refresh(); } //} } } if (getlayer(SvgDocument.currentLayer, "城市规划层", tlVectorControl1.SVGDocument.getLayerList())) { if (tlVectorControl1.SVGDocument.getRZBRatio() != "") { rzb = tlVectorControl1.SVGDocument.getRZBRatio(); } if (xml1 == null || tlVectorControl1.SVGDocument.CurrentElement.ID == "svg") { MessageBox.Show("请先选择地块。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (tlVectorControl1.SVGDocument.CurrentElement.GetType().ToString() == "ItopVector.Core.Figure.Polygon") { string IsArea = ((XmlElement)tlVectorControl1.SVGDocument.CurrentElement).GetAttribute("IsArea"); if (IsArea != "") { frmProperty f = new frmProperty(); if (SelUseArea == "") { SelUseArea = "0"; } f.InitData(xml1.GetAttribute("id"), tlVectorControl1.SVGDocument.SvgdataUid, SelUseArea, rzb, SvgDocument.currentLayer); //f.ShowDialog(); if (progtype != "城市规划层") { f.IsReadonly = true; } if (f.ShowDialog() == DialogResult.OK) { SVG_ENTITY ent = new SVG_ENTITY(); if (f.IsCreate) { ent.SUID = Guid.NewGuid().ToString(); ent.EleID = f.gPro.EleID; ent.layerID = f.gPro.LayerID; ent.MDATE = System.DateTime.Now; ent.NAME = f.gPro.UseID; ent.svgID = f.gPro.SvgUID; ent.TYPE = "polygon-dk"; //ent.voltage = f.gPro.Voltage; Services.BaseService.Create<SVG_ENTITY>(ent); } else { ent.NAME = f.gPro.UseID; ent.layerID = f.gPro.LayerID; ent.MDATE = System.DateTime.Now; //ent.voltage = fl.Line.Voltage; Services.BaseService.Update<SVG_ENTITY>(ent); } if (f.gPro.ObligateField1 != "") { string color1 = ColorTranslator.ToHtml(Color.FromArgb(Convert.ToInt32(f.gPro.ObligateField1))); color1 = "fill:" + color1 + ";"; ((XmlElement)tlVectorControl1.SVGDocument.CurrentElement).SetAttribute("style", color1); tlVectorControl1.UpdateProperty(); } } } } } if (tlVectorControl1.SVGDocument.CurrentElement.GetType().ToString() == "ItopVector.Core.Figure.Line" || tlVectorControl1.SVGDocument.CurrentElement.GetType().ToString() == "ItopVector.Core.Figure.Polyline") { string lineWidth = "2"; string IsLead = ((XmlElement)tlVectorControl1.SVGDocument.CurrentElement).GetAttribute("IsLead"); //if (IsLead != "") //原先导线的属性添加情况 //{ // frmLineProperty fl = new frmLineProperty(); // fl.LineNode = tlVectorControl1.SVGDocument.CurrentElement; // fl.InitData(tlVectorControl1.SVGDocument.CurrentElement.GetAttribute("id"), tlVectorControl1.SVGDocument.SvgdataUid, LineLen, SvgDocument.currentLayer); // if (fl.ShowDialog() == DialogResult.OK) // { // SVG_ENTITY ent = new SVG_ENTITY(); // if (fl.IsCreate) // { // ent.SUID = Guid.NewGuid().ToString(); // ent.EleID = fl.Line.EleID; // ent.layerID = fl.Line.LayerID; // ent.MDATE = System.DateTime.Now; // ent.NAME = fl.Line.LineName; // ent.svgID = fl.Line.SvgUID; // ent.TYPE = "line"; // ent.voltage =Convert.ToInt32(fl.Line.Voltage); // Services.BaseService.Create<SVG_ENTITY>(ent); // } // else // { // ent.NAME = fl.Line.LineName; // ent.layerID = fl.Line.LayerID; // ent.MDATE = System.DateTime.Now; // ent.voltage =Convert.ToInt32( fl.Line.Voltage); // Services.BaseService.Update<SVG_ENTITY>(ent); // } // lineWidth = fl.LineWidth; // string styleValue = ""; // if (fl.Line.ObligateField1 == "规划") // { // styleValue = "stroke-dasharray:" + ghType + ";stroke-width:" + lineWidth + ";"; // } // else // { // styleValue = "stroke-width:" + lineWidth + ";"; // } // //string aa= ColorTranslator.ToHtml(Color.Black); // styleValue = styleValue + "stroke:" + ColorTranslator.ToHtml(Color.FromArgb(Convert.ToInt32(fl.Line.ObligateField2))); // SvgElement se = tlVectorControl1.SVGDocument.CurrentElement; // se.RemoveAttribute("style"); // se.SetAttribute("style", styleValue); // se.SetAttribute("info-name", fl.Line.LineName); // } //} if (IsLead != "") //修改后的导线的属性添加情况 { PSPDEV obj = new PSPDEV(); string deviceid = xml1.GetAttribute("Deviceid"); if (string.IsNullOrEmpty(deviceid)) { obj = (PSPDEV)DeviceHelper.SelectDevice(DeviceType.XL, Itop.Client.MIS.ProgUID); if (obj==null) { tlVectorControl1.SVGDocument.CurrentElement = xml1 as SvgElement; tlVectorControl1.Delete(); } if ( obj is PSPDEV) { deviceid = ((PSPDEV)obj).SUID; xml1.SetAttribute("Deviceid", deviceid); } } if (!string.IsNullOrEmpty(deviceid)) { obj = (PSPDEV)DeviceHelper.GetDevice<PSPDEV>(deviceid); if (obj != null) { xml1.SetAttribute("info-name", ((PSPDEV)obj).Name); DeviceHelper.ShowDeviceDlg(DeviceType.XL, deviceid, false); } LineInfo li = new LineInfo(); li.UID = obj.SUID; li = (LineInfo)Services.BaseService.GetObject("SelectLineInfoByKey", li); if (li != null) { li.LayerID = SvgDocument.currentLayer; li.EleID = xml1.GetAttribute("id"); li.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; LineType lt = new LineType(); lt.TypeName = li.Voltage.ToString() + "kV"; lt = (LineType)Services.BaseService.GetObject("SelectLineTypeByTypeName", lt); li.ObligateField3 = obj.OperationYear; if (lt != null) { li.ObligateField2 = lt.Color; lineWidth = lt.ObligateField1; } if (!string.IsNullOrEmpty(li.ObligateField3)) { if (Convert.ToInt32(obj.OperationYear) > DateTime.Now.Year) { li.ObligateField1 = "规划"; } else li.ObligateField1 = "运行"; } Services.BaseService.Update<LineInfo>(li); } else { li = new LineInfo(); li.UID = obj.SUID; li.LineName = obj.Name; li.Length = obj.LineLength.ToString(); li.LineType = obj.LineType; li.Voltage = obj.ReferenceVolt.ToString(); li.EleID = xml1.GetAttribute("id"); li.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; LineType lt = new LineType(); lt.TypeName = obj.ReferenceVolt.ToString() + "kV"; lt = (LineType)Services.BaseService.GetObject("SelectLineTypeByTypeName", lt); li.ObligateField3 = obj.OperationYear; if (lt != null) { li.ObligateField2 = lt.Color; lineWidth = lt.ObligateField1; } if (!string.IsNullOrEmpty(li.ObligateField3)) { if (Convert.ToInt32(obj.OperationYear) > DateTime.Now.Year) { li.ObligateField1 = "规划"; } else li.ObligateField1 = "运行"; } Services.BaseService.Create<LineInfo>(li); } string styleValue = ""; if (li.ObligateField1 == "规划") { styleValue = "stroke-dasharray:" + ghType + ";stroke-width:" + lineWidth + ";"; } else { styleValue = "stroke-width:" + lineWidth + ";"; } //string aa= ColorTranslator.ToHtml(Color.Black); styleValue = styleValue + "stroke:" + ColorTranslator.ToHtml(Color.FromArgb(Convert.ToInt32(li.ObligateField2))); SvgElement se = tlVectorControl1.SVGDocument.CurrentElement; se.RemoveAttribute("style"); se.SetAttribute("style", styleValue); se.SetAttribute("info-name", li.LineName); //***** ********添加FistNode和LastNode XmlNodeList useList = tlVectorControl1.SVGDocument.SelectNodes("svg/use"); foreach (XmlNode element in useList) { if (!string.IsNullOrEmpty((element as XmlElement).GetAttribute("Deviceid"))) { string con = "WHERE SvgUID='" + (element as XmlElement).GetAttribute("Deviceid") + "'AND ProjectID = '" + Itop.Client.MIS.ProgUID + "'" + "AND Type='01'"; IList pspMX = Services.BaseService.GetList("SelectPSPDEVByCondition", con); if (pspMX != null) { foreach (PSPDEV pspmx in pspMX) { if (obj.IName == pspmx.Name) { (xml1 as XmlElement).SetAttribute("FirstNode", (element as XmlElement).GetAttribute("id")); } else if (obj.JName == pspmx.Name) { (xml1 as XmlElement).SetAttribute("LastNode", (element as XmlElement).GetAttribute("id")); } } } } } } //** } } if (xml1.GetAttribute("xlink:href").Contains("Substation") || xml1.GetAttribute("xlink:href").Contains("Power")) { string lab = xml1.GetAttribute("xlink:href"); float x = 0f; float y = 0f; x = ((Use)xml1).X; y = ((Use)xml1).Y; PointF p1 = new PointF(x, y); PointF[] pnt = new PointF[1]; pnt[0] = p1; Use temp = xml1.Clone() as Use; temp.Transform.Matrix.TransformPoints(pnt); LongLat templat = mapview.OffSetZero(-(int)(pnt[0].X * tlVectorControl1.ScaleRatio), -(int)(pnt[0].Y * tlVectorControl1.ScaleRatio)); string[] jd = templat.Longitude.ToString("####.####").Split('.'); int d1 = Convert.ToInt32(jd[0]); string[] df1 = Convert.ToString(Convert.ToDecimal("0." + jd[1]) * 60).Split('.'); int f1 = Convert.ToInt32(df1[0]); decimal m1 = Convert.ToDecimal("0." + df1[1]) * 60; string[] wd = templat.Latitude.ToString("####.####").Split('.'); int d2 = Convert.ToInt32(wd[0]); string[] df2 = Convert.ToString(Convert.ToDecimal("0." + wd[1]) * 60).Split('.'); int f2 = Convert.ToInt32(df2[0]); decimal m2 = Convert.ToDecimal("0." + df2[1]) * 60; string strjwd = "经纬度: " + d1.ToString() + "°" + f1.ToString() + "′" + m1.ToString("##.#") + "″," + d2.ToString() + "°" + f2.ToString() + "′" + m2.ToString("##.#") + "″"; object obj = null; string deviceid = xml1.GetAttribute("Deviceid"); if (string.IsNullOrEmpty(deviceid)) { //XmlElement n1 = tlVectorControl1.SVGDocument.CreateElement("text") as Text; if (xml1.GetAttribute("xlink:href").Contains("Power")) { obj = DeviceHelper.SelectDevice(DeviceType.DY, Itop.Client.MIS.ProgUID); if (obj == null) { tlVectorControl1.SVGDocument.CurrentElement = xml1 as SvgElement; tlVectorControl1.Delete(); } if (obj is PSP_PowerSubstation_Info) { deviceid = ((PSP_PowerSubstation_Info)obj).UID; xml1.SetAttribute("Deviceid", deviceid); } substation sb = new substation(); sb.UID = ((PSP_PowerSubstation_Info)obj).UID; sb = (substation)Services.BaseService.GetObject("SelectsubstationByKey", sb); if (sb != null) { sb.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; sb.LayerID = tlVectorControl1.SVGDocument.CurrentLayer.ID; sb.EleID = xml1.GetAttribute("id"); if (((PSP_PowerSubstation_Info)obj).Flag == "2") { sb.ObligateField3 = "规划"; } else if (((PSP_PowerSubstation_Info)obj).Flag == "1") { sb.ObligateField3 = "现行"; } Services.BaseService.Update<substation>(sb); } else { sb = new substation(); sb.UID = ((PSP_PowerSubstation_Info)obj).UID; sb.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; sb.EleID = xml1.GetAttribute("id"); sb.LayerID = tlVectorControl1.SVGDocument.CurrentLayer.ID; if (((PSP_PowerSubstation_Info)obj).Flag == "2") { sb.ObligateField3 = "规划"; } else if (((PSP_PowerSubstation_Info)obj).Flag == "1") { sb.ObligateField3 = "现行"; } Services.BaseService.Create<substation>(sb); } } else { obj = DeviceHelper.SelectDevice(DeviceType.BDZ, Itop.Client.MIS.ProgUID); if (obj == null) { tlVectorControl1.SVGDocument.CurrentElement = xml1 as SvgElement; tlVectorControl1.Delete(); } if (obj is PSP_Substation_Info) { deviceid = ((PSP_Substation_Info)obj).UID; xml1.SetAttribute("Deviceid", deviceid); //RectangleF t = ((IGraph)xml1).GetBounds(); //n1.SetAttribute("x", (t.X - 30).ToString()); //n1.SetAttribute("y", (t.Y - 30).ToString()); //n1.SetAttribute("font-size", "24"); //n1.InnerText = ((PSP_Substation_Info)obj).Title; //n1.SetAttribute("layer", SvgDocument.currentLayer); //n1.SetAttribute("ParentID", temp.GetAttribute("id")); //tlVectorControl1.SVGDocument.RootElement.AppendChild(n1); //tlVectorControl1.Operation = ToolOperation.Select; } substation sb = new substation(); sb.UID = ((PSP_Substation_Info)obj).UID; sb = (substation)Services.BaseService.GetObject("SelectsubstationByKey", sb); if (sb != null) { sb.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; sb.LayerID = tlVectorControl1.SVGDocument.CurrentLayer.ID; sb.EleID = xml1.GetAttribute("id"); if (((PSP_Substation_Info)obj).Flag == "2") { sb.ObligateField3 = "规划"; } else if (((PSP_Substation_Info)obj).Flag == "1") { sb.ObligateField3 = "现行"; } Services.BaseService.Update<substation>(sb); } else { sb = new substation(); sb.UID = ((PSP_Substation_Info)obj).UID; sb.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; sb.EleID = xml1.GetAttribute("id"); sb.LayerID = tlVectorControl1.SVGDocument.CurrentLayer.ID; if (((PSP_Substation_Info)obj).Flag == "2") { sb.ObligateField3 = "规划"; } else if (((PSP_Substation_Info)obj).Flag == "1") { sb.ObligateField3 = "现行"; } Services.BaseService.Create<substation>(sb); } } } if (!string.IsNullOrEmpty(deviceid)) { if (xml1.GetAttribute("xlink:href").Contains("Power")) { obj = DeviceHelper.GetDevice<PSP_PowerSubstation_Info>(deviceid); if (obj != null) { xml1.SetAttribute("info-name", ((PSP_PowerSubstation_Info)obj).Title); //XmlElement n1 = tlVectorControl1.SVGDocument.SelectSingleNode("/text[@ParentUID='" + xml1.GetAttribute("id") + "']"); DeviceHelper.ShowDeviceDlg(DeviceType.DY, deviceid, false); } substation sb = new substation(); sb.UID = ((PSP_PowerSubstation_Info)obj).UID; sb = (substation)Services.BaseService.GetObject("SelectsubstationByKey", sb); if (sb != null) { sb.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; sb.LayerID = tlVectorControl1.SVGDocument.CurrentLayer.ID; sb.EleID = xml1.GetAttribute("id"); if (((PSP_PowerSubstation_Info)obj).Flag == "2") { sb.ObligateField3 = "规划"; } else if (((PSP_PowerSubstation_Info)obj).Flag == "1") { sb.ObligateField3 = "现行"; } Services.BaseService.Update<substation>(sb); } else { sb = new substation(); sb.UID = ((PSP_PowerSubstation_Info)obj).UID; sb.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; sb.LayerID = tlVectorControl1.SVGDocument.CurrentLayer.ID; sb.EleID = xml1.GetAttribute("id"); if (((PSP_PowerSubstation_Info)obj).Flag == "2") { sb.ObligateField3 = "规划"; } else if (((PSP_PowerSubstation_Info)obj).Flag == "1") { sb.ObligateField3 = "现行"; } Services.BaseService.Create<substation>(sb); } } else { obj = DeviceHelper.GetDevice<PSP_Substation_Info>(deviceid); if (obj != null) { xml1.SetAttribute("info-name", ((PSP_Substation_Info)obj).Title); //XmlElement n1 = tlVectorControl1.SVGDocument.SelectSingleNode("/text[@ParentUID='" + xml1.GetAttribute("id") + "']"); DeviceHelper.ShowDeviceDlg(DeviceType.BDZ, deviceid, false); } substation sb = new substation(); sb.UID = ((PSP_Substation_Info)obj).UID; sb = (substation)Services.BaseService.GetObject("SelectsubstationByKey", sb); if (sb != null) { sb.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; sb.LayerID = tlVectorControl1.SVGDocument.CurrentLayer.ID; sb.EleID = xml1.GetAttribute("id"); if (((PSP_Substation_Info)obj).Flag == "2") { sb.ObligateField3 = "规划"; } else if (((PSP_Substation_Info)obj).Flag == "1") { sb.ObligateField3 = "现行"; } Services.BaseService.Update<substation>(sb); } else { sb = new substation(); sb.UID = ((PSP_Substation_Info)obj).UID; sb.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; sb.EleID = xml1.GetAttribute("id"); sb.LayerID = tlVectorControl1.SVGDocument.CurrentLayer.ID; if (((PSP_Substation_Info)obj).Flag == "2") { sb.ObligateField3 = "规划"; } else if (((PSP_Substation_Info)obj).Flag == "1") { sb.ObligateField3 = "现行"; } Services.BaseService.Create<substation>(sb); } } } //frmSubstationProperty frmSub = new frmSubstationProperty(); //frmSub.jwstr = strjwd; //frmSub.InitData(xml1.GetAttribute("id"), tlVectorControl1.SVGDocument.SvgdataUid, SvgDocument.currentLayer, lab); //if (frmSub.ShowDialog() == DialogResult.OK) //{ // xml1.SetAttribute("info-name", frmSub.Sub.EleName); // SVG_ENTITY ent = new SVG_ENTITY(); // if (frmSub.IsCreate) // { // ent.SUID = Guid.NewGuid().ToString(); // ent.EleID = frmSub.Sub.EleID; // ent.layerID = frmSub.Sub.LayerID; // ent.MDATE = System.DateTime.Now; // ent.NAME = frmSub.Sub.EleName; // ent.svgID = frmSub.Sub.SvgUID; // ent.TYPE = "substation"; // ent.voltage = Convert.ToInt32(frmSub.Sub.ObligateField1); // Services.BaseService.Create<SVG_ENTITY>(ent); // } // else // { // ent.NAME = frmSub.Sub.EleName; // ent.layerID = frmSub.Sub.LayerID; // ent.MDATE = System.DateTime.Now; // //ent.voltage = fl.Line.Voltage; // Services.BaseService.Update<SVG_ENTITY>(ent); // } //} } if (xml1.GetAttribute("xlink:href").Contains("XL_GT_3") || xml1.GetAttribute("xlink:href").Contains("XL_GT_4")) { frmInputNum num = new frmInputNum(); num.InputStr = xml1.GetAttribute("order"); num.ShowDialog(); xml1.SetAttribute("order", num.InputStrSEL); } //if (xml1.GetAttribute("xlink:href").Contains("bdz") || xml1.GetAttribute("xlink:href").Contains("hwg") || // xml1.GetAttribute("xlink:href").Contains("fjx") || xml1.GetAttribute("xlink:href").Contains("kbs") || // xml1.GetAttribute("xlink:href").Contains("byq") || xml1.GetAttribute("xlink:href").Contains("kg")) //{ // frmInputDialog n1 = new frmInputDialog(); // n1.InputStr = xml1.GetAttribute("info-name").ToString(); // if (n1.ShowDialog() == DialogResult.OK) // { // xml1.SetAttribute("info-name",n1.InputStr); // } //} if (xml1.GetAttribute("xlink:href").Contains("kbs") || xml1.GetAttribute("xlink:href").Contains("hwg")) { frmkbsProperty num = new frmkbsProperty(); num.InitData(((SvgElement)xml1).ID, tlVectorControl1.SVGDocument.SvgdataUid, tlVectorControl1.SVGDocument.CurrentLayer.ID); num.ShowDialog(); } if (xml1.GetAttribute("xlink:href").Contains("fjx")) { frmfjxProperty num = new frmfjxProperty(); num.InitData(((SvgElement)xml1).ID, tlVectorControl1.SVGDocument.SvgdataUid, tlVectorControl1.SVGDocument.CurrentLayer.ID); num.ShowDialog(); } if (xml1.GetAttribute("xlink:href").Contains("byq")) { frmbyqProperty num = new frmbyqProperty(); num.InitData(((SvgElement)xml1).ID, tlVectorControl1.SVGDocument.SvgdataUid, tlVectorControl1.SVGDocument.CurrentLayer.ID); num.ShowDialog(); } if (xml1.GetAttribute("xlink:href").Contains("SB_GT")) { string lineWidth = "2"; string Code = xltProcessor.GetCurrentLineCode(); string _len = xltProcessor.GetWholeLineLength(Code).ToString("#####.####"); frmLineProperty fl = new frmLineProperty(); fl.LineNode = tlVectorControl1.SVGDocument.CurrentElement; fl.InitData(Code, tlVectorControl1.SVGDocument.SvgdataUid, _len, SvgDocument.currentLayer); if (fl.ShowDialog() == DialogResult.OK) { //Value="stroke-dasharray:8 8;stroke-width:2;stroke:#00C000;" lineWidth = fl.LineWidth; string styleValue = ""; if (fl.Line.ObligateField1 == "规划") { styleValue = "stroke-dasharray:4 4;stroke-width:" + lineWidth + ";"; } else { styleValue = "stroke-width:" + lineWidth + ";"; } styleValue = styleValue + "stroke:" + ColorTranslator.ToHtml(Color.FromArgb(Convert.ToInt32(fl.Line.ObligateField2))); ((XmlElement)tlVectorControl1.SVGDocument.CurrentElement).RemoveAttribute("style"); ((XmlElement)tlVectorControl1.SVGDocument.CurrentElement).SetAttribute("style", styleValue); xltProcessor.SetWholeLineAttribute(Code, "style", styleValue); } } } if (e.ClickedItem.Text == "移动") { if (tlVectorControl1.SVGDocument.CurrentElement == null || tlVectorControl1.SVGDocument.CurrentElement.ID == "svg") { return; } XmlElement xmln = (XmlElement)tlVectorControl1.SVGDocument.CurrentElement; frmMove fm = new frmMove(); PointF pf11 = ((Use)xmln).CenterPoint; LongLat temp = mapview.ParseToLongLat((int)pf11.X, (int)pf11.Y); string[] jd = temp.Longitude.ToString("####.####").Split('.'); int d1 = Convert.ToInt32(jd[0]); string[] df1 = Convert.ToString(Convert.ToDecimal("0." + jd[1]) * 60).Split('.'); int f1 = Convert.ToInt32(df1[0]); decimal m1 = Convert.ToDecimal("0." + df1[1]) * 60; string[] wd = temp.Latitude.ToString("####.####").Split('.'); int d2 = Convert.ToInt32(wd[0]); string[] df2 = Convert.ToString(Convert.ToDecimal("0." + wd[1]) * 60).Split('.'); int f2 = Convert.ToInt32(df2[0]); decimal m2 = Convert.ToDecimal("0." + df2[1]) * 60; strj1 = d1.ToString(); strw1 = f1.ToString(); strd1 = m1.ToString(); strj2 = d2.ToString(); strw2 = f2.ToString(); strd2 = m2.ToString(); fm.Init(strj1, strw1, strd1, strj2, strw2, strd2); if (fm.ShowDialog() == DialogResult.OK) { string strValue = fm.StrValue; string[] str = strValue.Split(','); string[] JWD1 = str[0].Split(' '); decimal J1 = Convert.ToDecimal(JWD1[0]); decimal W1 = Convert.ToDecimal(JWD1[1]); decimal D1 = Convert.ToDecimal(JWD1[2]); string[] JWD2 = str[1].Split(' '); decimal J2 = Convert.ToDecimal(JWD2[0]); decimal W2 = Convert.ToDecimal(JWD2[1]); decimal D2 = Convert.ToDecimal(JWD2[2]); decimal JD = J1 + W1 / 60 + D1 / 3600; decimal WD = J2 + W2 / 60 + D2 / 3600; PointF pf1 = mapview.ParseToPoint(JD, WD); PointF p1 = ((Use)xmln).CenterPoint; SvgElement e1 = xmln as SvgElement; Matrix matrix2 = ((IGraph)e1).GraphTransform.Matrix.Clone(); Matrix matrix3 = tlVectorControl1.DrawArea.CoordTransform.Clone(); matrix3.Invert(); matrix2.Multiply(matrix3, MatrixOrder.Append); matrix2.Invert(); PointF[] pfArray1 = new PointF[] { new PointF(pf1.X / tlVectorControl1.ScaleRatio, pf1.Y / tlVectorControl1.ScaleRatio), p1 }; matrix2.TransformPoints(pfArray1); float single1 = pfArray1[0].X - pfArray1[1].X; float single2 = pfArray1[0].Y - pfArray1[1].Y; Matrix matrix6 = ((IGraph)e1).Transform.Matrix.Clone(); if (e1.SvgAttributes.ContainsKey("transform")) { Matrix matrix7 = ((Matrix)e1.SvgAttributes["transform"]).Clone(); matrix7.Invert(); matrix6.Multiply(matrix7, MatrixOrder.Append); } Matrix matrix5 = new Matrix(); matrix5.Translate(single1, single2); Matrix matrix8 = ((IGraph)e1).Transform.Matrix.Clone(); matrix8.Multiply(matrix5); matrix6.Invert(); matrix6.Multiply(matrix8, MatrixOrder.Append); Transf tf = new Transf(); tf.setMatrix(matrix6); (xmln as Use).Transform = tf; } } if (e.ClickedItem.Text == "接线图") { if (tlVectorControl1.SVGDocument.CurrentElement == null || tlVectorControl1.SVGDocument.CurrentElement.ID == "svg") { return; } ParentUID = tlVectorControl1.SVGDocument.SvgdataUid; Save(); ParentUID = tlVectorControl1.SVGDocument.SvgdataUid; SVGFILE svg_temp = new SVGFILE(); //XmlElement xml1 = ((XmlElement)(e.Elements[0]));xml1.GetAttribute("id"); svg_temp.SUID = ((XmlElement)tlVectorControl1.SVGDocument.CurrentElement).GetAttribute("id"); svg_temp.FILENAME = getBdzName(svg_temp.SUID);// ((XmlElement)tlVectorControl1.SVGDocument.CurrentElement).GetAttribute("info-name"); string strWhere = string.Format("suid='{0}' or filename='{1}' ", svg_temp.SUID, svg_temp.FILENAME); IList svglist = Services.BaseService.GetList("SelectSVGFILEByWhere", strWhere); OpenJXT(svglist, svg_temp); //frmlar.SymbolDoc = tlVectorControl1.SVGDocument; //frmlar.Progtype = MapType; //frmlar.InitData(); //JxtBar(); } if (e.ClickedItem.Text == "打开") { if (tlVectorControl1.SVGDocument.CurrentElement.ID == "svg") { MessageBox.Show("请选择地块。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } UseRelating UseRel = new UseRelating(); UseRel.UseID = tlVectorControl1.SVGDocument.CurrentElement.ID; IList<UseRelating> UseRelList = Services.BaseService.GetList<UseRelating>("SelectUseRelatingByUseID", UseRel); if (UseRelList.Count < 1) { MessageBox.Show("选择的地块还没有关联到其他地图,请先设置关联地图", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } UseRel = UseRelList[0]; SVGFILE svgFile = new SVGFILE(); svgFile.SUID = UseRel.LinkUID; IList svgList = Services.BaseService.GetList("SelectSVGFILEByKey", svgFile); if (svgList.Count < 1) { MessageBox.Show("被关联的地图已经被删除,请重新设置关联地图", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } svgFile = (SVGFILE)svgList[0]; //SvgDocument doc = new SvgDocument(); if (!string.IsNullOrEmpty(svgFile.SVGDATA)) { //doc.LoadXml(svgFile.SVGDATA); ctlfile_OnOpenSvgDocument(sender, svgFile.SUID); } } if (e.ClickedItem.Text == "区域打印") { PrintHelper ph = new PrintHelper(tlVectorControl1, mapview); frmPrinter dlg = new frmPrinter(); dlg.printHelper = ph; dlg.ShowDialog(); return; ArrayList idlist = new ArrayList(); ArrayList symlist = new ArrayList(); SvgDocument _doc = new SvgDocument(); Graph poly1 = tlVectorControl1.SVGDocument.CurrentElement as Graph; if (poly1 == null || poly1.GetAttribute("id") == "svg") { return; } GraphicsPath gr1 = new GraphicsPath(); //gr1.AddRectangle(TLMath.getRectangle(poly1)); gr1.AddPolygon(TLMath.getPolygonPoints(poly1)); //gr1.CloseFigure(); gr1 = (GraphicsPath)poly1.GPath.Clone(); gr1.Transform((poly1 as IGraph).Transform.Matrix); RectangleF ef1 = gr1.GetBounds(); ef1 = PathFunc.GetBounds(gr1); StringBuilder svgtxt = new StringBuilder("<?xml version=\"1.0\" encoding=\"utf-8\"?><svg id=\"svg\" width=\"" + ef1.Width + "\" height=\"" + ef1.Height + "\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:itop=\"http://www.Itop.com/itop\">"); XmlNodeList nlist = tlVectorControl1.SVGDocument.GetElementsByTagName("defs"); if (nlist.Count > 0) { XmlNode node = nlist[0]; svgtxt.AppendLine(node.OuterXml); } SvgElementCollection.ISvgElementEnumerator enumerator1 = tlVectorControl1.DrawArea.ElementList.GetEnumerator();// mouseAreaControl.PicturePanel.ElementList.GetEnumerator(); while (enumerator1.MoveNext()) { IGraph graph1 = (IGraph)enumerator1.Current; GraphicsPath path1 = (GraphicsPath)graph1.GPath.Clone(); //path1.Transform(graph1.GraphTransform.Matrix); //path1.Transform(graph1.Transform.Matrix); // RectangleF ef2 = path1.GetBounds();// PathFunc.GetBounds(path1); //for (int n = 0; n < selCol.Count - 1; n++) //{ // //_doc.AppendChild((XmlNode)selCol[n]); // svgtxt = svgtxt + ((XmlElement)selCol[n]).OuterXml + "\r\n"; //} if (!graph1.Visible || !graph1.DrawVisible || !graph1.Layer.Visible) continue; GraphicsPath path2 = (GraphicsPath)graph1.GPath.Clone(); path2.Transform(graph1.Transform.Matrix); RectangleF ef2 = PathFunc.GetBounds(path2); if (ef1.Contains(ef2) || RectangleF.Intersect(ef1, ef2) != RectangleF.Empty) { SvgElement ele = (SvgElement)graph1; svgtxt.AppendLine(ele.OuterXml); //tlVectorControl1.SVGDocument.AddSelectElement(graph1); if (graph1 is Use) { //PointF offset = TLMath.getUseOffset(((XmlElement)graph1).GetAttribute("xlink:href")); //if (ef1.Contains(new PointF(((Use)graph1).X + offset.X, ((Use)graph1).Y + offset.Y))) { //SvgElement ele = (SvgElement)graph1; //svgtxt.AppendLine(ele.OuterXml); string symid = ((XmlElement)graph1).GetAttribute("xlink:href"); if (!symlist.Contains(symid)) { symlist.Add(symid); } //} } if (graph1.GetType().FullName == "ItopVector.Core.Figure.Polyline") { string IsLead = ((XmlElement)graph1).GetAttribute("IsLead"); if (IsLead != "") { if (ef1.Contains(ef2)) { idlist.Add(graph1.ID); } } } } //if (ef1.Contains(ef2)|| RectangleF.Intersect(ef1,ef2) !=RectangleF.Empty ) //{ // SvgElement ele = (SvgElement)graph1; // svgtxt.AppendLine(ele.OuterXml); // //tlVectorControl1.SVGDocument.AddSelectElement(graph1); // if (graph1 is Use ) { // PointF offset = TLMath.getUseOffset(((XmlElement)graph1).GetAttribute("xlink:href")); // if (ef1.Contains(new PointF(((Use)graph1).X + offset.X, ((Use)graph1).Y + offset.Y))) { // //SvgElement ele = (SvgElement)graph1; // //svgtxt.AppendLine(ele.OuterXml); // string symid = ((XmlElement)graph1).GetAttribute("xlink:href"); // if (!symlist.Contains(symid)) { // symlist.Add(symid); // } // } // } // if (graph1.GetType().FullName == "ItopVector.Core.Figure.Polyline") { // string IsLead = ((XmlElement)graph1).GetAttribute("IsLead"); // if (IsLead != "") { // if (ef1.Contains(ef2)) { // idlist.Add(graph1.ID); // } // } // } //} } symlist = ResetList(symlist); svgtxt.AppendLine("</svg>"); _doc.LoadXml(svgtxt.ToString()); _doc.SvgdataUid = tlVectorControl1.SVGDocument.SvgdataUid; frmPrintF pri = new frmPrintF(); pri.Init(tlVectorControl1.SVGDocument.CurrentElement.ID, tlVectorControl1.SVGDocument.SvgdataUid); if (pri.ShowDialog() == DialogResult.OK) { frmSubPrint s = new frmSubPrint(); s.Vector = tlVectorControl1; s.InitImg(pri.strzt, pri.strgs, pri.pri, idlist, symlist); s.Open(_doc, ef1); s.Show(); } } if (e.ClickedItem.Text == "分类统计报表") { if (tlVectorControl1.SVGDocument.CurrentElement == null || tlVectorControl1.SVGDocument.CurrentElement.ID == "svg") { return; } IGraph poly1 = (IGraph)tlVectorControl1.SVGDocument.CurrentElement; frmPloyPrint p = new frmPloyPrint(); p.InitDate(poly1.ID, tlVectorControl1.SVGDocument.SvgdataUid); p.ShowDialog(); } if (e.ClickedItem.Text == "保存图片") { if (tlVectorControl1.SVGDocument.CurrentElement.GetType().ToString() == "ItopVector.Core.Figure.RectangleElement") { //frmImgInfoInput finput = new frmImgInfoInput(); //if (finput.ShowDialog() == DialogResult.OK) //{ PrintHelper ph = new PrintHelper(tlVectorControl1, mapview); frmImgManager frm = new frmImgManager(); //frm.StrName = finput.StrName; //frm.StrRemark = finput.StrRemark; frm.Pic = ph.getImage(); frm.ShowDialog(); //} } } } catch (Exception e1) { //MessageBox.Show(e1.Message); } if (e.ClickedItem.Text == "三维变电站") { try { string strid = tlVectorControl1.SVGDocument.CurrentElement.ID; substation s = new substation(); s.EleID = strid; s.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; s = (substation)Services.BaseService.GetObject("SelectsubstationByEleID", s); ProcessStartInfo p = new ProcessStartInfo(); p.FileName = Application.StartupPath + "\\" + s.EleName + "\\bdz.exe"; p.WorkingDirectory = Application.StartupPath + "\\" + s.EleName; Process.Start(p); } catch (Exception e1) { } } if (e.ClickedItem.Text == "更新关联变电站") { UpdateLine(); } if (e.ClickedItem.Text == "删除") { Delete(); } }
public void UnGroup2(ItopVector.Core.Figure.Group group) { if (group.ParentNode is ItopVector.Core.Figure.Group) { string LayerID=group.GetAttribute("layer"); XmlNode node1 = group.PreviousSibling; while (!(node1 is SvgElement) && (node1 != null)) { node1 = node1.PreviousSibling; } SvgElementCollection collection1 = group.GraphList; SvgDocument document1 = this.SVGDocument; document1.NumberOfUndoOperations += ((2*collection1.Count) + 500); ItopVector.Core.Figure.Group group1 = (ItopVector.Core.Figure.Group) group.ParentNode; Matrix matrix1 = group.Transform.Matrix.Clone(); for (int num1 = collection1.Count - 1; num1 >= 0; num1--) { SvgElement element1 = (SvgElement) collection1[num1]; if (element1 is IGraph) { Matrix matrix2 = new Matrix(); if (element1.SvgAttributes.ContainsKey("transform")) { matrix2 = ((Matrix) element1.SvgAttributes["transform"]).Clone(); } matrix2.Multiply(matrix1, MatrixOrder.Append); Transf transf1 = new Transf(); transf1.setMatrix(matrix2); string text1 = transf1.ToString(); AttributeFunc.SetAttributeValue(element1, "transform", text1); // AttributeFunc.SetAttributeValue(element1, "layer", LayerID); } element1.AllowRename =false; if (node1 != null) { group1.InsertAfter(element1, node1); } else { group1.PrependChild(element1); } element1.AllowRename =true; } group1.RemoveChild(group); this.SVGDocument.NotifyUndo(); } }
public SvgElement AddElement(ISvgElement mypath) { // AttributeFunc.SetAttributeValue((XmlElement)mypath,"layer",SvgDocument.currentLayer); XmlNode node1 = OwnerDocument.RootElement; XmlNode newNode =null; Matrix matrix1 = new Matrix(); // if (node1 is IGraph) // { // matrix1 = ((IGraph) node1).GraphTransform.Matrix.Clone(); // Matrix matrix2 = this.coordTransform.Clone(); // matrix2.Invert(); // matrix1.Multiply(matrix2, MatrixOrder.Append); // } // matrix1.Invert(); // matrix1 = TransformFunc.RoundMatrix(matrix1, 2); bool flag1 = OwnerDocument.AcceptChanges; // OwnerDocument.AcceptChanges = false; OwnerDocument.AcceptChanges = true; if (mypath is IGraphPath) { ISvgBrush brush1 = ((IGraphPath) mypath).GraphBrush; if ((brush1 is ITransformBrush) && (((SvgElement) brush1).ParentNode == null)) { bool flag2 = OwnerDocument.AcceptChanges; OwnerDocument.AcceptChanges = true; OwnerDocument.NumberOfUndoOperations++; XmlNode node2 = OwnerDocument.AddDefsElement((SvgElement) brush1); OwnerDocument.AcceptChanges = false; if (node2 is ITransformBrush) { string text1 = ((SvgElement) node2).ID; AttributeFunc.SetAttributeValue((SvgElement) mypath, "fill", "url(#" + text1 + ")"); } OwnerDocument.AcceptChanges = flag2; } brush1 = ((IGraphPath) mypath).GraphStroke.Brush; if ((brush1 is ITransformBrush) && (((SvgElement) brush1).ParentNode == null)) { bool flag3 = OwnerDocument.AcceptChanges; OwnerDocument.AcceptChanges = true; OwnerDocument.NumberOfUndoOperations++; XmlNode node3 = OwnerDocument.AddDefsElement((SvgElement) brush1); OwnerDocument.AcceptChanges = false; if (node3 is ITransformBrush) { string text2 = ((SvgElement) node3).ID; AttributeFunc.SetAttributeValue((SvgElement) mypath, "stroke", "url(#" + text2 + ")"); } OwnerDocument.AcceptChanges = flag3; } } if (!matrix1.IsIdentity && (mypath is IGraph)) { bool flag4 = OwnerDocument.AcceptChanges; OwnerDocument.AcceptChanges = false; Matrix matrix3 = ((IGraph) mypath).Transform.Matrix.Clone(); matrix1.Multiply(matrix3); Transf transf1 = new Transf(); transf1.setMatrix(matrix1); AttributeFunc.SetAttributeValue((SvgElement) mypath, "transform", transf1.ToString()); OwnerDocument.AcceptChanges = flag4; } if (((SvgElement) mypath).ParentNode != node1) { if (((ContainerElement) node1).IsValidChild((SvgElement) mypath)) { // node1.AppendChild((SvgElement) mypath); SvgElement element1 =(SvgElement) mypath;//(SvgElement)OwnerDocument.ImportNode((SvgElement) mypath,true); newNode = node1.AppendChild(element1); OwnerDocument.Render(element1); } } OwnerDocument.AcceptChanges = flag1; return newNode!=null?newNode as SvgElement:null; }
/*public void ResetPoly() { SvgElementCollection col= tlVectorControl1.SVGDocument.SelectCollection; if(col.Count<1){ return; } SvgElementCollection.ISvgElementEnumerator enumerator1 = tlVectorControl1.DrawArea.ElementList.GetEnumerator(); foreach(SvgElement ele in col){ if (ele.GetType().ToString() == "ItopVector.Core.Figure.Polygon") { glebeProperty p=new glebeProperty(); p.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; p.EleID = ((IGraph)ele).ID; p = Services.BaseService.GetObject("SelectglebePropertyByEleID", p); if(p!=null){ PointF[] tfArray1 = TLMath.getPolygonPoints(ele); GraphicsPath selectAreaPath = new GraphicsPath(); selectAreaPath.AddLines(tfArray1); selectAreaPath.CloseFigure(); Region region1 = new Region(selectAreaPath); while (enumerator1.MoveNext()) { IGraph graph1 = (IGraph)enumerator1.Current; GraphicsPath path1 = (GraphicsPath)graph1.GPath.Clone(); path1.Transform(graph1.GraphTransform.Matrix); Region region2 = new Region(path1); region2.Intersect(region1); if (!region2.GetBounds(Graphics.FromHwnd(IntPtr.Zero)).IsEmpty) { glebeProperty p1 = new glebeProperty(); p1.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; p1.EleID = graph1.ID; p1 = Services.BaseService.GetObject("SelectglebePropertyByEleID", p1); if(p1!=null){ p1.ParentEleID = p.UID; Services.BaseService.Update("UpdateglebePropertyAreaAll", p1); } } } } } } MessageBox.Show("更新完成。","提示",MessageBoxButtons.OK,MessageBoxIcon.Information); }*/ private void contextMenuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { try { if (e.ClickedItem.Text == "可靠性分析") { XmlElement xml1 = (XmlElement)tlVectorControl1.SVGDocument.CurrentElement; if (tlVectorControl1.SVGDocument.CurrentElement.GetType().ToString() == "ItopVector.Core.Figure.Polyline") { string deviceid = xml1.GetAttribute("Deviceid"); if (!string.IsNullOrEmpty(deviceid)) { DeviceHelper.uid = tlVectorControl1.SVGDocument.SvgdataUid; DeviceHelper.layerid = tlVectorControl1.SVGDocument.CurrentLayer.ID; DeviceHelper.eleid = tlVectorControl1.SVGDocument.CurrentElement.ID; PSPDEV obj = (PSPDEV)DeviceHelper.GetDevice<PSPDEV>(deviceid); if (obj != null && obj.Type == "73") { //更换为元件可靠性 Itop.TLPSP.DEVICE.FrmpdrelProject xf = new Itop.TLPSP.DEVICE.FrmpdrelProject(); xf.init(obj); xf.ShowDialog(); } } } } if (e.ClickedItem.Text == "属性") { XmlElement xml1 = (XmlElement)tlVectorControl1.SVGDocument.CurrentElement; //PointF[] pf = TLMath.getPolygonPoints(xml1); DeviceHelper.xml1 = xml1; //((Polygon)xml1).Transform.Matrix.TransformPoints(pf); // 规划 if (getlayer(SvgDocument.currentLayer, "电网规划层", tlVectorControl1.SVGDocument.getLayerList())) { if (xml1 == null || tlVectorControl1.SVGDocument.CurrentElement.ID == "svg") { MessageBox.Show("请先选择规划区域。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (tlVectorControl1.SVGDocument.CurrentElement.GetType().ToString() == "ItopVector.Core.Figure.RectangleElement") { //frmImgManager frm = new frmImgManager(); //frm.Show(); } if (tlVectorControl1.SVGDocument.CurrentElement.GetType().ToString() == "ItopVector.Core.Figure.Polygon") { XmlNodeList n1 = tlVectorControl1.SVGDocument.GetElementsByTagName("use"); PointF[] tfArray1 = TLMath.getPolygonPoints(xml1); string str220 = ""; string str110 = ""; string str66 = ""; string str_id = ""; GraphicsPath selectAreaPath = new GraphicsPath(); selectAreaPath.AddLines(tfArray1); selectAreaPath.CloseFigure(); //Matrix x=new Matrix( //Region region1 = new Region(selectAreaPath); for (int i = 0; i < n1.Count; i++) { float OffX = 0f; float OffY = 0f; bool ck = false; Use use = (Use)n1[i]; if (use.GetAttribute("xlink:href").Contains("byq") || use.GetAttribute("xlink:href").Contains("pds")) { if (selectAreaPath.IsVisible(use.CenterPoint)) { if (use.GetAttribute("Deviceid") != "") { str_id = str_id + "'" + use.GetAttribute("Deviceid") + "',"; } } } if (use.GetAttribute("xlink:href").Contains("Substation")) { //string strMatrix = use.GetAttribute("transform"); //if (strMatrix != "") //{ // strMatrix = strMatrix.Replace("matrix(", ""); // strMatrix = strMatrix.Replace(")", ""); // string[] mat = strMatrix.Split(','); // if (mat.Length > 5) // { // OffX = Convert.ToSingle(mat[4]); // OffY = Convert.ToSingle(mat[5]); // } //} //if (frmlar.getSelectedLayer().Contains(use.GetAttribute("layer"))) { // ck = true; //} for (int j= 0; j< frmlar.GetSelectLayers().Count;j++ ) { if ((frmlar.GetSelectLayers()[j] as Layer).ID==use.GetAttribute("layer")) { ck = true; } } PointF TempPoint = TLMath.getUseOffset(use.GetAttribute("xlink:href")); //if (selectAreaPath.IsVisible(use.X + TempPoint.X + OffX, use.Y + TempPoint.Y + OffY) && ck) if (selectAreaPath.IsVisible(use.CenterPoint) && ck) { if (use.GetAttribute("xlink:href").Contains("220")) { str220 = str220 + "'" + use.GetAttribute("Deviceid") + "',"; } if (use.GetAttribute("xlink:href").Contains("110")) { str110 = str110 + "'" + use.GetAttribute("Deviceid") + "',"; } if (use.GetAttribute("xlink:href").Contains("66")) { str66 = str66 + "'" + use.GetAttribute("Deviceid") + "',"; } } } } if (str220.Length > 1) { str220 = str220.Substring(0, str220.Length - 1); } if (str110.Length > 1) { str110 = str110.Substring(0, str110.Length - 1); } if (str66.Length > 1) { str66 = str66.Substring(0, str66.Length - 1); } if (str_id.Length > 1) { str_id = str_id.Substring(0, str_id.Length - 1); } glebeProperty _gle = new glebeProperty(); _gle.EleID = tlVectorControl1.SVGDocument.CurrentElement.ID; _gle.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; IList<glebeProperty> UseProList = Services.BaseService.GetList<glebeProperty>("SelectglebePropertyByEleID", _gle); if (UseProList.Count > 0) { _gle = UseProList[0]; _gle.LayerID = SvgDocument.currentLayer; frmMainProperty f = new frmMainProperty(); f.strID = str_id; f.InitData(_gle, str220, str110, str66); PointF[] pn = (PointF[])((Polygon)xml1).Points.Clone(); ((Polygon)xml1).Transform.Matrix.TransformPoints(pn); string s1 = ""; for (int p = 0; p < pn.Length; p++) { s1 = s1 + pn[p].X.ToString() + " " + pn[p].Y.ToString() + ","; } f.Str = s1; f.ShowDialog(); if (f.checkBox1.Checked == false) { tlVectorControl1.SVGDocument.RootElement.RemoveChild(tlVectorControl1.SVGDocument.CurrentElement); } //tlVectorControl1.Refresh(); } else { _gle = new glebeProperty(); _gle.LayerID = SvgDocument.currentLayer; frmMainProperty f = new frmMainProperty(); f.strID = str_id; f.InitData(_gle, str220, str110, str66); PointF[] pn = (PointF[])((Polygon)xml1).Points.Clone(); ((Polygon)xml1).Transform.Matrix.TransformPoints(pn); string s1 = ""; for (int p = 0; p < pn.Length; p++) { s1 = s1 + pn[p].X.ToString() + " " + pn[p].Y.ToString() + ","; } f.Str = s1; f.ShowDialog(); } //} } } if (getlayer(SvgDocument.currentLayer, "城市规划层", tlVectorControl1.SVGDocument.getLayerList())) { if (tlVectorControl1.SVGDocument.getRZBRatio() != "") { rzb = tlVectorControl1.SVGDocument.getRZBRatio(); } if (xml1 == null || tlVectorControl1.SVGDocument.CurrentElement.ID == "svg") { MessageBox.Show("请先选择地块。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (tlVectorControl1.SVGDocument.CurrentElement.GetType().ToString() == "ItopVector.Core.Figure.Polygon") { string IsArea = ((XmlElement)tlVectorControl1.SVGDocument.CurrentElement).GetAttribute("IsArea"); if (IsArea != "") { frmProperty f = new frmProperty();//地块属性 if (SelUseArea == "") { SelUseArea = "0"; } f.XZ_bdz = XZ_bdz; f.InitData(xml1.GetAttribute("id"), tlVectorControl1.SVGDocument.SvgdataUid, SelUseArea, rzb, SvgDocument.currentLayer); //f.ShowDialog(); #if(!CITY) //将其中心点保存在XML中 PointF p = TLMath.polyCentriod((XmlElement)tlVectorControl1.SVGDocument.CurrentElement); string title = p.X.ToString() + "," + p.Y.ToString(); ((XmlElement)tlVectorControl1.SVGDocument.CurrentElement).SetAttribute("centrpoint", title); if (progtype != "城市规划层") { f.IsReadonly = true; } #endif if (f.ShowDialog() == DialogResult.OK) { SVG_ENTITY ent = new SVG_ENTITY(); if (f.IsCreate) { ent.SUID = Guid.NewGuid().ToString(); ent.EleID = f.gPro.EleID; ent.layerID = f.gPro.LayerID; ent.MDATE = System.DateTime.Now; ent.NAME = f.gPro.UseID; ent.svgID = f.gPro.SvgUID; ent.TYPE = "polygon-dk"; //ent.voltage = f.gPro.Voltage; Services.BaseService.Create<SVG_ENTITY>(ent); } else { ent.NAME = f.gPro.UseID; ent.layerID = f.gPro.LayerID; ent.MDATE = System.DateTime.Now; //ent.voltage = fl.Line.Voltage; Services.BaseService.Update<SVG_ENTITY>(ent); } if (f.gPro.ObligateField1 != "") { string color1 = ColorTranslator.ToHtml(Color.FromArgb(Convert.ToInt32(f.gPro.ObligateField1))); color1 = "fill:" + color1 + ";"; ((XmlElement)tlVectorControl1.SVGDocument.CurrentElement).SetAttribute("style", color1); tlVectorControl1.UpdateProperty(); } if (xzwcflag == "1" && f.bdzflag) { if (extsublist.Count > 0 && subandfhlist.Count > 0) { bool sfsflag=false; for(int m=0;m<polylist.Count;m++) { if((polylist[m] as XmlElement).GetAttribute("id")==f.gPro.EleID) { sfsflag=true; break; } } if (!sfsflag) { MessageBox.Show("地块非选址的地块中 请重新选址!"); return; } try { List<Layer> layercol= getxzxllayers(tlVectorControl1.SVGDocument.getLayerList()); if (layercol.Count>0) { FrmSelxzlayer frm=new FrmSelxzlayer(); frm.Layercol=layercol; if (frm.ShowDialog()==DialogResult.OK) { string layerid=frm.sellayerid; RebdzxzResult1(subandfhlist, extsublist, f.gPro, f.bdzzqname,layerid); } else RebdzxzResult(subandfhlist, extsublist, f.gPro, f.bdzzqname); } // RebdzxzResult(subandfhlist, extsublist, f.gPro, f.bdzzqname); } catch (System.Exception ex) { MessageBox.Show("请计算有问题 请重新计算!"); return; } } else { MessageBox.Show("选址变电站没有数据 请重新选址!"); return; } } else { MessageBox.Show("请重新选址!"); return; } } } } } if (!Wjghboolflag) { if (tlVectorControl1.SVGDocument.CurrentElement.GetType().ToString() == "ItopVector.Core.Figure.Line" || tlVectorControl1.SVGDocument.CurrentElement.GetType().ToString() == "ItopVector.Core.Figure.Polyline") { string lineWidth = "2"; string IsLead = ((XmlElement)tlVectorControl1.SVGDocument.CurrentElement).GetAttribute("IsLead"); //if (IsLead != "") //原先导线的属性添加情况 if (IsLead != "") //修改后的导线的属性添加情况 { XmlNodeList n11 = tlVectorControl1.SVGDocument.SelectNodes("svg/polygon [@IsArea='1']"); using (Graphics g = Graphics.FromHwnd(IntPtr.Zero)) { List<glebeProperty> glist = new List<glebeProperty>(); for (int i = 0; i < n11.Count; i++) { IGraph graph1 = (IGraph)n11[i]; GraphicsPath path1 = (GraphicsPath)graph1.GPath.Clone(); //path1.Transform(graph1.GraphTransform.Matrix); Region ef1 = new Region(path1); Polyline line = tlVectorControl1.SVGDocument.CurrentElement as Polyline; GraphicsPath gr2 = new GraphicsPath(); //gr2.AddLines(pfs); gr2.AddPath(line.GPath, true); gr2.CloseFigure(); Region region = new Region(gr2); ef1.Intersect(region); if (!ef1.GetBounds(g).IsEmpty) { glebeProperty gy = new glebeProperty(); gy.EleID = graph1.ID; gy.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; gy = (glebeProperty)Services.BaseService.GetObject("SelectglebePropertyByEleID", gy); if (gy != null) { glebeType gt = new glebeType(); gt.UID = gy.TypeUID; gt = (glebeType)Services.BaseService.GetObject("SelectglebeTypeByKey", gt); gy.TypeUID = gt.TypeName; glist.Add(gy); } } } DeviceHelper.glist = glist; } string dhx = xml1.GetAttribute("dhx_key"); if (dhx == "1" && checkEdit2.Checked == false) { frmDHXdlg d = new frmDHXdlg(); d.uid = xml1.GetAttribute("id"); d.Show(); return; } PSPDEV obj = new PSPDEV(); string deviceid = xml1.GetAttribute("Deviceid"); DeviceHelper.pspflag = false; DeviceHelper.Wjghflag = false; if (string.IsNullOrEmpty(deviceid)) { string[] deviceType = new string[] { "05", "73", "75" }; string xlwhere = " where SUID not in ("; XmlNodeList lslist = tlVectorControl1.SVGDocument.SelectNodes("svg/polyline [@IsLead='1'] [@Deviceid!=''] [@layer='" + SvgDocument.currentLayer + "']"); for (int x1 = 0; x1 < lslist.Count; x1++) { XmlElement _node = lslist[x1] as XmlElement; xlwhere = xlwhere + "'" + _node.GetAttribute("Deviceid") + "',"; } if (xlwhere.Length > 20) { xlwhere = xlwhere.Substring(0, xlwhere.Length - 1); xlwhere = xlwhere + ") and "; } else { xlwhere = ""; } DeviceHelper.xlwhere = xlwhere; obj = (PSPDEV)DeviceHelper.SelectDevice(Itop.Client.MIS.ProgUID, deviceType); DeviceHelper.xlwhere = ""; if (obj is PSPDEV) { deviceid = ((PSPDEV)obj).SUID; xml1.SetAttribute("Deviceid", deviceid); obj.LayerID = tlVectorControl1.SVGDocument.CurrentLayer.ID; obj.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; obj.EleID = ((SvgElement)xml1).ID; Services.BaseService.Update<PSPDEV>(obj); //将其设备加入到计算方案中 //获得方案名称 PSP_ELCPROJECT pd = new PSP_ELCPROJECT(); pd.ID = frmlar.FAID; pd = Services.BaseService.GetOneByKey<PSP_ELCPROJECT>(pd); if (pd != null) { bool operflag = false, dataflag = false; if (!string.IsNullOrEmpty(((PSPDEV)obj).OperationYear) && ((PSPDEV)obj).OperationYear.Length == 4 && pd.BelongYear.Length == 4) { if (Convert.ToInt32(((PSPDEV)obj).OperationYear) < Convert.ToInt32(pd.BelongYear)) { operflag = true; } } if (!string.IsNullOrEmpty(((PSPDEV)obj).Date2) && ((PSPDEV)obj).Date2.Length == 4 && pd.BelongYear.Length == 4) { if (Convert.ToInt32(((PSPDEV)obj).Date2) > Convert.ToInt32(pd.BelongYear)) { dataflag = true; } } if (operflag && dataflag) { PSP_ElcDevice elcDevice = new PSP_ElcDevice(); elcDevice.DeviceSUID = deviceid; elcDevice.ProjectSUID = frmlar.FAID; elcDevice = UCDeviceBase.DataService.GetOneByKey<PSP_ElcDevice>(elcDevice); if (elcDevice == null) { elcDevice = new PSP_ElcDevice(); elcDevice.DeviceSUID = deviceid; elcDevice.ProjectSUID = frmlar.FAID; UCDeviceBase.DataService.Create<PSP_ElcDevice>(elcDevice); } } } } } if (!string.IsNullOrEmpty(deviceid)) { DeviceHelper.uid = tlVectorControl1.SVGDocument.SvgdataUid; DeviceHelper.layerid = tlVectorControl1.SVGDocument.CurrentLayer.ID; DeviceHelper.eleid = tlVectorControl1.SVGDocument.CurrentElement.ID; obj = (PSPDEV)DeviceHelper.GetDevice<PSPDEV>(deviceid); if (obj != null)//------------wwwMX { xml1.SetAttribute("info-name", ((PSPDEV)obj).Name); if (obj.Type == "05") { DeviceHelper.ShowDeviceDlg(DeviceType.XL, deviceid, false); } if (obj.Type == "01") { DeviceHelper.ShowDeviceDlg(DeviceType.MX, deviceid, false); } if (obj.Type == "73") { DeviceHelper.ShowDeviceDlg(DeviceType.PDXL, deviceid, false); } if (obj.Type == "75") { DeviceHelper.ShowDeviceDlg(DeviceType.LUX, deviceid, false); } } //***** ********添加FistNode和LastNode XmlNodeList useList = tlVectorControl1.SVGDocument.SelectNodes("svg/use"); foreach (XmlNode element in useList) { if (!string.IsNullOrEmpty((element as XmlElement).GetAttribute("Deviceid"))) { string con = "WHERE SvgUID='" + (element as XmlElement).GetAttribute("Deviceid") + "'AND ProjectID = '" + Itop.Client.MIS.ProgUID + "'" + "AND Type='01'"; IList pspMX = Services.BaseService.GetList("SelectPSPDEVByCondition", con); if (pspMX != null) { foreach (PSPDEV pspmx in pspMX) { if (obj.IName == pspmx.Name) { (xml1 as XmlElement).SetAttribute("FirstNode", (element as XmlElement).GetAttribute("id")); } else if (obj.JName == pspmx.Name) { (xml1 as XmlElement).SetAttribute("LastNode", (element as XmlElement).GetAttribute("id")); } } } } } } //** } } if (xml1.GetAttribute("xlink:href").Contains("Substation") || xml1.GetAttribute("xlink:href").Contains("Power")) {//变电站属性 string lab = xml1.GetAttribute("xlink:href"); float x = 0f; float y = 0f; //判断电压等级 int dyinfo = Convert.ToInt32(getDY(lab)); x = ((Use)xml1).X; y = ((Use)xml1).Y; PointF p1 = new PointF(x, y); PointF[] pnt = new PointF[1]; pnt[0] = p1; Use temp = xml1.Clone() as Use; temp.Transform.Matrix.TransformPoints(pnt); LongLat templat = mapview.OffSetZero(-(int)(pnt[0].X * tlVectorControl1.ScaleRatio), -(int)(pnt[0].Y * tlVectorControl1.ScaleRatio)); string[] jd = templat.Longitude.ToString("####.####").Split('.'); int d1 = Convert.ToInt32(jd[0]); string[] df1 = Convert.ToString(Convert.ToDecimal("0." + jd[1]) * 60).Split('.'); int f1 = Convert.ToInt32(df1[0]); decimal m1 = Convert.ToDecimal("0." + df1[1]) * 60; string[] wd = templat.Latitude.ToString("####.####").Split('.'); int d2 = Convert.ToInt32(wd[0]); string[] df2 = Convert.ToString(Convert.ToDecimal("0." + wd[1]) * 60).Split('.'); int f2 = Convert.ToInt32(df2[0]); decimal m2 = Convert.ToDecimal("0." + df2[1]) * 60; string strjwd = "经纬度: " + d1.ToString() + "°" + f1.ToString() + "′" + m1.ToString("##.#") + "″," + d2.ToString() + "°" + f2.ToString() + "′" + m2.ToString("##.#") + "″"; object obj = null; string deviceid = xml1.GetAttribute("Deviceid"); DeviceHelper.pspflag = false; DeviceHelper.Wjghflag = false; if (dyinfo >= 66) { DeviceHelper.subflag = false; } else DeviceHelper.subflag = true; Lab1://变电站、电源属性 if (string.IsNullOrEmpty(deviceid)) { //XmlElement n1 = tlVectorControl1.SVGDocument.CreateElement("text") as Text; if (xml1.GetAttribute("xlink:href").Contains("Power")) { obj = DeviceHelper.SelectDevice(DeviceType.DY, Itop.Client.MIS.ProgUID); //if (obj == null) //{ // tlVectorControl1.SVGDocument.CurrentElement = xml1 as SvgElement; // tlVectorControl1.Delete(); //} if (obj is PSP_PowerSubstation_Info) { deviceid = ((PSP_PowerSubstation_Info)obj).UID; ((PSP_PowerSubstation_Info)obj).LayerID = tlVectorControl1.SVGDocument.CurrentLayer.ID; //((PSP_PowerSubstation_Info)obj). = tlVectorControl1.SVGDocument.CurrentLayer.ID; Services.BaseService.Update<PSP_PowerSubstation_Info>(((PSP_PowerSubstation_Info)obj)); xml1.SetAttribute("Deviceid", deviceid); xml1.SetAttribute("info-name", ((PSP_PowerSubstation_Info)obj).Title); //获得方案名称 PSP_ELCPROJECT pd = new PSP_ELCPROJECT(); pd.ID = frmlar.FAID; pd = Services.BaseService.GetOneByKey<PSP_ELCPROJECT>(pd); if (pd != null) { string where = "where projectid='" + Itop.Client.MIS.ProgUID + "'and SvgUID='" + ((PSP_PowerSubstation_Info)obj).UID + "'"; IList<PSPDEV> list = Services.BaseService.GetList<PSPDEV>("SelectPSPDEVByCondition", where); //根据年份进行筛选 if (!string.IsNullOrEmpty(pd.BelongYear)) //根据参与计算设备属于那一年先进行一次筛选 { for (int i = 0; i < list.Count; i++) { if (!string.IsNullOrEmpty((list[i] as PSPDEV).OperationYear) && (list[i] as PSPDEV).OperationYear.Length == 4 && pd.BelongYear.Length == 4) { if (Convert.ToInt32((list[i] as PSPDEV).OperationYear) > Convert.ToInt32(pd.BelongYear)) { list.RemoveAt(i); i--; continue; } } if (!string.IsNullOrEmpty((list[i] as PSPDEV).Date2) && (list[i] as PSPDEV).Date2.Length == 4 && pd.BelongYear.Length == 4) { if (Convert.ToInt32((list[i] as PSPDEV).Date2) < Convert.ToInt32(pd.BelongYear)) { list.RemoveAt(i); i--; continue; } } } } foreach (PSPDEV pv in list) { //将其设备加入到计算方案中 PSP_ElcDevice elcDevice = new PSP_ElcDevice(); elcDevice.DeviceSUID = pv.SUID; elcDevice.ProjectSUID = frmlar.FAID; elcDevice = UCDeviceBase.DataService.GetOneByKey<PSP_ElcDevice>(elcDevice); if (elcDevice == null) { elcDevice = new PSP_ElcDevice(); elcDevice.DeviceSUID = pv.SUID; elcDevice.ProjectSUID = frmlar.FAID; UCDeviceBase.DataService.Create<PSP_ElcDevice>(elcDevice); } } } } substation sb = new substation(); sb.UID = ((PSP_PowerSubstation_Info)obj).UID; sb = (substation)Services.BaseService.GetObject("SelectsubstationByKey", sb); if (sb != null) { sb.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; sb.LayerID = tlVectorControl1.SVGDocument.CurrentLayer.ID; sb.EleID = xml1.GetAttribute("id"); if (((PSP_PowerSubstation_Info)obj).Flag == "2") { sb.ObligateField3 = "规划"; } else if (((PSP_PowerSubstation_Info)obj).Flag == "1") { sb.ObligateField3 = "现行"; } Services.BaseService.Update<substation>(sb); } else { sb = new substation(); sb.UID = ((PSP_PowerSubstation_Info)obj).UID; sb.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; sb.EleID = xml1.GetAttribute("id"); sb.LayerID = tlVectorControl1.SVGDocument.CurrentLayer.ID; if (((PSP_PowerSubstation_Info)obj).Flag == "2") { sb.ObligateField3 = "规划"; } else if (((PSP_PowerSubstation_Info)obj).Flag == "1") { sb.ObligateField3 = "现行"; } Services.BaseService.Create<substation>(sb); } } else { DeviceHelper.uid = tlVectorControl1.SVGDocument.SvgdataUid; DeviceHelper.eleid = tlVectorControl1.SVGDocument.CurrentElement.ID; DeviceHelper.layerid = tlVectorControl1.SVGDocument.CurrentLayer.ID; //wwww string bdzwhere = " UID not in ("; XmlNodeList useList = tlVectorControl1.SVGDocument.SelectNodes("svg/use [@Deviceid!=''] [@layer='" + SvgDocument.currentLayer + "']"); for (int x2 = 0; x2 < useList.Count; x2++) { XmlElement _node = useList[x2] as XmlElement; bdzwhere = bdzwhere + "'" + _node.GetAttribute("Deviceid") + "',"; } if (bdzwhere.Length > 13) { bdzwhere = bdzwhere.Substring(0, bdzwhere.Length - 1); bdzwhere = bdzwhere + ") and "; } else { bdzwhere = ""; } DeviceHelper.bdzwhere = bdzwhere; obj = DeviceHelper.SelectDevice(DeviceType.BDZ, Itop.Client.MIS.ProgUID); DeviceHelper.bdzwhere = ""; //if (obj == null) //{ // tlVectorControl1.SVGDocument.CurrentElement = xml1 as SvgElement; // tlVectorControl1.Delete(); //} if (obj is PSP_Substation_Info) { deviceid = ((PSP_Substation_Info)obj).UID; ((PSP_Substation_Info)obj).LayerID = tlVectorControl1.SVGDocument.CurrentLayer.ID; ((PSP_Substation_Info)obj).EleID = tlVectorControl1.SVGDocument.CurrentElement.ID; ((PSP_Substation_Info)obj).AreaID = Itop.Client.MIS.ProgUID; Services.BaseService.Update<PSP_Substation_Info>(((PSP_Substation_Info)obj)); xml1.SetAttribute("Deviceid", deviceid); xml1.SetAttribute("info-name", ((PSP_Substation_Info)obj).Title); //获得方案名称 PSP_ELCPROJECT pd = new PSP_ELCPROJECT(); pd.ID = frmlar.FAID; pd = Services.BaseService.GetOneByKey<PSP_ELCPROJECT>(pd); if (pd != null) { string where = "where projectid='" + Itop.Client.MIS.ProgUID + "'and SvgUID='" + ((PSP_Substation_Info)obj).UID + "'"; IList<PSPDEV> list = Services.BaseService.GetList<PSPDEV>("SelectPSPDEVByCondition", where); //根据年份进行筛选 if (!string.IsNullOrEmpty(pd.BelongYear)) //根据参与计算设备属于那一年先进行一次筛选 { for (int i = 0; i < list.Count; i++) { if (!string.IsNullOrEmpty((list[i] as PSPDEV).OperationYear) && (list[i] as PSPDEV).OperationYear.Length == 4 && pd.BelongYear.Length == 4) { if (Convert.ToInt32((list[i] as PSPDEV).OperationYear) > Convert.ToInt32(pd.BelongYear)) { list.RemoveAt(i); i--; continue; } } if (!string.IsNullOrEmpty((list[i] as PSPDEV).Date2) && (list[i] as PSPDEV).Date2.Length == 4 && pd.BelongYear.Length == 4) { if (Convert.ToInt32((list[i] as PSPDEV).Date2) < Convert.ToInt32(pd.BelongYear)) { list.RemoveAt(i); i--; continue; } } } } foreach (PSPDEV pv in list) { //将其设备加入到计算方案中 PSP_ElcDevice elcDevice = new PSP_ElcDevice(); elcDevice.DeviceSUID = pv.SUID; elcDevice.ProjectSUID = frmlar.FAID; elcDevice = UCDeviceBase.DataService.GetOneByKey<PSP_ElcDevice>(elcDevice); if (elcDevice == null) { elcDevice = new PSP_ElcDevice(); elcDevice.DeviceSUID = pv.SUID; elcDevice.ProjectSUID = frmlar.FAID; UCDeviceBase.DataService.Create<PSP_ElcDevice>(elcDevice); } } } //return; //根据变站创建线路 createLine(xml1, deviceid); } /* substation sb = new substation(); sb.UID = ((PSP_Substation_Info)obj).UID; sb = (substation)Services.BaseService.GetObject("SelectsubstationByKey", sb); if (sb != null) { sb.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; sb.LayerID = tlVectorControl1.SVGDocument.CurrentLayer.ID; sb.EleID = xml1.GetAttribute("id"); if (((PSP_Substation_Info)obj).Flag == "2") { sb.ObligateField3 = "规划"; } else if (((PSP_Substation_Info)obj).Flag == "1") { sb.ObligateField3 = "现行"; } Services.BaseService.Update<substation>(sb); } else { sb = new substation(); sb.UID = ((PSP_Substation_Info)obj).UID; sb.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; sb.EleID = xml1.GetAttribute("id"); sb.LayerID = tlVectorControl1.SVGDocument.CurrentLayer.ID; if (((PSP_Substation_Info)obj).Flag == "2") { sb.ObligateField3 = "规划"; } else if (((PSP_Substation_Info)obj).Flag == "1") { sb.ObligateField3 = "现行"; } Services.BaseService.Create<substation>(sb); }*/ } } if (!string.IsNullOrEmpty(deviceid)) { if (xml1.GetAttribute("xlink:href").Contains("Power")) { DeviceHelper.uid = tlVectorControl1.SVGDocument.SvgdataUid; DeviceHelper.eleid = tlVectorControl1.SVGDocument.CurrentElement.ID; DeviceHelper.layerid = tlVectorControl1.SVGDocument.CurrentLayer.ID; obj = DeviceHelper.GetDevice<PSP_PowerSubstation_Info>(deviceid); if (obj != null) { DeviceHelper.StartYear = startyear; //XmlElement n1 = tlVectorControl1.SVGDocument.SelectSingleNode("/text[@ParentUID='" + xml1.GetAttribute("id") + "']"); if (DeviceHelper.ShowDeviceDlg(DeviceType.DY, deviceid, false)) { obj = DeviceHelper.GetDevice<PSP_PowerSubstation_Info>(deviceid); xml1.SetAttribute("info-name", ((PSP_PowerSubstation_Info)obj).Title); } } else { deviceid = ""; goto Lab1; } // re substation sb = new substation(); sb.UID = ((PSP_PowerSubstation_Info)obj).UID; sb = (substation)Services.BaseService.GetObject("SelectsubstationByKey", sb); if (sb != null) { sb.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; sb.LayerID = tlVectorControl1.SVGDocument.CurrentLayer.ID; sb.EleID = xml1.GetAttribute("id"); if (((PSP_PowerSubstation_Info)obj).Flag == "2") { sb.ObligateField3 = "规划"; } else if (((PSP_PowerSubstation_Info)obj).Flag == "1") { sb.ObligateField3 = "现行"; } Services.BaseService.Update<substation>(sb); } else { sb = new substation(); sb.UID = ((PSP_PowerSubstation_Info)obj).UID; sb.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; sb.LayerID = tlVectorControl1.SVGDocument.CurrentLayer.ID; sb.EleID = xml1.GetAttribute("id"); if (((PSP_PowerSubstation_Info)obj).Flag == "2") { sb.ObligateField3 = "规划"; } else if (((PSP_PowerSubstation_Info)obj).Flag == "1") { sb.ObligateField3 = "现行"; } Services.BaseService.Create<substation>(sb); } } else { obj = DeviceHelper.GetDevice<PSP_Substation_Info>(deviceid); if (obj != null) { DeviceHelper.StartYear = startyear; //XmlElement n1 = tlVectorControl1.SVGDocument.SelectSingleNode("/text[@ParentUID='" + xml1.GetAttribute("id") + "']"); if (DeviceHelper.ShowDeviceDlg(DeviceType.BDZ, deviceid, false)) { obj = DeviceHelper.GetDevice<PSP_Substation_Info>(deviceid); xml1.SetAttribute("info-name", ((PSP_Substation_Info)obj).Title); } } else { deviceid = ""; goto Lab1; } substation sb = new substation(); sb.UID = ((PSP_Substation_Info)obj).UID; sb = (substation)Services.BaseService.GetObject("SelectsubstationByKey", sb); if (sb != null) { sb.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; sb.LayerID = tlVectorControl1.SVGDocument.CurrentLayer.ID; sb.EleID = xml1.GetAttribute("id"); if (((PSP_Substation_Info)obj).Flag == "2") { sb.ObligateField3 = "规划"; } else if (((PSP_Substation_Info)obj).Flag == "1") { sb.ObligateField3 = "现行"; } Services.BaseService.Update<substation>(sb); } else { sb = new substation(); sb.UID = ((PSP_Substation_Info)obj).UID; sb.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; sb.EleID = xml1.GetAttribute("id"); sb.LayerID = tlVectorControl1.SVGDocument.CurrentLayer.ID; if (((PSP_Substation_Info)obj).Flag == "2") { sb.ObligateField3 = "规划"; } else if (((PSP_Substation_Info)obj).Flag == "1") { sb.ObligateField3 = "现行"; } Services.BaseService.Create<substation>(sb); } } } } if (xml1.GetAttribute("xlink:href").Contains("XL_GT_3") || xml1.GetAttribute("xlink:href").Contains("XL_GT_4")) { frmInputNum num = new frmInputNum(); num.InputStr = xml1.GetAttribute("order"); num.ShowDialog(); xml1.SetAttribute("order", num.InputStrSEL); } if (xml1.GetAttribute("xlink:href").Contains("hwg") || xml1.GetAttribute("xlink:href").Contains("pds") || xml1.GetAttribute("xlink:href").Contains("fjx") || xml1.GetAttribute("xlink:href").Contains("kbs") || xml1.GetAttribute("xlink:href").Contains("byq") || xml1.GetAttribute("xlink:href").Contains("kg") || xml1.GetAttribute("xlink:href").Contains("gt")) { //frmInputDialog n1 = new frmInputDialog(); //n1.InputStr = xml1.GetAttribute("info-name").ToString(); //if (n1.ShowDialog() == DialogResult.OK) //{ // xml1.SetAttribute("info-name", n1.InputStr); //} PSPDEV obj = new PSPDEV(); string deviceid = xml1.GetAttribute("Deviceid"); DeviceHelper.pspflag = false; DeviceHelper.Wjghflag = false; if (string.IsNullOrEmpty(deviceid)) { if (xml1.GetAttribute("xlink:href").Contains("kbs")) { obj = (PSPDEV)DeviceHelper.SelectDevice(DeviceType.KBS, Itop.Client.MIS.ProgUID); } if (xml1.GetAttribute("xlink:href").Contains("fjx")) { obj = (PSPDEV)DeviceHelper.SelectDevice(DeviceType.FZX, Itop.Client.MIS.ProgUID); } if (xml1.GetAttribute("xlink:href").Contains("hwg")) { obj = (PSPDEV)DeviceHelper.SelectDevice(DeviceType.HWG, Itop.Client.MIS.ProgUID); } if (xml1.GetAttribute("xlink:href").Contains("kg")) { obj = (PSPDEV)DeviceHelper.SelectDevice(DeviceType.ZSKG, Itop.Client.MIS.ProgUID); } if (xml1.GetAttribute("xlink:href").Contains("pds")) { obj = (PSPDEV)DeviceHelper.SelectDevice(DeviceType.PDS, Itop.Client.MIS.ProgUID); } if (xml1.GetAttribute("xlink:href").Contains("byq")) { obj = (PSPDEV)DeviceHelper.SelectDevice(Itop.Client.MIS.ProgUID, "51", "52"); } //if (xml1.GetAttribute("xlink:href").Contains("gt")) //{ // obj = (PSPDEV)DeviceHelper.SelectDevice(DeviceType.GT, Itop.Client.MIS.ProgUID); //} if (obj is PSPDEV) { deviceid = ((PSPDEV)obj).SUID; xml1.SetAttribute("Deviceid", deviceid); obj.LayerID = tlVectorControl1.SVGDocument.CurrentLayer.ID; obj.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; // obj.EleID = ((SvgElement)xml1).ID; Services.BaseService.Update<PSPDEV>(obj); } } if (!string.IsNullOrEmpty(deviceid)) { DeviceHelper.uid = tlVectorControl1.SVGDocument.SvgdataUid; DeviceHelper.layerid = tlVectorControl1.SVGDocument.CurrentLayer.ID; DeviceHelper.eleid = tlVectorControl1.SVGDocument.CurrentElement.ID; obj = (PSPDEV)DeviceHelper.GetDevice<PSPDEV>(deviceid); if (obj != null)//------------wwwMX { xml1.SetAttribute("info-name", ((PSPDEV)obj).Name); DeviceHelper.ShowDeviceDlg((DeviceType)int.Parse(obj.Type), deviceid, false); //if (obj.Type == "54") //{ // DeviceHelper.ShowDeviceDlg(DeviceType.KBS, deviceid, false); //} //if (obj.Type == "56") //{ // DeviceHelper.ShowDeviceDlg(DeviceType.HWG, deviceid, false); //} //if (obj.Type == "58") //{ // DeviceHelper.ShowDeviceDlg(DeviceType.FZX, deviceid, false); //} //if (obj.Type == "51" ) //{ // DeviceHelper.ShowDeviceDlg(DeviceType.FZX, deviceid, false); //} //if (obj.Type == "52") //{ // DeviceHelper.ShowDeviceDlg(DeviceType.FZX, deviceid, false); //} } } } /* if (xml1.GetAttribute("xlink:href").Contains("kbs") || xml1.GetAttribute("xlink:href").Contains("hwg")) { //frmkbsProperty num = new frmkbsProperty(); //num.InitData(((SvgElement)xml1).ID, tlVectorControl1.SVGDocument.SvgdataUid, tlVectorControl1.SVGDocument.CurrentLayer.ID); //num.ShowDialog(); } if (xml1.GetAttribute("xlink:href").Contains("fjx")) { frmfjxProperty num = new frmfjxProperty(); num.InitData(((SvgElement)xml1).ID, tlVectorControl1.SVGDocument.SvgdataUid, tlVectorControl1.SVGDocument.CurrentLayer.ID); num.ShowDialog(); } if (xml1.GetAttribute("xlink:href").Contains("byq")) { frmbyqProperty num = new frmbyqProperty(); num.InitData(((SvgElement)xml1).ID, tlVectorControl1.SVGDocument.SvgdataUid, tlVectorControl1.SVGDocument.CurrentLayer.ID); num.ShowDialog(); } */ if (xml1.GetAttribute("xlink:href").Contains("SB_GT")) { string lineWidth = "2"; string Code = xltProcessor.GetCurrentLineCode(); string _len = xltProcessor.GetWholeLineLength(Code).ToString("#####.####"); frmLineProperty fl = new frmLineProperty(); fl.LineNode = tlVectorControl1.SVGDocument.CurrentElement; fl.InitData(Code, tlVectorControl1.SVGDocument.SvgdataUid, _len, SvgDocument.currentLayer); if (fl.ShowDialog() == DialogResult.OK) { //Value="stroke-dasharray:8 8;stroke-width:2;stroke:#00C000;" lineWidth = fl.LineWidth; string styleValue = ""; if (fl.Line.ObligateField1 == "规划") { styleValue = "stroke-dasharray:4 4;stroke-width:" + lineWidth + ";"; } else { styleValue = "stroke-width:" + lineWidth + ";"; } styleValue = styleValue + "stroke:" + ColorTranslator.ToHtml(Color.FromArgb(Convert.ToInt32(fl.Line.ObligateField2))); ((XmlElement)tlVectorControl1.SVGDocument.CurrentElement).RemoveAttribute("style"); ((XmlElement)tlVectorControl1.SVGDocument.CurrentElement).SetAttribute("style", styleValue); xltProcessor.SetWholeLineAttribute(Code, "style", styleValue); } } } #region 网架优化的属性输入 if (Wjghboolflag) { checkwjghelement(); if (tlVectorControl1.SVGDocument.CurrentElement.GetType().ToString() == "ItopVector.Core.Figure.Line" || tlVectorControl1.SVGDocument.CurrentElement.GetType().ToString() == "ItopVector.Core.Figure.Polyline") { string lineWidth = "2"; string IsLead = ((XmlElement)tlVectorControl1.SVGDocument.CurrentElement).GetAttribute("IsLead"); if (IsLead != "") //修改后的导线的属性添加情况 { PSPDEV obj = new PSPDEV(); string deviceid = xml1.GetAttribute("Deviceid"); DeviceHelper.pspflag = false; DeviceHelper.Wjghflag = true; DeviceHelper.wjghuid = ff.Key; if (string.IsNullOrEmpty(deviceid)) { obj = (PSPDEV)DeviceHelper.SelectDevice(DeviceType.XL, Itop.Client.MIS.ProgUID); if (obj == null) { tlVectorControl1.SVGDocument.CurrentElement = xml1 as SvgElement; tlVectorControl1.Delete(); } if (obj is PSPDEV) { deviceid = ((PSPDEV)obj).SUID; xml1.SetAttribute("Deviceid", deviceid); obj.LayerID = tlVectorControl1.SVGDocument.CurrentLayer.ID; obj.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; obj.EleID = ((SvgElement)xml1).ID; Services.BaseService.Update<PSPDEV>((PSPDEV)obj); } } if (!string.IsNullOrEmpty(deviceid)) { obj = (PSPDEV)DeviceHelper.GetDevice<PSPDEV>(deviceid); if (obj != null) { xml1.SetAttribute("info-name", ((PSPDEV)obj).Name); DeviceHelper.ShowDeviceDlg(DeviceType.XL, deviceid, false); } LineInfo li = new LineInfo(); li.UID = obj.SUID; li = (LineInfo)Services.BaseService.GetObject("SelectLineInfoByKey", li); if (li != null) { li.LayerID = SvgDocument.currentLayer; li.EleID = xml1.GetAttribute("id"); li.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; LineType lt = new LineType(); lt.TypeName = li.Voltage.ToString() + "kV"; lt = (LineType)Services.BaseService.GetObject("SelectLineTypeByTypeName", lt); li.ObligateField3 = obj.OperationYear; li.ObligateField2 = lt.Color; lineWidth = lt.ObligateField1; if (!string.IsNullOrEmpty(li.ObligateField3)) { if (Convert.ToInt32(obj.OperationYear) > DateTime.Now.Year) { li.ObligateField1 = "规划"; } else li.ObligateField1 = "运行"; } Services.BaseService.Update<LineInfo>(li); } else { li = new LineInfo(); li.UID = obj.SUID; li.LineName = obj.Name; li.Length = obj.LineLength.ToString(); li.LineType = obj.LineType; li.Voltage = obj.ReferenceVolt.ToString(); li.EleID = xml1.GetAttribute("id"); li.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; LineType lt = new LineType(); lt.TypeName = obj.ReferenceVolt.ToString() + "kV"; lt = (LineType)Services.BaseService.GetObject("SelectLineTypeByTypeName", lt); li.ObligateField3 = obj.OperationYear; li.ObligateField2 = lt.Color; lineWidth = lt.ObligateField1; if (!string.IsNullOrEmpty(li.ObligateField3)) { if (Convert.ToInt32(obj.OperationYear) > DateTime.Now.Year) { li.ObligateField1 = "规划"; } else li.ObligateField1 = "运行"; } Services.BaseService.Create<LineInfo>(li); } string styleValue = ""; if (li.ObligateField1 == "规划") { styleValue = "stroke-dasharray:" + ghType + ";stroke-width:" + lineWidth + ";"; } else { styleValue = "stroke-width:" + lineWidth + ";"; } //string aa= ColorTranslator.ToHtml(Color.Black); styleValue = styleValue + "stroke:" + ColorTranslator.ToHtml(Color.FromArgb(Convert.ToInt32(li.ObligateField2))); SvgElement se = tlVectorControl1.SVGDocument.CurrentElement; se.RemoveAttribute("style"); se.SetAttribute("style", styleValue); se.SetAttribute("info-name", li.LineName); //***** ********添加FistNode和LastNode XmlNodeList useList = tlVectorControl1.SVGDocument.SelectNodes("svg/use"); foreach (XmlNode element in useList) { if (!string.IsNullOrEmpty((element as XmlElement).GetAttribute("Deviceid"))) { string con = "WHERE SvgUID='" + (element as XmlElement).GetAttribute("Deviceid") + "'AND ProjectID = '" + Itop.Client.MIS.ProgUID + "'" + "AND Type='01'"; IList pspMX = Services.BaseService.GetList("SelectPSPDEVByCondition", con); if (pspMX != null) { foreach (PSPDEV pspmx in pspMX) { if (obj.IName == pspmx.Name) { (xml1 as XmlElement).SetAttribute("FirstNode", (element as XmlElement).GetAttribute("id")); } else if (obj.JName == pspmx.Name) { (xml1 as XmlElement).SetAttribute("LastNode", (element as XmlElement).GetAttribute("id")); } } } } } } //** } } if (xml1.GetAttribute("xlink:href").Contains("Substation") || xml1.GetAttribute("xlink:href").Contains("Power")) { string lab = xml1.GetAttribute("xlink:href"); float x = 0f; float y = 0f; x = ((Use)xml1).X; y = ((Use)xml1).Y; PointF p1 = new PointF(x, y); PointF[] pnt = new PointF[1]; pnt[0] = p1; Use temp = xml1.Clone() as Use; temp.Transform.Matrix.TransformPoints(pnt); LongLat templat = mapview.OffSetZero(-(int)(pnt[0].X * tlVectorControl1.ScaleRatio), -(int)(pnt[0].Y * tlVectorControl1.ScaleRatio)); string[] jd = templat.Longitude.ToString("####.####").Split('.'); int d1 = Convert.ToInt32(jd[0]); string[] df1 = Convert.ToString(Convert.ToDecimal("0." + jd[1]) * 60).Split('.'); int f1 = Convert.ToInt32(df1[0]); decimal m1 = Convert.ToDecimal("0." + df1[1]) * 60; string[] wd = templat.Latitude.ToString("####.####").Split('.'); int d2 = Convert.ToInt32(wd[0]); string[] df2 = Convert.ToString(Convert.ToDecimal("0." + wd[1]) * 60).Split('.'); int f2 = Convert.ToInt32(df2[0]); decimal m2 = Convert.ToDecimal("0." + df2[1]) * 60; string strjwd = "经纬度: " + d1.ToString() + "°" + f1.ToString() + "′" + m1.ToString("##.#") + "″," + d2.ToString() + "°" + f2.ToString() + "′" + m2.ToString("##.#") + "″"; object obj = null; string deviceid = xml1.GetAttribute("Deviceid"); DeviceHelper.pspflag = false; DeviceHelper.Wjghflag = true; if (string.IsNullOrEmpty(deviceid)) { //XmlElement n1 = tlVectorControl1.SVGDocument.CreateElement("text") as Text; if (xml1.GetAttribute("xlink:href").Contains("Power")) { obj = DeviceHelper.SelectDevice(DeviceType.DY, Itop.Client.MIS.ProgUID); if (obj == null) { tlVectorControl1.SVGDocument.CurrentElement = xml1 as SvgElement; tlVectorControl1.Delete(); } if (obj is PSP_PowerSubstation_Info) { deviceid = ((PSP_PowerSubstation_Info)obj).UID; ((PSP_PowerSubstation_Info)obj).LayerID = tlVectorControl1.SVGDocument.CurrentLayer.ID; Services.BaseService.Update<PSP_PowerSubstation_Info>(((PSP_PowerSubstation_Info)obj)); xml1.SetAttribute("Deviceid", deviceid); } substation sb = new substation(); sb.UID = ((PSP_PowerSubstation_Info)obj).UID; sb = (substation)Services.BaseService.GetObject("SelectsubstationByKey", sb); if (sb != null) { sb.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; sb.LayerID = tlVectorControl1.SVGDocument.CurrentLayer.ID; sb.EleID = xml1.GetAttribute("id"); if (((PSP_PowerSubstation_Info)obj).Flag == "2") { sb.ObligateField3 = "规划"; } else if (((PSP_PowerSubstation_Info)obj).Flag == "1") { sb.ObligateField3 = "现行"; } Services.BaseService.Update<substation>(sb); } else { sb = new substation(); sb.UID = ((PSP_PowerSubstation_Info)obj).UID; sb.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; sb.EleID = xml1.GetAttribute("id"); sb.LayerID = tlVectorControl1.SVGDocument.CurrentLayer.ID; if (((PSP_PowerSubstation_Info)obj).Flag == "2") { sb.ObligateField3 = "规划"; } else if (((PSP_PowerSubstation_Info)obj).Flag == "1") { sb.ObligateField3 = "现行"; } Services.BaseService.Create<substation>(sb); } } else { obj = DeviceHelper.SelectDevice(DeviceType.BDZ, Itop.Client.MIS.ProgUID); if (obj == null) { tlVectorControl1.SVGDocument.CurrentElement = xml1 as SvgElement; tlVectorControl1.Delete(); } if (obj is PSP_Substation_Info) { deviceid = ((PSP_Substation_Info)obj).UID; ((PSP_Substation_Info)obj).LayerID = tlVectorControl1.SVGDocument.CurrentLayer.ID; ((PSP_Substation_Info)obj).EleID = tlVectorControl1.SVGDocument.CurrentElement.ID; Services.BaseService.Update<PSP_Substation_Info>(((PSP_Substation_Info)obj)); xml1.SetAttribute("Deviceid", deviceid); } substation sb = new substation(); sb.UID = ((PSP_Substation_Info)obj).UID; sb = (substation)Services.BaseService.GetObject("SelectsubstationByKey", sb); if (sb != null) { sb.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; sb.LayerID = tlVectorControl1.SVGDocument.CurrentLayer.ID; sb.EleID = xml1.GetAttribute("id"); if (((PSP_Substation_Info)obj).Flag == "2") { sb.ObligateField3 = "规划"; } else if (((PSP_Substation_Info)obj).Flag == "1") { sb.ObligateField3 = "现行"; } Services.BaseService.Update<substation>(sb); } else { sb = new substation(); sb.UID = ((PSP_Substation_Info)obj).UID; sb.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; sb.EleID = xml1.GetAttribute("id"); sb.LayerID = tlVectorControl1.SVGDocument.CurrentLayer.ID; if (((PSP_Substation_Info)obj).Flag == "2") { sb.ObligateField3 = "规划"; } else if (((PSP_Substation_Info)obj).Flag == "1") { sb.ObligateField3 = "现行"; } Services.BaseService.Create<substation>(sb); } } } if (!string.IsNullOrEmpty(deviceid)) { if (xml1.GetAttribute("xlink:href").Contains("Power")) { obj = DeviceHelper.GetDevice<PSP_PowerSubstation_Info>(deviceid); if (obj != null) { xml1.SetAttribute("info-name", ((PSP_PowerSubstation_Info)obj).Title); //XmlElement n1 = tlVectorControl1.SVGDocument.SelectSingleNode("/text[@ParentUID='" + xml1.GetAttribute("id") + "']"); DeviceHelper.ShowDeviceDlg(DeviceType.DY, deviceid, false); } } else { obj = DeviceHelper.GetDevice<PSP_Substation_Info>(deviceid); if (obj != null) { xml1.SetAttribute("info-name", ((PSP_Substation_Info)obj).Title); //XmlElement n1 = tlVectorControl1.SVGDocument.SelectSingleNode("/text[@ParentUID='" + xml1.GetAttribute("id") + "']"); DeviceHelper.ShowDeviceDlg(DeviceType.BDZ, deviceid, false); } } } } if (xml1.GetAttribute("xlink:href").Contains("XL_GT_3") || xml1.GetAttribute("xlink:href").Contains("XL_GT_4")) { frmInputNum num = new frmInputNum(); num.InputStr = xml1.GetAttribute("order"); num.ShowDialog(); xml1.SetAttribute("order", num.InputStrSEL); } //if (xml1.GetAttribute("xlink:href").Contains("kbs") || xml1.GetAttribute("xlink:href").Contains("hwg")) //{ // frmkbsProperty num = new frmkbsProperty(); // num.InitData(((SvgElement)xml1).ID, tlVectorControl1.SVGDocument.SvgdataUid, tlVectorControl1.SVGDocument.CurrentLayer.ID); // num.ShowDialog(); //} //if (xml1.GetAttribute("xlink:href").Contains("fjx")) //{ // frmfjxProperty num = new frmfjxProperty(); // num.InitData(((SvgElement)xml1).ID, tlVectorControl1.SVGDocument.SvgdataUid, tlVectorControl1.SVGDocument.CurrentLayer.ID); // num.ShowDialog(); //} //if (xml1.GetAttribute("xlink:href").Contains("byq")) //{ // frmbyqProperty num = new frmbyqProperty(); // num.InitData(((SvgElement)xml1).ID, tlVectorControl1.SVGDocument.SvgdataUid, tlVectorControl1.SVGDocument.CurrentLayer.ID); // num.ShowDialog(); //} if (xml1.GetAttribute("xlink:href").Contains("SB_GT")) { string lineWidth = "2"; string Code = xltProcessor.GetCurrentLineCode(); string _len = xltProcessor.GetWholeLineLength(Code).ToString("#####.####"); frmLineProperty fl = new frmLineProperty(); fl.LineNode = tlVectorControl1.SVGDocument.CurrentElement; fl.InitData(Code, tlVectorControl1.SVGDocument.SvgdataUid, _len, SvgDocument.currentLayer); if (fl.ShowDialog() == DialogResult.OK) { //Value="stroke-dasharray:8 8;stroke-width:2;stroke:#00C000;" lineWidth = fl.LineWidth; string styleValue = ""; if (fl.Line.ObligateField1 == "规划") { styleValue = "stroke-dasharray:4 4;stroke-width:" + lineWidth + ";"; } else { styleValue = "stroke-width:" + lineWidth + ";"; } styleValue = styleValue + "stroke:" + ColorTranslator.ToHtml(Color.FromArgb(Convert.ToInt32(fl.Line.ObligateField2))); ((XmlElement)tlVectorControl1.SVGDocument.CurrentElement).RemoveAttribute("style"); ((XmlElement)tlVectorControl1.SVGDocument.CurrentElement).SetAttribute("style", styleValue); xltProcessor.SetWholeLineAttribute(Code, "style", styleValue); } } } #endregion } if (e.ClickedItem.Text == "移动") { if (tlVectorControl1.SVGDocument.CurrentElement == null || tlVectorControl1.SVGDocument.CurrentElement.ID == "svg") { return; } XmlElement xmln = (XmlElement)tlVectorControl1.SVGDocument.CurrentElement; frmMove fm = new frmMove(); PointF pf11 = ((Use)xmln).CenterPoint; LongLat temp = mapview.ParseToLongLat((int)pf11.X, (int)pf11.Y); string[] jd = temp.Longitude.ToString("####.####").Split('.'); int d1 = Convert.ToInt32(jd[0]); string[] df1 = Convert.ToString(Convert.ToDecimal("0." + jd[1]) * 60).Split('.'); int f1 = Convert.ToInt32(df1[0]); decimal m1 = Convert.ToDecimal("0." + df1[1]) * 60; string[] wd = temp.Latitude.ToString("####.####").Split('.'); int d2 = Convert.ToInt32(wd[0]); string[] df2 = Convert.ToString(Convert.ToDecimal("0." + wd[1]) * 60).Split('.'); int f2 = Convert.ToInt32(df2[0]); decimal m2 = Convert.ToDecimal("0." + df2[1]) * 60; strj1 = d1.ToString(); strw1 = f1.ToString(); strd1 = m1.ToString(); strj2 = d2.ToString(); strw2 = f2.ToString(); strd2 = m2.ToString(); fm.Init(strj1, strw1, strd1, strj2, strw2, strd2); if (fm.ShowDialog() == DialogResult.OK) { string strValue = fm.StrValue; string[] str = strValue.Split(','); string[] JWD1 = str[0].Split(' '); decimal J1 = Convert.ToDecimal(JWD1[0]); decimal W1 = Convert.ToDecimal(JWD1[1]); decimal D1 = Convert.ToDecimal(JWD1[2]); string[] JWD2 = str[1].Split(' '); decimal J2 = Convert.ToDecimal(JWD2[0]); decimal W2 = Convert.ToDecimal(JWD2[1]); decimal D2 = Convert.ToDecimal(JWD2[2]); decimal JD = J1 + W1 / 60 + D1 / 3600; decimal WD = J2 + W2 / 60 + D2 / 3600; PointF pf1 = mapview.ParseToPoint(JD, WD); PointF p1 = ((Use)xmln).CenterPoint; SvgElement e1 = xmln as SvgElement; Matrix matrix2 = ((IGraph)e1).GraphTransform.Matrix.Clone(); Matrix matrix3 = tlVectorControl1.DrawArea.CoordTransform.Clone(); matrix3.Invert(); matrix2.Multiply(matrix3, MatrixOrder.Append); matrix2.Invert(); PointF[] pfArray1 = new PointF[] { new PointF(pf1.X / tlVectorControl1.ScaleRatio, pf1.Y / tlVectorControl1.ScaleRatio), p1 }; matrix2.TransformPoints(pfArray1); float single1 = pfArray1[0].X - pfArray1[1].X; float single2 = pfArray1[0].Y - pfArray1[1].Y; Matrix matrix6 = ((IGraph)e1).Transform.Matrix.Clone(); if (e1.SvgAttributes.ContainsKey("transform")) { Matrix matrix7 = ((Matrix)e1.SvgAttributes["transform"]).Clone(); matrix7.Invert(); matrix6.Multiply(matrix7, MatrixOrder.Append); } Matrix matrix5 = new Matrix(); matrix5.Translate(single1, single2); Matrix matrix8 = ((IGraph)e1).Transform.Matrix.Clone(); matrix8.Multiply(matrix5); matrix6.Invert(); matrix6.Multiply(matrix8, MatrixOrder.Append); Transf tf = new Transf(); tf.setMatrix(matrix6); (xmln as Use).Transform = tf; } } if (e.ClickedItem.Text == "接线图") { if (tlVectorControl1.SVGDocument.CurrentElement == null || tlVectorControl1.SVGDocument.CurrentElement.ID == "svg") { return; } ParentUID = tlVectorControl1.SVGDocument.SvgdataUid; Save(); ParentUID = tlVectorControl1.SVGDocument.SvgdataUid; SVGFILE svg_temp = new SVGFILE(); //XmlElement xml1 = ((XmlElement)(e.Elements[0]));xml1.GetAttribute("id"); svg_temp.SUID = ((XmlElement)tlVectorControl1.SVGDocument.CurrentElement).GetAttribute("id"); svg_temp.FILENAME = getBdzName(svg_temp.SUID);// ((XmlElement)tlVectorControl1.SVGDocument.CurrentElement).GetAttribute("info-name"); string strWhere = string.Format("suid='{0}' or filename='{1}' ", svg_temp.SUID, svg_temp.FILENAME); IList svglist = Services.BaseService.GetList("SelectSVGFILEByWhere", strWhere); OpenJXT(svglist, svg_temp); //frmlar.SymbolDoc = tlVectorControl1.SVGDocument; //frmlar.Progtype = MapType; //frmlar.InitData(); //JxtBar(); } if (e.ClickedItem.Text == "打开") { if (tlVectorControl1.SVGDocument.CurrentElement.ID == "svg") { MessageBox.Show("请选择地块。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } UseRelating UseRel = new UseRelating(); UseRel.UseID = tlVectorControl1.SVGDocument.CurrentElement.ID; IList<UseRelating> UseRelList = Services.BaseService.GetList<UseRelating>("SelectUseRelatingByUseID", UseRel); if (UseRelList.Count < 1) { MessageBox.Show("选择的地块还没有关联到其他地图,请先设置关联地图", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } UseRel = UseRelList[0]; SVGFILE svgFile = new SVGFILE(); svgFile.SUID = UseRel.LinkUID; IList svgList = Services.BaseService.GetList("SelectSVGFILEByKey", svgFile); if (svgList.Count < 1) { MessageBox.Show("被关联的地图已经被删除,请重新设置关联地图", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } svgFile = (SVGFILE)svgList[0]; //SvgDocument doc = new SvgDocument(); if (!string.IsNullOrEmpty(svgFile.SVGDATA)) { //doc.LoadXml(svgFile.SVGDATA); ctlfile_OnOpenSvgDocument(sender, svgFile.SUID); } } if (e.ClickedItem.Text == "区域打印") { PrintHelper ph = new PrintHelper(tlVectorControl1, mapview); frmPrinter dlg = new frmPrinter(); dlg.printHelper = ph; dlg.ShowDialog(); return; ArrayList idlist = new ArrayList(); ArrayList symlist = new ArrayList(); SvgDocument _doc = new SvgDocument(); Graph poly1 = tlVectorControl1.SVGDocument.CurrentElement as Graph; if (poly1 == null || poly1.GetAttribute("id") == "svg") { return; } GraphicsPath gr1 = new GraphicsPath(); //gr1.AddRectangle(TLMath.getRectangle(poly1)); gr1.AddPolygon(TLMath.getPolygonPoints(poly1)); //gr1.CloseFigure(); gr1 = (GraphicsPath)poly1.GPath.Clone(); gr1.Transform((poly1 as IGraph).Transform.Matrix); RectangleF ef1 = gr1.GetBounds(); ef1 = PathFunc.GetBounds(gr1); StringBuilder svgtxt = new StringBuilder("<?xml version=\"1.0\" encoding=\"utf-8\"?><svg id=\"svg\" width=\"" + ef1.Width + "\" height=\"" + ef1.Height + "\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:itop=\"http://www.Itop.com/itop\">"); XmlNodeList nlist = tlVectorControl1.SVGDocument.GetElementsByTagName("defs"); if (nlist.Count > 0) { XmlNode node = nlist[0]; svgtxt.AppendLine(node.OuterXml); } SvgElementCollection.ISvgElementEnumerator enumerator1 = tlVectorControl1.DrawArea.ElementList.GetEnumerator();// mouseAreaControl.PicturePanel.ElementList.GetEnumerator(); while (enumerator1.MoveNext()) { IGraph graph1 = (IGraph)enumerator1.Current; GraphicsPath path1 = (GraphicsPath)graph1.GPath.Clone(); //path1.Transform(graph1.GraphTransform.Matrix); //path1.Transform(graph1.Transform.Matrix); // RectangleF ef2 = path1.GetBounds();// PathFunc.GetBounds(path1); //for (int n = 0; n < selCol.Count - 1; n++) //{ // //_doc.AppendChild((XmlNode)selCol[n]); // svgtxt = svgtxt + ((XmlElement)selCol[n]).OuterXml + "\r\n"; //} if (!graph1.Visible || !graph1.DrawVisible || !graph1.Layer.Visible) continue; GraphicsPath path2 = (GraphicsPath)graph1.GPath.Clone(); path2.Transform(graph1.Transform.Matrix); RectangleF ef2 = PathFunc.GetBounds(path2); if (ef1.Contains(ef2) || RectangleF.Intersect(ef1, ef2) != RectangleF.Empty) { SvgElement ele = (SvgElement)graph1; svgtxt.AppendLine(ele.OuterXml); //tlVectorControl1.SVGDocument.AddSelectElement(graph1); if (graph1 is Use) { //PointF offset = TLMath.getUseOffset(((XmlElement)graph1).GetAttribute("xlink:href")); //if (ef1.Contains(new PointF(((Use)graph1).X + offset.X, ((Use)graph1).Y + offset.Y))) { //SvgElement ele = (SvgElement)graph1; //svgtxt.AppendLine(ele.OuterXml); string symid = ((XmlElement)graph1).GetAttribute("xlink:href"); if (!symlist.Contains(symid)) { symlist.Add(symid); } //} } if (graph1.GetType().FullName == "ItopVector.Core.Figure.Polyline") { string IsLead = ((XmlElement)graph1).GetAttribute("IsLead"); if (IsLead != "") { if (ef1.Contains(ef2)) { idlist.Add(graph1.ID); } } } } } symlist = ResetList(symlist); svgtxt.AppendLine("</svg>"); _doc.LoadXml(svgtxt.ToString()); _doc.SvgdataUid = tlVectorControl1.SVGDocument.SvgdataUid; frmPrintF pri = new frmPrintF(); pri.Init(tlVectorControl1.SVGDocument.CurrentElement.ID, tlVectorControl1.SVGDocument.SvgdataUid); if (pri.ShowDialog() == DialogResult.OK) { frmSubPrint s = new frmSubPrint(); s.Vector = tlVectorControl1; s.InitImg(pri.strzt, pri.strgs, pri.pri, idlist, symlist); s.Open(_doc, ef1); s.Show(); } } if (e.ClickedItem.Text == "分类统计报表") { if (tlVectorControl1.SVGDocument.CurrentElement == null || tlVectorControl1.SVGDocument.CurrentElement.ID == "svg") { return; } IGraph poly1 = (IGraph)tlVectorControl1.SVGDocument.CurrentElement; frmPloyPrint p = new frmPloyPrint(); p.InitDate(poly1.ID, tlVectorControl1.SVGDocument.SvgdataUid); p.ShowDialog(); } if (e.ClickedItem.Text == "保存图片") { if (tlVectorControl1.SVGDocument.CurrentElement.GetType().ToString() == "ItopVector.Core.Figure.RectangleElement") { PrintHelper ph = new PrintHelper(tlVectorControl1, mapview); frmImgManager frm = new frmImgManager(); frm.Pic = ph.getImage(); frm.ShowDialog(); } } } catch (Exception e1) { //MessageBox.Show(e1.Message); } if (e.ClickedItem.Text == "三维变电站") { try { string strid = tlVectorControl1.SVGDocument.CurrentElement.ID; substation s = new substation(); s.EleID = strid; s.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid; s = (substation)Services.BaseService.GetObject("SelectsubstationByEleID", s); ProcessStartInfo p = new ProcessStartInfo(); p.FileName = Application.StartupPath + "\\" + s.EleName + "\\bdz.exe"; p.WorkingDirectory = Application.StartupPath + "\\" + s.EleName; Process.Start(p); } catch (Exception e1) { } } if (e.ClickedItem.Text == "清除关联") { ((XmlElement)tlVectorControl1.SVGDocument.CurrentElement).RemoveAttribute("Deviceid"); } if (e.ClickedItem.Text == "更新关联变电站") { UpdateLine(); } if (e.ClickedItem.Text == "删除") { Delete(); } }
private int Break(SvgElement graph, SvgElement parent, XmlNode next) { if (graph is Group) { if (graph is Text) { Graphics graphics1 = base.CreateGraphics(); SvgElementCollection collection1 = ((Text) graph).Break(graphics1); graphics1.Dispose(); SvgElementCollection.ISvgElementEnumerator enumerator1 = collection1.GetEnumerator(); while (enumerator1.MoveNext()) { SvgElement element1 = (SvgElement) enumerator1.Current; this.svgDocument.NumberOfUndoOperations++; element1.ID = CodeFunc.CreateString(this.svgDocument, "text"); ISvgBrush brush1 = ((IGraphPath) element1).GraphBrush; if ((brush1 is ITransformBrush) && (((SvgElement) brush1).ParentNode == null)) { string text1 = CodeFunc.CreateString(this.svgDocument, ((SvgElement) brush1).Name); AttributeFunc.SetAttributeValue(element1, "fill", "url(#" + text1 + ")"); AttributeFunc.SetAttributeValue((SvgElement) brush1, "id", text1); this.svgDocument.NumberOfUndoOperations++; this.SVGDocument.AddDefsElement((SvgElement) brush1); } brush1 = ((IGraphPath) element1).GraphStroke.Brush; if ((brush1 is ITransformBrush) && (((SvgElement) brush1).ParentNode == null)) { string text2 = CodeFunc.CreateString(this.svgDocument, ((SvgElement) brush1).Name); AttributeFunc.SetAttributeValue(element1, "stroke", "url(#" + text2 + ")"); AttributeFunc.SetAttributeValue((SvgElement) brush1, "id", text2); this.svgDocument.NumberOfUndoOperations++; this.SVGDocument.AddDefsElement((SvgElement) brush1); } if (next == null) { parent.AppendChild(element1); continue; } parent.InsertBefore(element1, next); } this.svgDocument.NumberOfUndoOperations++; graph.ParentNode.RemoveChild(graph); } else { SvgElementCollection collection2 = ((Group) graph).GraphList.Clone(); for (int num1 = collection2.Count - 1; num1 >= 0; num1--) { SvgElement element2 = (SvgElement) collection2[num1]; Matrix matrix1 = new Matrix(); Matrix matrix2 = new Matrix(); if (element2 is IGraph) { if (graph.SvgAttributes.ContainsKey("transform")) { matrix1 = ((Matrix) graph.SvgAttributes["transform"]).Clone(); } if (element2.SvgAttributes.ContainsKey("transform")) { matrix2 = ((Matrix) graph.SvgAttributes["transform"]).Clone(); } matrix1.Multiply(matrix2); Transf transf1 = new Transf(); transf1.setMatrix(matrix1); AttributeFunc.SetAttributeValue(element2, "transform", transf1.ToString()); } this.Break(element2, parent, next); } graph.ParentNode.RemoveChild(graph); } return 1; } if ((graph is IGraph) && (graph.ParentNode != parent)) { this.svgDocument.NumberOfUndoOperations += 2; if (next != null) { parent.InsertBefore(graph.Clone(), next); } else { parent.PrependChild(graph.Clone()); } return 0; } return 0; }
private IGraph CreateGraph(PointF startpoint, PointF endpoint, ToolOperation operation) { SvgDocument document1 = this.mouseAreaControl.SVGDocument; if (document1 == null) { return null; } bool flag1 = document1.AcceptChanges; document1.AcceptChanges = false; IGraph graph1 = this.mouseAreaControl.PicturePanel.PreGraph; if (graph1 == null) { return null; } IGraph graph2 = (IGraph) ((SvgElement) graph1).Clone(); if ((operation == ToolOperation.Ellipse) && ((Control.ModifierKeys == Keys.Shift) || (Control.ModifierKeys == (Keys.Control | Keys.Shift)))) { graph2 = (Circle) document1.CreateElement(document1.Prefix, "circle", document1.NamespaceURI); foreach (XmlAttribute attribute1 in ((SvgElement) graph1).Attributes) { ((SvgElement) graph2).SetAttributeNode((XmlAttribute) attribute1.Clone()); } } if (((SvgElement) graph1) is IGraphPath) { if ((((SvgElement) graph1).GetAttribute("style") != string.Empty) && (((SvgElement) graph1).GetAttribute("style") != null)) { this.mouseAreaControl.SVGDocument.AcceptChanges = false; AttributeFunc.SetAttributeValue((SvgElement) graph2, "style", ((SvgElement) graph1).GetAttribute("style")); } ISvgBrush brush1 = ((IGraphPath) graph1).GraphBrush; if (brush1 is SvgElement) { ISvgBrush brush2 = (ISvgBrush) ((SvgElement) brush1).Clone(); ((IGraphPath) graph2).GraphBrush = brush2; ((SvgElement) brush2).pretime = -1; } else { ((IGraphPath) graph2).GraphBrush = brush1; } brush1 = ((IGraphPath) graph1).GraphStroke.Brush; if (brush1 is SvgElement) { ISvgBrush brush3 = (ISvgBrush) ((SvgElement) brush1).Clone(); ((IGraphPath) graph2).GraphStroke = new Stroke(brush3); ((SvgElement) brush3).pretime = -1; } else { ((IGraphPath) graph2).GraphStroke.Brush = brush1; } } if (document1 == null) { return null; } PointF point1 = this.mouseAreaControl.PicturePanel.PointToView(startpoint); PointF point2 = this.mouseAreaControl.PicturePanel.PointToView(endpoint); float single1 = this.mouseAreaControl.PicturePanel.ScaleUnit; SizeF ef1 = this.mouseAreaControl.PicturePanel.GridSize; float single2 = ef1.Height; float single3 = ef1.Width; if (this.mouseAreaControl.PicturePanel.SnapToGrid) { int num1 = (int) ((point1.X + (single3 / 2f)) / single3); int num2 = (int) ((point1.Y + (single2 / 2f)) / single2); point1 = new Point((int) (num1 * single3), (int) (num2 * single2)); num1 = (int) ((point2.X + (single3 / 2f)) / single3); num2 = (int) ((point2.Y + (single2 / 2f)) / single2); point2 = new Point((int) (num1 * single3), (int) (single2 * num2)); } float single4 = Math.Min(point1.X, point2.X); float single5 = Math.Min(point1.Y, point2.Y); float single6 = Math.Max(point1.X, point2.X); float single7 = Math.Max(point1.Y, point2.Y); float single8 = single6 - single4; float single9 = single7 - single5; switch (operation) { case ToolOperation.AngleRectangle: { float single10 = 0f; single10 = Math.Max(0, ((ItopVector.Core.Figure.RectangleElement)this.mouseAreaControl.PicturePanel.PreGraph).Angle); float single11 = single10; float single12 = single10; if ((single8 < 5f) || (single9 < 5f)) { return null; } if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift) { single8 = single9 = Math.Max(single8, single9); single4 = ((point1.X - point2.X) < 0) ? ((float)point1.X) : (point1.X - single8); single5 = ((point1.Y - point2.Y) < 0) ? ((float)point1.Y) : (point1.Y - single9); } if (single11 > (single8 / 2f)) { single11 = single8; } if (single12 > (single9 / 2f)) { single12 = single9; } ItopVector.Core.Figure.RectangleElement rectangle1 = (ItopVector.Core.Figure.RectangleElement)graph2; rectangle1.X = single4; rectangle1.Y = single5; rectangle1.Width = single8; rectangle1.Height = single9; rectangle1.RX = single11; rectangle1.RY = single12; // AttributeFunc.SetAttributeValue((XmlElement)rectangle1, "style", "fill:#C0C0FF;fill-opacity:0.3;stroke:#000000;stroke-opacity:1;"); goto Label_0F08; } case ToolOperation.InterEnclosurePrint: { float single10 = 0f; single10 = Math.Max(0, ((ItopVector.Core.Figure.RectangleElement) this.mouseAreaControl.PicturePanel.PreGraph).Angle); float single11 = single10; float single12 = single10; if ((single8 < 5f) || (single9 < 5f)) { return null; } if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift) { single8 = single9 = Math.Max(single8, single9); single4 = ((point1.X - point2.X) < 0) ? ((float) point1.X) : (point1.X - single8); single5 = ((point1.Y - point2.Y) < 0) ? ((float) point1.Y) : (point1.Y - single9); } if (single11 > (single8 / 2f)) { single11 = single8; } if (single12 > (single9 / 2f)) { single12 = single9; } ItopVector.Core.Figure.RectangleElement rectangle1 = (ItopVector.Core.Figure.RectangleElement) graph2; rectangle1.X = single4; rectangle1.Y = single5; rectangle1.Width = single8; rectangle1.Height = single9; rectangle1.RX = single11; rectangle1.RY = single12; AttributeFunc.SetAttributeValue((XmlElement)rectangle1, "style", "fill:#C0C0FF;fill-opacity:0.0;stroke:#000000;stroke-opacity:1;"); goto Label_0F08; } case ToolOperation.Circle: case ToolOperation.Bezier: case ToolOperation.Text: { goto Label_0F08; } case ToolOperation.Ellipse: { if ((single8 < 3f) || (single9 < 3f)) { return null; } if (Control.ModifierKeys == Keys.Shift) { float single13 = Math.Max((float) (single6 - single4), (float) (single7 - single5)) / 2f; if (single13 < 3f) { return null; } single4 = ((point1.X - point2.X) < 0) ? ((float) point1.X) : (point1.X - (2f * single13)); single5 = ((point1.Y - point2.Y) < 0) ? ((float) point1.Y) : (point1.Y - (2f * single13)); float single14 = single4 + single13; float single15 = single5 + single13; Circle circle1 = (Circle) graph2; circle1.CX = single14; circle1.CY = single15; circle1.R = single13; goto Label_0F08; } if (Control.ModifierKeys == (Keys.Control | Keys.Shift)) { Circle circle2 = (Circle) graph2; circle2.CX = point1.X; circle2.CY = point1.Y; float single16 = Math.Max(Math.Abs((int) (point1.Y - point2.Y)), Math.Abs((int) (point1.X - point2.X))); if (single16 < 3f) { return null; } circle2.R = single16; goto Label_0F08; } Ellips ellips1 = (Ellips) graph2; if (Control.ModifierKeys == Keys.Control) { ellips1.CX = point1.X; ellips1.CY = point1.Y; ellips1.RX = Math.Abs((int) (point2.X - point1.X)); ellips1.RY = Math.Abs((int) (point2.Y - point1.Y)); goto Label_0F08; } ellips1.CX = single4 + (single8 / 2f); ellips1.CY = single5 + (single9 / 2f); ellips1.RX = single8 / 2f; ellips1.RY = single9 / 2f; goto Label_0F08; } case ToolOperation.Line: { if ((single8 < 1f) && (single9 < 1f)) { return null; } if ((Math.Abs((int) (point1.X - point2.X)) <= (2f * single1)) && (Math.Abs((int) (point1.Y - point2.Y)) <= (2f * single1))) { goto Label_0F07; } if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift) { float single17 = (((float) Math.Atan2((double) (point2.Y - point1.Y), (double) (point2.X - point1.X))) * 180f) / 3.141593f; single17 = ((int) Math.Round((double) (single17 / 45f), 0)) * 0x2d; if ((single17 != 90f) && (single17 != -90f)) { single17 = (float) Math.Tan((single17 / 180f) * 3.1415926535897931); point2 = new PointF(point2.X, point1.Y + ((int) ((point2.X - point1.X) * single17))); break; } point2 = new PointF(point1.X, point2.Y); } break; } case ToolOperation.ConnectLine://������ { if (((single8 < 1f) && (single9 < 1f)) ||connectBegin==null || connectEnd==null || connectBegin==connectEnd) { return null; } ConnectLine cline =graph2 as ConnectLine; cline.SetAttribute("start","#"+connectBegin.ID+"."+connectBeginIndex); cline.SetAttribute("end","#"+connectEnd.ID+"."+connectEndIndex); connectBegin=null; connectEnd =null; break; } case ToolOperation.PolyLine: case ToolOperation.XPolyLine: case ToolOperation.YPolyLine: case ToolOperation.FreeLines: case ToolOperation.Confines_GuoJie: case ToolOperation.Confines_ShengJie: case ToolOperation.Confines_ShiJie: case ToolOperation.Confines_XianJie: case ToolOperation.Confines_XiangJie: case ToolOperation.Railroad: case ToolOperation.LeadLine: { if (this.drawPath != null) { PointF[] tfArray1 = this.drawPath.PathPoints; PointF[] tfArray2 = new PointF[tfArray1.Length]; for (int num3 = 0; num3 < tfArray1.Length; num3++) { PointF tf1 = this.mouseAreaControl.PicturePanel.PointToView(tfArray1[num3]); tf1 = new PointF(tf1.X, tf1.Y); tfArray2[num3] = tf1; } ((Polyline) graph2).Points = tfArray2; } goto Label_0F08; } case ToolOperation.Polygon: case ToolOperation.Enclosure: case ToolOperation.InterEnclosure: case ToolOperation.AreaPolygon: { if (this.drawPath != null) { PointF[] tfArray3 = this.drawPath.PathPoints; PointF[] tfArray4 = new PointF[tfArray3.Length]; for (int num4 = 0; num4 < tfArray3.Length; num4++) { PointF tf2 = this.mouseAreaControl.PicturePanel.PointToView(tfArray3[num4]); tf2 = new PointF(tf2.X, tf2.Y); tfArray4[num4] = tf2; } ((Polygon) graph2).Points = tfArray4; } goto Label_0F08; } case ToolOperation.EqualPolygon: { int num5 = 3; num5 = Math.Max(3, ((Polygon) this.mouseAreaControl.PicturePanel.PreGraph).LineCount); double num6 = 6.2831853071795862 / ((double) num5); GraphicsPath path1 = new GraphicsPath(); double num7 = 0; double num8 = 0; double num9 = Math.Sqrt(Math.Pow((double) (point1.X - point2.X), 2) + Math.Pow((double) (point1.Y - point2.Y), 2)); float single18 = (float) Math.Round((double) ((Polygon) this.mouseAreaControl.PicturePanel.PreGraph).Indent, 1); int num10 = num5; if (single18 < 1f) { num10 = num5 * 2; } PointF[] tfArray5 = new PointF[num10]; if (num9 < 2) { return null; } if (num9 >= 2) { double num11 = Math.Asin(((double) (point2.Y - point1.Y)) / num9); if (point2.X < point1.X) { num11 = 3.1415926535897931 - num11; } PointF tf3 = PointF.Empty; for (int num13 = 0; num13 < num10; num13 += (num10 / num5)) { double num12 = num11 + (num6 * (num13 / (num10 / num5))); num7 = num9 * Math.Cos(num12); num8 = num9 * Math.Sin(num12); tfArray5[num13] = new PointF((float) (point1.X + ((int) num7)), (float) (point1.Y + ((int) num8))); if (num10 == (2 * num5)) { if (!tf3.IsEmpty) { PointF tf4 = new PointF((tf3.X + tfArray5[num13].X) / 2f, (tf3.Y + tfArray5[num13].Y) / 2f); tf4 = new PointF((float) (point1.X + ((int) (single18 * (tf4.X - point1.X)))), (float) (point1.Y + ((int) (single18 * (tf4.Y - point1.Y))))); tfArray5[num13 - 1] = tf4; } tf3 = tfArray5[num13]; if (num13 == ((2 * num5) - 2)) { PointF tf5 = new PointF((tfArray5[0].X + tfArray5[num13].X) / 2f, (tfArray5[0].Y + tfArray5[num13].Y) / 2f); tf5 = new PointF((float) (point1.X + ((int) (single18 * (tf5.X - point1.X)))), (float) (point1.Y + ((int) (single18 * (tf5.Y - point1.Y))))); tfArray5[num13 + 1] = tf5; } } } string text1 = string.Empty; for (int num14 = 0; num14 < tfArray5.Length; num14++) { PointF tf6 = tfArray5[num14]; text1 = text1 + tf6.X.ToString() + " " + tf6.Y.ToString(); if (num14 < (tfArray5.Length - 1)) { text1 = text1 + ","; } } AttributeFunc.SetAttributeValue((SvgElement) graph2, "points", text1); } goto Label_0F08; } case ToolOperation.Image: { graph2=null; if (this.showdialog && (this.filename != string.Empty)) { graph2 = (ItopVector.Core.Figure.Image) document1.CreateElement(document1.Prefix, "image", document1.NamespaceURI); ItopVector.Core.Figure.Image image1 = (ItopVector.Core.Figure.Image) graph2; image1.X = single4; image1.Y = single5; image1.Width = single8; image1.Height = single9; image1.ImageUrl = this.filename; } goto Label_0F08; } case ToolOperation.PreShape: { GraphicsPath path2 = PathFunc.GetPathFromGraph(this.mouseAreaControl.PicturePanel.PreGraph); single4 = point1.X; single5 = point1.Y; single8 = point2.X - point1.X; single9 = point2.Y - point1.Y; if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift) { single8 = single9 = Math.Max(single8, single9); single4 = ((point1.X - point2.X) < 0) ? ((float) point1.X) : (point1.X - single9); single5 = ((point1.Y - point2.Y) < 0) ? ((float) point1.Y) : (point1.Y - single8); } if ((Math.Abs(single8) < 2f) || (Math.Abs(single9) < 2f)) { return null; } path2.Flatten(new Matrix()); float single19 = single4; float single20 = single5; RectangleF ef2 = path2.GetBounds(); Matrix matrix1 = new Matrix(); matrix1.Translate(single19 - ef2.X, single20 - ef2.Y); matrix1.Translate(ef2.X, ef2.Y); matrix1.Scale(single8 / ef2.Width, single9 / ef2.Height); matrix1.Translate(-ef2.X, -ef2.Y); Transf transf1 = new Transf(); transf1.setMatrix(matrix1); AttributeFunc.SetAttributeValue((SvgElement) graph2, "transform", transf1.ToString()); goto Label_0F08; } case ToolOperation.Pie: case ToolOperation.Arc: { if (!this.pieRect.IsEmpty) { SvgElement element9 = graph2 as SvgElement; startpoint = new PointF(this.pieRect.X + (this.pieRect.Width / 2f), this.pieRect.Y + (this.pieRect.Height / 2f)); PointF tf7 = this.mouseAreaControl.PicturePanel.PointToView(endpoint); if (tf7 == lastPoint) { graph2 =null; goto Label_0F08; } endpoint = this.lastPoint; float single17 = this.startArcAngle; float single18 = this.endArcAngle; while (single18 > 360f) { single18 -= 360f; } float single19 = this.pieRect.Width / 2f; float single20 = this.pieRect.Height / 2f; float single21 = startpoint.X; float single22 = startpoint.Y; string text4 = (((single18 - single17) > 180f) || (single18 < single17)) ? "1" : "0"; single17 = (float) ((single17 / 180f) * 3.1415926535897931); single18 = (float) ((single18 / 180f) * 3.1415926535897931); PointF tf8 = this.GetCrossPoint(this.pieRect, startpoint, endpoint); float single23 = tf8.X; float single24 = tf8.Y; tf8 = this.GetCrossPoint(this.pieRect, startpoint, tf7); float single25 = tf8.X; float single26 = tf8.Y; string text5 = string.Concat(new string[] { "M", single21.ToString(), " ", single22.ToString(), "L", single23.ToString(), " ", single24.ToString(), "A", single19.ToString(), " ", single20.ToString(), " 0 ", text4, " 1 ", single25.ToString(), " ", single26.ToString(), "Z" }); if (operation ==ToolOperation.Arc) { text5 = string.Concat(new string[] { "M", single23.ToString(), " ", single24.ToString(), "A", single19.ToString(), " ", single20.ToString(), " 0 ", text4, " 1 ", single25.ToString(), " ", single26.ToString() }); } element9.SetAttribute("d", text5); graph2 = element9 as IGraph; this.pieRect = RectangleF.Empty; } else { graph2 =null; } goto Label_0F08; } default: { goto Label_0F08; } } Label_0F07: Line line1 = (Line) graph2; line1.X1 = point1.X; line1.Y1 = point1.Y; line1.X2 = point2.X; line1.Y2 = point2.Y; Label_0F08: this.mouseAreaControl.SVGDocument.AcceptChanges = flag1; return graph2; }
public void UpdateChild(XmlNode node) { if (node is IGraph) { IGraph graph1 = (IGraph) node; SvgDocument document1 = base.OwnerDocument; bool flag1 = document1.AcceptChanges; document1.AcceptChanges = false; if (!this.RefMatrix.IsIdentity) { Matrix matrix1 = this.RefMatrix.Clone(); matrix1.Invert(); Transf transf1 = new Transf(); transf1.setMatrix(matrix1); graph1.Transform = transf1; } document1.AcceptChanges = flag1; } }