コード例 #1
0
        public void DrawIsolatedFooting()
        {
            FootingGraphics.Clear(-50, -50, footingCanvWidth + 50, footingCanvHeight + 50);
            FootingGraphics.DrwColor      = "dimgray";
            FootingGraphics.FillColorOpt  = "gray";
            FootingGraphics.LineThickness = 2;
            footingChart.ChartArea        = new RectangleF(0, 0, footingCanvWidth, footingCanvHeight);
            DimensionLine dimLine = new DimensionLine();

            dimLine.DimDir  = DimensionLine.DimensionDirection.left;
            dimLine.Graphic = FootingGraphics;
            float limit = (footingData.Width > footingData.Length ? footingData.Width : footingData.Length);
            float xMax  = limit * 0.5f;
            float xMin  = -limit * 0.5f;
            float yMax  = limit * 0.5f;
            float yMin  = -limit * 0.5f;
            float zMax  = 1.2f * footingData.Thickness;
            float zMin  = -1.2f * footingData.Thickness;

            float[] scaleLimits = new float[] { xMin, xMax, yMin, yMax, zMin, zMax };
            //float[] scaleLimits = new float[] { -5, 5, -4, 4,-6, 6 };
            SetGraphicLayout(footingCanvWidth, footingCanvHeight, 0, footingChart, scaleLimits);
            Matrix3 m = new Matrix3();

            m = Matrix3.AzimuthElevation(footingChart.Elevation, footingChart.Azimuth);
            Point3[] pts = FootingCoordinate(footingData.Width, footingData.Length, footingData.Thickness);
            PointF[] pta = new PointF[4];

            for (int i = 0; i < pts.Length; i++)
            {
                pts[i].Transform(m, footingChart);
            }
            int[] i0, i1;
            i0 = new int[4] {
                1, 2, 7, 6
            };
            i1 = new int[4] {
                2, 3, 4, 7
            };
            float elevation = footingChart.Elevation;
            float azimuth   = footingChart.Azimuth;

            if (elevation >= 0)
            {
                if (azimuth >= -180 && azimuth < -90)
                {
                    i0 = new int[4] {
                        4, 5, 6, 3
                    };
                    i1 = new int[4] {
                        5, 0, 7, 6
                    };
                }
                else if (azimuth >= -90 && azimuth < 0)
                {
                    i0 = new int[4] {
                        0, 7, 2, 1
                    };
                    i1 = new int[4] {
                        5, 0, 7, 6
                    };
                }
                else if (azimuth >= 0 && azimuth < 90)
                {
                    i0 = new int[4] {
                        0, 7, 2, 1
                    };
                    i1 = new int[4] {
                        1, 4, 3, 2
                    };
                }
                else if (azimuth >= 90 && azimuth <= 180)
                {
                    i0 = new int[4] {
                        4, 5, 6, 3
                    };
                    i1 = new int[4] {
                        1, 4, 3, 2
                    };
                }
            }
            else if (elevation < 0)
            {
                if (azimuth >= -180 && azimuth < -90)
                {
                    i0 = new int[4] {
                        1, 4, 3, 2
                    };
                    i1 = new int[4] {
                        1, 0, 7, 2
                    };
                }
                else if (azimuth >= -90 && azimuth < 0)
                {
                    i0 = new int[4] {
                        4, 5, 6, 3
                    };
                    i1 = new int[4] {
                        1, 4, 3, 2
                    };
                }
                else if (azimuth >= 0 && azimuth < 90)
                {
                    i0 = new int[4] {
                        5, 0, 7, 6
                    };
                    i1 = new int[4] {
                        4, 5, 6, 3
                    };
                }
                else if (azimuth >= 90 && azimuth <= 180)
                {
                    i0 = new int[4] {
                        5, 0, 7, 6
                    };
                    i1 = new int[4] {
                        1, 0, 7, 2
                    };
                }
            }
            pta[0] = new PointF(pts[i0[0]].X, pts[i0[0]].Y);
            pta[1] = new PointF(pts[i0[1]].X, pts[i0[1]].Y);
            pta[2] = new PointF(pts[i0[2]].X, pts[i0[2]].Y);
            pta[3] = new PointF(pts[i0[3]].X, pts[i0[3]].Y);
            FootingGraphics.DrwColor     = "dimgray";
            FootingGraphics.FillColorOpt = "gray";
            FootingGraphics.FillPolygone(pta);
            dimLine.DrawDimLineAligned(pta[0], pta[3], string.Format("W={0}", footingData.Width));
            pta[0] = new PointF(pts[i1[0]].X, pts[i1[0]].Y);
            pta[1] = new PointF(pts[i1[1]].X, pts[i1[1]].Y);
            pta[2] = new PointF(pts[i1[2]].X, pts[i1[2]].Y);
            pta[3] = new PointF(pts[i1[3]].X, pts[i1[3]].Y);
            FootingGraphics.DrwColor     = "dimgray";
            FootingGraphics.FillColorOpt = "gray";
            FootingGraphics.FillPolygone(pta);
            dimLine.DrawDimLineAligned(pta[0], pta[1], string.Format("L={0}", footingData.Length));
            dimLine.DrawDimLineAligned(pta[1], pta[2], footingData.Thickness.ToString());
            pta[0] = new PointF(pts[2].X, pts[2].Y);
            pta[1] = new PointF(pts[3].X, pts[3].Y);
            pta[2] = new PointF(pts[6].X, pts[6].Y);
            pta[3] = new PointF(pts[7].X, pts[7].Y);
            FootingGraphics.DrwColor     = "dimgray";
            FootingGraphics.FillColorOpt = "gray";
            FootingGraphics.FillPolygone(pta);
            //Problem Around Here including the column graphics doesnt work well
            DrawColumn();
            SetGraphicLayout(footingCanvWidth, footingCanvHeight, 0, footingChart, scaleLimits);
            Point3 pto = FootingCoordinate(footingData.Width, footingData.Length, footingData.Thickness)[0];
            float  x   = footingData.ColLocX - (footingData.Width * 0.5f);
            float  y   = footingData.ColLocY - (footingData.Length * 0.5f);
            Point3 ptd = new Point3(pto.X, pto.Y + footingData.ColLocY, 0, 1);
            Point3 ptc = new Point3(pto.X + footingData.ColLocX, pto.Y, 0, 1);
            Point3 ptn = new Point3(x, y, 0, 1);

            ptd.Transform(m, footingChart);
            ptc.Transform(m, footingChart);
            ptn.Transform(m, footingChart);

            FootingGraphics.DrwColor      = "white";
            FootingGraphics.FillColorOpt  = "yellow";
            FootingGraphics.TextFont      = "10 arial";
            FootingGraphics.LineThickness = 0.5f;
            FootingGraphics.DrawLine(new PointF(ptd.X, ptd.Y), new PointF(ptn.X, ptn.Y));
            FootingGraphics.DrawLine(new PointF(ptc.X, ptc.Y), new PointF(ptn.X, ptn.Y));
            PointF ptt = new PointF(0.5f * (ptc.X + ptn.X), 0.5f * (ptc.Y + ptn.Y));
            float  ang = CalcAngle(new PointF(ptc.X, ptc.Y), new PointF(ptn.X, ptn.Y));

            dimLine.DrawTextAtAngle(ptt, ang, string.Format("x={0}", footingData.ColLocX));
            PointF ptm = new PointF(0.5f * (ptd.X + ptn.X), 0.5f * (ptd.Y + ptn.Y));

            ang = CalcAngle(new PointF(ptd.X, ptd.Y), new PointF(ptn.X, ptn.Y));
            dimLine.DrawTextAtAngle(ptm, ang, string.Format("y={0}", footingData.ColLocY));
            FootingGraphics.DrwColor = "green";
            Symbols symb = new Symbols();

            symb.Graphic = FootingGraphics;
            //Loading Assignment
            Point3 loadPt = ColumnCoordinate(x, y, footingData.ColumnWidth, footingData.ColumnLength, footingData.Thickness)[0];

            loadPt = new Point3(loadPt.X + 0.5f * footingData.ColumnWidth, loadPt.Y + footingData.ColumnLength * 0.5f, footingData.Thickness, 1);
            Point3 axialPt = new Point3(loadPt.X, loadPt.Y, loadPt.Z + 40, 1);
            Point3 mxPt    = new Point3(loadPt.X + 80, loadPt.Y, loadPt.Z, 1);
            Point3 mxmPt   = new Point3(loadPt.X + 40, loadPt.Y, loadPt.Z, 1);
            Point3 myPt    = new Point3(loadPt.X, loadPt.Y - 80, loadPt.Z, 1);
            Point3 mymPt   = new Point3(loadPt.X, loadPt.Y - 40, loadPt.Z, 1);

            loadPt.Transform(m, footingChart);
            axialPt.Transform(m, footingChart);
            mxPt.Transform(m, footingChart);
            myPt.Transform(m, footingChart);
            mxmPt.Transform(m, footingChart);
            mymPt.Transform(m, footingChart);
            FootingGraphics.DrawLine(loadPt.X, loadPt.Y, axialPt.X, axialPt.Y);
            FootingGraphics.DrawLine(loadPt.X, loadPt.Y, mxPt.X, mxPt.Y);
            FootingGraphics.DrawLine(loadPt.X, loadPt.Y, myPt.X, myPt.Y);
            PointF ptb   = new PointF(loadPt.X, loadPt.Y);
            PointF pte   = new PointF(axialPt.X, axialPt.Y);
            float  angle = -CalcAngle(ptb, pte);

            if (footingData.Pn < 0)
            {
                symb.DrawArrow(new PointF(axialPt.X, axialPt.Y), 5, 10, -angle);
            }
            else
            {
                symb.DrawArrow(new PointF(loadPt.X, loadPt.Y), 5, 10, angle);
            }

            FootingGraphics.FillColorOpt = "black";
            dimLine.DrawTextAtAngle(pte, -angle, string.Format("Pn={0}", footingData.Pn));
            ptb   = new PointF(loadPt.X, loadPt.Y);
            pte   = new PointF(mxPt.X, mxPt.Y);
            angle = CalcAngle(ptb, pte);
            if (footingData.Mx < 0)
            {
                symb.DrawArrow(new PointF(mxPt.X, mxPt.Y), 5f, 10, angle);
                symb.DrawArrow(new PointF(mxmPt.X, mxmPt.Y), 5f, 10, angle);
            }
            else
            {
                angle += 180;
                symb.DrawArrow(new PointF(loadPt.X, loadPt.Y), 5f, 10, angle);
                symb.DrawArrow(new PointF(mxmPt.X, mxmPt.Y), 5f, 10, angle);
            }

            dimLine.DrawTextAtAngle(pte, angle, string.Format("Mx={0}", footingData.Mx));
            ptb   = new PointF(loadPt.X, loadPt.Y);
            pte   = new PointF(myPt.X, myPt.Y);
            angle = -CalcAngle(ptb, pte);
            if (footingData.My < 0)
            {
                angle += 180;
                symb.DrawArrow(new PointF(myPt.X, myPt.Y), 5f, 10, angle);
                symb.DrawArrow(new PointF(mymPt.X, mymPt.Y), 5f, 10, angle);
            }
            else
            {
                symb.DrawArrow(new PointF(loadPt.X, loadPt.Y), 5f, 10, angle);
                symb.DrawArrow(new PointF(mymPt.X, mymPt.Y), 5f, 10, angle);
            }

            dimLine.DrawTextAtAngle(pte, angle, string.Format("My={0}", footingData.My));
        }
コード例 #2
0
        public void DrawColumn()
        {
            FootingGraphics.DrwColor      = "dimgray";
            FootingGraphics.FillColorOpt  = "gray";
            FootingGraphics.LineThickness = 2;
            footingChart.ChartArea        = new RectangleF(0, 0, footingCanvWidth, footingCanvHeight);
            float limit = (footingData.Width > footingData.Length ? footingData.Width : footingData.Length);
            float xMax  = limit * 0.5f;
            float xMin  = -limit * 0.5f;
            float yMax  = limit * 0.5f;
            float yMin  = -limit * 0.5f;
            float zMax  = 1.2f * footingData.Thickness;
            float zMin  = -1.2f * footingData.Thickness;

            float[] scaleLimits = new float[] { xMin, xMax, yMin, yMax, zMin, zMax };
            SetGraphicLayout(footingCanvWidth, footingCanvHeight, 0, footingChart, scaleLimits);
            Matrix3 m = new Matrix3();

            m = Matrix3.AzimuthElevation(footingChart.Elevation, footingChart.Azimuth);
            PointF[] pta = new PointF[4];
            int[]    i0, i1;
            i0 = new int[4] {
                1, 2, 7, 6
            };
            i1 = new int[4] {
                2, 3, 4, 7
            };
            float elevation = footingChart.Elevation;
            float azimuth   = footingChart.Azimuth;

            if (elevation >= 0)
            {
                if (azimuth >= -180 && azimuth < -90)
                {
                    i0 = new int[4] {
                        4, 5, 6, 3
                    };
                    i1 = new int[4] {
                        5, 0, 7, 6
                    };
                }
                else if (azimuth >= -90 && azimuth < 0)
                {
                    i0 = new int[4] {
                        0, 7, 2, 1
                    };
                    i1 = new int[4] {
                        5, 0, 7, 6
                    };
                }
                else if (azimuth >= 0 && azimuth < 90)
                {
                    i0 = new int[4] {
                        0, 7, 2, 1
                    };
                    i1 = new int[4] {
                        1, 4, 3, 2
                    };
                }
                else if (azimuth >= 90 && azimuth <= 180)
                {
                    i0 = new int[4] {
                        4, 5, 6, 3
                    };
                    i1 = new int[4] {
                        1, 4, 3, 2
                    };
                }
            }
            else if (elevation < 0)
            {
                if (azimuth >= -180 && azimuth < -90)
                {
                    i0 = new int[4] {
                        1, 4, 3, 2
                    };
                    i1 = new int[4] {
                        1, 0, 7, 2
                    };
                }
                else if (azimuth >= -90 && azimuth < 0)
                {
                    i0 = new int[4] {
                        4, 5, 6, 3
                    };
                    i1 = new int[4] {
                        1, 4, 3, 2
                    };
                }
                else if (azimuth >= 0 && azimuth < 90)
                {
                    i0 = new int[4] {
                        5, 0, 7, 6
                    };
                    i1 = new int[4] {
                        4, 5, 6, 3
                    };
                }
                else if (azimuth >= 90 && azimuth <= 180)
                {
                    i0 = new int[4] {
                        5, 0, 7, 6
                    };
                    i1 = new int[4] {
                        1, 0, 7, 2
                    };
                }
            }
            float x = footingData.ColLocX - (footingData.Width * 0.5f);
            float y = footingData.ColLocY - (footingData.Length * 0.5f);

            Point3[] ptc = ColumnCoordinate(x, y, footingData.ColumnWidth, footingData.ColumnLength, footingData.Thickness);
            SetGraphicLayout(footingCanvWidth, footingCanvHeight, 0, footingChart, scaleLimits);
            for (int i = 0; i < ptc.Length; i++)
            {
                ptc[i].Transform(m, footingChart);
            }
            pta[0] = new PointF(ptc[i0[0]].X, ptc[i0[0]].Y);
            pta[1] = new PointF(ptc[i0[1]].X, ptc[i0[1]].Y);
            pta[2] = new PointF(ptc[i0[2]].X, ptc[i0[2]].Y);
            pta[3] = new PointF(ptc[i0[3]].X, ptc[i0[3]].Y);
            FootingGraphics.FillColorOpt = "grey";
            FootingGraphics.FillPolygone(pta);
            pta[0] = new PointF(ptc[i1[0]].X, ptc[i1[0]].Y);
            pta[1] = new PointF(ptc[i1[1]].X, ptc[i1[1]].Y);
            pta[2] = new PointF(ptc[i1[2]].X, ptc[i1[2]].Y);
            pta[3] = new PointF(ptc[i1[3]].X, ptc[i1[3]].Y);
            FootingGraphics.FillColorOpt = "grey";
            FootingGraphics.FillPolygone(pta);
            pta[0] = new PointF(ptc[2].X, ptc[2].Y);
            pta[1] = new PointF(ptc[3].X, ptc[3].Y);
            pta[2] = new PointF(ptc[6].X, ptc[6].Y);
            pta[3] = new PointF(ptc[7].X, ptc[7].Y);
            FootingGraphics.FillColorOpt = "grey";
            FootingGraphics.FillPolygone(pta);
        }
コード例 #3
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);
                }
            }
        }