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


         

Расширенные Данные


Расширенные{*продленные*} данные (xdata) созданы приложениями, написанными с ObjectARX или AutoLISP и могут быть добавлены к любому объекту. Xdata состоит из списка связей resbufs, используемого приложением. (AutoCAD обслуживает{*поддерживает*} информацию, но не использует это.) данные связаны с кодом группы DXF в диапазоне от 1000 до 1071.

Этот механизм пространствено - эффективен и может быть полезен для добавления легких данных к объекту. Однако, xdata ограничен 16КБ и существующим набором кодов группы DXF и напечатает.

Для более детального описания xdata, см. Руководство Настройки AutoCAD.

Используйте AcDbObject:: xData () функция, чтобы получить resbuf цепочку, содержащую копию xdata для объекта:

virtual resbuf*

AcDbObject::xData(const char* regappName = NULL) const;

Используйте AcDbObject:: setXData () функция, чтобы определить xdata для объекта:

virtual Acad::ErrorStatus

AcDbObject::setXData(const resbuf* xdata);

Следующий пример использует xData () функция, чтобы получить xdata для выбранного объекта и затем печатает xdata на экран. Это тогда прибавляет строку (testrun) к xdata и называет setXdata () функцией, чтобы изменить xdata объекта. Этот пример также иллюстрирует использование upgradeOpen () и downgradeOpen () функции.

// Эта функция называет selectObject () функцией, чтобы позволить

// пользователю выбирать объект; тогда это обращается к xdata объекта

// и посылает список printList () функцию, которая перечисляет значения resval и restype.

//

void

printXdata()

{

// Select and open an object.

//

AcDbObject *pObj;

if ((pObj = selectObject(AcDb::kForRead)) == NULL) {

return;

}

// Get the application name for the xdata.

//

char appname[133];

if (acedGetString(NULL,

"\nEnter the desired Xdata application name: ",

appname) != RTNORM)

{

return;

}

// Get the xdata for the application name.

//

struct resbuf *pRb;

pRb = pObj->xData(appname);

if (pRb != NULL) {

// Print the existing xdata if any is present.



Содержание  Назад  Вперед