예제 #1
0
        public void Draw_Floor_Layout(double flr_lvl)
        {
            MemberIncidenceCollection beams = new MemberIncidenceCollection();

            for (int i = 0; i < AST_DOC.Members.Count; i++)
            {
                var item = AST_DOC.Members[i];

                if (item.EndNode.Y == flr_lvl)
                {
                    if (item.StartNode.Y == item.EndNode.Y)
                    {
                        beams.Add(item);
                    }
                }
            }



            VDoc.ShowUCSAxis = false;

            VDoc.ActiveLayOut.Entities.RemoveAll();

            double max_z = AST_DOC.Joints.Max_Z_Positive;
            vdLine ln    = new vdLine();

            foreach (var item in beams)
            {
                ln = new vdLine();

                ln.SetUnRegisterDocument(VDoc);
                ln.setDocumentDefaults();

                ln.StartPoint.x = item.StartNode.X;
                ln.StartPoint.y = max_z - item.StartNode.Z;

                ln.EndPoint.x = item.EndNode.X;
                ln.EndPoint.y = max_z - item.EndNode.Z;

                ln.ToolTip = "Member No : " + item.MemberNo;
                VDoc.ActiveLayOut.Entities.Add(ln);
            }

            //Get_Slabs(mic);
            Fill_All_Slab();
            Load_Slab_Data();

            VDoc.Palette.Background = Color.White;
            VDoc.Redraw(true);
            VectorDraw.Professional.ActionUtilities.vdCommandAction.View3D_VTop(VDoc);
        }
예제 #2
0
        public List <int> Get_Continuous_Members(MemberIncidence b1, ref JointCoordinateCollection cont_jcc)
        {
            //JointCoordinateCollection cont_jcc = new JointCoordinateCollection();
            MemberIncidenceCollection mbr_coll = new MemberIncidenceCollection();

            if (b1 == null)
            {
                return(new List <int>());
            }

            List <MemberIncidence> list = new List <MemberIncidence>();


            JointCoordinateCollection jcc = new JointCoordinateCollection();


            jcc.Add(b1.StartNode);
            jcc.Add(b1.EndNode);


            MemberIncidenceCollection mic1 = new MemberIncidenceCollection();
            MemberIncidenceCollection mic2 = new MemberIncidenceCollection();
            //MemberIncidenceCollection mic3 = new MemberIncidenceCollection();
            MemberIncidenceCollection mic4 = new MemberIncidenceCollection();


            foreach (var item in AST_DOC.Members)
            {
                if (item.EndNode.NodeNo == jcc[0].NodeNo || item.StartNode.NodeNo == jcc[0].NodeNo)
                {
                    mic1.Add(item);
                }
                if (item.EndNode.NodeNo == jcc[1].NodeNo || item.StartNode.NodeNo == jcc[1].NodeNo)
                {
                    mic2.Add(item);
                }
            }



            //if (jcc[0].NodeNo < jcc[1].NodeNo)
            //{
            //    if (!cont_jcc.Contains(jcc[1]))
            //    {
            //        cont_jcc.Add(jcc[1]);
            //    }
            //}
            cont_jcc.Add(jcc[0]);
            cont_jcc.Add(jcc[1]);

            int flag = 0;



            mbr_coll.Add(b1);
            while (flag <= 1)
            {
                for (int i = 0; i < AST_DOC.Members.Count; i++)
                {
                    foreach (var item in AST_DOC.Members)
                    {
                        if (b1.Direction == item.Direction)
                        {
                            if (item.StartNode.NodeNo == cont_jcc[cont_jcc.Count - 1].NodeNo)
                            {
                                if (!cont_jcc.Contains(item.EndNode))
                                {
                                    mbr_coll.Add(item);
                                    cont_jcc.Add(item.EndNode);
                                    i = 0; break;
                                }
                            }
                            if (item.EndNode.NodeNo == cont_jcc[cont_jcc.Count - 1].NodeNo)
                            {
                                if (!cont_jcc.Contains(item.StartNode))
                                {
                                    mbr_coll.Add(item);
                                    cont_jcc.Add(item.StartNode);
                                    i = 0; break;
                                }
                            }
                        }
                    }
                }

                if (mbr_coll.Count == 1)
                {
                    cont_jcc.Clear();
                    cont_jcc.Add(jcc[1]);
                    cont_jcc.Add(jcc[0]);
                }
                else
                {
                    break;
                }
                flag++;
            }



            List <int> mls = new List <int>();

            foreach (var item in mbr_coll)
            {
                mls.Add(item.MemberNo);
            }

            return(mls);
        }
예제 #3
0
        public void Add_Structure_Joint_Load()
        {
            MemberIncidenceCollection all_beams = new MemberIncidenceCollection();
            List <double>             floors    = new List <double>();

            if (iACad.AstraDocument.Members.Count > 0)
            {
                foreach (var item in iACad.AstraDocument.Members)
                {
                    if (item.StartNode.Y == item.EndNode.Y)
                    {
                        all_beams.Add(item);
                        if (!floors.Contains(item.EndNode.Y))
                        {
                            floors.Add(item.EndNode.Y);
                        }
                    }
                }
            }
            List <JointWeight> JointWeights = new List <JointWeight>();

            List <int> joints = new List <int>();

            floors.Sort();
            double wght = 0.0;
            int    indx = 0;

            double factor       = MyStrings.StringToDouble(txt_factor.Text, 0.8);
            double unit_wt_wall = MyStrings.StringToDouble(txt_wall_uwgt.Text, 0.8);

            foreach (var item in all_beams)
            {
                JointWeight jw = new JointWeight();
                jw.JointNo = item.StartNode.NodeNo;
                indx       = floors.IndexOf(item.StartNode.Y);

                wght = 0.0;
                //double unit_wt_wall = 19.2;
                if (indx != -1)
                {
                    if (indx + 1 < floors.Count)
                    {
                        if (item.Property == null)
                        {
                            MessageBox.Show("Member Property is not defined for Member No "
                                            + item.MemberNo, "ASTRA", MessageBoxButtons.OK);
                            return;
                        }
                        else
                        {
                            wght = item.Property.YD * item.Length * (floors[indx + 1] - floors[indx]) * unit_wt_wall;
                        }
                    }
                    //wght = item.Property.ZD * item.Length * (floors[indx + 1] - floors[indx]) * 24.0;
                }



                if (wght != 0.0)
                {
                    wght       = wght * factor;
                    jw         = new JointWeight();
                    jw.JointNo = item.StartNode.NodeNo;
                    jw.Weight  = wght / 2;
                    JointWeights.Add(jw);



                    if (!joints.Contains(jw.JointNo))
                    {
                        joints.Add(jw.JointNo);
                    }

                    jw         = new JointWeight();
                    jw.JointNo = item.EndNode.NodeNo;
                    jw.Weight  = wght / 2;
                    JointWeights.Add(jw);


                    if (!joints.Contains(jw.JointNo))
                    {
                        joints.Add(jw.JointNo);
                    }
                }
            }

            //List<JointWeight> FinalWeights = new List<JointWeight>();
            JointWeight jwt = null;


            jwt = null;

            dgv_str_jnt_wgt.Rows.Clear();
            for (int j = 0; j < joints.Count; j++)
            {
                jwt = new JointWeight(joints[j], 0.0);
                //FinalWeights.Add(jwt);
                for (int i = 0; i < JointWeights.Count; i++)
                {
                    if (jwt.JointNo == JointWeights[i].JointNo)
                    {
                        jwt.Weight += JointWeights[i].Weight;
                    }
                }
                dgv_str_jnt_wgt.Rows.Add(jwt.JointNo, jwt.Weight.ToString("f3"));
                //Node.Nodes.Add(jwt.ToString());
                ASTRA_Data.Add(jwt.ToString());
            }

            txt_joint_number.Text = "";
            //FinalWeights.Add(jwt);

            //Node.Nodes.Add(jwt.ToString());
        }
예제 #4
0
        private void btn_OK_Click(object sender, EventArgs e)
        {
            MyStrings ml = new MyStrings(txt_beam_nos.Text.Trim(), ',');

            if (ml.Count > 0)
            {
                Slab_des.Beam_Nos = ml.StringList[0].Trim();
            }
            else
            {
                MessageBox.Show("Slab Members is not defined.", "ASTRA", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            //Slab_des.Beam_Nos = txt_beam_nos.Text;
            Slab_des.case_index = cmb_slab_type.SelectedIndex;

            Slab_des.D     = MyStrings.StringToDouble(txt_slab_D.Text, 0.0);
            Slab_des.fck   = MyStrings.StringToDouble(cmb_slab_fck.Text.Replace("M", ""), 0.0);
            Slab_des.gamma = MyStrings.StringToDouble(txt_slab_gamma.Text, 0.0);
            Slab_des.fy    = MyStrings.StringToDouble(cmb_slab_fy.Text.Replace("Fe", ""), 0.0);
            Slab_des.wll   = MyStrings.StringToDouble(txt_slab_wll.Text, 0.0);
            Slab_des.d1    = MyStrings.StringToDouble(txt_slab_d1.Text, 0.0);
            Slab_des.s1    = MyStrings.StringToDouble(txt_slab_s1.Text, 0.0);
            Slab_des.d2    = MyStrings.StringToDouble(txt_slab_d2.Text, 0.0);
            Slab_des.s2    = MyStrings.StringToDouble(txt_slab_s2.Text, 0.0);
            Slab_des.d3    = MyStrings.StringToDouble(txt_slab_d3.Text, 0.0);
            Slab_des.s3    = MyStrings.StringToDouble(txt_slab_s3.Text, 0.0);
            Slab_des.d4    = MyStrings.StringToDouble(txt_slab_d4.Text, 0.0);
            Slab_des.s4    = MyStrings.StringToDouble(txt_slab_s4.Text, 0.0);
            Slab_des.cover = MyStrings.StringToDouble(txt_slab_c.Text, 0.0);
            Slab_des.dlf   = MyStrings.StringToDouble(txt_slab_DLF.Text, 0.0);
            Slab_des.llf   = MyStrings.StringToDouble(txt_slab_LLF.Text, 0.0);

            Slab_des.dgv_dls = dgv_dls;
            #region Check Beam Members


            MyStrings mlist = new MyStrings(txt_beam_nos.Text.Trim(), ' ');

            MemberIncidenceCollection mic = new MemberIncidenceCollection();

            for (int i = 0; i < mlist.Count; i++)
            {
                mic.Add(AST_DOC.Members.Get_Member(mlist.GetInt(i)));
            }


            JointCoordinateCollection jntc = new JointCoordinateCollection();

            for (int i = 1; i < mic.Count; i++)
            {
                if (mic[i - 1].StartNode == mic[i].StartNode)
                {
                    if (!jntc.Contains(mic[i].StartNode))
                    {
                        jntc.Add(mic[i].StartNode);
                    }
                }
                else if (mic[i - 1].EndNode == mic[i].StartNode)
                {
                    if (!jntc.Contains(mic[i].StartNode))
                    {
                        jntc.Add(mic[i].StartNode);
                    }
                }
                else if (mic[i - 1].StartNode == mic[i].EndNode)
                {
                    if (!jntc.Contains(mic[i].EndNode))
                    {
                        jntc.Add(mic[i].EndNode);
                    }
                }
                else if (mic[i - 1].EndNode == mic[i].EndNode)
                {
                    if (!jntc.Contains(mic[i].EndNode))
                    {
                        jntc.Add(mic[i].EndNode);
                    }
                }
                else
                {
                    //string ss = Slab_Data[beam_nos] as string;
                    //if (ss != null)
                    //    Slab_Data.Remove(beam_nos);
                    //Save_Data();
                    MessageBox.Show("Beam " + mic[i].MemberNo + " and Beam " + mic[i - 1].MemberNo + " Joints are mismatch..", "ASTRA", MessageBoxButtons.OK);
                    return;
                }
            }

            #endregion  Check Beam Members
            //Chiranjit [2015 04 26]
            //Slab_des.Calculate_Program();
            Slab_des.Design_Program();


            List <string> Design_Summary = new List <string>();

            Design_Summary.Add(string.Format("-------------------------------------"));
            Design_Summary.Add(string.Format("SLAB MEMBERS = {0}", Slab_des.Beam_Nos));
            Design_Summary.Add(string.Format("SLAB FLOOR LEVEL = {0} M", cmb_flr_lvl.Text));
            Design_Summary.AddRange(Slab_des.Design_Summary.ToArray());
            Design_Summary.Add(string.Format("-------------------------------------"));


            string fnm = Slab_des.Get_Design_Summary_File(Slab_des.Beam_Nos, cmb_flr_lvl.Text);
            //fnm = Path.Combine(Path.GetDirectoryName(fnm), "SLAB_DESIGN_SUMMARY.TXT");

            //if (File.Exists(fnm))
            //    Design_Summary.AddRange(File.ReadAllLines(fnm));

            File.WriteAllLines(fnm, Design_Summary.ToArray());

            Save_Data();
            //Fill_Slab(txt_beam_nos.Text, Slab_des.IS_DESIGN_OK);
            Fill_All_Slab();

            Add_Slab_Boq(Slab_des.BOQ);



            GetGripSelection(false).RemoveAll();

            if (File.Exists(Slab_des.Report_File))
            {
                MessageBox.Show(this, "Report file created in file " + Slab_des.Report_File, "ASTRA", MessageBoxButtons.OK);
                frmASTRAReport.OpenReport(Slab_des.Report_File, this, false);
            }
            VDoc.Redraw(true);

            //this.DialogResult = DialogResult.OK;
            //this.Close();
        }
예제 #5
0
        void Get_Slabs(MemberIncidenceCollection mic)
        {
            List <int> slab_mbrs = new List <int>();


            MemberIncidence mi = mic[0];
            JointCoordinate jc1, jc2;


            jc1 = mi.StartNode;
            jc2 = mi.EndNode;

            MemberIncidenceCollection mc2 = new MemberIncidenceCollection();

            for (int i = 1; i < mic.Count; i++)
            {
                var item = mic[i];

                if (item.StartNode == jc1 || item.EndNode == jc1)
                {
                    mc2.Add(item);
                }
                if (item.StartNode == jc2 || item.EndNode == jc2)
                {
                    mc2.Add(item);
                }
            }

            for (int i = 0; i < mc2.Count; i++)
            {
                var item = mc2[i];
                if (item.Direction == mi.Direction)
                {
                    mc2.RemoveAt(i); i = 0;
                }
            }

            List <int> jnts = new List <int>();

            for (int i = 0; i < mc2.Count; i++)
            {
                var item = mc2[i];

                if (!jnts.Contains(item.StartNode.NodeNo))
                {
                    jnts.Add(item.StartNode.NodeNo);
                }
                if (!jnts.Contains(item.EndNode.NodeNo))
                {
                    jnts.Add(item.EndNode.NodeNo);
                }
            }

            jnts.Remove(jc1.NodeNo);
            jnts.Remove(jc2.NodeNo);

            MemberIncidence mc4 = new MemberIncidence();

            for (int i = 1; i < mic.Count; i++)
            {
                var item = mic[i];

                if (item.StartNode.NodeNo == jnts[0] &&
                    item.EndNode.NodeNo == jnts[1])
                {
                    mc4 = item; break;
                }
                else if (item.EndNode.NodeNo == jnts[0] &&
                         item.StartNode.NodeNo == jnts[1])
                {
                    mc4 = item;
                    break;
                }
            }

            jnts.Remove(jc1.NodeNo);
            jnts.Remove(jc2.NodeNo);
        }
예제 #6
0
        private void Get_Beams()
        {
            double d = MyStrings.StringToDouble(cmb_flr_lvl.Text, 0.0);

            VDoc.ActiveLayOut.Entities.RemoveAll();

            panel1.Visible = true;

            MemberIncidenceCollection mic = new MemberIncidenceCollection();
            JointCoordinateCollection jcc = new JointCoordinateCollection();


            MemberIncidence mi;

            foreach (var item in AST_DOC.Members)
            {
                if (item.StartNode.Y == d && item.EndNode.Y == d)
                {
                    //mi = new MemberIncidence();
                    //mi.StartNode = new JointCoordinate(item.StartNode);
                    //mi.EndNode = new JointCoordinate(item.EndNode);

                    //mi.MemberNo = item.MemberNo;
                    //mi.StartNode.Y = mi.StartNode.Z;
                    //mi.EndNode.Y = mi.EndNode.Z;

                    AST_DOC.Members.DrawMember(item, VDoc, TXT_SIZE);
                    //AST_DOC.Members.DrawMember(mi, VDoc, TXT_SIZE);
                    mic.Add(item);

                    if (!jcc.Contains(item.StartNode))
                    {
                        jcc.Add(item.StartNode);
                    }
                    if (!jcc.Contains(item.EndNode))
                    {
                        jcc.Add(item.EndNode);
                    }
                }
            }
            jcc.DrawJointsText(VDoc, TXT_SIZE);



            VDoc.Layers.FindName("Members").Lock = true;
            VDoc.Layers.FindName("Nodes").Lock   = true;
            //VectorDraw.Professional.ActionUtilities.vdCommandAction.View3D_VTop(VDoc);

            Set_TextSize();



            //Get_Slabs(mic);
            Fill_All_Slab();
            Load_Slab_Data();



            VectorDraw.Professional.ActionUtilities.vdCommandAction.View3D_VBack(VDoc);
            VectorDraw.Professional.ActionUtilities.vdCommandAction.View3D_Vrot(VDoc);
        }
예제 #7
0
        private void Fill_Slab(string beam_nos, bool isOk)
        {
            MyStrings mlist = new MyStrings(beam_nos.Trim(), ' ');

            MemberIncidenceCollection mic = new MemberIncidenceCollection();


            for (int i = 0; i < mlist.Count; i++)
            {
                mic.Add(AST_DOC.Members.Get_Member(mlist.GetInt(i)));
            }



            JointCoordinateCollection jntc = new JointCoordinateCollection();

            vdPolyline vdpl = new vdPolyline();

            vdpl.SetUnRegisterDocument(VDoc);
            vdpl.setDocumentDefaults();

            for (int i = 1; i < mic.Count; i++)
            {
                if (mic[i - 1].StartNode == mic[i].StartNode)
                {
                    if (!jntc.Contains(mic[i].StartNode))
                    {
                        jntc.Add(mic[i].StartNode);
                    }
                }
                else if (mic[i - 1].EndNode == mic[i].StartNode)
                {
                    if (!jntc.Contains(mic[i].StartNode))
                    {
                        jntc.Add(mic[i].StartNode);
                    }
                }
                else if (mic[i - 1].StartNode == mic[i].EndNode)
                {
                    if (!jntc.Contains(mic[i].EndNode))
                    {
                        jntc.Add(mic[i].EndNode);
                    }
                }
                else if (mic[i - 1].EndNode == mic[i].EndNode)
                {
                    if (!jntc.Contains(mic[i].EndNode))
                    {
                        jntc.Add(mic[i].EndNode);
                    }
                }
                else
                {
                    //string ss = Slab_Data[beam_nos] as string;
                    //if (ss != null)
                    //    Slab_Data.Remove(beam_nos);

                    //Save_Data();
                    MessageBox.Show("Beam " + mic[i].MemberNo + " and Beam " + mic[i - 1].MemberNo + " Joints are mismatch..", "ASTRA", MessageBoxButtons.OK);
                    return;
                }
            }

            if (!jntc.Contains(mic[0].StartNode))
            {
                jntc.Add(mic[0].StartNode);
            }
            if (!jntc.Contains(mic[0].EndNode))
            {
                jntc.Add(mic[0].EndNode);
            }

            jntc.Add(jntc[0]);
            double max_z = AST_DOC.Joints.Max_Z_Positive;

            foreach (var item in jntc)
            {
                //vdpl.VertexList.Add(item.Point);
                vdpl.VertexList.Add(new gPoint(item.X, max_z - item.Z));
            }


            //if (File.Exists(Slab_des.Get_Report_File(beam_nos, cmb_flr_lvl.Text)))
            //{
            //    vdpl.ToolTip = File.ReadAllText(Slab_des.Get_Report_File(beam_nos, cmb_flr_lvl.Text));
            //    vdpl.ToolTip = "



            //}

            vdpl.ToolTip = "Member surrounded : " + beam_nos;

            vdLayer vlay = VDoc.Layers.FindName("slab");


            if (vlay == null)
            {
                vlay = new vdLayer(VDoc, "slab");
                vlay.SetUnRegisterDocument(VDoc);
                vlay.setDocumentDefaults();


                VDoc.Layers.Add(vlay);
            }

            //vlay.Frozen = false;
            //vlay.Lock = true;
            vdpl.Layer = vlay;


            //vdpl.PenColor = new vdColor(Color.DarkGray);
            if (isOk)
            {
                vdpl.PenColor = new vdColor(Color.Green);
            }
            else
            {
                vdpl.PenColor = new vdColor(Color.Red);
            }
            vdpl.HatchProperties = new vdHatchProperties(VectorDraw.Professional.Constants.VdConstFill.VdFillModeHatchFDiagonal);


            //vdpl.ExtrusionVector = new Vector(0.0, 1.0, 0.0);


            VDoc.ActiveLayOut.Entities.Add(vdpl);

            VDoc.ActiveLayOut.Entities.ChangeOrder(vdpl, true);

            VDoc.Redraw(true);
        }