Я создаю 2D-приложение CAD на C# для изучения кодирования. Но я остановился на простых вещах. Я много пробовал, но так и не понял. Я просто хотел, чтобы после использования линии или полилинии моя текущая позиция была сброшена, но это не так.
Если это возможно, я могу отправить сюда весь проект.
Вот мой код:< /p>
Я создаю 2D-приложение CAD на C# для изучения кодирования. Но я остановился на простых вещах. Я много пробовал, но так и не понял. Я просто хотел, чтобы после использования линии или полилинии моя текущая позиция была сброшена, но это не так. Если это возможно, я могу отправить сюда весь проект. Вот мой код:< /p> [code] private void drawing_MouseDown(object sender, MouseEventArgs e) { if(e.Button == MouseButtons.Left) { if (active_zoom) { switch (zoomClick) { case 1: firstCorner = e.Location; zoomClick++; break; case 2: SetZoomWin(firstCorner,e.Location); ActiveCursor(cursorIndex, cursorSize); active_zoom = false; zoomClick = 1; break; } } if(active_drawing && !active_zoom) { switch (DrawIndex) { case 0: //nokta entities.Add(new Entities.Point(currentPosition)); break; case 1: //çizgi switch (ClickNum) { case 1: firstPoint = currentPosition; ClickNum++; break; case 2: entities.Add(new Line(firstPoint, currentPosition)); firstPoint = currentPosition; break; } break; case 2: // Çoklu çizgi Polyline firstPoint = currentPosition; tempPolyline.Vertexes.Add(new LwPolylineVertex(firstPoint.ToVector2)); ClickNum = 2; break; case 3://dikdörtgen switch (ClickNum) { case 1: firstPoint = currentPosition; ClickNum++; break; case 2: entities.Add(Method.PointToRect(firstPoint, currentPosition, out direction)); CancelAll(); break; } break; case 41: //Yay (3 nokta) case 42: //Yay (ilk, merkez, son) case 43: //Yay (merkez,ikinci,son) switch (ClickNum) { case 1: firstPoint = currentPosition; ClickNum++; break; case 2: secondPoint = currentPosition; ClickNum++; break; case 3: Arc a = new Arc(); switch (DrawIndex) { case 41: // 3 nokta a = Method.GetArcWith3Points(firstPoint, secondPoint, currentPosition); break; case 42: //ilk, merkez, son a = Method.GetArcWithCenterStartEnd(secondPoint, firstPoint, currentPosition); break; case 43: //merkez,ikinci,son a = Method.GetArcWithCenterStartEnd(firstPoint, secondPoint, currentPosition); break; } entities.Add(a); CancelAll(); break; } break; case 44: // yay (merkez, ikinci, açı) case 45: // yay (merkez, ikinci, uzunluk) case 46: // yay (ilk, ikinci, açı) case 47: // yay (ilk, merkez, uzunluk) case 48: // yay (ilk, ikinci, radius) case 49: // yay (ilk, merkez, açı) switch (ClickNum) { case 1: firstPoint = currentPosition; entities.Add(new Entities.Point(firstPoint)); ClickNum++; break; case 2: secondPoint = currentPosition; entities.Add(new Entities.Point(secondPoint)); using (var getValue = new EntryForms.GetDoubleValue()) { switch (DrawIndex) { case 44: case 46: case 49: getValue.Title = "Açı"; break; case 45: case 47: getValue.Title = "Uzunluk"; break; case 48: getValue.Title = "Radius"; break; } var result = getValue.ShowDialog(); if (result == DialogResult.OK) { switch (DrawIndex) { case 44: // merkez, ikinci, açı entities.Add(Method.GetArcWithCenterStartAngle(firstPoint, currentPosition, getValue.ResultValue)); break; case 45: //merkez, ikinci, uzunluk entities.Add(Method.GetArcWithCenterStartLength(firstPoint, currentPosition, getValue.ResultValue)); break; case 46: //ilk, ikinci, açı entities.Add(Method.GetArcWithStartEndAngle(firstPoint, currentPosition, getValue.ResultValue)); break; case 47: //ilk, Merkez, uzunluk entities.Add(Method.GetArcWithCenterStartLength(currentPosition, firstPoint, getValue.ResultValue)); break; case 48: //entity.Add(Method.GetArcWithStartEndRadius); break; case 49: entities.Add(Method.GetArcWithCenterStartAngle(currentPosition, firstPoint, getValue.ResultValue)); break; } } CancelAll(); } break; } break; case 51://çember(Merkez - radius) case 52://çember(Merkez - Çap) case 53: //3 noktalı çember case 54: //2 noktalı çember switch (ClickNum) { case 1: firstPoint = currentPosition; ClickNum++; break; case 2: switch (DrawIndex) { case 51: double r = firstPoint.DistanceFrom(currentPosition); entities.Add(new Entities.Circle(firstPoint, r)); CancelAll(); break; case 52: r = firstPoint.DistanceFrom(currentPosition) / 2; entities.Add(new Entities.Circle(firstPoint, r)); CancelAll(); break; case 53: secondPoint = currentPosition; ClickNum++; break; case 54: entities.Add(Method.GetCircleWithTwoPoints(firstPoint, currentPosition)); CancelAll(); break; } break; case 3: entities.Add(Method.GetCircleWith3Point(firstPoint, secondPoint, currentPosition)); CancelAll(); break; } break; case 61: //elips case 62: //eliptik yay switch (ClickNum) { case 1: firstPoint = currentPosition; ClickNum++; break; case 2: secondPoint = currentPosition; ClickNum++; break; case 3: switch (DrawIndex) { case 61: Ellipse ellipse = Method.GetEllipse(firstPoint, secondPoint, currentPosition); entities.Add(ellipse); CancelAll(); break; case 62: thirdPoint = currentPosition; tempEllipse.Add(Method.GetEllipse(firstPoint, secondPoint, thirdPoint)); ClickNum++; break; } break; case 4: fourthPoint = currentPosition; ClickNum++; break; case 5: entities.Add(Method.GetEllipticalArc(firstPoint, secondPoint, thirdPoint, fourthPoint, currentPosition)); CancelAll(); break; } break; case 7: //çokgen switch (ClickNum) { case 1: firstPoint = currentPosition; ClickNum++; using (var setpolygon = new EntryForms.SetPolygonValuesForm()) { var result = setpolygon.ShowDialog(); if (result == DialogResult.OK) { sidesQty = setpolygon.SidesQty; inscribed = setpolygon.Inscribed; } else CancelAll(); } break; case 2: entities.Add(Method.GetPolygon(firstPoint, currentPosition, sidesQty, inscribed)); CancelAll(); break; } break; } }
if (active_modify) { if(active_selection) segmentIndex = Method.GetSegmentIndex(entities, currentPosition, CursorRect(currentPosition), out Vector3 clickPoint); if (!active_selection) { switch (ClickNum) { case 1: firstPoint = currentPosition; ClickNum++; break; case 2: switch (Modify1Index) { case 0: // Copy object Method.Modify1Selection(Modify1Index, entities, firstPoint, currentPosition); break; case 1: // Move object Method.Modify1Selection(Modify1Index, entities, firstPoint, currentPosition); CancelAll(); break; } break; } } } drawing.Refresh(); } } #endregion
#region Paint Line extline = new Line(); private void drawing_Paint(object sender, PaintEventArgs e) { e.Graphics.SetParameters(XScroll, YScroll, ScaleFactor, Pixel_to_Mn(drawing.Height)); Pen pen = new Pen(Color.Black,0.1f); Pen extpen = new Pen(Color.Purple, 0.1f); extpen.DashPattern = new float[] { 1.0f / ScaleFactor, 2.0f / ScaleFactor };
//Çizgiyi devam ettirilebilir kıl extline = new Entities.Line(firstPoint, currentPosition); // Temp ellipse if (tempEllipse.Count > 0) { foreach(Ellipse elp in tempEllipse) e.Graphics.DrawEllipse(extpen, elp); }
switch (DrawIndex) { case 1://çizgi case 2://çoklu çizgi if (ClickNum == 2) { e.Graphics.DrawLine(extpen, extline); }
break; case 3://dikdörtgen if(ClickNum == 2) { LwPolyline lw = Method.PointToRect(firstPoint, currentPosition, out direction); e.Graphics.DrawLwPolyline(extpen, lw); } break; case 41:// 3 nokta yay case 42:// ilk merkez son - yay case 43:// merkez ilk son - yay switch (ClickNum) { case 2: e.Graphics.DrawLine(extpen, extline); break; case 3: Arc a = new Arc(); switch (DrawIndex) { case 41: a = Method.GetArcWith3Points(firstPoint, secondPoint, currentPosition); break; case 42: extline = new Line(secondPoint, currentPosition); e.Graphics.DrawLine(extpen, extline); a = Method.GetArcWithCenterStartEnd(secondPoint, firstPoint, currentPosition); break; case 43: e.Graphics.DrawLine(extpen, extline); a = Method.GetArcWithCenterStartEnd(firstPoint, secondPoint, currentPosition); break; } e.Graphics.DrawArc(extpen, a); break; } break; case 44: //yay (merkez ikinci ve açı) case 45: //yay (merkez ikinci ve uzunluk) case 46: //yay (birinci, ikinci ve açı) case 47: //yay (birinci, merkez ve uzunluk) case 48: //yay (birinci, ikinci ve radius) case 49: //yay (birinci, merkez ve açı) switch (ClickNum) { case 2: e.Graphics.DrawLine(extpen, extline); break; } break; case 51: // Çember (merkez, radius) case 52: // Çember (çember, uzunluk) switch (ClickNum) { case 2: e.Graphics.DrawLine(extpen, extline); double r = firstPoint.DistanceFrom(currentPosition); Circle circle = new Entities.Circle(firstPoint, r); if (DrawIndex == 52) circle = new Circle(firstPoint, r / 2); e.Graphics.DrawCircle(extpen, circle); break; } break; case 53: // Çember (3 nokta) switch (ClickNum) { case 2: e.Graphics.DrawLine(extpen, extline); break; case 3: Entities.Circle c = Methods.Method.GetCircleWith3Point(firstPoint, secondPoint, currentPosition); e.Graphics.DrawCircle(extpen, c); break; } break; case 54: //Çember (2 nokta) switch (ClickNum) { case 2: Circle c = Method.GetCircleWithTwoPoints(firstPoint, currentPosition); e.Graphics.DrawCircle(extpen, c); break; } break; case 61: // Tam Elips case 62: //eliptik yay extline = new Entities.Line(firstPoint, currentPosition); switch (ClickNum) { case 2: case 4: e.Graphics.DrawLine(extpen, extline); break; case 3: e.Graphics.DrawLine(extpen, extline); Ellipse ellipse = Method.GetEllipse(firstPoint, secondPoint, currentPosition); e.Graphics.DrawEllipse(extpen, ellipse); break; case 5: e.Graphics.DrawLine(extpen, extline); Ellipse elp = Method.GetEllipticalArc(firstPoint,secondPoint,thirdPoint,fourthPoint,currentPosition); e.Graphics.DrawEllipticalArc(pen, elp); break; } break; case 7://Çokgen if(ClickNum == 2) { e.Graphics.DrawLine(extpen, extline); LwPolyline lw = Method.GetPolygon(firstPoint, currentPosition, sidesQty, inscribed); e.Graphics.DrawLwPolyline(extpen, lw); } break; } #endregion
#region Extended of modify if (active_modify) { switch (ClickNum) { case 2: e.Graphics.ExtendedOfModify(extpen, entities, firstPoint, currentPosition); break; }
} #endregion
#region draw zoom rect if (active_zoom && !active_pan) { switch (zoomClick) { case 2: LwPolyline rect = Method.PointToRect(PointToCartesian(firstCorner), currentPosition, out direction); e.Graphics.DrawLwPolyline(new Pen(Color.Red, 0), rect); break; } } #endregion } #endregion
#region Convert system point to world point private Vector3 PointToCartesian(System.Drawing.Point point) { return new Vector3((Pixel_to_Mn(point.X) + XScroll) / ScaleFactor, (Pixel_to_Mn(drawing.Height - point.Y) - YScroll) / ScaleFactor); } #endregion
Я создаю 2D-приложение CAD на C# для изучения кодирования. Но я остановился на простых вещах. Я много пробовал, но так и не понял. Я просто хотел, чтобы после использования линии или полилинии моя текущая позиция была сброшена, но это не так.
Если...
В чем проблема в моем HTML, почему она не принимается?PHPWord DOMDocument::loadXML(): Opening and ending tag mismatch: br line 1 and p in Entity, line: 1
Я пытаюсь построить полилинию листа с помощью моего фрейма данных.
У меня есть такие данные
Datetime Lat lon Cars
2021-06-01 4.5 1.1 Car1
2021-06-01 4.8 0.8 Car1
2021-06-01 4.4 0.9 Car2
2021-06-02 4.7 1.0 Car2
Я пытаюсь упростить многие Polygon_with_holes_2, некоторые из которых имеют общие границы. Я заметил, что при запуске следующего фрагмента кода C++ я получаю разные результаты во время разных прогонов (т. е. количество точек после упрощения разное...
в угловом применении, используя «Листовка»: «^1.9.4» и «Листовка-контекст»: «^1.4.0», я нарисую график, где узлы соединены разделами.
для узлов i Создайте маркеры
const options = {
contextmenu: true,
contextmenuInheritItems: false,...