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