예제 #1
0
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            FemDesign.Bars.Bar bar = null;
            FemDesign.Bars.Buckling.BucklingLength flexuralStiff         = null;
            FemDesign.Bars.Buckling.BucklingLength flexuralWeak          = null;
            FemDesign.Bars.Buckling.BucklingLength pressuredTopFlange    = null;
            FemDesign.Bars.Buckling.BucklingLength pressuredBottomFlange = null;
            if (!DA.GetData(0, ref bar))
            {
                return;
            }
            if (!DA.GetData(1, ref flexuralStiff))
            {
                return;
            }
            if (!DA.GetData(2, ref flexuralWeak))
            {
                return;
            }
            if (!DA.GetData(3, ref pressuredTopFlange))
            {
                return;
            }
            if (!DA.GetData(4, ref pressuredBottomFlange))
            {
                return;
            }

            //
            DA.SetData(0, FemDesign.Bars.Buckling.BucklingData.SetOnSteelBar(bar, flexuralStiff, flexuralWeak, pressuredTopFlange, pressuredBottomFlange));
        }
예제 #2
0
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            FemDesign.Bars.Bar bar = null;
            FemDesign.Bars.Buckling.BucklingLength flexuralStiff    = null;
            FemDesign.Bars.Buckling.BucklingLength flexuralWeak     = null;
            FemDesign.Bars.Buckling.BucklingLength lateralTorsional = null;
            if (!DA.GetData(0, ref bar))
            {
                return;
            }
            if (!DA.GetData(1, ref flexuralStiff))
            {
                return;
            }
            if (!DA.GetData(2, ref flexuralWeak))
            {
                return;
            }
            if (!DA.GetData(3, ref lateralTorsional))
            {
                return;
            }

            //
            DA.SetData(0, FemDesign.Bars.Buckling.BucklingData.SetOnTimberBar(bar, flexuralStiff, flexuralWeak, lateralTorsional));
        }
예제 #3
0
        public static Dictionary <string, object> BarDeconstruct(FemDesign.Bars.Bar bar)
        {
            Dictionary <string, object> result = new Dictionary <string, object>();

            result.Add("Guid", bar.Guid);
            result.Add("Curve", bar.GetDynamoCurve());
            result.Add("Type", bar.Type);
            result.Add("Material", bar.BarPart.ComplexMaterialObj);

            if (bar.BarPart.ComplexSectionObj != null)
            {
                result.Add("Section", bar.BarPart.ComplexSectionObj.Sections);
            }
            else if (bar.BarPart.Type == Bars.BarType.Truss)
            {
                result.Add("Section", new List <Sections.Section> {
                    bar.BarPart.TrussUniformSectionObj
                });
            }
            else if (bar.BarPart.HasComplexCompositeRef || bar.BarPart.HasDeltaBeamComplexSectionRef)
            {
                result.Add("Section", null);
                throw new System.Exception("Composite Section in the model. The object has not been implemented yet. Please, get in touch if needed.");
            }

            result.Add("Connectivity", bar.BarPart.Connectivity);

            var eccentricity = (bar.BarPart.ComplexSectionObj != null) ? bar.BarPart.ComplexSectionObj.Eccentricities : null;

            result.Add("Eccentricity", eccentricity);

            result.Add("LocalY", bar.BarPart.LocalY.ToDynamo());
            result.Add("Stirrups", bar.Stirrups);
            result.Add("LongitudinalBars", bar.LongitudinalBars);
            result.Add("PTC", bar.Ptc);
            result.Add("Identifier", bar.Identifier);


            return(result);
        }
예제 #4
0
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            // get data
            FemDesign.Bars.Bar bar = null;
            if (!DA.GetData(0, ref bar))
            {
                return;
            }

            List <FemDesign.Reinforcement.BarReinforcement> barReinforcement = new List <FemDesign.Reinforcement.BarReinforcement>();

            if (!DA.GetDataList(1, barReinforcement))
            {
                return;
            }

            bool overwrite = true;

            if (!DA.GetData(2, ref overwrite))
            {
                return;
            }

            if (bar == null || barReinforcement == null)
            {
                return;
            }

            // clone bar
            var clone = bar.DeepClone();

            // clone reinforcement
            var reinfClone = barReinforcement.Select(x => x.DeepClone()).ToList();

            // add reinforcement
            FemDesign.Bars.Bar obj = FemDesign.Reinforcement.BarReinforcement.AddReinforcementToBar(clone, reinfClone, overwrite);

            // return
            DA.SetData(0, obj);
        }
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            // get input
            FemDesign.Bars.Bar bar = null;
            if (!DA.GetData(0, ref bar))
            {
                return;
            }
            if (bar == null)
            {
                return;
            }

            // return
            DA.SetData(0, bar.Guid);
            DA.SetData(1, bar.GetRhinoCurve());
            DA.SetData(2, bar.BarPart.ComplexMaterialObj);
            DA.SetDataList(3, bar.BarPart.ComplexSectionObj.Sections);
            DA.SetDataList(4, bar.BarPart.Connectivity);
            DA.SetDataList(5, bar.BarPart.ComplexSectionObj.Eccentricities);
            DA.SetData(6, bar.BarPart.LocalY.ToRhino());
            DA.SetData(7, bar.Identifier);
        }
예제 #6
0
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            // get input

            Curve curve = null;

            if (!DA.GetData(0, ref curve))
            {
                return;
            }

            FemDesign.Materials.Material material = null;
            if (!DA.GetData(1, ref material))
            {
                material = FemDesign.Materials.MaterialDatabase.GetDefault().MaterialByName("C30/37");
            }

            FemDesign.Sections.Section section = null;
            if (!DA.GetData(2, ref section))
            {
                section = FemDesign.Sections.SectionDatabase.GetDefault().SectionByName("Concrete sections, Rectangle, 250x600");
            }

            Vector3d v = Vector3d.Zero;

            if (!DA.GetData(3, ref v))
            {
                // pass
            }

            bool orientLCS = true;

            if (!DA.GetData(4, ref orientLCS))
            {
                // pass
            }

            string identifier = "T";

            if (!DA.GetData(5, ref identifier))
            {
                // pass
            }

            // convert geometry
            if (curve.GetType() != typeof(LineCurve))
            {
                throw new System.ArgumentException("Curve must be a LineCurve");
            }
            FemDesign.Geometry.Edge edge = Convert.FromRhinoLineCurve((LineCurve)curve);

            // bar
            var type = FemDesign.Bars.BarType.Truss;

            FemDesign.Bars.Bar bar = new FemDesign.Bars.Bar(edge, type, material, section, identifier);

            // set local y-axis
            if (!v.Equals(Vector3d.Zero))
            {
                bar.BarPart.LocalY = v.FromRhino();
            }

            // else orient coordinate system to GCS
            else
            {
                if (orientLCS)
                {
                    bar.BarPart.OrientCoordinateSystemToGCS();
                }
            }

            // return
            DA.SetData(0, bar);
        }
예제 #7
0
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            // get input
            FemDesign.Bars.Bar bar = null;
            if (!DA.GetData(0, ref bar))
            {
                return;
            }
            if (bar == null)
            {
                return;
            }



            // The following code is to convert 'item' to 'list object'
            // It is required to construct the bar without graftening the data

            var guidList = new List <object>()
            {
                bar.Guid
            };

            var curveList = new List <object>()
            {
                bar.GetRhinoCurve()
            };

            var typeList = new List <object>()
            {
                bar.Type
            };

            var materialList = new List <object>()
            {
                bar.BarPart.ComplexMaterialObj
            };

            var localYList = new List <object>()
            {
                bar.BarPart.LocalY.ToRhino()
            };


            // return
            DA.SetData(0, bar.Guid);
            DA.SetData(1, bar.GetRhinoCurve());
            DA.SetData(2, bar.Type);
            DA.SetDataList(3, materialList);

            if (bar.BarPart.ComplexSectionObj != null)
            {
                DA.SetDataList(4, bar.BarPart.ComplexSectionObj.Sections);
            }
            else if (bar.BarPart.HasComplexCompositeRef || bar.BarPart.HasDeltaBeamComplexSectionRef)
            {
                AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "The bar has a Composite Section. The object has not been implemented yet. Please, get in touch if needed.");
                DA.SetDataList(4, null);
            }
            else if (bar.BarPart.Type == Bars.BarType.Truss)
            {
                var truss = new List <Sections.Section> {
                    bar.BarPart.TrussUniformSectionObj
                };
                DA.SetDataList(4, truss);
            }
            else
            {
                DA.SetDataList(4, null);
            }


            DA.SetDataList(5, bar.BarPart.Connectivity);

            var result = (bar.BarPart.ComplexSectionObj != null) ? bar.BarPart.ComplexSectionObj.Eccentricities : null;

            DA.SetDataList(6, result);



            DA.SetData(7, bar.BarPart.LocalY.ToRhino());
            DA.SetDataList(8, bar.Stirrups);
            DA.SetDataList(9, bar.LongitudinalBars);
            DA.SetDataList(10, bar.Ptc);
            DA.SetData(11, bar.Identifier);
        }
예제 #8
0
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            // get input
            Curve curve = null;

            if (!DA.GetData(0, ref curve))
            {
                return;
            }

            FemDesign.Materials.Material material = null;
            if (!DA.GetData(1, ref material))
            {
                material = FemDesign.Materials.MaterialDatabase.GetDefault().MaterialByName("C30/37");
            }

            List <FemDesign.Sections.Section> sections = new List <Sections.Section>();

            if (!DA.GetDataList(2, sections))
            {
                sections = new List <Sections.Section>();
                sections.Add(FemDesign.Sections.SectionDatabase.GetDefault().SectionByName("Concrete sections, Rectangle, 250x600"));
            }

            List <FemDesign.Bars.Connectivity> connectivities = new List <Bars.Connectivity>();

            if (!DA.GetDataList(3, connectivities))
            {
                connectivities = new List <Bars.Connectivity> {
                    FemDesign.Bars.Connectivity.GetRigid()
                };
            }

            List <FemDesign.Bars.Eccentricity> eccentricities = new List <Bars.Eccentricity>();

            if (!DA.GetDataList(4, eccentricities))
            {
                eccentricities = new List <Bars.Eccentricity> {
                    FemDesign.Bars.Eccentricity.GetDefault()
                };
            }

            Vector3d v = Vector3d.Zero;

            if (!DA.GetData(5, ref v))
            {
                // pass
            }

            bool orientLCS = true;

            if (!DA.GetData(6, ref orientLCS))
            {
                // pass
            }

            string identifier = "B";

            if (!DA.GetData(7, ref identifier))
            {
                // pass
            }


            // convert geometry
            FemDesign.Geometry.Edge edge = Convert.FromRhinoLineOrArc2(curve);

            // create bar
            var type = FemDesign.Bars.BarType.Beam;

            FemDesign.Bars.Bar bar = new FemDesign.Bars.Bar(edge, type, material, sections.ToArray(), eccentricities.ToArray(), connectivities.ToArray(), identifier);

            // set local y-axis
            if (!v.Equals(Vector3d.Zero))
            {
                bar.BarPart.LocalY = v.FromRhino();
            }

            // else orient coordinate system to GCS
            else
            {
                if (orientLCS)
                {
                    bar.BarPart.OrientCoordinateSystemToGCS();
                }
            }

            // output
            DA.SetData(0, bar);
        }
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            // get input
            Curve curve = null;

            if (!DA.GetData(0, ref curve))
            {
                return;
            }

            FemDesign.Materials.Material material = null;
            if (!DA.GetData(1, ref material))
            {
                return;
            }

            FemDesign.Sections.Section section = null;
            if (!DA.GetData(2, ref section))
            {
                return;
            }

            double maxCompression = 0;

            if (!DA.GetData(3, ref maxCompression))
            {
                return;
            }

            bool compressionPlasticity = false;

            if (!DA.GetData(4, ref compressionPlasticity))
            {
                return;
            }

            double maxTension = 0;

            if (!DA.GetData(5, ref maxTension))
            {
                return;
            }

            bool tensionPlasticity = false;

            if (!DA.GetData(6, ref tensionPlasticity))
            {
                return;
            }

            Vector3d v = Vector3d.Zero;

            if (!DA.GetData(7, ref v))
            {
                // pass
            }

            bool orientLCS = true;

            if (!DA.GetData(8, ref orientLCS))
            {
                // pass
            }

            string identifier = "T";

            if (!DA.GetData(9, ref identifier))
            {
                // pass
            }
            if (curve == null || material == null || section == null || identifier == null)
            {
                return;
            }

            // convert geometry
            if (curve.GetType() != typeof(LineCurve))
            {
                throw new System.ArgumentException("Curve must be a LineCurve");
            }
            FemDesign.Geometry.Edge edge = Convert.FromRhinoLineCurve((LineCurve)curve);

            // bar
            var type = FemDesign.Bars.BarType.Truss;

            FemDesign.Bars.Bar bar = new FemDesign.Bars.Bar(edge, type, material, section, identifier);
            bar.MaxCompression        = maxCompression;
            bar.MaxTension            = maxTension;
            bar.CompressionPlasticity = compressionPlasticity;
            bar.TensionPlasticity     = tensionPlasticity;

            // set local y-axis
            if (!v.Equals(Vector3d.Zero))
            {
                bar.BarPart.LocalY = v.FromRhino();
            }

            // else orient coordinate system to GCS
            else
            {
                if (orientLCS)
                {
                    bar.BarPart.OrientCoordinateSystemToGCS();
                }
            }

            // return
            DA.SetData(0, bar);
        }
예제 #10
0
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            // get input
            Curve curve = null;

            if (!DA.GetData(0, ref curve))
            {
                return;
            }

            FemDesign.Materials.Material material = null;
            if (!DA.GetData(1, ref material))
            {
                return;
            }

            FemDesign.Sections.Section section = null;
            if (!DA.GetData(2, ref section))
            {
                return;
            }

            FemDesign.Bars.Connectivity connectivity = FemDesign.Bars.Connectivity.GetRigid();
            if (!DA.GetData(3, ref connectivity))
            {
                // pass
            }

            FemDesign.Bars.Eccentricity eccentricity = FemDesign.Bars.Eccentricity.GetDefault();
            if (!DA.GetData(4, ref eccentricity))
            {
                // pass
            }

            Vector3d v = Vector3d.Zero;

            if (!DA.GetData(5, ref v))
            {
                // pass
            }

            bool orientLCS = true;

            if (!DA.GetData(6, ref orientLCS))
            {
                // pass
            }

            string identifier = "B";

            if (!DA.GetData(7, ref identifier))
            {
                // pass
            }

            if (curve == null || material == null || section == null || connectivity == null || eccentricity == null || identifier == null)
            {
                return;
            }

            // convert geometry
            FemDesign.Geometry.Edge edge = curve.FromRhinoLineOrArc2();

            // create bar
            var type = FemDesign.Bars.BarType.Beam;

            FemDesign.Bars.Bar bar = new FemDesign.Bars.Bar(edge, type, material, section, eccentricity, connectivity, identifier);

            // set local y-axis
            if (!v.Equals(Vector3d.Zero))
            {
                bar.BarPart.LocalY = v.FromRhino();
            }

            // else orient coordinate system to GCS
            else
            {
                if (orientLCS)
                {
                    bar.BarPart.OrientCoordinateSystemToGCS();
                }
            }

            // output
            DA.SetData(0, bar);
        }