public void CreateFromEmdElement(IXEP_EmdElement elem)
 {
     XEP_BaseEmdFile.CheckName(elem.Name, XEP_EmdNames.s_KeyStirrupZone);
     Clear();
     foreach (var item in elem.Elements)
     {
         if (item.Name == XEP_EmdNames.s_KeyStirrup)
         {
             IXEP_EmdStirrupData stirrupData = XEP_EmdFactrory.CreateEmdStirrupData();
             stirrupData.CreateFromEmdElement(item);
             Stirrups.Add(stirrupData);
         }
         else if (item.Name == XEP_EmdNames.s_KeyStirrupZoneShape)
         {
             ZoneShape.CreateFromEmdElement(item);
         }
         else
         {
             throw new InvalidOperationException("Invalid element in stirrup zone, element name: " + item.Name);
         }
     }
     ZoneID         = elem.GetAttribute(XEP_EmdNames.s_KeyStirrupZoneID).GetIntValue();
     Material       = elem.GetAttribute(XEP_EmdFileConstants.s_RefAttributEmdTag + XEP_EmdNames.s_KeyStirrupZoneMaterial).Value;
     ZoneBeg        = elem.GetAttribute(XEP_EmdNames.s_KeyStirrupZoneZoneBeg).GetDoubleValue();
     ZoneEnd        = elem.GetAttribute(XEP_EmdNames.s_KeyStirrupZoneZoneEnd).GetDoubleValue();
     IsAutoCutsCalc = elem.GetAttribute(XEP_EmdNames.s_KeyStirrupZoneIsAutoCutsCalc).GetIntValue();
     NumCutUser     = elem.GetAttribute(XEP_EmdNames.s_KeyStirrupZoneNumCutUser).GetIntValue();
     Position       = elem.GetAttribute(XEP_EmdNames.s_KeyStirrupZonePosition).Value;
     Coeff          = elem.GetAttribute(XEP_EmdNames.s_KeyStirrupZoneCoef).GetDoubleValue();
 }
        private void DoOneStep(double actStirrupDx, double halfSpacing, double diam)
        {
            IXEP_EmdStirrupData stirrupFirst = XEP_EmdFactrory.CreateEmdStirrupData();

            stirrupFirst.DsL = actStirrupDx - halfSpacing;
            if (stirrupFirst.DsL < ZoneBeg)
            {
                stirrupFirst.DsL = ZoneBeg;
            }
            stirrupFirst.DsR = actStirrupDx + halfSpacing;
            if (stirrupFirst.DsR > ZoneEnd)
            {
                stirrupFirst.DsR = ZoneEnd;
            }
            stirrupFirst.Dss      = (stirrupFirst.DsR - stirrupFirst.DsL);
            stirrupFirst.DX       = actStirrupDx;
            stirrupFirst.D        = diam;
            stirrupFirst.Multiply = 1;
            Stirrups.Add(stirrupFirst);
        }