Beispiel #1
0
        protected void DrawIsoFoot()
        {
            DimensionLine dim = new DimensionLine();

            DiagramGraphics = new DovDrawings(diagramContext);
            diagramChart    = new ChartStyle();
            float footW = 0.4f * DiagramCanvWidth;
            float footH = 0.4f * DiagramCanvHeight;

            diagramChart.ChartArea = new RectangleF(0, 0, footW, footH);
            float startX = 0;
            float startY = 0;

            DiagramGraphics.Clear(startX, startY, footW, footH);
            float limit = (footingData.Width > footingData.Length ? footingData.Width : footingData.Length);
            float xMax  = 0.5f * limit;
            float xMin  = -0.5f * limit;
            float yMax  = 0.5f * limit;
            float yMin  = -0.5f * limit;

            SetGraphicLayout(footW, footH, startX, startY, diagramChart, new float[] { xMin, xMax, yMin, yMax });
            PointF fPt1 = new PointF(-0.5f * footingData.Width, 0.5f * footingData.Length);
            PointF fPt2 = new PointF(0.5f * footingData.Width, -0.5f * footingData.Length);

            fPt1 = diagramChart.Point2D(fPt1);
            fPt2 = diagramChart.Point2D(fPt2);
            DiagramGraphics.FillColorOpt = "lightslategrey";
            DiagramGraphics.FillColor(fPt1, fPt2);
            DiagramGraphics.DrwColor = "dimgrey";
            DiagramGraphics.DrawRec(fPt1, fPt2);
            SetGraphicLayout(footW, footH, startX, startY, diagramChart, new float[] { xMin, xMax, yMin, yMax });
            PointF cPt1   = new PointF(footingData.ColLocX - 0.5f * footingData.Width + footingData.ColumnWidth * 0.5f, footingData.ColLocY - footingData.Length * 0.5f - 0.5f * footingData.ColumnLength);
            PointF cPt2   = new PointF(footingData.ColLocX - 0.5f * footingData.Width - footingData.ColumnWidth * 0.5f, footingData.ColLocY - footingData.Length * 0.5f + 0.5f * footingData.ColumnLength);
            PointF center = new PointF(footingData.ColLocX - 0.5f * footingData.Width, footingData.ColLocY - footingData.Length * 0.5f);

            cPt1   = diagramChart.Point2D(cPt1);
            cPt2   = diagramChart.Point2D(cPt2);
            center = diagramChart.Point2D(center);
            DiagramGraphics.FillColorOpt = "darkslategrey";
            DiagramGraphics.FillColor(cPt1, cPt2);
            DiagramGraphics.DrwColor = "dimgrey";
            DiagramGraphics.DrawRec(cPt1, cPt2);
            DiagramGraphics.DrwColor = "cadetblue";
            dim.Graphic = DiagramGraphics;
            dim.DimLoc  = DimensionLine.DimensionLocation.end;
            dim.DrawAdjDimLine(fPt1, fPt2, string.Format("W={0}", footingData.Width));
            dim.DimDir = DimensionLine.DimensionDirection.right;
            DiagramGraphics.TextBase = TextBaseline.Bottom;
            dim.DrawOppoDimLine(fPt1, fPt2, string.Format("L={0}", footingData.Length));
            dim.DimDir = DimensionLine.DimensionDirection.right;
            dim.DrawOppoDimLine(fPt1, center, string.Format("y={0}", footingData.ColLocY));
            dim.DimLoc = DimensionLine.DimensionLocation.start;
            dim.DrawAdjDimLine(fPt1, center, string.Format("x={0}", footingData.ColLocX));
        }
Beispiel #2
0
        protected void DrawRecSecStress()
        {
            float  compStress     = (float)Math.Round(BeamDsgnRslt.CompStress, 3);
            float  concForce      = (float)Math.Round(BeamDsgnRslt.ConcForce, 3);
            float  rebarCompForce = (float)Math.Round(BeamDsgnRslt.RebarCompForce, 3);
            float  rebarTensForce = (float)Math.Round(BeamDsgnRslt.RebarTesnsileForce, 3);
            float  txtOffset      = 5;
            float  txtHeight      = 10;
            string font           = "pt Verenda";

            font = txtHeight + font;
            Symbols arrow = new Symbols();
            IDictionary <string, float> maxValue = new Dictionary <string, float>();

            maxValue["compStress"]     = compStress;
            maxValue["concForce"]      = concForce;
            maxValue["rebarCompForce"] = rebarCompForce;
            maxValue["rebarTensForce"] = rebarTensForce;
            var   order        = from o in maxValue orderby o.Value descending select o;
            float maximumForce = order.First().Value;

            maxValue = order.ToDictionary(o => o.Key, o => o.Value);
            float prevValue = 0;
            bool  start     = true;

            foreach (KeyValuePair <string, float> value in order)
            {
                if (start)
                {
                    prevValue = value.Value;
                    start     = false;
                    continue;
                }
                maxValue[value.Key] = value.Value + Math.Abs((prevValue - value.Value)) * 0.7f;
                prevValue           = value.Value;
            }
            float lamda = 0.8f;
            float h     = secRec.Height;
            float c     = (float)Math.Round(BeamDsgnRslt.NeutralAxisY, 3);
            float d     = (float)Math.Round(BeamDsgnRslt.TensEffDepth, 3);
            float dComp = (float)Math.Round(BeamDsgnRslt.CompEffDepth, 3);

            designChart.XMin           = 0;
            designChart.XMax           = maximumForce;
            designChart.YMin           = 0;
            designChart.YMax           = secRec.Height + txtHeight + txtOffset;
            DsgnGraphics.DrwColor      = "magenta";
            DsgnGraphics.LineThickness = 2;

            PointF pt0 = designChart.Point2D(new PointF(0, 0));
            PointF pt1 = designChart.Point2D(new PointF(0, h));

            DsgnGraphics.DrawLine(pt0, pt1);
            //Compression Stress
            PointF pt2 = designChart.Point2D(new PointF(maxValue["compStress"], h));

            DsgnGraphics.DrawLine(pt1, pt2);
            PointF pt3 = designChart.Point2D(new PointF(maxValue["compStress"], h - c * lamda));

            DsgnGraphics.DrawLine(pt2, pt3);
            PointF pt4 = designChart.Point2D(new PointF(0, h - c * lamda));

            DsgnGraphics.DrawLine(pt3, pt4);

            DsgnGraphics.FillColorOpt = "slategray";
            DsgnGraphics.FillColor(pt4, pt2);
            // Rebar compression Reinforcement
            if (dComp > 0)
            {
                PointF pt5 = designChart.Point2D(new PointF(0, h - dComp));
                PointF pt6 = designChart.Point2D(new PointF(maxValue["rebarCompForce"], h - dComp));
                DsgnGraphics.DrawLine(pt5, pt6);
                DsgnGraphics.DrwColor      = "royalblue";
                DsgnGraphics.LineThickness = 1;
                arrow.Graphic = DsgnGraphics;
                arrow.DrawArrow(pt5, 5, 20, 180);
                //Rebar Comp Force
                DsgnGraphics.TextFont      = font;
                DsgnGraphics.TextBase      = TextBaseline.Bottom;
                DsgnGraphics.TextAlignment = TextAlign.Right;
                DsgnGraphics.DrwColor      = "magenta";
                DsgnGraphics.DrawText(string.Format("{0}kN", rebarCompForce), pt6);
            }
            //Draw Tensile Force
            PointF pt9  = designChart.Point2D(new PointF(0, h - d));
            PointF pt10 = designChart.Point2D(new PointF(maxValue["rebarTensForce"], h - d));

            DsgnGraphics.DrawLine(pt9, pt10);
            //Concrete Force
            PointF pt7 = designChart.Point2D(new PointF(0, h - c * 0.5f * lamda));
            PointF pt8 = designChart.Point2D(new PointF(maxValue["concForce"], h - c * 0.5f * lamda));

            DsgnGraphics.DrawLine(pt7, pt8);
            DsgnGraphics.DrwColor      = "royalblue";
            DsgnGraphics.LineThickness = 1;
            arrow.Graphic = DsgnGraphics;
            //Compression Stress
            arrow.DrawArrow(pt1, 5, 20, 180);
            arrow.DrawArrow(pt4, 5, 20, 180);
            //Rebar Compression Force
            //Rebar Tension Force
            arrow.DrawArrow(pt10, 5, 20, 0);
            //Concrete Force
            arrow.DrawArrow(pt7, 5, 20, 180);
            // Draw Text
            DsgnGraphics.TextFont      = font;
            DsgnGraphics.TextBase      = TextBaseline.Bottom;
            DsgnGraphics.TextAlignment = TextAlign.Right;
            DsgnGraphics.DrwColor      = "yellow";
            DsgnGraphics.FillColorOpt  = "yellow";
            //compression Stress
            DsgnGraphics.DrawText(string.Format("{0}kN/m", compStress), pt2);

            //Conc Comp Force
            DsgnGraphics.DrawText(string.Format("{0}kN", concForce), pt8);

            //Rebar Tensile Force
            DsgnGraphics.DrawText(string.Format("{0}kN", rebarTensForce), pt10);
            //Draw Dimension Line
            DimensionLine dim = new DimensionLine();

            ///
            DsgnGraphics.TextBase      = TextBaseline.Bottom;
            DsgnGraphics.TextAlignment = TextAlign.Center;
            DsgnGraphics.LineThickness = 1;
            DsgnGraphics.DrwColor      = "hotpink";
            dim.Graphic = DsgnGraphics;
            dim.DimDir  = DimensionLine.DimensionDirection.right;

            dim.DrawDimLineAligned(pt0, pt1, h.ToString());
            float v = (float)Math.Round(d - c * lamda, 1);

            dim.DimDir            = DimensionLine.DimensionDirection.left;
            dim.DimLoc            = DimensionLine.DimensionLocation.end;
            DsgnGraphics.TextBase = TextBaseline.Top;
            dim.DrawOppoDimLine(pt9, pt3, v.ToString());
        }
Beispiel #3
0
        protected void DrawRecSecStrain()
        {
            float dsgnStrW = 0.3f * DsgnCanvWidth;

            float tensStr   = (float)Math.Round(BeamDsgnRslt.TensStrainY, 6);
            float compStr   = (float)Math.Round(BeamDsgnRslt.CompStrain, 6);
            float h         = secRec.Height;
            float c         = BeamDsgnRslt.NeutralAxisY;
            float d         = BeamDsgnRslt.TensEffDepth;
            float dComp     = BeamDsgnRslt.CompEffDepth;
            float txtWidth  = 30.56f;
            float txtOffset = 5;
            float txtHeight = 10;
            float cb        = h - c;

            designChart.XMin           = 0;
            designChart.XMax           = BeamDsgnRslt.CompStrain + BeamDsgnRslt.TensStrainY + (txtWidth * (compStr + tensStr) / dsgnStrW);
            designChart.YMin           = 0;
            designChart.YMax           = h + txtHeight;
            DsgnGraphics.DrwColor      = "red";
            DsgnGraphics.LineThickness = 2;

            PointF pt0 = designChart.Point2D(new PointF(0, h - d));
            PointF pt1 = designChart.Point2D(new PointF(tensStr, h - d));
            PointF pt2 = designChart.Point2D(new PointF(tensStr, h));
            PointF pt3 = designChart.Point2D(new PointF(tensStr + compStr, h));
            PointF pt4 = designChart.Point2D(new PointF(tensStr, cb));
            PointF pt5 = designChart.Point2D(new PointF(0, h - d));
            PointF pt6 = designChart.Point2D(new PointF(tensStr, 0));

            DsgnGraphics.DrawPolyLine(new[] { pt0, pt1, pt2, pt3, pt4, pt5 });
            DsgnGraphics.DrawLine(pt1, pt6);
            if (dComp > 0)
            {
                float  stcomp = (compStr * (c - dComp)) / c;
                PointF pt7    = designChart.Point2D(new PointF(tensStr, h - dComp));
                PointF pt8    = designChart.Point2D(new PointF(tensStr + stcomp, h - dComp));
                DsgnGraphics.DrawLine(pt7, pt8);
            }
            //Draw texts

            string font = "pt Verenda";

            font = txtHeight + font;
            string txtTensStr = Math.Round(tensStr, 6).ToString();
            string txtCompStr = Math.Round(compStr, 5).ToString();

            DsgnGraphics.TextFont      = font;
            DsgnGraphics.TextBase      = TextBaseline.Bottom;
            DsgnGraphics.TextAlignment = TextAlign.Right;
            PointF txtpt = designChart.Point2D(new PointF(tensStr + compStr, h + txtOffset));

            DsgnGraphics.DrawText(compStr.ToString(), txtpt);
            txtpt = designChart.Point2D(new PointF(tensStr, h - d - txtOffset));
            DsgnGraphics.TextBase = TextBaseline.Top;
            DsgnGraphics.DrawText(tensStr.ToString(), txtpt);
            DimensionLine dim = new DimensionLine();

            ///
            DsgnGraphics.TextBase      = TextBaseline.Top;
            DsgnGraphics.TextAlignment = TextAlign.Center;
            DsgnGraphics.LineThickness = 1;
            DsgnGraphics.DrwColor      = "hotpink";
            dim.Graphic = DsgnGraphics;
            dim.DimDir  = DimensionLine.DimensionDirection.left;
            dim.DrawDimLineAligned(pt1, pt4, Math.Round(cb, 1).ToString());
            DsgnGraphics.TextBase = TextBaseline.Bottom;
            dim.DimDir            = DimensionLine.DimensionDirection.right;
            dim.DrawDimLineAligned(pt4, pt2, Math.Round(c, 1).ToString());
            dim.DrawOppoDimLine(pt0, pt2, Math.Round(d, 1).ToString());
        }
Beispiel #4
0
        protected void IsoFootDetailOnPlan()
        {
            DimensionLine dim = new DimensionLine();

            DetailingGraphics = new DovDrawings(detailingContext);
            detailingChart    = new ChartStyle();
            float footW = DetailingCanvWidth;
            float footH = 0.6f * DetailingCanvHeight;

            detailingChart.ChartArea = new RectangleF(0, 0, footW, footH);
            float startX = 0;
            float startY = 0;

            DetailingGraphics.Clear(startX, startY, footW, footH);
            float limit = (footingData.Width > footingData.Length ? footingData.Width : footingData.Length);
            float xMax  = 0.5f * limit;
            float xMin  = -0.5f * limit;
            float yMax  = 0.5f * limit;
            float yMin  = -0.5f * limit;

            SetGraphicLayout(footW, footH, startX, startY, detailingChart, new float[] { xMin, xMax, yMin, yMax });
            PointF fPt1 = new PointF(-0.5f * footingData.Width, 0.5f * footingData.Length);
            PointF fPt2 = new PointF(0.5f * footingData.Width, -0.5f * footingData.Length);

            fPt1 = detailingChart.Point2D(fPt1);
            fPt2 = detailingChart.Point2D(fPt2);
            DetailingGraphics.FillColorOpt = "lightslategrey";
            DetailingGraphics.FillColor(fPt1, fPt2);
            DetailingGraphics.DrwColor = "dimgrey";
            DetailingGraphics.DrawRec(fPt1, fPt2);
            SetGraphicLayout(footW, footH, startX, startY, detailingChart, new float[] { xMin, xMax, yMin, yMax });
            PointF cPt1   = new PointF(footingData.ColLocX - 0.5f * footingData.Width + footingData.ColumnWidth * 0.5f, footingData.ColLocY - footingData.Length * 0.5f - 0.5f * footingData.ColumnLength);
            PointF cPt2   = new PointF(footingData.ColLocX - 0.5f * footingData.Width - footingData.ColumnWidth * 0.5f, footingData.ColLocY - footingData.Length * 0.5f + 0.5f * footingData.ColumnLength);
            PointF center = new PointF(footingData.ColLocX - 0.5f * footingData.Width, footingData.ColLocY - footingData.Length * 0.5f);

            cPt1   = detailingChart.Point2D(cPt1);
            cPt2   = detailingChart.Point2D(cPt2);
            center = detailingChart.Point2D(center);
            DetailingGraphics.FillColorOpt = "darkslategrey";
            DetailingGraphics.FillColor(cPt1, cPt2);
            DetailingGraphics.DrwColor = "dimgrey";
            DetailingGraphics.DrawRec(cPt1, cPt2);
            DetailingGraphics.DrwColor = "cadetblue";
            dim.Graphic = DetailingGraphics;
            dim.DimLoc  = DimensionLine.DimensionLocation.end;
            dim.DrawAdjDimLine(fPt1, fPt2, string.Format("W={0}", footingData.Width));
            dim.DimDir = DimensionLine.DimensionDirection.right;
            DetailingGraphics.TextBase = TextBaseline.Bottom;
            dim.DrawOppoDimLine(fPt1, fPt2, string.Format("L={0}", footingData.Length));
            fPt1 = new PointF(-0.5f * footingData.Width, -0.5f * footingData.Length);
            fPt1 = detailingChart.Point2D(fPt1);
            dim.DrawOppoDimLine(fPt1, center, string.Format("y={0}", footingData.ColLocY));
            ////dim.DimLoc = DimensionLine.DimensionLocation.end;
            //await dim.DrawAdjDimLine(fPt1, center, string.Format("x={0}", footingData.ColLocX));
            // drawing reinforcement
            // horizontal
            float thick      = footingData.Thickness;
            float w          = footingData.Width;
            float l          = footingData.Length;
            float c          = footingData.Cover * 0.1f;
            float dia        = footingData.Dia;
            float barArea    = (float)Math.PI * dia * dia / 4;
            int   nbar       = (int)Math.Ceiling(fDesign.Asy / barArea);
            int   barSpacing = 1000 / nbar;

            barSpacing = barSpacing.RoundDown();
            float  x   = footingData.ColLocX - 0.5f * w + 0.5f * footingData.ColumnWidth + thick - 2 * c;
            float  y1  = -(0.5f * l - c);
            float  y2  = (0.5f * l - c);
            PointF pt1 = new PointF(x, y1);
            PointF pt2 = new PointF(x, y2);
            PointF pt3 = new PointF(pt1.X - thick + 2 * c, pt1.Y);
            PointF pt4 = new PointF(pt2.X - thick + 2 * c, pt2.Y);

            pt1 = detailingChart.Point2D(pt1);
            pt2 = detailingChart.Point2D(pt2);
            pt3 = detailingChart.Point2D(pt3);
            pt4 = detailingChart.Point2D(pt4);
            DetailingGraphics.DrwColor = "red";
            DetailingGraphics.DrawLine(pt1, pt2);
            string spacing = string.Format("{0} c/c {1} mm", dia, barSpacing);

            DetailingGraphics.TextAlignment = TextAlign.Center;
            DetailingGraphics.TextBase      = TextBaseline.Hanging;
            DetailingGraphics.FillColorOpt  = "yellow";
            dim.DrawTextAtAngleMid(pt1, pt2, spacing);
            DetailingGraphics.DrawLine(pt1, pt3);
            DetailingGraphics.DrawLine(pt2, pt4);
            //vertical
            float y3 = footingData.ColLocY - 0.5f * l + 0.5f * footingData.ColumnLength + thick - 2 * c;
            float x1 = -(0.5f * w - c);
            float x2 = (0.5f * w - c);

            nbar       = (int)Math.Ceiling(fDesign.Asx / barArea);
            barSpacing = 1000 / nbar;
            barSpacing = barSpacing.RoundDown();
            pt1        = new PointF(x1, y3);
            pt2        = new PointF(x2, y3);
            pt3        = new PointF(pt1.X, pt1.Y - thick + 2 * c);
            pt4        = new PointF(pt2.X, pt2.Y - thick + 2 * c);
            pt1        = detailingChart.Point2D(pt1);
            pt2        = detailingChart.Point2D(pt2);
            pt3        = detailingChart.Point2D(pt3);
            pt4        = detailingChart.Point2D(pt4);
            DetailingGraphics.DrawLine(pt1, pt2);
            spacing = string.Format("{0} c/c {1} mm", dia, barSpacing);
            DetailingGraphics.TextAlignment = TextAlign.Center;
            DetailingGraphics.TextBase      = TextBaseline.Bottom;
            dim.DrawTextAtAngleMid(pt1, pt2, spacing);
            DetailingGraphics.DrawLine(pt1, pt3);
            DetailingGraphics.DrawLine(pt2, pt4);
        }