Exemplo n.º 1
0
 /// <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();
        }
Exemplo n.º 3
0
    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);
        }
    }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
        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
        }
Exemplo n.º 6
0
 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);
 }
Exemplo n.º 7
0
        //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;
                }
            }
        }
Exemplo n.º 8
0
        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);
        }