//This method will return all the breps in the geometry larges saved in the geometrys of the model.
        // the return type is tuple where first value is the list of concrete breps and the second value
        // is a list of steel breps
        public Tuple <List <Brep>, List <Brep>, List <Brep> > GetGeometryLarges()
        {
            List <Brep> concreteBreps = new List <Brep>();
            List <Brep> steelBreps    = new List <Brep>();
            List <Brep> selectedBreps = new List <Brep>();

            RhinoObject[] objs = RhinoDoc.ActiveDoc.Objects.FindByUserString("infType", "GeometryLarge", true);
            foreach (RhinoObject rhinoObject in objs)
            {
                Rhino.DocObjects.Custom.UserDataList list = rhinoObject.Attributes.UserData;

                if (!(list.Find(typeof(GeometryLarge)) is GeometryLarge temp))
                {
                    temp = list.Find(typeof(RectangleGeometryLarge)) as GeometryLarge;
                }

                if (temp != null && temp.Selected == true)
                {
                    selectedBreps.Add(temp.BaseBrep);
                }
                else if (temp != null && temp.Material.GetType() == typeof(ConcreteMaterial))
                {
                    concreteBreps.Add(temp.BaseBrep);
                }
                else if (temp != null && temp.Material.GetType() == typeof(SteelMaterial))
                {
                    steelBreps.Add(temp.BaseBrep);
                }
            }

            return(new Tuple <List <Brep>, List <Brep>, List <Brep> >(concreteBreps, steelBreps, selectedBreps));
        }
        public Tuple <List <Brep>, List <Brep> > GetReinforcementBreps()
        {
            List <Brep> reinforcement = new List <Brep>();
            List <Brep> selected      = new List <Brep>();

            RhinoObject[] objs = RhinoDoc.ActiveDoc.Objects.FindByUserString("infType", "Reinforcement", true);
            foreach (RhinoObject rhinoObject in objs)
            {
                Rhino.DocObjects.Custom.UserDataList list = rhinoObject.Attributes.UserData;
                if (list.Find(typeof(Reinforcement)) != null)
                {
                    Reinforcement tempValue = list.Find(typeof(Reinforcement)) as Reinforcement;
                    if (tempValue != null && tempValue.Selected)
                    {
                        selected.Add(tempValue.BrepGeometry);
                    }
                    else
                    {
                        reinforcement.Add(tempValue.BrepGeometry);
                    }
                }
            }

            return(Tuple.Create(reinforcement, selected));
        }
示例#3
0
        private void dataGridView_Geometry_KeyDown(object sender, KeyEventArgs e)
        {
            DataGridView d = (DataGridView)sender;

            if (e.KeyData == Keys.Delete)
            {
                int    row      = d.SelectedCells[0].RowIndex;
                string material = (string)d.Rows[row].Cells[1].Value;
                int    no       = (int)d.Rows[row].Cells[0].Value;
                if (material == "Reinforcement")
                {
                    RhinoObject[] objs = RhinoDoc.ActiveDoc.Objects.FindByUserString("infType", "Reinforcement", true);
                    foreach (RhinoObject rhinoObject in objs)
                    {
                        Rhino.DocObjects.Custom.UserDataList list = rhinoObject.Attributes.UserData;
                        Reinforcement tempReinf = list.Find(typeof(Reinforcement)) as Reinforcement;
                        if (tempReinf.Id == no)
                        {
                            list.Remove(tempReinf);
                            rhinoObject.Attributes.SetUserString("infType", null);
                            _projectPlugIn.CurrentBeam.CrossSec.ReinforementIds.Remove(no);

                            d.Rows.Remove(d.Rows[row]);
                            rhinoObject.Attributes.LayerIndex = 0;
                            rhinoObject.CommitChanges();
                        }
                    }
                }
                else
                {
                    RhinoObject[] objs = RhinoDoc.ActiveDoc.Objects.FindByUserString("infType", "GeometryLarge", true);
                    foreach (RhinoObject rhinoObject in objs)
                    {
                        Rhino.DocObjects.Custom.UserDataList list = rhinoObject.Attributes.UserData;
                        GeometryLarge tempGeom = list.Find(typeof(GeometryLarge)) as GeometryLarge;
                        if (tempGeom.Id == no)
                        {
                            Layer l = RhinoDoc.ActiveDoc.Layers[rhinoObject.Attributes.LayerIndex];

                            l.IsLocked = false;
                            l.CommitChanges();
                            RhinoDoc.ActiveDoc.Objects.Delete(rhinoObject, true);
                            l.IsLocked = true;
                            l.CommitChanges();


                            list.Remove(tempGeom);
                            _projectPlugIn.CurrentBeam.CrossSec.GeometryLargeIds.Remove(no);
                            d.Rows.Remove(d.Rows[row]);
                        }
                    }
                }
            }

            labelConcreteCover.Text = Math.Round(_projectPlugIn.CurrentBeam.CrossSec.ConcreteCover, 0).ToString();
            RhinoDoc.ActiveDoc.Views.Redraw();
        }
示例#4
0
        private void dataGridView_Geometry_CellEnter(object sender, DataGridViewCellEventArgs e)
        {
            DataGridView d = (DataGridView)sender;

            if (d.SelectedCells.Count == 0)
            {
                return;
            }
            int    row      = d.SelectedCells[0].RowIndex;
            string material = (string)d.Rows[row].Cells[1].Value;
            int    no       = (int)d.Rows[row].Cells[0].Value;

            if (material == "Reinforcement")
            {
                RhinoObject[] objs = RhinoDoc.ActiveDoc.Objects.FindByUserString("infType", "Reinforcement", true);
                foreach (RhinoObject rhinoObject in objs)
                {
                    Rhino.DocObjects.Custom.UserDataList list = rhinoObject.Attributes.UserData;
                    Reinforcement tempReinf = list.Find(typeof(Reinforcement)) as Reinforcement;
                    if (tempReinf.Id == no)
                    {
                        tempReinf.Selected = true;
                        RhinoDoc.ActiveDoc.Views.Redraw();
                        return;
                    }
                }
            }
            else
            {
                RhinoObject[] objs = RhinoDoc.ActiveDoc.Objects.FindByUserString("infType", "GeometryLarge", true);
                foreach (RhinoObject rhinoObject in objs)
                {
                    Rhino.DocObjects.Custom.UserDataList list = rhinoObject.Attributes.UserData;
                    GeometryLarge tempGeom = list.Find(typeof(GeometryLarge)) as GeometryLarge;
                    if (tempGeom.Id == no)
                    {
                        tempGeom.Selected = true;
                        RhinoDoc.ActiveDoc.Views.Redraw();
                        return;
                    }
                }
            }
            RhinoDoc.ActiveDoc.Views.Redraw();
        }
示例#5
0
 /// <summary>
 /// Create new UserDataListEnumerator
 /// </summary>
 /// <param name="udl">UserDataList to enumerate</param>
 /// <since>6.0</since>
 public UserDataListEnumerator(UserDataList udl)
 {
     _udl = udl;
 }