Статья: IT-практикум: DELPHI и AutoCAD
varDouble); //массив начальной точки SecondPoint:=VarArrayCreate([0, 2],
varDouble); //массив конечной точки
А сейчас можно задать и сами координаты линий, делается это таким образом:
FirstPoint[0]:=10; //начальная X координата
FirstPoint [1] :=10; //начальная Y координата
FirstPoint[2]:=10; //начальная Z координата
Далее нам будет нужна переменная AutoCadLine типа lAcadLine (хотя можно ее сделать и OleVariant, такой вариант тоже будет работать). В ней мы сохраним ссылку на созданную линию, чтобы в дальнейшем обращаться к этой фигуре, внося нужные изменения (о том, как это сделать, вы обязательно узнаете далее). А пока осталось начертить линию с помощью следующей строчки кода:
AutoCadLine:=AcadDocumentl. ModelSpace.AddLine(FirstPoint, SecondPoint);
Стоит отметить, что для работы с графическими объектами я использовал коллекцию ModelSpace, которая позволяет обращаться ко всем графическим объектами чертежа. Можно также воспользоваться коллекцией PaperSpace, правда, в этом случае нам будут доступны только объекты, содержащиеся в активном на данный момент слое. На рисунке 3 вы можете видеть упрощенную схему объектной структуры AutoCAD.
Итак, продолжаем. Линия у нас уже есть, теперь проведем над ней одну манипуляцию: покрасим ее в красный цвет с помощью всего одной строчки кода:
AutoCadLine. color:=acRed;
После того как работа с чертежом окончена, нужно сообщить об этом AutoCAD. Делается это следующим образом:
AcadDocumentl. Application. Update;
Полный листинг для обработчика события OnClick кнопки «Линия» вы найдете в исходнике программы, расположенной на компакт-диске.
Разместим на форме еще одну кнопку, назовем ее «Линия с запросом». С помощью нее мы нарисуем такую же обычную линию, предварительно запросив координаты у пользователя. Для этого используется объект Utility и его метод GetPointQ. Снова зададим две локальные переменные StartPoint и SecondPoint с типом OleVariant. Сделаем для них такие же массивы и напишем код:
FirstPoint :=AcadDocumentl. Utility.
GetPoint(EmptyParam, 'Укажите начальную координату: ');
SecondPoint :=AcadDocumentl. Utility. GetPoint(EmptyParam, 'Укажите конечную координату: ');
Как начертить линию, имея ее координаты, вы уже знаете, и разбирать этот процесс нет смысла, поэтому протестируем готовый код. Запустите программу, нажмите кнопку «Линия с запросом» и переключитесь в окно AutoCAD. Обратите внимание: в командной строке, расположенной в нижней части окна AutoCAD, появился текст «Укажите начальную координату», рис. 4.
Сделаем это, щелкнув мышью в понравившемся нам месте на холсте чертежа. Появится надпись «Укажите конечную координату». В результате из указанных нами точек появится линия. Вот оно, чудо взаимодействия программы и программиста! Однако не будем отступать от главного — перейдем на следующий уровень. На подходе фигура посложнее — полилиния. С помощью нее можно строить всевозможные многоугольники. Для начала построим четырехугольник. Стоит отметить, что в этом случае нам достаточно задать две координаты X и Y. Размещаем на форме кнопку, назовем ее «Четырехугольник», далее создадим вариантный массив Points, рассчитанный на 10 значений, и зададим нужные координаты, например:
Points[0]:= | 646.0351; |
Points [1]: = | 847.318; |
Points[2]:= | 1167.2274; |
Points[3]:= | 847.318; |
Points[4]:= | 1167.2274; |
Points[5]: = | 542.6844; |
Points[6]:= | 646.0351; |
Points[7]:= | 542.6844; |
Points[8]:= | 646.0351; |
Points[9]:= | 847.318; |
Объявим переменную AutoCADPolyline типа OleVariant и последний штрих:
AutoCADPolyline:= AcadDocumentl.
ModelSpace.AddLightWeightPolyline(Po
ints);
Протестируем программу и нарисуем новую фигуру. Пришло время поговорить немного и о самом AutoCAD. Кликнем по только что сформированному прямоугольнику (в чертеже), он станет активным и на экране появиться окно свойств, рис.5. Обратите внимание на содержимое выпадающего списка, расположенного в самом верху. В нем мы имеем честь наблюдать тип своей фигуры: в данном случае это polyline, т.е. что мы и рисовали. Если кликнуть мышкой по свойству Vertex, в нем появятся две стрелки, с помощью которых вы можете переключаться между отдельными вершинами фигуры. Соответственно, в этот момент будут меняться свойства VertexX и VertexY, отвечающие за координаты. А вот в свойстве Area можно получить значение площади созданной вами фигуры, удобно, не так ли? Я думаю, имеет смысл вывести эту информацию в окне нашей программы:
ShowMessage('Площадь фигуры: :'+FloatT oStr(AutoCADPolyline.Area));
Добавим еще одну кнопку на форму, назовем ее «Круг». Для работы с этой фигурой надо задать три точки — координаты центра круга и его радиус, а затем использовать следующий метод:
AddCircle (КоординатыЦентра, Радиус) ;
Разнообразим чертеж текстом, добавляющимся с помощью процедуры AddText():