Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Алексей (IdeaSoft) от 07-11-2017, 12:27:29

Название: Как заливку преобразовать в ее контур
Отправлено: Алексей (IdeaSoft) от 07-11-2017, 12:27:29
Возможно ли объект
Hatch преобразовать в PolyLine?
Если ли метод какой у штриховки которые это делает?
Название: Re: Как заливку преобразовать в ее контур
Отправлено: trir от 07-11-2017, 12:41:14
Hatch :
public Autodesk.AutoCAD.Geometry.Line2dCollection GetHatchLinesData()

HatchLoop :
public Autodesk.AutoCAD.DatabaseServices.BulgeVertexCollection Polyline { get; }
Название: Re: Как заливку преобразовать в ее контур
Отправлено: Александр Ривилис от 07-11-2017, 12:52:04
Возможно ли объект
Hatch преобразовать в PolyLine?
Можно. Хотя это может быть и не полилиния и не одна полилиния (если штриховка с дырками).
Вообще-то "поиск рулит": http://adn-cis.org/kak-vosstanovit-poteryannyie-graniczyi-shtrixovki.html
Название: Re: Как заливку преобразовать в ее контур
Отправлено: Александр Ривилис от 07-11-2017, 12:52:53
Hatch :
public Autodesk.AutoCAD.Geometry.Line2dCollection GetHatchLinesData()

HatchLoop :
public Autodesk.AutoCAD.DatabaseServices.BulgeVertexCollection Polyline { get; }
Работает не для всех типов штриховки, а только для "избранных".
Название: Re: Как заливку преобразовать в ее контур
Отправлено: Алексей (IdeaSoft) от 07-11-2017, 12:55:21
Hatch :public Autodesk.AutoCAD.Geometry.Line2dCollection GetHatchLinesData()HatchLoop :public Autodesk.AutoCAD.DatabaseServices.BulgeVertexCollection Polyline { get; }
А как проверить, что объект является Hatch или HatchLoop?
Название: Re: Как заливку преобразовать в ее контур
Отправлено: Александр Ривилис от 07-11-2017, 12:57:04
А как проверить, что объект является Hatch или HatchLoop?
Не слушай trir, слушай Александр Ривилис :-D
Название: Re: Как заливку преобразовать в ее контур
Отправлено: trir от 07-11-2017, 13:14:07
Цитировать
А как проверить, что объект является Hatch или HatchLoop?
Код - C# [Выбрать]
  1. int nLoops = hatch.NumberOfLoops;
  2. for (int i = 0; i < nLoops; i++) {
  3.    HatchLoop loop = hatch.GetLoopAt(i);
  4.    if (loop.IsPolyline) {

Цитировать
Работает не для всех типов штриховки, а только для "избранных".
если нет "дуговых" сегментов, а иначе

HatchLoop : public Autodesk.AutoCAD.Geometry.Curve2dCollection Curves { get; }