Тема: Как программно получить координаты различных контуров из AutoCAD в Delphi?

Моё задание звучит так:
"Автоматизация подсчета площадей и объемов рудных тел, входящих в границы карьерного пространства ...
Исхондыми данными являются планы горизонтов в .dwg (AutoCAD) файлах.
Ограничения и допущения: контуры всех рудных тел являются замкнутыми линиями; допускаются пересечения и вложенность (в т.ч. и двойная) контуров.
Задания на первый этап работы:
1. Найти и построить пересечения двух (и более) заданных контуров (контур карьера и контур рудного тела) из любого плана горизонтов.
2. Построить дерево вложенности контуров рудных тел из любого плана горизонтов."
Как получить координаты различных контуров?

Re: Как программно получить координаты различных контуров из AutoCAD в Delphi?

> Лик
Для начала выясни какими примитивами рисуются эти контура (POLYLINE, LWPOLYLINE, SPLINE и т.д.)
Потом посмотри объектную модель AutoCAD. Для каждого из этих примитивов есть возможность получить вершины.

Re: Как программно получить координаты различных контуров из AutoCAD в Delphi?

Большое спасибо за совет, но к сожалению он мне не поможет. Дело в том, что я это уже знаю. Все контуры нарисованы полилиниями (POLYLINE). Я не могу найти необходимые команды - почему-то в литературе дается описание лишь того как нарисовать объекты в AutoCAD, а мне нужно наоборот - получить данные уже существующих (причем их количество каждый раз может быть различным, впрочем как и количество точек у каждого объекта).
Не могли бы Вы подсказать мне решение каким-нибудь примером (хотя бы строчечкой примера).
Спасибо.

Re: Как программно получить координаты различных контуров из AutoCAD в Delphi?

> Лик
Примером не могу и даже строчечкой, так как на Delphi не пишу.:(
А вот совет дать могу. В объектной модели смотрим SelectionSet.Select acSelectionSetAll с использованием фильтра по POLYLINE. Ну а затем для каждой полилинии из этого набора получаем вершины используя Polyline.Coordinates (это если нет дуговых сегментов - если есть, то нужно еще и Polyline.GetBulge для каждой из вершин.

Re: Как программно получить координаты различных контуров из AutoCAD в Delphi?

> Лик
Так как Вы будущий "Инженер-системотехник по специальности системы автоматизированного проектирования", то и подходить надо системно.
1. Сначала решите, надо ли именно из Delphi ковыряться в потрохах DWG-файла. Задачи 1 и 2 гораздо проще решаются на LISP. Да и примеров, не только "строчечку кода", а полноценных программ найдете сколько угодно.
2. Если надо именно из Delphi - изучайте объектную модель по справке acadauto.chm. Каждое свойство и метод сопровождаются примерами кода. Код на Basic, но перевести на Pascal несложно. Надо только учитывать, что в тех примерах VBA встроен в AutoCAD и в нем используется объект ThisDrawing как "стандартный", а в постороннем приложении надо его получать самостоятельно.

Re: Как программно получить координаты различных контуров из AutoCAD в Delphi?

Спасибо всем за помощь!

> ShaggyDoc
Мне желательно все делать именно из Delphi. А справки я всегда читаю обязательно, но почему-то все у меня с ошибками. Например:
CAD_Doc:OLEVariant;
...
procedure TForm1.Button3Click(Sender: TObject);
Var i:Integer;
ar:Double;
begin
Memo1.Clear;
For i:=0 to  CAD_Doc.ModelSpace.Count-1 do begin
ar:=(CAD_Doc.ModelSpace.Item(i) as IAcadPolyline).Area;
Memo1.Lines.Add(IntToStr(i)+'-'+FloatToStr(ar));
end;
Выводит ошибку: [Error] Unit1.pas(69): Incompatible types: 'OleVariant' and 'Pointer'
В чем ошибка? Какое несовпадение типов. Откуда 'Pointer', если я пытаюсь вывести значение площади?
По поводу файла acadauto.chm: есть в нете сайт http://vbamodel.narod.ru/
Тоже, что в этой справке, только на русском.

Re: Как программно получить координаты различных контуров из AutoCAD в Delphi?

Ошубку уже исправила сама (была простая). Все работает!