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); }
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])); }
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 }); }
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); }
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); }
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); }