// check if surface reinforcement objects in list are mixed. private static bool MixedLayers(List <SurfaceReinforcement> srfReinfs) { return(SurfaceReinforcement.AllMultiLayer(srfReinfs) == false && SurfaceReinforcement.AllSingleLayer(srfReinfs) == false); }
private static Shells.Slab AddStraightReinfToSlab(Shells.Slab slab, List <SurfaceReinforcement> srfReinfs) { // assert layout if (SurfaceReinforcement.AllStraight(srfReinfs)) { } else { throw new System.ArgumentException("Not all passed surface reinforcement objects are of layout type straight"); } // assert layers if (SurfaceReinforcement.MixedLayers(srfReinfs)) { throw new System.ArgumentException("Can't add mixed layers to the same slab"); } // single layer? var singleLayer = SurfaceReinforcement.AllSingleLayer(srfReinfs); // check if surface reinf parameters are set to slab SurfaceReinforcementParameters srfReinfParams; if (slab.SurfaceReinforcementParameters == null) { srfReinfParams = SurfaceReinforcementParameters.Straight(slab, singleLayer); slab.SurfaceReinforcementParameters = srfReinfParams; } // any surfaceReinforcementParameter set to slab will be overwritten // any surfaceReinforcement with option "centric" will be removed else if (slab.SurfaceReinforcementParameters.Center.PolarSystem == true) { srfReinfParams = SurfaceReinforcementParameters.Straight(slab); slab.SurfaceReinforcementParameters = srfReinfParams; foreach (SurfaceReinforcement item in slab.SurfaceReinforcement) { if (item.Centric != null) { slab.SurfaceReinforcement.Remove(item); } } } // use surface parameters already set to slab else { srfReinfParams = slab.SurfaceReinforcementParameters; } // add surface reinforcement GuidListType baseShell = new GuidListType(slab.SlabPart.Guid); FemDesign.GuidListType surfaceReinforcementParametersGuidReference = new FemDesign.GuidListType(slab.SurfaceReinforcementParameters.Guid); foreach (SurfaceReinforcement item in srfReinfs) { // add references to item item.BaseShell = baseShell; item.SurfaceReinforcementParametersGuid = surfaceReinforcementParametersGuidReference; // check if region item exists if (item.Region == null) { item.Region = Geometry.Region.FromSlab(slab); } // add item to slab slab.SurfaceReinforcement.Add(item); } // return return(slab); }