public void SetStirrupZoneIO(IXEP_StirrupZoneIO zoneIO, bool insertShapeInAfterAndBefore)
 {
     if (m_zone4Work == null)
     {
         throw new InvalidOperationException("Zone4Work was not created, please call 'PrepareZones' ");
     }
     m_zone4Work.CreateFrom(zoneIO, m_sectionPos, m_baseMat, m_zoneBeg, m_zoneEnd, m_zone4Work.ZoneID);
     XEP_BaseEmdFile.RemoveElements(m_reinf4Stirrups, XEP_EmdNames.s_KeyStirrupZone);
     if (zoneIO.IsValid())
     {
         foreach (var zone in m_zonesBefore)
         {
             m_reinf4Stirrups.Elements.Add(zone);
         }
         m_reinf4Stirrups.Elements.Add(m_zone4Work.CreateEmdElement());
         foreach (var zone in m_zonesAfter)
         {
             m_reinf4Stirrups.Elements.Add(zone);
         }
         if (insertShapeInAfterAndBefore)
         {
             foreach (var zone in m_zonesBefore)
             {
                 XEP_BaseEmdFile.RemoveElements(zone, XEP_EmdNames.s_KeyStirrupZoneShape);
                 zone.Elements.Add(m_zone4Work.ZoneShape.CreateEmdElement());
             }
             foreach (var zone in m_zonesAfter)
             {
                 XEP_BaseEmdFile.RemoveElements(zone, XEP_EmdNames.s_KeyStirrupZoneShape);
                 zone.Elements.Add(m_zone4Work.ZoneShape.CreateEmdElement());
             }
         }
     }
 }
예제 #2
0
        private void CreateStirrupsFromEnd(IXEP_StirrupZoneIO zoneInput)
        {
            double halfSpacing  = zoneInput.Spacing / 2;
            double actStirrupDx = ZoneEnd - halfSpacing;

            while (actStirrupDx > ZoneBeg)
            {
                DoOneStep(actStirrupDx, halfSpacing, zoneInput.StirrupDiameter);
                actStirrupDx -= zoneInput.Spacing;
            }
        }
예제 #3
0
 public void CreateFrom(IXEP_StirrupZoneIO zoneInput, double sectionPos, string matName, double zoneBeg, double zoneEnd, int zoneID)
 {
     ZoneID         = zoneID;
     Material       = matName;
     ZoneBeg        = zoneBeg;
     ZoneEnd        = zoneEnd;
     IsAutoCutsCalc = 1;
     NumCutUser     = zoneInput.NumCut;
     Position       = XEP_EmdNames.s_Value_ZonePosCurrent;
     Coeff          = 4.0;
     ZoneShape.CreateFrom(zoneInput.Shapes);
     CreateStirrups(zoneInput, sectionPos);
 }
예제 #4
0
        private void CreateStirrups(IXEP_StirrupZoneIO zoneInput, double sectionPos)
        {
            Stirrups = new List <IXEP_EmdStirrupData>();
            if (zoneInput.Spacing <= 0.0)
            {
                return;
            }
            double memberLenght = Math.Abs(ZoneBeg - ZoneEnd);

            if ((sectionPos) < (ZoneBeg + memberLenght / 2))
            {
                CreateStirrupsFromBegin(zoneInput);
            }
            else
            {
                CreateStirrupsFromEnd(zoneInput);
            }
        }
예제 #5
0
        public IXEP_StirrupZoneIO Create(double sectionPos)
        {
            IXEP_StirrupZoneIO zoneInput = XEP_EmdFactrory.CreateStirrupZoneIO();

            zoneInput.Shapes = ZoneShape.Create();
            zoneInput.NumCut = NumCutUser;
            IXEP_EmdStirrupData nearestStirrup = FindNearestStirrup(sectionPos);

            if (nearestStirrup == null)
            {
                zoneInput.Spacing         = 0.0;
                zoneInput.StirrupDiameter = 0.0;
            }
            else
            {
                zoneInput.Spacing         = nearestStirrup.Dss;
                zoneInput.StirrupDiameter = nearestStirrup.D;
            }
            return(zoneInput);
        }
예제 #6
0
 public void SetStirrupZoneIO(IXEP_StirrupZoneIO zoneIO, bool insertShapeInAfterAndBefore)
 {
     m_zonePreparator.SetStirrupZoneIO(zoneIO, insertShapeInAfterAndBefore);
 }