// This overload is for more complicated scenarios private TestFlowElement AddTestFlowLink(TestFlowElement flowchartElement) { if (!_elements.Contains(flowchartElement)) { _elements.Add(flowchartElement); } return(flowchartElement); }
void Show_Cross_Girder() { MemberCollection mc = new MemberCollection(BridgeDesign.Analysis.Members); MemberCollection sort_membs = new MemberCollection(); double z_min = double.MaxValue; double x = double.MaxValue; int indx = -1; int i = 0; int j = 0; List <double> list_z = new List <double>(); List <MemberCollection> list_mc = new List <MemberCollection>(); double last_z = 0.0; //double z_min = double.MaxValue; while (mc.Count != 0) { indx = -1; for (i = 0; i < mc.Count; i++) { if (z_min > mc[i].StartNode.Z) { z_min = mc[i].StartNode.Z; indx = i; } } if (indx != -1) { if (!list_z.Contains(z_min)) { list_z.Add(z_min); } sort_membs.Add(mc[indx]); mc.Members.RemoveAt(indx); z_min = double.MaxValue; } } List <string> list_arr = new List <string>(); last_z = -1.0; //Outer Long Girder MemberCollection outer_long = new MemberCollection(); MemberCollection inner_long = new MemberCollection(); MemberCollection inner_cross = new MemberCollection(); //z_min = Truss_Analysis.Analysis.Joints.MinZ; //double z_max = Truss_Analysis.Analysis.Joints.MaxZ; //Chiranjit [2011 07 09] //Store Outer Girder Members int count = 0; z_min = 0.0; for (i = 0; i < sort_membs.Count; i++) { if (z_min < sort_membs[i].StartNode.Z) { z_min = sort_membs[i].StartNode.Z; count++; } if (z_min < sort_membs[i].EndNode.Z) { z_min = sort_membs[i].EndNode.Z; count++; } //For Outer Girder if (count == 2) { break; } //if (count == 0) break; } //z_min = WidthCantilever; double z_max = z_min; //Store inner and outer Long Girder for (i = 0; i < sort_membs.Count; i++) { if (((sort_membs[i].StartNode.Z == z_min) || (sort_membs[i].StartNode.Z == z_max)) && sort_membs[i].StartNode.Z == sort_membs[i].EndNode.Z) { outer_long.Add(sort_membs[i]); } else if (((sort_membs[i].StartNode.Z != z_min) && (sort_membs[i].StartNode.Z != z_max)) && sort_membs[i].StartNode.Z == sort_membs[i].EndNode.Z) { inner_long.Add(sort_membs[i]); } } //Store Cross Girders for (i = 0; i < sort_membs.Count; i++) { if (outer_long.Contains(sort_membs[i]) == false && inner_long.Contains(sort_membs[i]) == false) { inner_cross.Add(sort_membs[i]); } } //Find X MIN X MAX for outer long girder double x_min, x_max; List <double> list_outer_xmin = new List <double>(); List <double> list_inner_xmin = new List <double>(); List <double> list_inner_cur_z = new List <double>(); List <double> list_outer_cur_z = new List <double>(); List <double> list_outer_xmax = new List <double>(); List <double> list_inner_xmax = new List <double>(); x_min = double.MaxValue; x_max = double.MinValue; last_z = outer_long[0].StartNode.Z; for (i = 0; i < outer_long.Count; i++) { if (last_z == outer_long[i].StartNode.Z) { if (x_min > outer_long[i].StartNode.X) { x_min = outer_long[i].StartNode.X; } if (x_max < outer_long[i].EndNode.X) { x_max = outer_long[i].EndNode.X; } } else { list_outer_xmax.Add(x_max); list_outer_xmin.Add(x_min); list_outer_cur_z.Add(last_z); x_min = outer_long[i].StartNode.X; x_max = outer_long[i].EndNode.X; } last_z = outer_long[i].StartNode.Z; } list_outer_xmax.Add(x_max); list_outer_xmin.Add(x_min); list_outer_cur_z.Add(last_z); x_min = double.MaxValue; x_max = double.MinValue; last_z = inner_long.Count > 0 ? inner_long[0].StartNode.Z : 0.0; for (i = 0; i < inner_long.Count; i++) { if (last_z == inner_long[i].StartNode.Z) { if (x_min > inner_long[i].StartNode.X) { x_min = inner_long[i].StartNode.X; } if (x_max < inner_long[i].EndNode.X) { x_max = inner_long[i].EndNode.X; } } else { list_inner_xmax.Add(x_max); list_inner_xmin.Add(x_min); list_inner_cur_z.Add(last_z); x_min = inner_long[i].StartNode.X; x_max = inner_long[i].EndNode.X; } last_z = inner_long[i].StartNode.Z; } list_inner_xmax.Add(x_max); list_inner_xmin.Add(x_min); list_inner_cur_z.Add(last_z); List <int> _deff_joints = new List <int>(); List <int> _L_4_joints = new List <int>(); List <int> _L_2_joints = new List <int>(); //Member Forces from Report for Inner girder //int cur_node = -1; int cur_member = -1; // FOR L/2 string curr_membs_L2_text = ""; // FOR L/4 string curr_membs_L4_text = ""; //FOR Effective Depth string curr_membs_Deff_text = ""; double cur_z = 0.0; double cur_y = 0.0; double curr_L2_x = 0.0; double curr_L4_x = 0.0; double curr_Deff_x = 0.0; curr_membs_L2_text = ""; curr_membs_L4_text = ""; curr_membs_Deff_text = ""; cur_member = -1; //if (outer_long.Count > 0) // Bridge_Analysis.Effective_Depth = outer_long[0].Length; for (i = 0; i < list_inner_xmax.Count; i++) { x_max = list_inner_xmax[i]; x_min = list_inner_xmin[i]; cur_z = list_inner_cur_z[i]; curr_L2_x = (x_max + x_min) / 2.0; curr_L4_x = (curr_L2_x + x_min) / 2.0; curr_Deff_x = (BridgeDesign.Analysis.Effective_Depth + x_min); cur_y = 0.0; for (j = 0; j < inner_long.Count; j++) { if ((inner_long[j].EndNode.Y.ToString("0.0") == cur_y.ToString("0.0")) && (inner_long[j].EndNode.Z.ToString("0.0") == cur_z.ToString("0.0"))) { if ((inner_long[j].EndNode.X.ToString("0.0") == curr_L2_x.ToString("0.0"))) { cur_member = inner_long[j].MemberNo; curr_membs_L2_text += cur_member + " "; _L_2_joints.Add(inner_long[j].EndNode.NodeNo); } else if ((inner_long[j].EndNode.X.ToString("0.0") == curr_L4_x.ToString("0.0"))) { cur_member = inner_long[j].MemberNo; curr_membs_L4_text += cur_member + " "; _L_4_joints.Add(inner_long[j].EndNode.NodeNo); } else if ((inner_long[j].EndNode.X.ToString("0.0") == curr_Deff_x.ToString("0.0"))) { cur_member = inner_long[j].MemberNo; curr_membs_Deff_text += cur_member + " "; _deff_joints.Add(inner_long[j].EndNode.NodeNo); } } } } _L_2_joints.Remove(64); _L_4_joints.Remove(42); _deff_joints.Remove(20); //For Outer Long Girder curr_membs_L2_text = ""; curr_membs_L4_text = ""; curr_membs_Deff_text = ""; cur_member = -1; _deff_joints.Clear(); _L_2_joints.Clear(); _L_4_joints.Clear(); //Creating X Coordinates at every Z level for (i = 0; i < list_outer_xmax.Count; i++) { x_max = list_outer_xmax[i]; x_min = list_outer_xmin[i]; cur_z = list_outer_cur_z[i]; curr_L2_x = (x_max + x_min) / 2.0; curr_L4_x = (curr_L2_x + x_min) / 2.0; curr_Deff_x = (BridgeDesign.Analysis.Effective_Depth + x_min); cur_y = 0.0; for (j = 0; j < outer_long.Count; j++) { if ((outer_long[j].EndNode.Y.ToString("0.0") == cur_y.ToString("0.0")) && (outer_long[j].EndNode.Z.ToString("0.0") == cur_z.ToString("0.0"))) { if ((outer_long[j].EndNode.X.ToString("0.0") == curr_L2_x.ToString("0.0"))) { cur_member = outer_long[j].MemberNo; curr_membs_L2_text += cur_member + " "; _L_2_joints.Add(outer_long[j].EndNode.NodeNo); } else if ((outer_long[j].EndNode.X.ToString("0.0") == curr_L4_x.ToString("0.0"))) { cur_member = outer_long[j].MemberNo; curr_membs_L4_text += cur_member + " "; _L_4_joints.Add(outer_long[j].EndNode.NodeNo); } else if ((outer_long[j].EndNode.X.ToString("0.0") == curr_Deff_x.ToString("0.0"))) { cur_member = outer_long[j].MemberNo; curr_membs_Deff_text += cur_member + " "; _deff_joints.Add(outer_long[j].EndNode.NodeNo); } } } } //Cross Girder string cross_text = ""; if (inner_cross.Count == 0) { MessageBox.Show(this, "No Cross Girder was found.", "ASTRA", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { for (j = 0; j < inner_cross.Count; j++) { cur_member = inner_cross[j].MemberNo; cross_text += cur_member + " "; } CMember m = new CMember(); m.Group.MemberNosText = cross_text; m.Force = BridgeDesign.GetForce(ref m); txt_cross_moment.Text = (m.MaxBendingMoment).ToString(); txt_cross_shear.Text = m.MaxShearForce.ToString(); } }