Файл расширения{*продления*} Во время выполнения: Введите название{*имя*}

UNLOAD

Разгружает указанную программу ARX. Некоторые приложения не могут быть разгружены. См. “ Разгрузка Приложения ObjectArx ” на странице 44 для описания того, как программист решает, может ли программа быть разгружена пользователем с этой командой.

Commands

Отображает все названия{*имена*} команды во всех группах команд, зарегистрированных от программ ARX.

Options

Представляет связанные разработчиком опции приложения ARX.

Options (Group/CLasses/Services): Enter an option

·  Group

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

Command Group Name: Enter the command group name

Заказ{*порядок*} поиска важен только, когда название{*имя*} команды перечислено в множественных группах. Этот механизм позволяет различным приложениям ARX определять те же самые названия{*имена*} команды в их собственных отдельных группах команд.

ARX приложения, которые определяют группы, команд должны издать название{*имя*} группы в их документации.

Группа не предназначена, чтобы быть выбранной пользователем непосредственно. Пользователь определяет, которая группа обыскана сначала, взаимодействуя со сценарием, который выполняет команду ARX с опцией Group. Эта возможность обычно внедряется в ключевые сценарии пункта меню. Пользователь выбирает пункт меню от сценария.

НЕ нашли? Не то? Что вы ищете?

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

Например, приложения по имени ABC и XYZ Интерьеры определяют группы ABC команд и XYZ, соответственно. Большинство команд Конструкции ABC названо с терминологией конструкции, в то время как большинство XYZ команды Интерьеров названо со внутренней областью, украшающей терминологию, но и приложения определяют команды по имени INVENTORY и ORDERS. При работе над аспектами конструкции рисунка, пользователь выбирает пункт меню, определенный Конструкцией ABC, и следующий сценарий выполняется:

ARX

Группа

ABC

Сценарий выталкивает набор команд Construction ABC, чтобы дать этому высший приоритет и решать INVENTORY к версии Конструкции ABC команды. Позже, когда внутренний проектировщик работает над рисунком к тому же самому набору загруженных приложений, выбор, ключевой значок гарантирует, что XYZ команды Интерьеров имеют старшинство.

ОБРАТИТЕ ВНИМАНИЕ, что группы Command не связаны с командами, определенными в AutoLISP или определены запросом к acedDefun () Приложениями ObjectArx. Программный механизм, который определяет группы команд, описан в “ Заказ{*порядок*} Поиска ” на странице 42.

    Classes

Отображает иерархию классов классов C++, полученных из объектов{*целей*}, зарегистрированных в системе, ли зарегистрированный в соответствии с AutoCAD или в соответствии с программой ARX.

    Services

Перечисляет названия{*имена*} всех услуг, зарегистрированных в соответствии с AutoCAD и в соответствии с загруженными программами ARX.

Выполнение Приложений ObjectArx от AutoLISP

Приложение ObjectArx может определять набор функций, известных к AutoLISP как внешние функции, используя acedDefun (). После того, как приложение загружено, Вы можете вызывать внешнюю функцию точно, поскольку Вы можете вызывать встроенную или определяемую пользователем функцию AutoLISP. Переменные AutoLISP можно пропускать как параметры к внешней функции, и внешняя функция может возвращать результат.

Внешняя функция может также запрашивать пользователя вводить данные, или от клавиатуры или, определяя пункты{*точки*} или объекты{*цели*} с устройством управления позицией, и внешняя функция может устанавливать Windows или AutoCAD платформа-независимая справка.

Внешняя функция может быть вызвана функцией AutoLISP, также как в интерактивном режиме. Приложения ObjectArx не могут вызывать функции AutoLISP. Приложение ObjectArx может отыскивать и устанавливать значение символов AutoLISP (тип данных символа должен быть распознаваемый к программе C++).

Приложение ObjectArx может определять новую команду AutoCAD с тем же самым C:XXX соглашением как AutoLISP. Вы вызываете внешнюю функцию, вводя ее название{*имя*} в Приглашении ко вводу команды, без круглых скобок.

Определение внешней функции заменяет любое предыдущее определение того же самого названия{*имени*}. Если два Приложения ObjectArx определяют функции с тем же самым названием{*именем*}, функция в первом приложении, которое будет загружено потеряна; если Вы разгружаете второе приложение, Вы не можете вызывать{*называть*} двойную функцию.

Обработка ошибок

Примеры в этом руководстве опустили необходимую проверку ошибок, чтобы упростить код. Однако, вы будете всегда хотеть проверить состояние возвращения и брать соответствующее действие. Следующий пример показывает соответствующему использованию проверки ошибок для нескольких примеров, показанных сначала в главе 2, “ Учебник для начинающих Базы данных. ”

Acad::ErrorStatus

createCircle(AcDbObjectId& circleId)

{

circleId = AcDbObjectId::kNull;

AcGePoint3d center(9.0, 3.0, 0.0);

AcGeVector3d normal(0.0, 0.0, 1.0);

AcDbCircle *pCirc = new AcDbCircle(center, normal, 2.0);

if (pCirc == NULL)

return Acad::eOutOfMemory;

AcDbBlockTable *pBlockTable;

Acad::ErrorStatus es =

acdbHostApplicationServices()->workingDatabase()->

getSymbolTable(pBlockTable, AcDb::kForRead);

if (es!= Acad::eOk) {

delete pCirc;

return es;

}

AcDbBlockTableRecord *pBlockTableRecord;

es = pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord, AcDb::kForWrite);

if (es!= Acad::eOk) {

Acad::ErrorStatus es2 = pBlockTable->close();

if (es2 != Acad::eOk) {

acrx_abort("\nApp X failed to close Block" " Table. Error: %d", acadErrorStatusText(es2));

}

delete pCirc;

return es;

}

es = pBlockTable->close();

if (es!= Acad::eOk) {

acrx_abort("\nApp X failed to close Block Table."

" Error: %d", acadErrorStatusText(es));

}

es = pBlockTableRecord->appendAcDbEntity(circleId,

pCirc);

if (es!= Acad::eOk) {

Acad::ErrorStatus es2 = pBlockTableRecord->close();

if (es2 != Acad::eOk) {

acrx_abort("\nApp X failed to close"

" Model Space Block Record. Error: %s",

acadErrorStatusText(es2));

}

delete pCirc;

return es;

}

es = pBlockTableRecord->close();

if (es!= Acad::eOk) {

acrx_abort("\nApp X failed to close"

" Model Space Block Record. Error: %d",

acadErrorStatusText(es));

}

es = pCirc->close();

if (es!= Acad::eOk) {

acrx_abort("\nApp X failed to"

" close circle entity. Error: %d",

acadErrorStatusText(es));

}

return es;

}

Acad::ErrorStatus

createNewLayer()

{

AcDbLayerTableRecord *pLayerTableRecord

= new AcDbLayerTableRecord;

if (pLayerTableRecord == NULL)

return Acad::eOutOfMemory;

Acad::ErrorStatus es

= pLayerTableRecord->setName("ASDK_MYLAYER");

if (es!= Acad::eOk) {

delete pLayerTableRecord;

return es;

}

AcDbLayerTable *pLayerTable;

es = acdbHostApplicationServices()->workingDatabase()->

getSymbolTable(pLayerTable, AcDb::kForWrite);

if (es!= Acad::eOk) {

delete pLayerTableRecord;

return es;

}

// The linetype object ID default is 0, which is

// not a valid ID. Therefore, it must be set to a

// valid ID, the CONTINUOUS linetype.

// Other data members have valid defaults, so

// they can be left alone.

//

AcDbLinetypeTable *pLinetypeTbl;

es = acdbHostApplicationServices()->workingDatabase()->

getSymbolTable(pLinetypeTbl, AcDb::kForRead);

if (es!= Acad::eOk) {

delete pLayerTableRecord;

es = pLayerTable->close();

if (es!= Acad::eOk) {

acrx_abort("\nApp X failed to close Layer"

" Table. Error: %d",

acadErrorStatusText(es));

}

return es;

}

AcDbObjectId ltypeObjId;

es = pLinetypeTbl->getAt("CONTINUOUS", ltypeObjId);

if (es!= Acad::eOk) {

delete pLayerTableRecord;

es = pLayerTable->close();

if (es!= Acad::eOk) {

acrx_abort("\nApp X failed to close Layer"

" Table. Error: %d",

acadErrorStatusText(es));

}

return es;

}

pLayerTableRecord->setLinetypeObjectId(ltypeObjId);

es = pLayerTable->add(pLayerTableRecord);

if (es!= Acad::eOk) {

Acad::ErrorStatus es2 = pLayerTable->close();

if (es2 != Acad::eOk) {

acrx_abort("\nApp X failed to close Layer"

" Table. Error: %d",

acadErrorStatusText(es2));

}

delete pLayerTableRecord;

return es;

}

es = pLayerTable->close();

if (es!= Acad::eOk) {

acrx_abort("\nApp X failed to close Layer"

" Table. Error: %d",

acadErrorStatusText(es));

}

es = pLayerTableRecord->close();

if (es!= Acad::eOk) {

acrx_abort("\nApp X failed to close Layer"

" Table Record. Error: %d",

acadErrorStatusText(es));

}

return es;

}

Глава 4. Операции базы данных рисунка

Эта глава описывает основной протокол базы данных, включая, как создать базу данных, как читать в чертежном файле, и как сохранить базу данных. Wblock и операции вставки также описаны здесь. Для более детальной информации относительно deepClone и wblock операций, см. главу 18, при Глубоко Имитации. ”

    Начальная База данных Создание и Начальная загрузка Базы данных Сохранение Базы данных wblock Операция Вставка Базы данных Установка Текущих Значений Базы данных Пример Операций Базы данных Длинные транзакции Внешние ссылки Индексы и Фильтры Рисунок Итоговой Информации Из прошлого, сохраненного программным обеспечением Autodesk

Инициализация базы данных

Когда сеанс AutoCAD начинается, база данных содержит следующие элементы:

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132