/// <summary> /// output a given joint in BVH format /// </summary> /// <param name="joint"></param> /// <param name="sbOut"></param> /// <param name="indents"></param> private void buildBVHOutputSkeleton(JointNode root, string indents = "") { _bvhSkeletonBuffer.Append(indents); _bvhSkeletonBuffer.Append(root.Type != NodeTypeEnum.END ? root.Type.ToString() + CHAR_SPACE + root.JointIndex.ToString() : STR_END_SITE).Append(CHAR_LF); _bvhSkeletonBuffer.Append(indents).Append(CHAR_OPEN_BRACE).Append(CHAR_LF); _bvhSkeletonBuffer.Append(indents).Append(CHAR_SPACE).Append(CHAR_SPACE).Append(STR_OFFSET).Append(CHAR_SPACE) .Append(root.OriginalOffset.X.ToString()).Append(CHAR_SPACE) .Append(root.OriginalOffset.Y.ToString()).Append(CHAR_SPACE) .Append(root.OriginalOffset.Z.ToString()).Append(CHAR_LF); if (root.Type != NodeTypeEnum.END) { _bvhSkeletonBuffer.Append(indents).Append(CHAR_SPACE).Append(CHAR_SPACE).Append(STR_CHANNELS).Append(CHAR_SPACE) .Append(root.Type == NodeTypeEnum.ROOT ? ROOT_CHANNEL_NUM : JOINT_CHANNEL_NUM); if (root.Type == NodeTypeEnum.ROOT) { _bvhSkeletonBuffer.Append(CHAR_SPACE).Append(STR_XPOSITION) .Append(CHAR_SPACE).Append(STR_YPOSITION) .Append(CHAR_SPACE).Append(STR_ZPOSITION); } _bvhSkeletonBuffer.Append(CHAR_SPACE).Append(STR_ZROTATION) .Append(CHAR_SPACE).Append(STR_XROTATION) .Append(CHAR_SPACE).Append(STR_YROTATION).Append(CHAR_LF); foreach (JointNode childJoint in root.Children) { buildBVHOutputSkeleton(childJoint, indents + CHAR_SPACE + CHAR_SPACE); } } _bvhSkeletonBuffer.Append(indents).Append(CHAR_CLOSE_BRACE).Append(CHAR_LF); }
/// <summary> /// /// </summary> public void SetJoint(HSD_JOBJ jobj, JointAnimManager animManager) { jointTree.BeginUpdate(); jointTree.Nodes.Clear(); var jobjs = jobj.BreathFirstList; Dictionary <HSD_JOBJ, JointNode> childToParent = new Dictionary <HSD_JOBJ, JointNode>(); for (int i = 0; i < Math.Min(animManager.NodeCount, jobjs.Count); i++) { var node = new JointNode() { JOBJ = jobjs[i], AnimNode = animManager.Nodes[i], Text = $"JOINT_{i}" }; foreach (var c in jobjs[i].Children) { childToParent.Add(c, node); } if (childToParent.ContainsKey(jobjs[i])) { childToParent[jobjs[i]].Nodes.Add(node); } else { jointTree.Nodes.Add(node); } } jointTree.ExpandAll(); jointTree.EndUpdate(); }
void TranversCollectJoints_r(GameObject go, int parent, List <JointNode> list) { JointNode joint = new JointNode() { Name = go.name, Parent = parent }; list.Add(joint); int index = list.Count - 1; for (int i = 0; i < go.transform.childCount; i++) { TranversCollectJoints_r(go.transform.GetChild(i).gameObject, index, list); } }
public static void UpdateSkeletonForDebug(JointNode node) { // rotation of a bone is actually the rotation of joint's parent joint Quaternion parentRotation; if (node.JointIndex == JointType.HipCenter) { parentRotation = ConvertToQuaternion(node.Rotation); } else { parentRotation = ConvertToQuaternion(node.Parent.Rotation); } RotatePoint(node.OriginalOffset, ConvertToQuaternion(node.Rotation), out node.Offset); // update node rotation to absolute node.Rotation = KinectDataConverter.QuaternionToAxisAngles(ConvertToQuaternion(node.Rotation) * parentRotation); if (NodeTypeEnum.ROOT == node.Type) { node.Offset.X += _renderingSolution.OriginX; node.Offset.Y += _renderingSolution.OriginY; node.Offset.Z += 0; } else { node.Offset.X += node.Parent.Offset.X; node.Offset.Y += node.Parent.Offset.Y; node.Offset.Z += node.Parent.Offset.Z; } if (node.Type == NodeTypeEnum.END) { return; } foreach (JointNode child in node.Children) { UpdateSkeletonForDebug(child); } }
public void Analysis_Abutment() { string ana_file = Path.Combine(Get_Project_Folder(), "Abutment_Analysis_Input.txt"); string kStr = ""; List <string> list = new List <string>(); int i = 0; list.Add("ASTRA FLOOR RCC T GIRDER BRIDGE DECK ANALYSIS"); list.Add("UNIT METER MTON"); list.Add("JOINT COORDINATES"); List <JointNode> Joints = new List <JointNode>(); List <Member> MemColls = new List <Member>(); double L = MyList.StringToDouble(txt_Ana_L.Text, 0.0); double og = MyList.StringToDouble(txt_Ana_og.Text, 0.0); double inc = (L - og * 2) / 4.0; double ws = 2.0 - og; JointNode jn = new JointNode(); jn.NodeNo = 1; jn.X = 0.0; Joints.Add(jn); jn = new JointNode(); jn.NodeNo = 2; jn.X = og + og; Joints.Add(jn); jn = new JointNode(); jn.NodeNo = 3; jn.X = og + ws; Joints.Add(jn); jn = new JointNode(); jn.NodeNo = 4; jn.X = og + inc; Joints.Add(jn); jn = new JointNode(); jn.NodeNo = 5; jn.X = og + 2 * inc; Joints.Add(jn); jn = new JointNode(); jn.NodeNo = 6; jn.X = og + 3 * inc; Joints.Add(jn); jn = new JointNode(); jn.NodeNo = 7; jn.X = L - (og + ws); Joints.Add(jn); jn = new JointNode(); jn.NodeNo = 8; jn.X = og + 4 * inc; Joints.Add(jn); jn = new JointNode(); jn.NodeNo = 9; jn.X = L; Joints.Add(jn); Member mbr = new Member(); mbr.MemberNo = 1; mbr.StartNode = Joints[0]; mbr.EndNode = Joints[1]; MemColls.Add(mbr); for (i = 2; i < Joints.Count; i++) { mbr = new Member(); mbr.MemberNo = i; mbr.StartNode = Joints[i - 1]; mbr.EndNode = Joints[i]; MemColls.Add(mbr); } for (i = 0; i < Joints.Count; i++) { list.Add(Joints[i].ToString()); } list.Add("MEMBER INCIDENCES"); for (i = 0; i < MemColls.Count; i++) { list.Add(MemColls[i].ToString()); } list.Add("SECTION PROPERTIES"); ////list.Add("1 2 5 6 AX"); ////list.Add(string.Format("1 2 6 7 PRIS AX 0.036212 IX 0.00001 IY 0.000697 IZ 0.001", //list.Add(string.Format("1 2 7 8 PRIS AX {0} IX 0.00001 IY {1} IZ 0.001", // txt_smp_i_a_sup.Text, // txt_smp_i_Ix_sup.Text // )); //list.Add(string.Format("3 TO 6 PRIS AX {0} IX 0.00001 IY {1} IZ 0.001", // txt_smp_i_a_mid.Text, // txt_smp_i_ix_mid.Text // )); list.Add(string.Format("MATERIAL CONSTANT")); list.Add(string.Format("E 2.85E6 ALL")); list.Add(string.Format("DENSITY CONCRETE ALL")); list.Add(string.Format("POISSON CONCRETE ALL")); list.Add(string.Format("SUPPORT")); //list.Add(string.Format("2 6 PINNED")); list.Add(string.Format("2 8 FIXED BUT FX MZ")); //list.Add(string.Format("99 100 101 102 FIXED BUT FX MZ")); //list.Add(string.Format("LOAD 1 DEAD LOAD")); //list.Add(string.Format("MEMBER LOAD")); //list.Add(string.Format("1 2 7 8 UNI GY -{0:f4}", MyList.StringToDouble(txt_Ana_DL_supp.Text, 0.0)/10.0)); //list.Add(string.Format("3 TO 6 UNI GY -{0}", MyList.StringToDouble(txt_Ana_DL_mid.Text, 0.0)/10.0)); //list.Add(string.Format("LOAD 2 SIDL")); //list.Add(string.Format("MEMBER LOAD")); //list.Add(string.Format("1 TO 8 UNI GY -{0}", MyList.StringToDouble(txt_Ana_SIDL.Text, 0.0) / 10.0)); //list.Add(string.Format("LOAD 3 FPLL")); //list.Add(string.Format("MEMBER LOAD")); //list.Add(string.Format("1 TO 8 UNI GY -{0}", MyList.StringToDouble(txt_Ana_FPLL.Text, 0.0)/10.0)); //list.Add(string.Format("PRINT SUPPORT REACTIONS")); //list.Add(string.Format("PERFORM ANALYSIS")); //list.Add(string.Format("FINISH")); File.WriteAllLines(ana_file, list.ToArray()); MessageBox.Show("Input Data Created as " + ana_file, "ASTRA"); #region Process try { #region Process //int i = 0; ProcessCollection pcol = new ProcessCollection(); ProcessData pd = new ProcessData(); string flPath = ana_file; iapp.Progress_Works.Clear(); if (File.Exists(flPath)) { pd = new ProcessData(); pd.Process_File_Name = flPath; pd.Process_Text = "PROCESS ANALYSIS FOR " + Path.GetFileNameWithoutExtension(flPath).ToUpper(); pcol.Add(pd); iapp.Progress_Works.Add("Reading Analysis Data from " + Path.GetFileNameWithoutExtension(flPath).ToUpper() + " (ANALYSIS_REP.TXT)"); } i++; string ana_rep_file = Path.Combine(Path.GetDirectoryName(flPath), "ANALYSIS_REP"); if (iapp.Show_and_Run_Process_List(pcol)) { BridgeMemberAnalysis DeadLoad_Analysis = new BridgeMemberAnalysis(iapp, ana_rep_file); } #endregion Process } catch (Exception ex) { } #endregion Process }
private void AddBVHBone_Debug(JointNode node1, JointNode node2) { addLineToWindow(node1.Offset.X, node1.Offset.Y, node2.Offset.X, node2.Offset.Y, BTUSH_BONE_DEBUG, DOUBLE_THICKNESS_BONE_DEBUG); }
//Chiranjit [2011 07 09] //Create Bridge Input Data by user's given values. //Long Girder Spacing, Cross Girder Spacing, Cantilever Width public void CreateData() { //double x_incr = (Length / (Total_Columns - 1)); //double z_incr = (WidthBridge / (Total_Rows - 1)); double x_incr = Spacing_Cross_Girder; double z_incr = Spacing_Long_Girder; JointNode nd; //Joints_Array = new JointNode[Total_Rows, Total_Columns]; //Long_Girder_Members_Array = new Member[Total_Rows, Total_Columns - 1]; //Cross_Girder_Members_Array = new Member[Total_Rows - 1, Total_Columns]; int iCols = 0; int iRows = 0; Joints.Clear(); double skew_length = Math.Tan((Skew_Angle * (Math.PI / 180.0))); double val1 = 12.1; double val2 = val1 * skew_length; double last_x = 0.0; double last_z = 0.0; List <double> list_x = new List <double>(); List <double> list_z = new List <double>(); Hashtable z_table = new Hashtable(); //Store Joint Coordinates double L_2, L_4, eff_d; double x_max, x_min; //int _Columns, _Rows; //_Columns = Total_Columns; //_Rows = Total_Rows; last_x = 0.0; //Creating X Coordinates at every Z level list_x.Clear(); list_x.Add(0.0); list_x.Add(Effective_Depth); list_x.Add(Length - Effective_Depth); list_x.Add(Length / 4.0); list_x.Add(Length / 2.0); list_x.Add(Length); last_x = x_incr; do { if (!list_x.Contains(last_x) && last_x > Effective_Depth && last_x < (Length - Effective_Depth)) { list_x.Add(last_x); } last_x += x_incr; }while (last_x <= Length); list_x.Sort(); list_z.Clear(); list_z.Add(0); list_z.Add(WidthCantilever); list_z.Add(WidthCantilever / 2); list_z.Add(WidthBridge - WidthCantilever); list_z.Add(WidthBridge - WidthCantilever / 2); list_z.Add(WidthBridge); last_z = WidthCantilever + z_incr; do { if (!list_z.Contains(last_z) && last_z > WidthCantilever && last_z < (WidthBridge - WidthCantilever - 0.2)) { list_z.Add(last_z); } last_z += z_incr; } while (last_z <= WidthBridge); list_z.Sort(); _Columns = list_x.Count; _Rows = list_z.Count; int i = 0; List <double> list = new List <double>(); for (iRows = 0; iRows < _Rows; iRows++) { list = new List <double>(); for (iCols = 0; iCols < _Columns; iCols++) { list.Add(list_x[iCols] + list_z[iRows] * skew_length); } z_table.Add(list_z[iRows], list); } //Chiranjit [2011 07 11] //Calculate L/2, L/4, Deff for Skew Angle //for(i = 0; i < list_z.Count; i++) //{ // list_x = z_table[list_z[i]] as List<double>; // if (list_x != null) // { // list_x.Sort(); // //x_max = list_x[list_x.Count - 1] + (skew_length * list_z[i]); // //x_min = list_x[0] + (skew_length * list_z[i]); // x_max = list_x[list_x.Count - 1]; // x_min = list_x[0]; // if (i == 0) // { // span_length = (x_max - x_min); // //Length = span_length; // } // L_2 = (x_max + x_min) / 2.0; // L_4 = (L_2 + x_min) / 2.0; // eff_d = (Effective_Depth + x_min); // if (list_x.Contains(eff_d) == false) // list_x.Add(eff_d); // if (list_x.Contains(L_2) == false) // list_x.Add(L_2); // if (list_x.Contains(L_4) == false) // list_x.Add(L_4); // L_2 = (x_max + x_min) / 2.0; // L_4 = x_max - L_4; // eff_d = x_max - eff_d; // if (list_x.Contains(eff_d) == false) // list_x.Add(eff_d); // if (list_x.Contains(L_2) == false) // list_x.Add(L_2); // if (list_x.Contains(L_4) == false) // list_x.Add(L_4); // list_x.Sort(); // //_Columns = list_x.Count; // //_Rows = list_z.Count; // z_table[list_z[i]] = list_x; // } //} Joints_Array = new JointNode[_Rows, _Columns]; Long_Girder_Members_Array = new Member[_Rows, _Columns - 1]; Cross_Girder_Members_Array = new Member[_Rows - 1, _Columns]; for (iRows = 0; iRows < _Rows; iRows++) { list_x = z_table[list_z[iRows]] as List <double>; for (iCols = 0; iCols < _Columns; iCols++) { nd = new JointNode(); nd.Y = 0; nd.Z = list_z[iRows]; //nd.X = list_x[iCols] + (skew_length * list_z[iRows]); nd.X = list_x[iCols]; nd.NodeNo = Joints.JointNodes.Count + 1; Joints.Add(nd); Joints_Array[iRows, iCols] = nd; last_x = nd.X; } } int nodeNo = 0; Joints.Clear(); for (iCols = 0; iCols < _Columns; iCols++) { for (iRows = 0; iRows < _Rows; iRows++) { nodeNo++; Joints_Array[iRows, iCols].NodeNo = nodeNo; Joints.Add(Joints_Array[iRows, iCols]); } } Member mem = new Member(); MemColls.Clear(); for (iCols = 0; iCols < _Columns; iCols++) { for (iRows = 1; iRows < _Rows; iRows++) { mem = new Member(); mem.StartNode = Joints_Array[iRows - 1, iCols]; mem.EndNode = Joints_Array[iRows, iCols]; mem.MemberNo = MemColls.Count + 1; MemColls.Add(mem); Cross_Girder_Members_Array[iRows - 1, iCols] = mem; } } for (iRows = 0; iRows < _Rows; iRows++) { for (iCols = 1; iCols < _Columns; iCols++) { mem = new Member(); mem.StartNode = Joints_Array[iRows, iCols - 1]; mem.EndNode = Joints_Array[iRows, iCols]; mem.MemberNo = MemColls.Count + 1; MemColls.Add(mem); Long_Girder_Members_Array[iRows, iCols - 1] = mem; } } }
public bool Create_Data(string file_name) { List <string> list = new List <string>(); //con int Upper_Connector_Index = -1; int Lower_Connector_Index = -1; int indx = 12; int pnl_nos = (int)(Tower_Height / Bracing_Panel_Height); #region X Points double x_ps = (Tower_Base_Width - Tower_Top_Width) / 2; double X_Incr = (x_ps) / (pnl_nos); List <double> x_side_1 = new List <double>(); List <double> x_side_2 = new List <double>(); List <double> y_side = new List <double>(); List <double> z_side_1 = new List <double>(); List <double> z_side_2 = new List <double>(); double x = 0, y = 0, z = 0; int i = 0; for (i = 0; i <= pnl_nos; i++) { x = i * X_Incr; y = i * Bracing_Panel_Height; x_side_1.Add(x); z_side_1.Add(x); x_side_2.Add(Tower_Base_Width - x); z_side_2.Add(Tower_Base_Width - x); y_side.Add(y); } i = 0; #endregion X Points // Tower_Lower_Connector_Width = 10.0; //Tower_Upper_Connector_Width = 20.0; if (Tower_Upper_Connector_Width != 0.0) { for (i = 0; i < y_side.Count; i++) { if (Tower_Upper_Connector_Width.ToString("f3") == y_side[i].ToString("f3")) { Upper_Connector_Index = i; break; } } } if (Tower_Lower_Connector_Width != 0.0) { for (i = 0; i < y_side.Count; i++) { if (Tower_Lower_Connector_Width.ToString("f3") == y_side[i].ToString("f3")) { Lower_Connector_Index = i; break; } } } JointNodeCollection jnc_1, jnc_2, jnc_3, jnc_4; // First Tower JointNodeCollection jnc_5, jnc_6, jnc_7, jnc_8;// Second Tower jnc_1 = new JointNodeCollection(); jnc_2 = new JointNodeCollection(); jnc_3 = new JointNodeCollection(); jnc_4 = new JointNodeCollection(); jnc_5 = new JointNodeCollection(); jnc_6 = new JointNodeCollection(); jnc_7 = new JointNodeCollection(); jnc_8 = new JointNodeCollection(); double x_dist = Tower_Base_Width + Tower_Clear_Distance; JointNode jn = null; #region Side 1 for (i = 0; i < y_side.Count; i++) { #region First Tower jn = new JointNode(); jn.X = x_side_1[i]; jn.Y = y_side[i]; jn.Z = z_side_1[i]; jnc_1.Add(jn); #endregion First Tower #region Second Tower jn = new JointNode(); jn.X = x_dist + x_side_1[i]; jn.Y = y_side[i]; jn.Z = z_side_1[i]; jnc_6.Add(jn); #endregion Second Tower } #endregion Side 1 #region Side 2 for (i = 0; i < y_side.Count; i++) { jn = new JointNode(); jn.X = x_side_2[i]; jn.Y = y_side[i]; jn.Z = z_side_1[i]; jnc_2.Add(jn); jn = new JointNode(); jn.X = x_dist + x_side_2[i]; jn.Y = y_side[i]; jn.Z = z_side_1[i]; jnc_5.Add(jn); } #endregion Side 2 #region Side 3 for (i = 0; i < y_side.Count; i++) { jn = new JointNode(); jn.X = x_side_1[i]; jn.Y = y_side[i]; jn.Z = z_side_2[i]; jnc_3.Add(jn); jn = new JointNode(); jn.X = x_dist + x_side_1[i]; jn.Y = y_side[i]; jn.Z = z_side_2[i]; jnc_8.Add(jn); } #endregion Side 3 #region Side 4 for (i = 0; i < y_side.Count; i++) { jn = new JointNode(); jn.X = x_side_2[i]; jn.Y = y_side[i]; jn.Z = z_side_2[i]; jnc_4.Add(jn); jn = new JointNode(); jn.X = x_dist + x_side_2[i]; jn.Y = y_side[i]; jn.Z = z_side_2[i]; jnc_7.Add(jn); } #endregion Side 4 JointNodeCollection con_jnt_1 = new JointNodeCollection(); //indx = 12; indx = 12; double mid_x = (x_dist + Tower_Base_Width) / 2.0; if (Upper_Connector_Index != -1) { indx = Upper_Connector_Index; #region Connector 1 #region Connector Joint 1 jn = new JointNode(); jn.X = mid_x; jn.Y = y_side[indx]; jn.Z = z_side_2[indx]; con_jnt_1.Add(jn); #endregion Connetor Joint 1 #region Connetor Joint 2 jn = new JointNode(); jn.X = mid_x; jn.Y = y_side[indx]; jn.Z = z_side_1[indx]; con_jnt_1.Add(jn); #endregion Connetor Joint 2 indx++; #region Connetor Joint 3 jn = new JointNode(); jn.X = mid_x; jn.Y = y_side[indx]; jn.Z = z_side_1[indx]; con_jnt_1.Add(jn); #endregion Connetor Joint 3 #region Connetor Joint 4 jn = new JointNode(); jn.X = mid_x; jn.Y = y_side[indx]; jn.Z = z_side_2[indx]; con_jnt_1.Add(jn); #endregion Connetor Joint 4 #endregion Connector 1 } indx = 5; JointNodeCollection con_jnt_2 = new JointNodeCollection(); if (Lower_Connector_Index != -1) { indx = Lower_Connector_Index; #region Connector 2 #region Connector Joint 1 jn = new JointNode(); jn.X = mid_x; jn.Y = y_side[indx]; jn.Z = z_side_2[indx]; con_jnt_2.Add(jn); #endregion Connetor Joint 1 #region Connetor Joint 2 jn = new JointNode(); jn.X = mid_x; jn.Y = y_side[indx]; jn.Z = z_side_1[indx]; con_jnt_2.Add(jn); #endregion Connetor Joint 2 indx++; #region Connetor Joint 3 jn = new JointNode(); jn.X = mid_x; jn.Y = y_side[indx]; jn.Z = z_side_1[indx]; con_jnt_2.Add(jn); #endregion Connetor Joint 3 #region Connetor Joint 4 jn = new JointNode(); jn.X = mid_x; jn.Y = y_side[indx]; jn.Z = z_side_2[indx]; con_jnt_2.Add(jn); #endregion Connetor Joint 4 #endregion Connector 2 } list.Add(string.Format("")); list.Add(string.Format("ASTRA SPACE TOWER")); list.Add(string.Format("UNIT MTON METRES")); list.Add(string.Format("JOINT COORDINATES")); int jnt_no = 1; #region Joint Coordinates foreach (var item in jnc_1) { item.NodeNo = jnt_no++; list.Add(item.ToString()); } foreach (var item in jnc_2) { item.NodeNo = jnt_no++; list.Add(item.ToString()); } foreach (var item in jnc_3) { item.NodeNo = jnt_no++; list.Add(item.ToString()); } foreach (var item in jnc_4) { item.NodeNo = jnt_no++; list.Add(item.ToString()); } foreach (var item in jnc_5) { item.NodeNo = jnt_no++; list.Add(item.ToString()); } foreach (var item in jnc_6) { item.NodeNo = jnt_no++; list.Add(item.ToString()); } foreach (var item in jnc_7) { item.NodeNo = jnt_no++; list.Add(item.ToString()); } foreach (var item in jnc_8) { item.NodeNo = jnt_no++; list.Add(item.ToString()); } foreach (var item in con_jnt_1) { item.NodeNo = jnt_no++; list.Add(item.ToString()); } foreach (var item in con_jnt_2) { item.NodeNo = jnt_no++; list.Add(item.ToString()); } #endregion Joint Coordinates int mem_no = 1; Member mbr = new Member(); MemberCollection m_side_1 = new MemberCollection(); List <int> sec_1 = new List <int>(); List <int> sec_2 = new List <int>(); #region Tower 1 #region Member Side 1 [1-15] for (i = 1; i < jnc_1.Count; i++) { mbr = new Member(); mbr.StartNode = jnc_1[i - 1]; mbr.EndNode = jnc_1[i]; m_side_1.Add(mbr); sec_1.Add(mem_no++); } #endregion Member Side 1 #region Member Side 2 [16-30] for (i = 1; i < jnc_2.Count; i++) { mbr = new Member(); mbr.StartNode = jnc_2[i - 1]; mbr.EndNode = jnc_2[i]; m_side_1.Add(mbr); sec_1.Add(mem_no++); } #endregion Member Side 2 #region Member Side 3 [31-45] for (i = 1; i < jnc_3.Count; i++) { mbr = new Member(); mbr.StartNode = jnc_3[i - 1]; mbr.EndNode = jnc_3[i]; m_side_1.Add(mbr); sec_1.Add(mem_no++); } #endregion Member Side 3 #region Member Side 4 [46-60] for (i = 1; i < jnc_4.Count; i++) { mbr = new Member(); mbr.StartNode = jnc_4[i - 1]; mbr.EndNode = jnc_4[i]; m_side_1.Add(mbr); sec_1.Add(mem_no++); } #endregion Member Side 4 #region Member 61-76 for (i = 0; i < jnc_1.Count; i++) { mbr = new Member(); mbr.StartNode = jnc_1[i]; mbr.EndNode = jnc_2[i]; m_side_1.Add(mbr); sec_2.Add(mem_no++); } #endregion Member 61-76 #region Member 77-92 for (i = 0; i < jnc_3.Count; i++) { mbr = new Member(); mbr.StartNode = jnc_3[i]; mbr.EndNode = jnc_4[i]; m_side_1.Add(mbr); sec_2.Add(mem_no++); } #endregion Member 77-92 #region Member 93-108 for (i = 0; i < jnc_3.Count; i++) { mbr = new Member(); mbr.StartNode = jnc_1[i]; mbr.EndNode = jnc_3[i]; m_side_1.Add(mbr); sec_2.Add(mem_no++); } #endregion Member 77-92 #region Member 109-124 for (i = 0; i < jnc_2.Count; i++) { mbr = new Member(); mbr.StartNode = jnc_2[i]; mbr.EndNode = jnc_4[i]; m_side_1.Add(mbr); sec_2.Add(mem_no++); } #endregion Member 109-124 #region Member 125-139 for (i = 1; i < jnc_1.Count; i += 2) { try { mbr = new Member(); mbr.StartNode = jnc_3[i - 1]; mbr.EndNode = jnc_1[i]; m_side_1.Add(mbr); sec_2.Add(mem_no++); mbr = new Member(); mbr.StartNode = jnc_1[i]; mbr.EndNode = jnc_3[i + 1]; m_side_1.Add(mbr); sec_2.Add(mem_no++); } catch (Exception ex) { } } #endregion Member 109-124 #region Member 140-154 for (i = 1; i < jnc_2.Count; i += 2) { try { mbr = new Member(); mbr.StartNode = jnc_2[i - 1]; mbr.EndNode = jnc_4[i]; m_side_1.Add(mbr); sec_2.Add(mem_no++); mbr = new Member(); mbr.StartNode = jnc_4[i]; mbr.EndNode = jnc_2[i + 1]; m_side_1.Add(mbr); sec_2.Add(mem_no++); } catch (Exception exx) { } } #endregion Member 140-154 #region Member 155-169 for (i = 1; i < jnc_3.Count; i += 2) { try { mbr = new Member(); mbr.StartNode = jnc_4[i - 1]; mbr.EndNode = jnc_3[i]; m_side_1.Add(mbr); sec_2.Add(mem_no++); mbr = new Member(); mbr.StartNode = jnc_3[i]; mbr.EndNode = jnc_4[i + 1]; m_side_1.Add(mbr); sec_2.Add(mem_no++); } catch (Exception exx) { } } #endregion Member 155-169 #region Member 170-184 for (i = 1; i < jnc_1.Count; i += 2) { try { mbr = new Member(); mbr.StartNode = jnc_1[i - 1]; mbr.EndNode = jnc_2[i]; m_side_1.Add(mbr); sec_2.Add(mem_no++); mbr = new Member(); mbr.StartNode = jnc_2[i]; mbr.EndNode = jnc_1[i + 1]; m_side_1.Add(mbr); sec_2.Add(mem_no++); } catch (Exception exx) { } } #endregion Member 155-169 #endregion Tower 1 #region Tower 2 #region Member Side 1 [185-199] JointNodeCollection jnc = jnc_5; for (i = 1; i < jnc.Count; i++) { mbr = new Member(); mbr.StartNode = jnc[i - 1]; mbr.EndNode = jnc[i]; m_side_1.Add(mbr); sec_1.Add(mem_no++); } #endregion Member Side 1 #region Member Side 2 [200-214] jnc = jnc_6; for (i = 1; i < jnc.Count; i++) { mbr = new Member(); mbr.StartNode = jnc[i - 1]; mbr.EndNode = jnc[i]; m_side_1.Add(mbr); sec_1.Add(mem_no++); } #endregion Member Side 2 #region Member Side 3 [215-229] jnc = jnc_7; for (i = 1; i < jnc.Count; i++) { mbr = new Member(); mbr.StartNode = jnc[i - 1]; mbr.EndNode = jnc[i]; m_side_1.Add(mbr); sec_1.Add(mem_no++); } #endregion Member Side 3 #region Member Side 4 [230-244] jnc = jnc_8; for (i = 1; i < jnc.Count; i++) { mbr = new Member(); mbr.StartNode = jnc[i - 1]; mbr.EndNode = jnc[i]; m_side_1.Add(mbr); sec_1.Add(mem_no++); } #endregion Member Side 4 #region Member 245-260 for (i = 0; i < jnc_5.Count; i++) { mbr = new Member(); mbr.StartNode = jnc_5[i]; mbr.EndNode = jnc_6[i]; m_side_1.Add(mbr); sec_2.Add(mem_no++); } #endregion Member 61-76 #region Member 261-276 for (i = 0; i < jnc_7.Count; i++) { mbr = new Member(); mbr.StartNode = jnc_7[i]; mbr.EndNode = jnc_8[i]; m_side_1.Add(mbr); sec_2.Add(mem_no++); } #endregion Member 77-92 #region Member 277-292 for (i = 0; i < jnc_7.Count; i++) { mbr = new Member(); mbr.StartNode = jnc_5[i]; mbr.EndNode = jnc_7[i]; m_side_1.Add(mbr); sec_2.Add(mem_no++); } #endregion Member 77-92 #region Member 293-308 for (i = 0; i < jnc_6.Count; i++) { mbr = new Member(); mbr.StartNode = jnc_6[i]; mbr.EndNode = jnc_8[i]; m_side_1.Add(mbr); sec_2.Add(mem_no++); } #endregion Member 109-124 #region Member 309-323 for (i = 1; i < jnc_5.Count; i += 2) { try { mbr = new Member(); mbr.StartNode = jnc_7[i - 1]; mbr.EndNode = jnc_5[i]; m_side_1.Add(mbr); sec_2.Add(mem_no++); mbr = new Member(); mbr.StartNode = jnc_5[i]; mbr.EndNode = jnc_7[i + 1]; m_side_1.Add(mbr); sec_2.Add(mem_no++); } catch (Exception exx) { } } #endregion Member 109-124 #region Member 324-338 for (i = 1; i < jnc_6.Count; i += 2) { try { mbr = new Member(); mbr.StartNode = jnc_6[i - 1]; mbr.EndNode = jnc_8[i]; m_side_1.Add(mbr); sec_2.Add(mem_no++); mbr = new Member(); mbr.StartNode = jnc_8[i]; mbr.EndNode = jnc_6[i + 1]; m_side_1.Add(mbr); sec_2.Add(mem_no++); } catch (Exception exx) { } } #endregion Member 140-154 #region Member 339-353 for (i = 1; i < jnc_7.Count; i += 2) { try { mbr = new Member(); mbr.StartNode = jnc_8[i - 1]; mbr.EndNode = jnc_7[i]; m_side_1.Add(mbr); sec_2.Add(mem_no++); mbr = new Member(); mbr.StartNode = jnc_7[i]; mbr.EndNode = jnc_8[i + 1]; m_side_1.Add(mbr); sec_2.Add(mem_no++); } catch (Exception exx) { } } #endregion Member 155-169 #region Member 354-368 for (i = 1; i < jnc_5.Count; i += 2) { try { mbr = new Member(); mbr.StartNode = jnc_5[i - 1]; mbr.EndNode = jnc_6[i]; m_side_1.Add(mbr); sec_2.Add(mem_no++); mbr = new Member(); mbr.StartNode = jnc_6[i]; mbr.EndNode = jnc_5[i + 1]; m_side_1.Add(mbr); sec_2.Add(mem_no++); } catch (Exception exx) { } } #endregion Member 155-169 #endregion Tower 2 MemberCollection m_conn = new MemberCollection(); if (Upper_Connector_Index != -1) { #region Connector 1 indx = Upper_Connector_Index; mbr = new Member(); mbr.StartNode = jnc_4[indx]; mbr.EndNode = con_jnt_1[0]; m_conn.Add(mbr); mbr = new Member(); mbr.StartNode = jnc_2[indx]; mbr.EndNode = con_jnt_1[1]; m_conn.Add(mbr); indx++; mbr = new Member(); mbr.StartNode = jnc_2[indx]; mbr.EndNode = con_jnt_1[2]; m_conn.Add(mbr); //indx++; mbr = new Member(); mbr.StartNode = jnc_4[indx]; mbr.EndNode = con_jnt_1[3]; m_conn.Add(mbr); //indx = 12; indx = Upper_Connector_Index; mbr = new Member(); mbr.StartNode = jnc_8[indx]; mbr.EndNode = con_jnt_1[0]; m_conn.Add(mbr); mbr = new Member(); mbr.StartNode = jnc_6[indx]; mbr.EndNode = con_jnt_1[1]; m_conn.Add(mbr); indx++; mbr = new Member(); mbr.StartNode = jnc_6[indx]; mbr.EndNode = con_jnt_1[2]; m_conn.Add(mbr); //indx++; mbr = new Member(); mbr.StartNode = jnc_8[indx]; mbr.EndNode = con_jnt_1[3]; m_conn.Add(mbr); mbr = new Member(); mbr.StartNode = con_jnt_1[0]; mbr.EndNode = con_jnt_1[3]; m_conn.Add(mbr); mbr = new Member(); mbr.StartNode = con_jnt_1[1]; mbr.EndNode = con_jnt_1[2]; m_conn.Add(mbr); mbr = new Member(); mbr.StartNode = con_jnt_1[0]; mbr.EndNode = con_jnt_1[1]; m_conn.Add(mbr); mbr = new Member(); mbr.StartNode = con_jnt_1[2]; mbr.EndNode = con_jnt_1[3]; m_conn.Add(mbr); //indx = 12; indx = Upper_Connector_Index; mbr = new Member(); mbr.StartNode = jnc_4[indx]; mbr.EndNode = con_jnt_1[3]; m_conn.Add(mbr); mbr = new Member(); mbr.StartNode = con_jnt_1[3]; mbr.EndNode = jnc_8[indx]; m_conn.Add(mbr); mbr = new Member(); mbr.StartNode = jnc_2[indx + 1]; mbr.EndNode = con_jnt_1[1]; m_conn.Add(mbr); mbr = new Member(); mbr.StartNode = con_jnt_1[1]; mbr.EndNode = jnc_6[indx + 1]; m_conn.Add(mbr); #endregion Connector } if (Lower_Connector_Index != -1) { #region Connector 2 //MemberCollection m_conn = new MemberCollection(); //indx = 5; indx = Lower_Connector_Index; mbr = new Member(); mbr.StartNode = jnc_4[indx]; mbr.EndNode = con_jnt_2[0]; m_conn.Add(mbr); mbr = new Member(); mbr.StartNode = jnc_2[indx]; mbr.EndNode = con_jnt_2[1]; m_conn.Add(mbr); indx++; mbr = new Member(); mbr.StartNode = jnc_2[indx]; mbr.EndNode = con_jnt_2[2]; m_conn.Add(mbr); //indx++; mbr = new Member(); mbr.StartNode = jnc_4[indx]; mbr.EndNode = con_jnt_2[3]; m_conn.Add(mbr); //indx = 5; indx = Lower_Connector_Index; mbr = new Member(); mbr.StartNode = jnc_8[indx]; mbr.EndNode = con_jnt_2[0]; m_conn.Add(mbr); mbr = new Member(); mbr.StartNode = jnc_6[indx]; mbr.EndNode = con_jnt_2[1]; m_conn.Add(mbr); indx++; mbr = new Member(); mbr.StartNode = jnc_6[indx]; mbr.EndNode = con_jnt_2[2]; m_conn.Add(mbr); //indx++; mbr = new Member(); mbr.StartNode = jnc_8[indx]; mbr.EndNode = con_jnt_2[3]; m_conn.Add(mbr); mbr = new Member(); mbr.StartNode = con_jnt_2[0]; mbr.EndNode = con_jnt_2[3]; m_conn.Add(mbr); mbr = new Member(); mbr.StartNode = con_jnt_2[1]; mbr.EndNode = con_jnt_2[2]; m_conn.Add(mbr); mbr = new Member(); mbr.StartNode = con_jnt_2[0]; mbr.EndNode = con_jnt_2[1]; m_conn.Add(mbr); mbr = new Member(); mbr.StartNode = con_jnt_2[2]; mbr.EndNode = con_jnt_2[3]; m_conn.Add(mbr); //indx = 5; indx = Lower_Connector_Index; mbr = new Member(); mbr.StartNode = jnc_4[indx]; mbr.EndNode = con_jnt_2[3]; m_conn.Add(mbr); mbr = new Member(); mbr.StartNode = con_jnt_2[3]; mbr.EndNode = jnc_8[indx]; m_conn.Add(mbr); mbr = new Member(); mbr.StartNode = jnc_2[indx + 1]; mbr.EndNode = con_jnt_2[1]; m_conn.Add(mbr); mbr = new Member(); mbr.StartNode = con_jnt_2[1]; mbr.EndNode = jnc_6[indx + 1]; m_conn.Add(mbr); #endregion Connector } mem_no = 1; #region MEMBER INCIDENCES list.Add("MEMBER INCIDENCES"); foreach (var item in m_side_1) { item.MemberNo = mem_no++; list.Add(item.ToString()); } foreach (var item in m_conn) { sec_2.Add(mem_no); item.MemberNo = mem_no++; list.Add(item.ToString()); } #endregion MEMBER INCIDENCES #region MEMBER PROPERTY list.Add(string.Format("UNIT KG CM")); list.Add(string.Format("MEMBER PROPERTY")); //list.Add(string.Format("{0} PRISMATIC AX 7.44 IX 11.7 IY 11.7 IZ 11.7", MyList.Get_Array_Text(sec_2))); //list.Add(string.Format("{0} PRISMATIC AX 68.81 IX 1046.5 IY 1046.5 IZ 1046.5", MyList.Get_Array_Text(sec_1))); //list.Add(string.Format("{0} PRISMATIC AX {1} IX {2} IY {3} IZ {4}", MyList.Get_Array_Text(sec_1), Tower_SEC_VS_AX, Tower_SEC_VS_IX, Tower_SEC_VS_IX, Tower_SEC_VS_IZ)); //list.Add(string.Format("{0} PRISMATIC AX {1} IX {2} IY {3} IZ {4}", MyList.Get_Array_Text(sec_2), Tower_SEC_BS_AX, Tower_SEC_BS_IX, Tower_SEC_BS_IX, Tower_SEC_BS_IZ)); //list.Add(string.Format("{0} PRISMATIC AX 68.81 IX 1046.5 IY 1046.5 IZ 1046.5", MyList.Get_Array_Text(sec_1))); list.Add(string.Format("{0} PRISMATIC AX {1} IX {2} IZ {3}", MyList.Get_Array_Text(sec_1), Tower_SEC_VS_AX, Tower_SEC_VS_IX, Tower_SEC_VS_IZ)); list.Add(string.Format("{0} PRISMATIC AX {1} IX {2} IZ {3}", MyList.Get_Array_Text(sec_2), Tower_SEC_BS_AX, Tower_SEC_BS_IX, Tower_SEC_BS_IZ)); #endregion MEMBER PROPERTY #region CONSTANTS & Others List <int> supp = new List <int>(); supp.Add(jnc_1[0].NodeNo); supp.Add(jnc_2[0].NodeNo); supp.Add(jnc_3[0].NodeNo); supp.Add(jnc_4[0].NodeNo); supp.Add(jnc_5[0].NodeNo); supp.Add(jnc_6[0].NodeNo); supp.Add(jnc_7[0].NodeNo); supp.Add(jnc_8[0].NodeNo); string supp_jnts = MyList.Get_Array_Text(supp); List <int> dl = new List <int>(); indx = jnc_1.Count - 1; dl.Add(jnc_1[indx].NodeNo); dl.Add(jnc_2[indx].NodeNo); dl.Add(jnc_3[indx].NodeNo); dl.Add(jnc_4[indx].NodeNo); dl.Add(jnc_5[indx].NodeNo); dl.Add(jnc_6[indx].NodeNo); dl.Add(jnc_7[indx].NodeNo); dl.Add(jnc_8[indx].NodeNo); string dl_jnts = MyList.Get_Array_Text(dl); list.Add(string.Format("UNIT KG CM")); list.Add(string.Format("MATERIAL CONSTANT")); list.Add(string.Format("E 2000000 ALL")); list.Add(string.Format("DEN 78 ALL")); list.Add(string.Format("SUPPORTS")); //list.Add(string.Format("1 17 33 49 65 81 97 113 FIXED")); list.Add(string.Format("{0} FIXED", supp_jnts)); //list.Add(string.Format("SELFWEIGHT Y -1.4")); list.Add(string.Format("UNIT MTON M")); list.Add(string.Format("LOAD 1 LIVE LOAD")); list.Add(string.Format("JOINT LOAD")); list.Add(string.Format("{0} FY -{1}", dl_jnts, Tower_Live_Load)); list.Add(string.Format("LOAD 2 DEAD LOAD")); list.Add(string.Format("JOINT LOAD")); list.Add(string.Format("{0} FY -{1}", dl_jnts, Tower_Dead_Load)); list.Add(string.Format("SEISMIC COEEFICIENT {0}", Tower_Seismic_Coefficient)); list.Add(string.Format("PRINT SUPPORT REACTION")); list.Add(string.Format("PERFORM ANALYSIS")); list.Add(string.Format("FINISH")); list.Add(string.Format("")); #endregion CONSTANTS File.WriteAllLines(file_name, list.ToArray()); return(true); }