ObjectARX, AutoCAD. Среда программирования библиотеки C++

       

Общий Доступ


Большинство генерала функций, которые обращаются К AutoCAD - acedCommand () и acedCmd (). Подобно функции (команды) в AutoLISP, эти функции посылают команды и другой ввод непосредственно к Приглашению ко вводу команды AutoCAD.

Int

AcedCommand (int rtype, ...);

Int

AcedCmd (struct resbuf *rbp);

В отличие от большинства других функций взаимодействия AutoCAD, acedCommand () имеет список параметров переменной длины: параметры к acedCommand () обработаны как пары если бы не RTLE и RTLB, которые необходимы, чтобы передать точку указки. Первый из каждой пары параметра идентифицирует тип результата параметра, который следует, и второй содержит фактические данные. Заключительный параметр в списке - одиночный параметр, чей значение является или 0 или RTNONE. Как правило, первый параметр к acedCommand () - тип, закодируют RTSTR, и второй параметр данных - строка, которая является именем команды, чтобы вызвать. Следующие пары параметра определяют опции или данные, которых указанная команда требует.

Коды типа в acedCommand () список параметров - типы результата.

Параметры данных должны соответствовать типам данных и значениям, ожидаемым последовательностью подсказки той команды. Они могут быть строки, реальные значения, целые числа, точки, названия{*имена*} примитива, или названия{*имена*} набора выбора. Данные типа углов, расстояний, и точек можно пропускать или как строки (поскольку пользователь мог бы вводить их) или как значения непосредственно (то есть как целое число, реальное, или направлять значения).

Пустая строка (“ ”) эквивалентна вводу пространства{*пробела*} на клавиатуре.

Из-за идентификаторов типа, acedCommand () список параметров - не тот же самый как список параметров для AutoLISP подпрограмма (команды). Знайте это, если Вы преобразовываете подпрограмму AutoLISP в ObjectARX-приложение.

Имеются ограничения на команды, которые acedCommand () может вызывать, которые являются сопоставимыми ограничениям на AutoLISP функция (команды).


ОБРАТИТЕ ВНИМАНИЕ На acedCommand () и acedCmd () функции могут вызывать команду SAVE ИЛИ SAVEAS AutoCAD. Когда они делают так, AutoLISP выпускает kSaveMsg сообщение к всем другим ObjectARX-приложениям, в настоящее время загруженным, но не к приложению, которое вызвало SAVE. Сопоставимый код послан, когда эти функции вызывают NEW, OPEN, END, или QUIT от приложения.

Следующая типовая функция показывает несколько, вызывает к acedCommand ().

int docmd()

{

ads_point p1;

ads_real rad;

if (acedCommand(RTSTR, "circle", RTSTR, "0,0", RTSTR, "3,3", 0) != RTNORM)

return BAD;

if (acedCommand(RTSTR, "setvar", RTSTR, "thickness", RTSHORT, 1, 0) != RTNORM)

return BAD;

p1[X] = 1.0; p1[Y] = 1.0; p1[Z] = 3.0;

rad = 4.5;

if (acedCommand(RTSTR, "circle", RT3DPOINT, p1, RTREAL, rad, 0) != RTNORM)

return BAD;

return GOOD;

}

При условии, что AutoCAD - в Приглашении ко вводу команды, когда эта функция вызвана{*названа*}, AutoCAD исполняет следующие действия:

1 Рисует круг, который проходит до (3.0,3.0) и чей центр - в (0.0,0.0).

2 Изменяют текущую толщину к 1.0. Обратите внимание, что первый запрос к acedCommand () передает точки как строки, в то время как секунда передает короткое целое число. Любой метод возможен.

3 Рисует другой (вытесненный) круг, чей центр - в (1.0,1.0,3.0) и чей радиус - 4.5. Этот последний{*прошлый*} запрос к acedCommand () использует трехмерную точку и реальный (с двойной точностью с плавающей точкой) значение. Обратите внимание, что точки пропускает ссылка, потому что ads_point - тип массива.


Содержание раздела