Ejemplo n.º 1
0
        private List <Curve> CreateFromEachGirderKind(string idSection, StbGirderKind_structure kind, IReadOnlyList <Point3d> sectionPoints)
        {
            List <Curve> curveList;

            switch (kind)
            {
            case StbGirderKind_structure.RC:
                StbSecBeam_RC rcSec    = _sections.StbSecBeam_RC.First(sec => sec.id == idSection);
                object[]      rcFigure = rcSec.StbSecFigureBeam_RC.Items;
                curveList = SecRcBeamCurves(rcFigure, sectionPoints);
                break;

            case StbGirderKind_structure.S:
                StbSecBeam_S sSec    = _sections.StbSecBeam_S.First(sec => sec.id == idSection);
                object[]     sFigure = sSec.StbSecSteelFigureBeam_S.Items;
                curveList = SecSteelBeamToCurves(sFigure, sectionPoints);
                break;

            case StbGirderKind_structure.SRC:
                StbSecBeam_SRC srcSec    = _sections.StbSecBeam_SRC.First(sec => sec.id == idSection);
                object[]       srcFigure = srcSec.StbSecFigureBeam_SRC.Items;
                curveList = SecSrcBeamCurves(srcFigure, sectionPoints);
                break;

            case StbGirderKind_structure.UNDEFINED:
            default:
                throw new ArgumentOutOfRangeException();
            }

            return(curveList);
        }
Ejemplo n.º 2
0
        public Brep CreateGirderBrep(string idSection, double rotate, StbGirderKind_structure kind, IReadOnlyList <Point3d> sectionPoints, Vector3d memberAxis)
        {
            List <Curve> curveList = CreateFromEachGirderKind(idSection, kind, sectionPoints);

            Utils.RotateCurveList(memberAxis, curveList, rotate, sectionPoints);
            return(Utils.CreateCapedBrepFromLoft(curveList, _tolerance[0]));
        }
Ejemplo n.º 3
0
 internal static StbGirder CreateGirder(ModelBeam elem, int croSecId, StbGirderKind_structure kind)
 {
     return(new StbGirder
     {
         id = (elem.ind + 1).ToString(),
         name = elem.id,
         id_node_start = (elem.node_inds[0] + 1).ToString(),
         id_node_end = (elem.node_inds[1] + 1).ToString(),
         rotate = 0d,
         id_section = (croSecId + 1).ToString(),
         kind_structure = kind
     });
 }
Ejemplo n.º 4
0
        private static GH_Structure <GH_String> GetTagStrings(IEnumerable <StbBeam> beams, StbSections sections)
        {
            var ghSecStrings = new GH_Structure <GH_String>();

            foreach (var item in beams.Select((beam, index) => new { beam, index }))
            {
                string secId  = item.beam.id_section;
                var    ghPath = new GH_Path(0, item.index);
                StbGirderKind_structure kindStruct = item.beam.kind_structure;

                switch (kindStruct)
                {
                case StbGirderKind_structure.RC:
                    StbSecBeam_RC secRc = sections.StbSecBeam_RC.First(i => i.id == secId);
                    foreach (object figureObj in secRc.StbSecFigureBeam_RC.Items)
                    {
                        ghSecStrings.AppendRange(TagUtils.GetBeamRcSection(figureObj, secRc.strength_concrete), ghPath);
                    }
                    break;

                case StbGirderKind_structure.S:
                    StbSecBeam_S secS = sections.StbSecBeam_S.First(i => i.id == secId);
                    foreach (object figureObj in secS.StbSecSteelFigureBeam_S.Items)
                    {
                        ghSecStrings.AppendRange(TagUtils.GetBeamSSection(figureObj), ghPath);
                    }
                    break;

                case StbGirderKind_structure.SRC:
                    StbSecBeam_SRC secSrc = sections.StbSecBeam_SRC.First(i => i.id == secId);
                    foreach (object figureObj in secSrc.StbSecFigureBeam_SRC.Items)
                    {
                        ghSecStrings.AppendRange(TagUtils.GetBeamRcSection(figureObj, secSrc.strength_concrete), ghPath);
                    }
                    foreach (object figureObj in secSrc.StbSecSteelFigureBeam_SRC.Items)
                    {
                        ghSecStrings.AppendRange(TagUtils.GetBeamSSection(figureObj), ghPath);
                    }
                    break;

                case StbGirderKind_structure.UNDEFINED:
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }

            return(ghSecStrings);
        }
Ejemplo n.º 5
0
        public GH_Structure <GH_Brep> Beam(IEnumerable <StbBeam> beams)
        {
            var brepList = new GH_Structure <GH_Brep>();

            if (beams == null)
            {
                return(brepList);
            }

            foreach ((StbBeam beam, int i) in beams.Select((beam, index) => (beam, index)))
            {
                StbGirderKind_structure kind = beam.kind_structure;

                StbNode[] endNodes =
                {
                    _nodes.First(node => node.id == beam.id_node_start),
                    _nodes.First(node => node.id == beam.id_node_end)
                };
                Point3d[] offset =
                {
                    new Point3d(beam.offset_start_X, beam.offset_start_Y, beam.offset_start_Z),
                    new Point3d(beam.offset_end_X,   beam.offset_end_Y,   beam.offset_end_Z)
                };
                Point3d[] sectionPoints =
                {
                    new Point3d(endNodes[0].X, endNodes[0].Y, endNodes[0].Z) + offset[0],
                    Point3d.Origin,
                    Point3d.Origin,
                    new Point3d(endNodes[1].X, endNodes[1].Y, endNodes[1].Z) + offset[1]
                };
                Vector3d memberAxis = sectionPoints[3] - sectionPoints[0];
                sectionPoints[1] = sectionPoints[0] + memberAxis / memberAxis.Length * beam.joint_start;
                sectionPoints[2] = sectionPoints[3] - memberAxis / memberAxis.Length * beam.joint_end;

                var brepMaker = new BrepMaker.Girder(_sections, _tolerance);
                brepList.Append(new GH_Brep(brepMaker.CreateGirderBrep(beam.id_section, beam.rotate, kind, sectionPoints, memberAxis)), new GH_Path(0, i));
            }

            return(brepList);
        }
Ejemplo n.º 6
0
        private void AddBeamSection(ICollection <StbSecBeam_S> secBeams_S, ICollection <StbSecBeam_RC> secBeams_RC, K2SSecSteelItems secSteel, StbGirderKind_structure kind, int croSecId, int gNum)
        {
            switch (kind)
            {
            case StbGirderKind_structure.S:
                secBeams_S.Add(K2StbSections.BeamSteel(croSecId, gNum, _kModel));

                if (_registeredCroSecName[1].IndexOf(_kModel.crosecs[croSecId].name) < 0)
                {
                    K2StbSecSteel.GetSection(ref secSteel, _kModel, croSecId);
                    _registeredCroSecName[1].Add(_kModel.crosecs[croSecId].name);
                }
                break;

            case StbGirderKind_structure.RC:
                secBeams_RC.Add(K2StbSections.BeamRc(croSecId, gNum, _kModel));
                break;

            default:
                throw new ArgumentException("Make sure that the family name of the material is \"Concrete\" or \"Steel\".");
            }
            _registeredCroSecId[1].Add(croSecId);
        }