§ N набор девяти таблиц идентификаторов.
Block table (AcDbBlockTable)
Dimension style table (AcDbDimStyleTable)
Layer table (AcDbLayerTable)
Linetype table (AcDbLinetypeTable)
Registered applications table (AcDbRegAppTable)
Text style table (AcDbTextStyleTable)
User Coordinate System table (AcDbUCSTable)
Viewport table (AcDbViewportTable)
View table (AcDbViewTable)
Некоторые из таблиц идентификаторов уже содержат один или большее количество записей. Таблица уровня содержит уровень 0. Блочная таблица первоначально содержит три записи: *MODEL_SPACE, *PAPER_SPACE, и *PAPER_SPACE0. Linetype таблица всегда имеет НЕПРЕРЫВНЫЙ, BY_LAYER, и BY_BLOCK linetype. Таблица зарегистрированных приложений всегда имеет ACAD. Текстовая таблица стиля всегда имеет СТАНДАРТНЫЙ.
§ словарь имен объектов. Когда база данных создана, этот словарь уже содержит два словаря баз данных: словарь ГРУППЫ и MLINE словарь стиля. В пределах MLINE словаря стиля, СТАНДАРТНЫЙ стиль - всегда имеется.
§ N фиксированный набор переменных заголовка. (Они - не объекты базы данных.)
Создание и Начальная загрузка Базы данных
Используйте new, чтобы создать базу данных и delete, чтобы уничтожить ее. AcDbDatabase конструктор имеет один параметр со значением по умолчанию Adesk:: kTrue. Если этот параметр - Adesk:: kTrue, то база данных заполняется со стандартными объектами базы данных, описана в “ Начальная База данных. ”, если параметр - Adesk:: kFalse, то пустая база данных создана и может заполняться, считывая чертежный файл.
Используйте следующую функцию, чтобы читать в чертежном файле:
AcadErrorStatus
AcDbDatabase::readDwgFile(char* fileName);
Если Вы получаете любой из кодов ошибки слежения, Вы вероятно хотите возвратить рисунок к стандарту, AutoCAD возвращает механизм, обеспеченный интерфейсом пользователя:
KDwgNeedsRecovery
KDwgCRCDoesNotMatch
KDwgSentinelDoesNotMatch
KdwgObjectImproperlyRead
ПРЕДУПРЕЖДЕНИЕ! Никогда не удалите базу данных, возвращенную acdbHostApplicationServices()->workingDatabase().
Сохранение Базы данных
Чтобы сохранять базу данных, используйте AcDbDatabase:: saveAs () функция:
Acad:: ErrorStatus
AcDbDatabase:: saveAs (char* имя файла);
Имя файла может быть путь к местному файлу, или адресу Internet.
Установка Заданного по умолчанию Формата файла
ObjectARX обеспечивает способность определить заданный по умолчанию формат файла для SAVEAS, SAVE и команд QSAVE. (Команда AUTOSAVE всегда сохраняет рисунки в формате чертежного файла AutoCAD 2000.)
Класс AcApDocument содержит перечисление, которое определяет формат, используемый при сохранении рисунка к файлу. Его значения показываются в следующей таблице:
Name | Usage (file extension) |
kR12_dxf | AutoCAD Release 12/LT2 DXF (*.dxf) |
kR13_dwg | AutoCAD Release 13/LT95 Drawing (*.dwg) |
kR13_dxf | AutoCAD Release 13/LT95 DXF (*.dxf) |
kR14_dwg | AutoCAD Release 14/LT97 Drawing (*.dwg) |
kR14_dxf | AutoCAD Release 14/LT97 DXF (*.dxf) |
kR15_dwg | AutoCAD 2000 Drawing (*.dwg) |
kR15_dxf | AutoCAD 2000 DXF (*.dxf) |
kR15_Template | AutoCAD 2000 Drawing Template File (*.dwt) |
kNative | Current DWG version is AutoCAD 2000 |
kUnknown | Invalid format |
AcApDocument:: formatForSave () функция возвращается, поток{*ток*} сохраняет{*экономит*} формат, используемый SAVEAS, СОХРАНЯЕТ{*ЭКОНОМИТ*}, и командами QSAVE:
AcApDocument:: SaveFormat
FormatForSave ();
Возвращенное значение может быть или сеанс-широкая настройка по умолчанию, или различная установка, которую пользователь выбрал для этого документа. Если это - перегрузка для этого документа, это не будет упорствовать{*сохраняться*} поперек сеансов.
AcApDocmanager:: setDefaultFormatForSave () функция использует одно из значений SaveFormat, чтобы заставить формат файла использовать при сохранении рисунка к SAVEAS, СОХРАНЯТЬ{*ЭКОНОМИТЬ*}, и командам QSAVE. Это устанавливает сеанс-широкое значение по умолчанию, которое пользователь может выбирать временно перегружать для индивидуального документа:
Acad:: ErrorStatus
SetDefaultFormatForSave (
AcApDocument:: формат SaveFormat);
Эти функции только непосредственно сообщают относительно или устанавливают формат файла для интерактивных команд, введенных пользователем. Если Вы хотите, чтобы ваше приложение использовало поток{*ток*}, сохраняют{*экономят*} формат, каждый раз Вы желаете сохранить{*экономить*} базу данных, Вы будете сначала должны вызвать{*назвать*} formatForSave (), и затем использовать возвращенное значение SaveFormat, чтобы определить, которые функционируют, чтобы звонить. Например, если бы formatForSave () возвратил kR14_dxf, Вы вызвали бы{*назвали бы*} acdbDxfOutAsR14 () чтобы записать базу данных как Выпуск 14 DXF файл.
Убедитесь, что брали следующий во внимание:
§ Или Вы или ваш пользователь можете устанавливать постоянный сеанс-широкий заданный по умолчанию формат для, сохраняют{*экономят*}, который будет удостоен, все сохраняют{*экономят*} команды кроме, АВТОСОХРАНЯЮТ{*АВТОЭКОНОМЯТ*}.
§ Только пользователь может временно (не постоянно между сеансами) перегружают эту установку для специфического документа.
§ formatForSave () метод возвращает формат, в котором пользователь желает, чтобы индивидуальный документ был сохранен; это будет или сеанс-широкое значение по умолчанию или временная перегрузка, как соответствующий.
Глобальные функции сохранения
ObjectARX также содержит две глобальных функции для сохранения рисунков:
Acad::ErrorStatus
acdbSaveAsR13(
AcDbDatabase* pDb,
const char* fileName);
Acad::ErrorStatus
acdbSaveAsR14(
AcDbDatabase* pDb,
const char* fileName);
Обе функции принимают указатель базы данных и имя файла, и выписывают рисунок в Выпуске AutoCAD 13 или Выпускают 14 формата DWG, соответственно.
Операция Wblock
AcDbDatabase класс содержит перегруженный wblock () функция с тремя формами, которые соответствуют опциям команды WBLOCK AutoCAD.
Создание Новой Базы данных от Существующей Базы данных
Следующая функция - эквивалент команды WBLOCK*:
Acad:: ErrorStatus
AcDbDatabase::wblock(AcDbDatabase*& NewDb);
Эта функция создает новую базу данных от вызванной базы данных ("this").
Любые неупомянутые символы во входной базе данных опущены в новой базе данных (который делает новую базу данных потенциально уборщиком и меньший чем оригинал). Однако, это не заботится о копировании определенных приложением объектов, чей монопольное использование внедрено в названном объектном словаре. Вы должны передать{*переместить*} данные прикладной программы от исходной базы данных до целевой базы данных, используя AcEditorReactor функции уведомления.
Создание Новой Базы данных с примитивами
Другие две формы AcDbDatabase:: wblock () функция создает новую базу данных, чей образцовый пространственный блочный отчет{*запись*} таблицы содержит указанные объекты от входной базы данных. Первая форма этой функции копирует объекты с названного блочного отчета{*записи*} таблицы. Вторая форма функции копирует массив объектов.
Копирование Названного Блока
Следующая функция эквивалентна вызову команды WBLOCK с названием{*именем*} блочного определения:
Acad:: ErrorStatus
AcDbDatabase::wblock(AcDbDatabase*& NewDb,
AcDbObjectId recordId);
RecordId параметр представляет блочный запись таблицы во входной базе данных.
Объекты в этом блочном записи таблицы скопированы в образцово - пространственный блочный запись таблицы новой базы данных. Ядро вставки новой базы данных - блочное начало координат записи таблицы.
Копирование Массива примитивов
Следующая функция эквивалентна вызову команды WBLOCK и затем использование опции, чтобы выбрать определенные объекты и определять арифметическую запятую вставки:
Acad::ErrorStatus
AcDbDatabase::wblock(AcDbDatabase*& newDb,
const AcDbObjectIdArray& idArray,
const AcGePoint3d* point);
Эта функция создает новую базу данных, которая включает объекты, указанные в idArray параметре. Объекты, которые могут быть в образцовых пространственных или бумажных пространственных блочных отчетах{*записях*} таблицы входной базы данных, помещены в образцовое пространство{*пробел*} новой базы данных. Также включенный в новую базу данных - объекты, принадлежащие или упомянутый теми объектами, также как владельцами тех объектов. Указанный пункт{*точка*} - пункт{*точка*} начала координат, во внешних координатах, для нового рисунка (то есть это - арифметическая запятая вставки в образцовом пространстве{*пробеле*} новой базы данных).
Вставка Базы данных
AcDbDatabase:: вставка () функции копируют одну базу данных в базу данных, на которую функция элемента вызвана. AutoCAD объединяет объекты, которые это определяет, типа MLINE стиля и словарей ГРУПП; однако, это не заботится о копировании определенных приложением объектов, чей монопольное использование внедрено в названном объектном словаре. Вы должны передать{*переместить*} данные прикладной программы от исходной базы данных до целевой базы данных, используя AcEditorReactor функции уведомления.
ОБРАТИТЕ ВНИМАНИЕ На INSERT() функции исполняют глубоко имитацию, как описано в главе 18, при Глубоко Имитации. ”
Если конфликты возникают, когда исходные и целевые базы данных объединяются (например, если обе базы данных имеют то же самое название{*имя*} linetype), AutoCAD использует версию в целевой базе данных.
Следующая функция эквивалентна стандарту, тянущему{*рисующему*} команду INSERT:
Acad:: ErrorStatus
AcDbDatabase::insert(AcDbObjectId& BlockId,
const char* pBlockName,
AcDbDatabase* pDb);
Эта функция копирует объекты с образцового пространства{*пробела*} входной базы данных (pDb) в указанный блочный отчет{*запись*} таблицы (pBlockName) и возвращает блок ID нового блочного отчета{*записи*} таблицы (blockId). Приложение должно тогда создать ссылку{*справочники*} к блочной таблице, делают запись и прибавляют это к базе данных.
|
Из за большого объема этот материал размещен на нескольких страницах:
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 |


