public void DrawItemRecursion(Graphics g, WL.Item item, string WiringImageDir) { if (item is WL.Node) { if (item is NextGenModel.MyNodeGround_Wiring) { NextGenModel.MyNodeGround_Wiring ndGnd = item as NextGenModel.MyNodeGround_Wiring; string nodePointsFile = Path.Combine(WiringImageDir, "Ground.txt"); DrawNode_wiring(g, ndGnd, nodePointsFile, "", null); } else { WL.Node nd = item as WL.Node; DrawNode(g, nd); if (nd.AddFlow != null) { if (nd.AddFlow.Children != null) { foreach (WL.Item child in nd.AddFlow.Children) { DrawItemRecursion(g, child, WiringImageDir); } } } } } else if (item is WL.Link) { DrawLine(g, item as WL.Link); } }
private void DoDrawingWiring(ng.SystemVRF sysItem, ng.WiringNodeOut nodeOut, string imgDir) { Node textNode; drawing.Point ptText = new drawing.Point(); drawing.PointF nodeOutPointF = new drawing.PointF(); NodeElement_Wiring item_wiring = utilWiring.GetNodeElement_Wiring_ODU(sysItem.OutdoorItem, thisProject.BrandCode); nodeOut.Location = new Point(10f, UtilPiping.HeightForNodeText + UtilPiping.OutdoorOffset_Y_wiring + 36f); string imgFile = System.IO.Path.Combine(imgDir, item_wiring.KeyName + ".png"); utilWiring.setNode_wiring(nodeOut, imgFile, addFlowWiring); drawing.PointF ptf1 = new drawing.PointF((float)(nodeOut.Location.X + 140), (float)(nodeOut.Location.Y + 20)); drawing.PointF ptf2 = new drawing.PointF(ptf1.X + 74, ptf1.Y + 4); drawing.PointF ptf3 = new drawing.PointF(ptf2.X - 10, ptf2.Y); ptArrayList_ground.Add(new drawing.PointF[] { ptf1, ptf2, ptf3 }); string text = ""; ptText = item_wiring.PtNodeNames[0]; text = sysItem.Name; utilWiring.createTextNode_wiring(text, ptText, nodeOut); if (item_wiring.UnitCount > 1) { text = sysItem.OutdoorItem.AuxModelName; utilWiring.createTextNode_wiring(text, item_wiring.PtNodeNames[1], nodeOut); } utilWiring.createTextNode_wiring(item_wiring.Str1, item_wiring.PtStr1, nodeOut); nodeOutPointF = utilWiring.convertSystemPointToDrawingPoint(nodeOut.Location); for (int i = 0; i < item_wiring.UnitCount; ++i) { ptf1 = UtilEMF.OffsetLocation(item_wiring.PtStrGroupLine2L[i], nodeOutPointF); ptf2 = UtilEMF.OffsetLocation(item_wiring.PtStrGroupLine2R[i], nodeOutPointF); ptArrayList_power.Add(new drawing.PointF[] { ptf1, ptf2 }); if (i < item_wiring.ModelGroup.Length) { utilWiring.createTextNode_wiring(item_wiring.ModelGroup[i], item_wiring.PtModelGroup[i], nodeOut); } if (item_wiring.ModelGroup.Length > 1 && i < item_wiring.StrGroup1.Length) { utilWiring.createTextNode_wiring(item_wiring.StrGroup1[i], item_wiring.PtStrGroup1[i], nodeOut); } if (i < item_wiring.StrGroup2.Length) { utilWiring.createTextNode_wiring(item_wiring.StrGroup2[i], item_wiring.PtStrGroup2[i], nodeOut); } if (i < item_wiring.StrGroup3.Length) { utilWiring.createTextNode_wiring(item_wiring.StrGroup3[i], item_wiring.PtStrGroup3[i], nodeOut); } if (i < item_wiring.StrGroup4.Length) { utilWiring.createTextNode_wiring(item_wiring.StrGroup4[i], item_wiring.PtStrGroup4[i], nodeOut, true); } } drawing.PointF ptf4 = new drawing.PointF(0, 0); drawing.PointF ptf5 = new drawing.PointF(0, 0); ptText = item_wiring.PtNodeNames[0]; ptText.Y += Convert.ToInt32(UtilPiping.HeightForNodeText / 2); List <ng.WiringNodeIn> sortNodeInList = getSortNodeInList(nodeOut); if (sortNodeInList == null) { return; } List <ng.WiringNodeIn> wiringNodeInList = new List <ng.WiringNodeIn>(); DrawWiringNodes(nodeOut, sortNodeInList.ToList <ng.WiringNode>(), wiringNodeInList, imgDir, false); DrawWiringRemoteControllers(wiringNodeInList, imgDir); for (int i = 0; i < strArrayList_powerType.Count; i++) { ptArrayList_power.Add(ptArrayList_mainpower[i]); ptf4 = ptArrayList_mainpower[i][1]; text = strArrayList_powerVoltage[i] + "/" + dArrayList_powerCurrent[i].ToString() + "A"; textNode = utilWiring.createTextNode_wiring(text, new drawing.PointF(ptf4.X + 122, ptf4.Y + 2)); addFlowWiring.AddNode(textNode); text = strArrayList_powerType[i]; textNode = utilWiring.createTextNode_wiring(text, new drawing.PointF(ptf4.X + 166, ptf4.Y - 12)); addFlowWiring.AddNode(textNode); } DrawWiringLegend(nodeOut); foreach (drawing.PointF[] pt in ptArrayList) { Node nd1 = utilWiring.createLinePoint(pt[0]); addFlowWiring.AddNode(nd1); Node nd2 = utilWiring.createLinePoint(pt[pt.Length - 1]); addFlowWiring.AddNode(nd2); //Link lnk1 = utilWiring.createLine(); Link lnk1 = utilWiring.createLine(nd1, nd2, "", addFlowWiring); //nd1.OutLinks.Add(lnk1, nd2); addFlowWiring.AddLink(lnk1); if (pt.Length > 2) { var pt1 = utilWiring.convertPointFToWinPoint(pt[1]); lnk1.AddPoint(pt1); } } foreach (drawing.PointF[] pt in ptArrayList_power) { Node nd1 = utilWiring.createLinePoint(pt[0]); //addFlowWiring.Nodes.Add(nd1); addFlowWiring.AddNode(nd1); Node nd2 = utilWiring.createLinePoint(pt[pt.Length - 1]); Link lnk1 = utilWiring.createLine(nd1, nd2, "", addFlowWiring); if (pt.Length > 2) { lnk1.LineStyle = LineStyle.VH; } //lnk1.Jump = Jump.Arc; //lnk1.DrawWidth = 1; lnk1.StrokeThickness = 1; //lnk1.DrawColor = Color.Red; lnk1.Stroke = System.Windows.Media.Brushes.Red; //nd1.OutLinks.Add(lnk1, nd2); addFlowWiring.AddLink(lnk1); } foreach (drawing.PointF[] pt in ptArrayList_ground) { if (pt.Length > 2) { ng.MyNodeGround_Wiring nodeground = new ng.MyNodeGround_Wiring(); nodeground.Location = new Point(pt[2].X, pt[2].Y); imgFile = System.IO.Path.Combine(imgDir, "Ground.png"); utilWiring.setNode_wiring(nodeground, imgFile, addFlowWiring); //nodeground.DrawColor = Color.Transparent; } Node nd1 = utilWiring.createLinePoint(pt[0]); //addFlowWiring.Nodes.Add(nd1); addFlowWiring.AddNode(nd1); Node nd2 = utilWiring.createLinePoint(pt[1]); Link lnk1 = utilWiring.createLine(nd1, nd2, "", addFlowWiring); lnk1.DashStyle = DashStyles.Dash; //nd1.OutLinks.Add(lnk1, nd2); addFlowWiring.AddLink(lnk1); } }