У меня есть простая 2D -полилина, который включает в себя один дуговой сегмент. Я пытаюсь временно воссоздать этот сегмент дуги как обычную дугу, чтобы я мог использовать его для выполнения некоторых задач. Это мой фрагмент кода: < /p>
Код: Выделить всё
if (pline.GetSegmentType(i) == _AcDb.SegmentType.Arc)
{
_AcGe.CircularArc2d arcSeg = pline.GetArcSegment2dAt(i);
_AcGe.Point3d center = new _AcGe.Point3d(arcSeg.Center.X, arcSeg.Center.Y, 0);
_AcGe.Vector3d normal = _AcGe.Vector3d.ZAxis;
using (_AcDb.Arc segAsArc = new _AcDb.Arc(
center,
normal,
arcSeg.Radius,
arcSeg.StartAngle,
arcSeg.EndAngle))
{
if (segAsArc.Length >= minCreaseLength)
{
DrawCounterFromArc(segAsArc, indentLength, counterWidth, btr, acTrans);
segAsArc.Layer = "0";
btr.AppendEntity(segAsArc);
acTrans.AddNewlyCreatedDBObject(segAsArc, true);
}
} // arc is automatically disposed here
continue;
}
< / code>
Как вы можете видеть в моем рисунке CAD, белой дуге, в то время как правильный центр / радиус фактически запускается / останавливается в неправильном месте. Специальные сущности показывают, где начинается / заканчивается сегмент дуги. В результате мои продолжающиеся действия ошибочны, потому что моя температурная дуговая сущность на самом деле не находится в нужном месте. Создан правильно? < /p>
ps. Я добавляю только дугу в базу данных с целью подтверждения того, что дуга находится в правильном положении. Когда я знаю, что мой код верен, я не буду его добавлять. < /P>
На основе приведенных ниже данных проблема (как и ожидалось) - это значения углов начала /конца. < /P>
gr /br /> Угол окончания: 143.11 < /li>
< /ul>
< /li>
One One Constraled: < /p>
Угол начала: 356,38 < /li>
end agne: 139.48 < /li>
< /br />
end: 139,48 < /li>
/> < /ul>
data: < /h3>
The polyline with arc segment:
---------- Lwpolyline ---------------------------------------------
Handle: 766
Current space: Model
Layer: Crease
Color: BYLAYER
Linetype: ByLayer
Polyline Flags: Open
Area: 272494.03
Perimeter: 1486.69
Location: X= 1740.45 Y= 27.73 Z= 0.00
Location: X= 1810.81 Y= 196.59 Z= 0.00
Location: X= 1793.92 Y= 371.08 Z= 0.00
Location: X= 1926.19 Y= 525.87 Z= 0.00
Bulge: -0.72
Location: X= 2238.59 Y= 399.23 Z= 0.00
Location: X= 2348.35 Y= 185.34 Z= 0.00
Location: X= 2303.32 Y= -51.07 Z= 0.00
Generated by app:
---------- Arc ----------------------------------------------------
Handle: 777
Current space: Model
Layer: 0
Color: BYLAYER
Linetype: ByLayer
Radius: 177.68
Center Point: X= 2061.27 Y= 410.45 Z= 0.00
Start Point: X= 2238.94 Y= 410.45 Z= 0.00
End Point: X= 1919.18 Y= 517.11 Z= 0.00
Arc Length: 443.77
Start angle: 0.00
End angle: 143.11
Manually constructed arc:
---------- Arc ----------------------------------------------------
Handle: 77A
Current space: Model
Layer: Crease
Color: BYLAYER
Linetype: ByLayer
Radius: 177.68
Center Point: X= 2061.27 Y= 410.45 Z= 0.00
Start Point: X= 2238.59 Y= 399.23 Z= 0.00
End Point: X= 1926.19 Y= 525.87 Z= 0.00
Arc Length: 443.77
Start angle: 356.38
End angle: 139.48
Я нашел эту статью:
https://adndevblog.typepad.com/autocad/ ... htmrtymlty /> Расследование ... < /p>
Подробнее здесь: https://stackoverflow.com/questions/796 ... segment-in