ADN Open CIS
Сообщество программистов Autodesk в СНГ

22/10/2013

Как показать диалоговое окно редактирования поля (Field) средствами ObjectARX

Вы можете показать диалоговое окно AutoCAD редактирования поля, используя функцию “AcFdUiInvokeFieldDialog”. При помощи этой функции можно показать диалог и вернуть объект поля, выбранный пользователем, переданный как первый параметр. Код ниже показывает как это сделать:

Код - C++: [Выделить]
  1. void addFieldWithDialog()
  2. {
  3.    AcGePoint3d pnt1;
  4.  
  5.     // Указываем начальную точку
  6.    if(acedGetPoint(NULL, L"\nУкажите точку вставки ",
  7.                                        asDblArray(pnt1)) != RTNORM)
  8.    {
  9.        return;
  10.    }
  11.  
  12.    AcDbDatabase *pDb =
  13.      acdbHostApplicationServices()->workingDatabase();
  14.  
  15.    AcDbField *pField = NULL;
  16.    Acad::ErrorStatus es;
  17.  
  18.    // Вызываем диалоговое окно выбора поля..
  19.    if(AcFdUiInvokeFieldDialog(pField, FALSE, pDb) == IDOK)
  20.    {
  21.        // Открываем пространство модели для записи
  22.        AcDbObjectId modelId;
  23.        modelId = acdbSymUtil()->blockModelSpaceId(pDb);
  24.  
  25.        AcDbBlockTableRecord *pBlockTableRecord;
  26.        es = acdbOpenAcDbObject((AcDbObject*&)pBlockTableRecord,
  27.                                        modelId, AcDb::kForWrite);
  28.        // создаём Mtext;
  29.        AcDbMText *pMText = new AcDbMText();
  30.        pMText->setLocation(pnt1);
  31.        // добавляем его в БД
  32.        AcDbObjectId objectId;
  33.        pBlockTableRecord->appendAcDbEntity(objectId, pMText);
  34.  
  35.        AcDbObjectId fieldId;
  36.        // добавляем поле
  37.        es = pMText->setField(_T("TEXT"), pField, fieldId);
  38.        es = pField->evaluate(AcDbField::kDemand, pDb); 
  39.  
  40.        pField->close();
  41.        pMText->close();
  42.        pBlockTableRecord->close();
  43.  
  44.    }
  45. }

 

Источник: http://adndevblog.typepad.com/autocad/2012/07/showing-autocad-field-dialog-box-using-objectarx.html

Обсуждение: http://adn-cis.org/forum/index.php?topic=277

Опубликовано 22.10.2013
Отредактировано 22.10.2013 в 12:41:33