public static CompositeGeometry Layout(this LayerReinforcement reinforcement, ConcreteSection property, bool extrude = false) { BoundingBox bounds = new BoundingBox(); foreach (ICurve curve in property.SectionProfile.Edges) { bounds += curve.IBounds(); } double relativeDepth = reinforcement.IsVertical ? bounds.Max.X - reinforcement.Depth : bounds.Max.Y - reinforcement.Depth; double[] range = null; double tieDiameter = property.TieDiameter(); if (property.SectionProfile.Shape == ShapeType.Rectangle && tieDiameter > 0) { //TODO: Check this part tieDiameter = tieDiameter + Math.Cos(Math.PI / 4) * (2 * tieDiameter * (Math.Sqrt(2) - 1) + reinforcement.Diameter / 2) - reinforcement.Diameter / 2; } double width = reinforcement.IsVertical ? property.SectionProfile.DepthAt(relativeDepth, ref range) : property.SectionProfile.WidthAt(relativeDepth, ref range); double spacing = (width - 2 * property.MinimumCover - reinforcement.Diameter - 2 * tieDiameter) / (reinforcement.BarCount - 1.0); double start = range != null && range.Length > 0 ? range[0] : 0; List <Point> location = new List <Point>(); for (int i = 0; i < reinforcement.BarCount; i++) { double x = reinforcement.IsVertical ? relativeDepth : property.MinimumCover + reinforcement.Diameter / 2 + tieDiameter + spacing * i + start; double y = reinforcement.IsVertical ? property.MinimumCover + reinforcement.Diameter / 2 + spacing * i + tieDiameter + start : relativeDepth; location.Add(new Point { X = x, Y = y, Z = 0 }); } return(new CompositeGeometry { Elements = location.ToList <IGeometry>() }); //GeometryGroup<Point> location = new GeometryGroup<Point>(); //for (int i = 0; i < BarCount; i++) //{ // double x = IsVertical ? relativeDepth : property.MinimumCover + Diameter / 2 + tieDiameter + spacing * i + start; // double y = IsVertical ? property.MinimumCover + Diameter / 2 + spacing * i + tieDiameter + start : relativeDepth; // location.Add(new Point { X = x, Y = y, Z = 0 }); //} //return location; }
/***************************************************/ /**** Public Methods ****/ /***************************************************/ public static bool IsLongitudinal(this LayerReinforcement reinforcement) { return(true); }
public static bool IsLongitudinal(this LayerReinforcement reinforcement) { return(reinforcement.IsNull() ? false : true); }