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)); }