Пример #1
0
        protected void DrawAxis(DovDrawings graphic, ChartStyle cs)
        {
            float axisH = 0.5f * secRec.Height * 0.8f;
            float axisV = 0.5f * secRec.Width * 0.8f;

            graphic.DrwColor = "white";
            graphic.TextBase = TextBaseline.Bottom;
            PointF origin = cs.Point2D(new PointF(0, 0));
            PointF xEnd   = cs.Point2D(new PointF(axisH, 0));
            PointF yEnd   = cs.Point2D(new PointF(0, axisV));

            graphic.DrawLine(origin, xEnd, true);
            graphic.DrawLine(origin, yEnd, true, true);
            graphic.DrawText("X", xEnd);
            graphic.DrawText("Y", yEnd);
        }
Пример #2
0
        protected void IsoFootDetailOnElev()
        {
            DimensionLine dim = new DimensionLine();

            DetailingGraphics = new DovDrawings(detailingContext);
            detailingChart    = new ChartStyle();
            dim.Graphic       = DetailingGraphics;
            float footW = DetailingCanvWidth;
            float footH = 0.4f * DetailingCanvHeight;

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

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

            SetGraphicLayout(footW, footH, startX, startY, detailingChart, new float[] { xMin, xMax, yMin, yMax });

            float  thick = footingData.Thickness;
            float  w     = footingData.Width;
            float  l     = footingData.Length;
            float  c     = footingData.Cover * 0.1f;
            float  dia   = footingData.Dia;
            float  locX  = footingData.ColLocX;
            float  locY  = footingData.ColLocY;
            float  cw    = footingData.ColumnWidth;
            float  cl    = footingData.ColumnLength;
            PointF fPt1  = new PointF(-0.5f * footingData.Width, 0f);
            PointF fPt2  = new PointF(0.5f * footingData.Width, -footingData.Thickness);

            fPt1 = detailingChart.Point2D(fPt1);
            fPt2 = detailingChart.Point2D(fPt2);
            DetailingGraphics.FillColorOpt = "lightslategrey";
            DetailingGraphics.FillColor(fPt1, fPt2);
            DetailingGraphics.DrwColor = "dimgrey";
            //await DetailingGraphics.DrawRecAsync(fPt1, fPt2);
            PointF pt1 = new PointF(-0.5f * w, 0f);
            PointF pt2 = new PointF(locX - 0.5f * w - 0.5f * cw, 0);
            PointF pt3 = new PointF(locX - 0.5f * w - 0.5f * cw, 0.5f * thick);
            PointF pt4 = new PointF(locX - 0.5f * w + 0.5f * cw, 0.5f * thick);
            PointF pt5 = new PointF(locX - 0.5f * w + 0.5f * cw, 0);
            PointF pt6 = new PointF(0.5f * w, 0);
            PointF pt7 = new PointF(0.5f * w, -thick);
            PointF pt8 = new PointF(-0.5f * w, -thick);

            PointF[] pts = new PointF[] { pt1, pt2, pt3, pt4, pt5, pt6, pt7, pt8 };
            for (int i = 0; i < pts.Length; i++)
            {
                pts[i] = detailingChart.Point2D(pts[i]);
            }
            DetailingGraphics.FillPolygone(pts);
            dim.DrawDimLineAligned(pts[0], pts[7], thick.ToString());
            dim.DrawDimLineAligned(pts[6], pts[7], w.ToString());
            dim.DimDir = DimensionLine.DimensionDirection.right;
            DetailingGraphics.TextBase = TextBaseline.Bottom;
            dim.DrawDimLineAligned(pts[0], pts[1], (footingData.ColLocX - 0.5f * cw).ToString());
            DetailingGraphics.DrwColor = "red";
            pt1 = new PointF(-0.5f * w + c, -thick + c);
            pt2 = new PointF(0.5f * w - c, -thick + c);
            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);
            DetailingGraphics.DrawLine(pt1, pt2);
            pt3 = detailingChart.Point2D(pt3);
            pt4 = detailingChart.Point2D(pt4);
            DetailingGraphics.DrawLine(pt1, pt3);
            DetailingGraphics.DrawLine(pt2, pt4);
            //Drawing column bars
            pt5 = new PointF(locX - 0.5f * w - 0.5f * cw + c, -thick + c + 3 * dia * 0.1f);
            pt6 = new PointF(locX - 0.5f * w - 0.5f * cw + c, 0.5f * thick);
            pt7 = new PointF(locX - 0.5f * w + 0.5f * cw - c, -thick + c + 3 * dia * 0.1f);
            pt8 = new PointF(locX - 0.5f * w + 0.5f * cw - c, 0.5f * thick);
            //47 factor for development length
            PointF pt9  = new PointF(pt5.X - 47 * dia * 0.1f, pt5.Y);
            PointF pt10 = new PointF(pt7.X + 47 * dia * 0.1f, pt7.Y);

            pt9  = detailingChart.Point2D(pt9);
            pt10 = detailingChart.Point2D(pt10);
            pt5  = detailingChart.Point2D(pt5);
            pt6  = detailingChart.Point2D(pt6);
            pt7  = detailingChart.Point2D(pt7);
            pt8  = detailingChart.Point2D(pt8);
            DetailingGraphics.DrawLine(pt5, pt6);
            DetailingGraphics.DrawLine(pt7, pt8);
            DetailingGraphics.DrawLine(pt5, pt9);
            DetailingGraphics.DrawLine(pt7, pt10);
            pt1 = detailingChart.Point2D(new PointF(-0.5f * w + c, -2 * thick));
            pt2 = detailingChart.Point2D(new PointF(0.5f * w - c, -2 * thick));
            pt3 = detailingChart.Point2D(new PointF(-0.5f * w + c, -thick - 2 * c));
            pt4 = detailingChart.Point2D(new PointF(0.5f * w - c, -thick - 2 * c));
            DetailingGraphics.DrawLine(pt1, pt2);
            DetailingGraphics.DrwColor = "dimgrey";
            dim.DimDir = DimensionLine.DimensionDirection.left;
            DetailingGraphics.TextBase = TextBaseline.Hanging;
            dim.DrawDimLineAligned(pt1, pt2, (w - 2 * c).ToString());
            DetailingGraphics.DrwColor = "red";
            DetailingGraphics.DrawLine(pt1, pt3);
            dim.DimDir = DimensionLine.DimensionDirection.right;
            DetailingGraphics.DrwColor = "dimgrey";
            DetailingGraphics.TextBase = TextBaseline.Bottom;
            dim.DrawDimLineAligned(pt1, pt3, (thick - 2 * c).ToString());
            DetailingGraphics.DrwColor = "red";
            DetailingGraphics.DrawLine(pt2, pt4);
            float barArea    = (float)Math.PI * dia * dia / 4;
            int   nbar       = (int)Math.Ceiling(fDesign.Asy / barArea);
            int   barSpacing = 1000 / nbar;

            barSpacing = barSpacing.RoundDown() / 10;
            for (int i = (int)(2 * c); i < (w - 2 * c); i += barSpacing)
            {
                float  start = -0.5f * (w - 2 * c);
                float  y     = -(thick - c - 1.5f * dia * 0.1f);
                float  x     = start + i;
                PointF pt    = new PointF(x, y);
                pt = detailingChart.Point2D(pt);
                DetailingGraphics.DrawArc(pt.X, pt.Y, 1.5f * dia * 0.1f, 0, 2 * Math.PI);
            }
        }
Пример #3
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);
        }
Пример #4
0
        //#region
        //public async Task BiaxialGraphicsAsync()
        //{
        //    DiagramGraphics = new DovDrawings(diagramContext);
        //    DiagramGraphics.DrwColor = "white";
        //    DiagramGraphics.LineThickness = 2;
        //    diagramChart.ChartArea = new RectangleF(0, 0, DiagramCanvWidth, DiagramCanvHeight);
        //    bool start = true;
        //    float axialMax = 5;
        //    float axialMin = -5;
        //    float bendxMax = 6;
        //    float bendxMin = -6;
        //    float bendyMax = 4;
        //    float bendyMin = -4;
        //    foreach (KeyValuePair<float, List<float[]>> chartPoint in ColumnInter.BiaxialChartTable)
        //    {
        //        List<float[]> data = chartPoint.Value;
        //        List<float> bendingx = data[0].ToList();
        //        bendingx = bendingx.OrderBy(o => o).ToList();
        //        List<float> bendingy = data[1].ToList();
        //        bendingy = bendingy.OrderBy(o => o).ToList();
        //        List<float> axial = data[2].ToList();
        //        axial = axial.OrderBy(o => o).ToList();
        //        if (start)
        //        {
        //            axialMin = axial.First();
        //            axialMax = axial.Last();
        //            bendxMin = bendingx.First();
        //            bendxMax = bendingx.Last();
        //            bendyMin = bendingy.First();
        //            bendyMax = bendingy.Last();
        //            start = false;
        //        }
        //        else
        //        {
        //            if (axialMin > axial.First()) axialMin = axial.First();
        //            if (axialMax < axial.Last()) axialMax = axial.Last();
        //            if (bendxMin > bendingx.First()) bendxMin = bendingx.First();
        //            if (bendxMax < bendingx.Last()) bendxMax = bendingx.Last();
        //            if (bendyMin > bendingy.First()) bendyMin = bendingy.First();
        //            if (bendyMax < bendingy.Last()) bendyMax = bendingy.Last();

        //        }

        //    }
        //    diagramChart.XTick = (bendxMax - bendxMin) / 10;
        //    diagramChart.YTick = (bendyMax - bendyMin) / 10;
        //    diagramChart.ZTick = (axialMax - axialMin) / 10;
        //    float[] scaleLimits = new float[] { bendxMin, bendxMax, bendyMin, bendyMax, axialMin, axialMax };
        //    diagramChart.Azimuth = -125;
        //    diagramChart.Elevation = 35;
        //    ///
        //    //DiagramGraphics.DrwColor = "black";
        //    //PointF pt1 = new PointF(0, 0);
        //    //PointF pt2 = new PointF(DiagramCanvWidth, DiagramCanvHeight);
        //    //await DiagramGraphics.DrawRecAsync(pt1, pt2);
        //    ///
        //    SetGraphicLayout(DiagramCanvWidth, DiagramCanvHeight, 0, diagramChart, scaleLimits);
        //    await diagramChart.AddChartStyle(DiagramGraphics);
        //    DiagramGraphics.DrwColor = "red";
        //    diagramChart.ChartArea = new RectangleF(0, 0, DiagramCanvWidth, DiagramCanvHeight);
        //    SetGraphicLayout(DiagramCanvWidth, DiagramCanvHeight, 0, diagramChart, scaleLimits);
        //    diagramChart.Azimuth = -125;
        //    diagramChart.Elevation = 35;
        //    Matrix3 m = new Matrix3();
        //    m = Matrix3.AzimuthElevation(diagramChart.Elevation, diagramChart.Azimuth);
        //    int n = 0;
        //    foreach (KeyValuePair<float, List<float[]>> chartPoint in ColumnInter.BiaxialChartTable)
        //    {
        //        List<float[]> data = chartPoint.Value;
        //        List<float> bendingx = data[0].ToList();
        //        List<float> bendingy = data[1].ToList();
        //        List<float> axial = data[2].ToList();
        //        Point3[] pts = new Point3[bendingx.Count];
        //        for (int i = 0; i < bendingx.Count; i++)
        //        {
        //            pts[i] = new Point3(bendingx[i], bendingy[i], axial[i], 1);
        //            pts[i].Transform(m, diagramChart);
        //        }

        //        for (int j = 0; j < pts.Length - 1; j++)
        //        {
        //            await DiagramGraphics.DrawLineAsync(pts[j].X, pts[j].Y, pts[j + 1].X, pts[j + 1].Y);
        //        }
        //        n++;
        //    }
        //}
        //#endregion
        public void DrawBiaxialGraphics()
        {
            BiaxialGraphics               = new DovDrawings(biaxialContext);
            BiaxialGraphics.DrwColor      = "white";
            BiaxialGraphics.LineThickness = 3f;
            biaxialChart.ChartArea        = new RectangleF(0, 0, BiaxialCanvWidth, BiaxialCanvHeight);
            bool  start    = true;
            float axialMax = 5;
            float axialMin = -5;
            float bendxMax = 6;
            float bendxMin = -6;
            float bendyMax = 4;
            float bendyMin = -4;

            foreach (KeyValuePair <float, List <float[]> > chartPoint in ColumnInter.BiaxialChartTable)
            {
                List <float[]> data     = chartPoint.Value;
                List <float>   bendingx = data[0].ToList();
                bendingx = bendingx.OrderBy(o => o).ToList();
                List <float> bendingy = data[1].ToList();
                bendingy = bendingy.OrderBy(o => o).ToList();
                List <float> axial = data[2].ToList();
                axial = axial.OrderBy(o => o).ToList();
                if (start)
                {
                    axialMin = axial.First();
                    axialMax = axial.Last();
                    bendxMin = bendingx.First();
                    bendxMax = bendingx.Last();
                    bendyMin = bendingy.First();
                    bendyMax = bendingy.Last();
                    start    = false;
                }
                else
                {
                    if (axialMin > axial.First())
                    {
                        axialMin = axial.First();
                    }
                    if (axialMax < axial.Last())
                    {
                        axialMax = axial.Last();
                    }
                    if (bendxMin > bendingx.First())
                    {
                        bendxMin = bendingx.First();
                    }
                    if (bendxMax < bendingx.Last())
                    {
                        bendxMax = bendingx.Last();
                    }
                    if (bendyMin > bendingy.First())
                    {
                        bendyMin = bendingy.First();
                    }
                    if (bendyMax < bendingy.Last())
                    {
                        bendyMax = bendingy.Last();
                    }
                }
            }
            biaxialChart.XTick = (bendxMax - bendxMin) / 10;
            biaxialChart.YTick = (bendyMax - bendyMin) / 10;
            biaxialChart.ZTick = (axialMax - axialMin) / 10;
            float[] scaleLimits = new float[] { bendxMin, bendxMax, bendyMin, bendyMax, axialMin, axialMax };
            biaxialChart.Azimuth   = -125;
            biaxialChart.Elevation = 35;
            ///
            SetGraphicLayout(BiaxialCanvWidth, BiaxialCanvHeight, 0, biaxialChart, scaleLimits);
            biaxialChart.AddChartStyle(BiaxialGraphics);
            BiaxialGraphics.DrwColor      = "red";
            BiaxialGraphics.LineThickness = 3f;
            biaxialChart.ChartArea        = new RectangleF(0, 0, BiaxialCanvWidth, BiaxialCanvHeight);
            SetGraphicLayout(BiaxialCanvWidth, BiaxialCanvHeight, 0, biaxialChart, scaleLimits);
            biaxialChart.Azimuth   = -125;
            biaxialChart.Elevation = 35;
            Matrix3 m = new Matrix3();

            m = Matrix3.AzimuthElevation(biaxialChart.Elevation, biaxialChart.Azimuth);
            foreach (KeyValuePair <float, List <float[]> > chartPoint in ColumnInter.BiaxialChartTable)
            {
                List <float[]> data     = chartPoint.Value;
                List <float>   bendingx = data[0].ToList();
                List <float>   bendingy = data[1].ToList();
                List <float>   axial    = data[2].ToList();
                Point3[]       pts      = new Point3[bendingx.Count];
                for (int i = 0; i < bendingx.Count; i++)
                {
                    pts[i] = new Point3(bendingx[i], bendingy[i], axial[i], 1);
                    pts[i].Transform(m, biaxialChart);
                }
                for (int j = 0; j < pts.Length - 1; j++)
                {
                    BiaxialGraphics.DrawLine(pts[j].X, pts[j].Y, pts[j + 1].X, pts[j + 1].Y);
                }
            }
        }