/// <summary> /// This function assumes that an IBuiltUpSection consists of a start and end section, further development to send an array of sections is recommended /// </summary> /// <param name="IBuiltUpSection"></param> /// <returns></returns> public static bool SetITaperedSection(HndzITaperedProfile profile, HndzStructuralMaterial material) { SAPITaperedSection section = new SAPITaperedSection(); section.ConvertFromHndzTaperedI(profile, material); return(SAP2000API.SetITaperedSection(section)); }
public void ConvertFromHndzTaperedI(HndzITaperedProfile profile, HndzStructuralMaterial material) { Name = profile.Name; Length = 1; LengthType = LengthTypeEnum.Relative; StartSection.ConvertFromHndzIProfile(profile.StartProfile, material); EndSection.ConvertFromHndzIProfile(profile.EndProfile, material); }
public HndzITaperedProfile ConvertToHndzTaperedI(ref HndzStructuralMaterial material) { HndzITaperedProfile profile = new HndzITaperedProfile(); profile.Name = Name; profile.StartProfile = StartSection.ConvertToHndzIProfile(ref material); profile.EndProfile = EndSection.ConvertToHndzIProfile(ref material); return(profile); }
public static HndzITaperedProfile GetITaperedSection(HndzITaperedProfile profile, ref HndzStructuralMaterial material) { SAPITaperedSection section = new SAPITaperedSection(); section.ConvertFromHndzTaperedI(profile, material); section = SAP2000API.GetITaperedSection(section); HndzITaperedProfile hndzProfile = new HndzITaperedProfile(); hndzProfile = section.ConvertToHndzTaperedI(ref material); return(hndzProfile); }
public void ConvertToHndzElement(HndzStructuralElement hndzElement) { SAPITaperedSection sapSec = (SAPITaperedSection)Section; //HndzStructuralElement hndzElement; SectionI startSec = new SectionI(sapSec.StartSection.Name, sapSec.StartSection.Height * 1000, sapSec.StartSection.BotFlangeWidth * 1000, sapSec.StartSection.BotFlangeThickness * 1000, sapSec.StartSection.WebThickness * 1000); SectionI endSec = new SectionI(sapSec.EndSection.Name, sapSec.EndSection.Height * 1000, sapSec.EndSection.BotFlangeWidth * 1000, sapSec.EndSection.BotFlangeThickness * 1000, sapSec.EndSection.WebThickness * 1000); if (hndzElement.Profile is HndzITaperedProfile) { HndzITaperedProfile profile = hndzElement.Profile as HndzITaperedProfile; hndzElement.Name = Name; hndzElement.Profile.Name = Name; profile.StartProfile.I_Section = startSec; profile.StartProfile.Name = sapSec.StartSection.Name; profile.EndProfile.I_Section = endSec; profile.EndProfile.Name = sapSec.EndSection.Name; } hndzElement.AnalysisResults = new HndzAnalysisResults[AnalysisResults.NumberResults]; hndzElement.AnalysisResultsEnvelope = new HndzAnalysisResults[AnalysisResultsEnvelope.NumberResults]; for (int i = 0; i < AnalysisResults.NumberResults; i++) { hndzElement.AnalysisResults[i] = new HndzAnalysisResults(AnalysisResults.Station[i], AnalysisResults.LoadCase[i], AnalysisResults.Axial[i], AnalysisResults.Shear2[i], AnalysisResults.Shear3[i], AnalysisResults.TortionalMoment[i] , AnalysisResults.Moment2[i], AnalysisResults.Moment3[i]); } for (int i = 0; i < AnalysisResultsEnvelope.NumberResults; i++) { hndzElement.AnalysisResultsEnvelope[i] = new HndzAnalysisResults(AnalysisResultsEnvelope.Station[i], AnalysisResultsEnvelope.LoadCase[i], AnalysisResultsEnvelope.Axial[i], AnalysisResultsEnvelope.Shear2[i], AnalysisResultsEnvelope.Shear3[i], AnalysisResultsEnvelope.TortionalMoment[i] , AnalysisResultsEnvelope.Moment2[i], AnalysisResultsEnvelope.Moment3[i]); } hndzElement.IsDesignPassed = IsDesignPassed; //TODO: Section and material //return hndzElement; }
public static HndzFrameSingleBay3D AssembleSections(HndzFrameSingleBay3D Frame3d) { foreach (HndzFrameSingleBay2D Frame in Frame3d.Frames2D) { double Fy = 2.4; double LUSupportedSap = 4.11; //Kfactor Needs to Be calculated from InterActrion Diagrams - 2 For worst Case double Kfactor = 2; double KfactorBeamEnd = 0.7; double KfactorBeamStart = 0.65; double Lbin = 8.5; double Lbout = 5; double BeamLength = 12; double PurlinSpacing = 2; double ColumnHeight = Frame.LeftBeam.ExtrusionLine.RhinoLine.Length; double LUnsupported = ColumnHeight / 2; //What i want // Analysis Result at start and and end //Whats my Name ? Gecko HndzAnalysisResults RColStartMax = Frame.LeftBeam.AnalysisResults[0]; HndzAnalysisResults RColMidMax = Frame.LeftBeam.AnalysisResults[1]; HndzAnalysisResults RColEndMax = Frame.LeftBeam.AnalysisResults[2]; HndzAnalysisResults RColStartMin = Frame.LeftBeam.AnalysisResults[3]; HndzAnalysisResults RColMidMin = Frame.LeftBeam.AnalysisResults[4]; HndzAnalysisResults RColEndMin = Frame.LeftBeam.AnalysisResults[5]; //============================================= //HndzAnalysisResults RBeamEnd = Frame.LeftBeam.AnalysisResults[1]; //HndzAnalysisResults RBeamStart = Frame.LeftBeam.AnalysisResults[0]; //================================== //station 0 = 0 ,3 //station 1 = 2 , 5 //============================ //foreach (HndzAnalysisResults RColEnd in Frame.LeftBeam.AnalysisResults) //{ SectionI ColEstimated = CrossSectionCalulator.CalculateColumnSection(CrossSectionCalulator.SteelGrade.st37, ColumnHeight, RColStartMax.Axial, RColStartMax.Moment3); SectionI ColEnd = BeamColumnDesign.DesignEnd(ColEstimated.d, ColEstimated.t_w, ColEstimated.b_fTop, ColEstimated.t_fTop, ColEstimated.b_fBot, ColEstimated.t_fBot, RColEndMax.Axial, RColStartMax.Moment3, RColEndMax.Moment3, Fy, LUnsupported, Kfactor, Lbin, Lbout, BeamColumnDesign.SwayCondtion.PermitedToSway, BeamColumnDesign.SteelGrade.st37, BeamColumnDesign.LoadingType.Case2); SectionI ColStart = CrossSectionCalulator.SectionTaperedColumn(ColEnd); ColStart = BeamColumnDesign.DesignStart(ColStart.d, ColStart.t_w, ColStart.b_fTop, ColStart.t_fTop, ColStart.b_fBot, ColStart.t_fBot, RColStartMax.Axial, RColEndMax.Moment3, RColEndMax.Moment3, Fy, LUnsupported, Kfactor, Lbin, Lbout, BeamColumnDesign.SwayCondtion.PermitedToSway, BeamColumnDesign.SteelGrade.st37, BeamColumnDesign.LoadingType.Case2); HndzISectionProfile Start = new HndzISectionProfile(ColStart); HndzISectionProfile End = new HndzISectionProfile(ColEnd); HndzITaperedProfile Section = new HndzITaperedProfile(Start, End); Frame.LeftBeam.Profile = Section; Frame.RightBeam.Profile = Section; // } //foreach (HndzAnalysisResults RBeamStart in Frame.LeftBeam.AnalysisResults) //{ // SectionI BeamEstimated = CrossSectionCalulator.CalculateBeamSection(CrossSectionCalulator.SteelGrade.st37, BeamLength, RBeamStart.Axial, RBeamStart.Moment3); // SectionI BeamStart = BeamDesign.DesignStart(BeamEstimated.d, BeamEstimated.t_w, BeamEstimated.b_fTop, BeamEstimated.t_fTop, // BeamEstimated.b_fBot, BeamEstimated.t_fBot, RBeamStart.Axial, RBeamStart.Shear2, RBeamStart.Moment3, RBeamEnd.Moment3, Fy, LUSupportedSap, KfactorBeamStart, BeamLength, PurlinSpacing, BeamDesign.SwayCondtion.PermitedToSway, BeamDesign.SteelGrade.st37, BeamDesign.LoadingType.Case2); // SectionI BeamEnd = CrossSectionCalulator.SectionTaperedBeam(BeamStart); // BeamEnd = BeamDesign.DesignEnd(BeamEnd.d, BeamEnd.t_w, BeamEnd.b_fTop, BeamEnd.t_fTop, // BeamEnd.b_fBot, BeamEnd.t_fBot, // RBeamEnd.Axial, RBeamEnd.Shear2, RBeamStart.Moment3, RBeamEnd.Moment3, Fy, PurlinSpacing, KfactorBeamEnd, BeamLength, PurlinSpacing, BeamDesign.SwayCondtion.PermitedToSway, BeamDesign.SteelGrade.st37, BeamDesign.LoadingType.Case2); // HndzISectionProfile Start = new HndzISectionProfile(BeamStart); // HndzISectionProfile End = new HndzISectionProfile(BeamEnd); // HndzITaperedProfile Section = new HndzITaperedProfile(Start, End); //} // double AppliedLoads = } return(null); }
public void ConvertFromHndzElement(HndzExtrudedElement element, HndzSectionTypeEnum type) { switch (type) { case HndzSectionTypeEnum.HotRolledC: throw new NotImplementedException("HotRolled is not ready"); break; case HndzSectionTypeEnum.HotRolledI: throw new NotImplementedException("HotRolled is not ready"); break; case HndzSectionTypeEnum.BuiltUpI: HndzBeamStandardCase beam = null; HndzColumnStandardCase column = null; if (element is HndzBeamStandardCase) { beam = (HndzBeamStandardCase)element; Name = Label = beam.Name; SAPISection iSection = new SAPISection(); Section = iSection.ConvertFromHndzIProfile((HndzISectionProfile)beam.Profile, (HndzStructuralMaterial)beam.Material); Section = iSection; StartPoint.ConvertFromHndzNode(beam.ExtrusionLine.baseNode); EndPoint.ConvertFromHndzNode(beam.ExtrusionLine.EndNode); } else if (element is HndzColumnStandardCase) { column = (HndzColumnStandardCase)element; Name = Label = column.Name; SAPISection iSection = new SAPISection(); Section = iSection.ConvertFromHndzIProfile((HndzISectionProfile)column.Profile, (HndzStructuralMaterial)column.Material); Section = iSection; StartPoint.ConvertFromHndzNode(column.ExtrusionLine.baseNode); EndPoint.ConvertFromHndzNode(column.ExtrusionLine.EndNode); } break; case HndzSectionTypeEnum.TaperedI: HndzBeamStandardCase beamTapered = null; HndzBeamStandardCase columnTapered = null; if (element is HndzBeamStandardCase) { //beamTapered = (HndzBeamTapered)element; //Name = Label = beamTapered.Name; //SAPITaperedSection iSection = new SAPITaperedSection(); //iSection.ConvertFromHndzTaperedI(beamTapered.Profile, (HndzStructuralMaterial)beamTapered.Material); //Section = iSection; //StartPoint.ConvertFromHndzNode(beamTapered.ExtrusionLine.baseNode); //EndPoint.ConvertFromHndzNode(beamTapered.ExtrusionLine.EndNode); throw new NotImplementedException(); } else if (element is HndzBeamStandardCase) { columnTapered = (HndzBeamStandardCase)element; Name = Label = columnTapered.Name; if (columnTapered.Profile is HndzITaperedProfile) { HndzITaperedProfile columnTaperedProfile = columnTapered.Profile as HndzITaperedProfile; SAPITaperedSection iSection = new SAPITaperedSection(); iSection.ConvertFromHndzTaperedI(columnTaperedProfile, (HndzStructuralMaterial)columnTapered.Material); Section = iSection; StartPoint.ConvertFromHndzNode(columnTapered.ExtrusionLine.baseNode); EndPoint.ConvertFromHndzNode(columnTapered.ExtrusionLine.EndNode); } } break; default: break; } }
public static HndzFrameSingleBay3D AssembleSections(HndzFrameSingleBay3D Frame3d) { double Fy = 2.4; double LUSupportedSap = 4.11; double Kfactor = 2; //========================== double KfactorBeamEnd = 0.7; double KfactorBeamStart = 0.65; //======================= double PurlinSpacing = Frame3d.PurlinSpacing / 1000; // foreach (HndzFrameSingleBay2D Frame in Frame3d.Frames2D) { //=========================== //======================= //Has to Get it form an algorithm in sap //Kfactor Needs to Be calculated from InterActrion Diagrams - 2 For worst Case //What i want // Analysis Result at start and and end //Whats my Name ? Gecko double BeamLength = Frame.LeftBeam.ExtrusionLine.RhinoLine.Length / 1000; double ColumnHeight = Frame.LeftColumn.ExtrusionLine.RhinoLine.Length / 1000; //================= double Lbin = ColumnHeight; double Lbout = ColumnHeight; double LUnsupported = ColumnHeight * 100 / 2; HndzAnalysisResults RColStartMax = Frame.LeftColumn.AnalysisResults[0]; HndzAnalysisResults RColMidMax = Frame.LeftColumn.AnalysisResults[1]; HndzAnalysisResults RColEndMax = Frame.LeftColumn.AnalysisResults[2]; HndzAnalysisResults RColStartMin = Frame.LeftColumn.AnalysisResults[3]; HndzAnalysisResults RColMidMin = Frame.LeftColumn.AnalysisResults[4]; HndzAnalysisResults RColEndMin = Frame.LeftColumn.AnalysisResults[5]; HndzAnalysisResults RBeamStartMax = Frame.LeftColumn.AnalysisResults[0]; HndzAnalysisResults RBeamMidMax = Frame.LeftColumn.AnalysisResults[1]; HndzAnalysisResults RBeamEndMax = Frame.LeftColumn.AnalysisResults[2]; HndzAnalysisResults RBeamStartMin = Frame.LeftColumn.AnalysisResults[3]; HndzAnalysisResults RBeamMidMin = Frame.LeftColumn.AnalysisResults[4]; HndzAnalysisResults RBeamEndMin = Frame.LeftColumn.AnalysisResults[5]; //============================================= //HndzAnalysisResults RBeamEnd = Frame.LeftBeam.AnalysisResults[1]; //HndzAnalysisResults RBeamStart = Frame.LeftBeam.AnalysisResults[0]; //================================== //station 0 = 0 ,3 //station 1 = 2 , 5 //============================ //foreach (HndzAnalysisResults RColEnd in Frame.LeftBeam.AnalysisResults) //{ SectionI ColEstimated = CrossSectionCalulator.CalculateColumnSection(CrossSectionCalulator.SteelGrade.st37, ColumnHeight, RColStartMax.Axial, RColEndMax.Moment3); SectionI ColEndMax = BeamColumnDesign.DesignEnd(ColEstimated.d, ColEstimated.t_w, ColEstimated.b_fTop, ColEstimated.t_fTop, ColEstimated.b_fBot, ColEstimated.t_fBot, RColEndMax.Axial, RColStartMax.Moment3, RColEndMax.Moment3, Fy, LUnsupported, Kfactor, Lbin, Lbout, BeamColumnDesign.SwayCondtion.PermitedToSway, BeamColumnDesign.SteelGrade.st37, BeamColumnDesign.LoadingType.Case2); SectionI ColStartMax = CrossSectionCalulator.SectionTaperedColumn(ColEndMax); ColStartMax = BeamColumnDesign.DesignStart(ColStartMax.d, ColStartMax.t_w, ColStartMax.b_fTop, ColStartMax.t_fTop, ColStartMax.b_fBot, ColStartMax.t_fBot, RColStartMax.Axial, RColStartMax.Moment3, RColEndMax.Moment3, Fy, LUnsupported, Kfactor, Lbin, Lbout, BeamColumnDesign.SwayCondtion.PermitedToSway, BeamColumnDesign.SteelGrade.st37, BeamColumnDesign.LoadingType.Case2); ColStartMax = CrossSectionCalulator.PostProcessing(ColStartMax); ColEndMax = CrossSectionCalulator.PostProcessing(ColEndMax); //======================================================= //HndzISectionProfile Start = new HndzISectionProfile(ColStartMax); //HndzISectionProfile End = new HndzISectionProfile(ColEndMax); //HndzITaperedProfile ColumnTaperedSectionMax = new HndzITaperedProfile(Start, End); //====================================== SectionI ColEstimatedMin = CrossSectionCalulator.CalculateColumnSection(CrossSectionCalulator.SteelGrade.st37, ColumnHeight, RColStartMax.Axial, RColEndMax.Moment3); SectionI ColEndMin = BeamColumnDesign.DesignEnd(ColEstimatedMin.d, ColEstimatedMin.t_w, ColEstimatedMin.b_fTop, ColEstimatedMin.t_fTop, ColEstimatedMin.b_fBot, ColEstimatedMin.t_fBot, RColEndMin.Axial, RColStartMin.Moment3, RColEndMin.Moment3, Fy, LUnsupported, Kfactor, Lbin, Lbout, BeamColumnDesign.SwayCondtion.PermitedToSway, BeamColumnDesign.SteelGrade.st37, BeamColumnDesign.LoadingType.Case2); SectionI ColStartMin = CrossSectionCalulator.SectionTaperedColumn(ColEndMin); ColStartMin = BeamColumnDesign.DesignStart(ColStartMin.d, ColStartMin.t_w, ColStartMin.b_fTop, ColStartMin.t_fTop, ColStartMin.b_fBot, ColStartMin.t_fBot, RColStartMin.Axial, RColStartMin.Moment3, RColEndMin.Moment3, Fy, LUnsupported, Kfactor, Lbin, Lbout, BeamColumnDesign.SwayCondtion.PermitedToSway, BeamColumnDesign.SteelGrade.st37, BeamColumnDesign.LoadingType.Case2); ColStartMin = CrossSectionCalulator.PostProcessing(ColStartMin); ColEndMin = CrossSectionCalulator.PostProcessing(ColEndMin); //HndzISectionProfile StartMin = new HndzISectionProfile(ColStartMin); //HndzISectionProfile EndMin = new HndzISectionProfile(ColEndMax); //HndzITaperedProfile ColumnTaperedSectionMin = new HndzITaperedProfile(Start, End); SectionI FinalSectionStartCol = CrossSectionCalulator.SectionCompare(ColStartMax, ColStartMin); SectionI FinalSectionEndCol = CrossSectionCalulator.SectionCompare(ColEndMax, ColEndMin); HndzISectionProfile ColStart = new HndzISectionProfile(FinalSectionStartCol); HndzISectionProfile ColEnd = new HndzISectionProfile(FinalSectionEndCol); HndzITaperedProfile ColumnTaperedSection = new HndzITaperedProfile(ColEnd, ColStart); //========================================== // } //foreach (HndzAnalysisResults RBeamStart in Frame.LeftBeam.AnalysisResults) //{ SectionI BeamEstimatedMax = CrossSectionCalulator.CalculateBeamSection(CrossSectionCalulator.SteelGrade.st37, BeamLength, RBeamStartMax.Axial, RBeamStartMax.Moment3); SectionI BeamStartMax = BeamDesign.DesignStart(BeamEstimatedMax.d, BeamEstimatedMax.t_w, BeamEstimatedMax.b_fTop, BeamEstimatedMax.t_fTop, BeamEstimatedMax.b_fBot, BeamEstimatedMax.t_fBot, RBeamStartMax.Axial, RBeamStartMax.Shear2, RBeamStartMax.Moment3, RBeamEndMax.Moment3, Fy, LUSupportedSap, KfactorBeamStart, BeamLength, PurlinSpacing, BeamDesign.SwayCondtion.PermitedToSway, BeamDesign.SteelGrade.st37, BeamDesign.LoadingType.Case2); SectionI BeamEndMAX = CrossSectionCalulator.SectionTaperedBeam(BeamStartMax); BeamEndMAX = BeamDesign.DesignEnd(BeamEndMAX.d, BeamEndMAX.t_w, BeamEndMAX.b_fTop, BeamEndMAX.t_fTop, BeamEndMAX.b_fBot, BeamEndMAX.t_fBot, RBeamEndMax.Axial, RBeamEndMax.Shear2, RBeamStartMax.Moment3, RBeamEndMax.Moment3, Fy, PurlinSpacing, KfactorBeamEnd, BeamLength, PurlinSpacing, BeamDesign.SwayCondtion.PermitedToSway, BeamDesign.SteelGrade.st37, BeamDesign.LoadingType.Case2); BeamStartMax = CrossSectionCalulator.PostProcessing(BeamStartMax); BeamEndMAX = CrossSectionCalulator.PostProcessing(BeamEndMAX); //HndzISectionProfile StartBeamMax = new HndzISectionProfile(BeamStartMax); //HndzISectionProfile EndBeamMax = new HndzISectionProfile(BeamEndMAX); //HndzITaperedProfile BeamTaperedSectionMax = new HndzITaperedProfile(StartBeamMax, EndBeamMax, new Rhino.Geometry.Vector2d(0, 1)); SectionI BeamEstimatedMin = CrossSectionCalulator.CalculateColumnSection(CrossSectionCalulator.SteelGrade.st37, ColumnHeight, RColStartMax.Axial, RColEndMax.Moment3); SectionI BeamEndMin = BeamColumnDesign.DesignEnd(BeamEstimatedMin.d, BeamEstimatedMin.t_w, BeamEstimatedMin.b_fTop, BeamEstimatedMin.t_fTop, BeamEstimatedMin.b_fBot, BeamEstimatedMin.t_fBot, RColEndMin.Axial, RColStartMin.Moment3, RColEndMin.Moment3, Fy, LUnsupported, Kfactor, Lbin, Lbout, BeamColumnDesign.SwayCondtion.PermitedToSway, BeamColumnDesign.SteelGrade.st37, BeamColumnDesign.LoadingType.Case2); SectionI BeamStartMin = CrossSectionCalulator.SectionTaperedColumn(BeamEndMin); BeamStartMin = BeamColumnDesign.DesignStart(BeamStartMin.d, BeamStartMin.t_w, BeamStartMin.b_fTop, BeamStartMin.t_fTop, BeamStartMin.b_fBot, BeamStartMin.t_fBot, RColStartMin.Axial, RColStartMin.Moment3, RColEndMin.Moment3, Fy, LUnsupported, Kfactor, Lbin, Lbout, BeamColumnDesign.SwayCondtion.PermitedToSway, BeamColumnDesign.SteelGrade.st37, BeamColumnDesign.LoadingType.Case2); BeamStartMin = CrossSectionCalulator.PostProcessing(BeamStartMin); BeamEndMin = CrossSectionCalulator.PostProcessing(BeamEndMin); // HndzISectionProfile StartMinBeam = new HndzISectionProfile(BeamStartMin); // HndzISectionProfile EndMinBeam = new HndzISectionProfile(BeamEndMin); //HndzISectionProfile StartMinBeam = new HndzISectionProfile(BeamEndMin); //HndzISectionProfile EndMinBeam = new HndzISectionProfile(BeamStartMin); //HndzITaperedProfile BeamTaperedSectionMin = new HndzITaperedProfile(EndMinBeam,StartMinBeam,new Rhino.Geometry.Vector2d(0, 1)); SectionI FinalSectionStartBeam = CrossSectionCalulator.SectionCompare(BeamStartMax, BeamStartMin); SectionI FinalSectionEndBeam = CrossSectionCalulator.SectionCompare(BeamEndMAX, BeamEndMin); HndzISectionProfile BeamStart = new HndzISectionProfile(FinalSectionStartBeam); HndzISectionProfile BeamEnd = new HndzISectionProfile(FinalSectionEndBeam); HndzITaperedProfile BeamTaperedSection = new HndzITaperedProfile(BeamStart, BeamEnd, new Rhino.Geometry.Vector2d(0, 1)); //========================================== //} // Sections Assumbtions //======================================== Frame.LeftColumn.Profile = ColumnTaperedSection; Frame.RightColumn.Profile = ColumnTaperedSection; Frame.LeftBeam.Profile = BeamTaperedSection; Frame.RightBeam.Profile = BeamTaperedSection; //SectionChannel AssumedCSection = new SectionChannel("Assumed hotRolled C Section", 180, 80, 10, 4); //HndzISectionProfile bigProfile = new HndzISectionProfile(new SectionI("big", 1000 * 2, 500 * 2, 100 * 2, 50 * 2)); //HndzISectionProfile smallProfile = new HndzISectionProfile(new SectionI("small", 1000, 500, 100, 50)); } return(Frame3d); }