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



Добавьте Код к Обработчикам - часть 2


{

AcDbRegAppTable *pRegAppTable;

acdbHostApplicationServices()->workingDatabase()

->getSymbolTable(pRegAppTable, AcDb::kForRead);

// Iterate through the reg app table and display the

// names in the list box.

//

char *pName;

AcDbRegAppTableIterator *pItr;

if (pRegAppTable->newIterator(pItr) == Acad::eOk) {

while (!pItr->done()) {

AcDbRegAppTableRecord *pRecord;

if (pItr->getRecord(pRecord, AcDb::kForRead)

== Acad::eOk) {

pRecord->getName(pName);

m_ctrlRegAppComboBox.InsertString(-1, pName);

pRecord->close();

}

pItr->step();

}

}

pRegAppTable->close();

}

3 Добавляют объявления для функций и переменных к определению класса файл заголовка:

void DisplayPoint();

bool ValidatePoint();

void DisplayAngle();

bool ValidateAngle();

void DisplayBlocks();

void DisplayRegApps();

CString m_strAngle;

CString m_strXPt;

CString m_strYPt;

CString m_strZPt;

4 Затем - обработчики кнопки для выбора точки и угла, используя редактора AutoCAD. Обратите внимание, как BeginEditorCommand (), CompleteEditorCommand (), и CancelEditorCommand () функции используются, чтобы скрыть диалог, позволять запрос к acedGetPoint и acedGetAngle, и наконец или отменять или восстанавливать изображение диалога, основанного на как выбранный пользователь:

// AsdkAcUiDialogSample обработчики сообщения

void AsdkAcUiDialogSample::OnButtonPoint()

{

// Hide the dialog and give control to the editor

//

BeginEditorCommand();

ads_point pt;

// Get a point

//

if (acedGetPoint(NULL, "\nPick a point: ", pt) == RTNORM) {

// If the point is good, continue

//

CompleteEditorCommand();

m_strXPt.Format("%g", pt[X]);

m_strYPt.Format("%g", pt[Y]);

m_strZPt.Format("%g", pt[Z]);

DisplayPoint();

} else {

// otherwise cancel the command (including the dialog)

CancelEditorCommand();

}

}

void AsdkAcUiDialogSample::OnButtonAngle()

{

// Hide the dialog and give control to the editor




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