Тема: Вывод на экран текстового массива

Хочется вывести в пространство чертежа на опр. расстоянии друг от друга цифры от 1 до n. Понятно, что надо запустить цикл. Вопрос касается именно функции ObjectARx, "печатающей" текст в Acad. Нашли функцию AcDbText, но никак не можем заставить ее работать. Эта функция выводит в Acad только тип данных(const char*), а мозгов додумать как int перевести в нужный формат не хватает.

Re: Вывод на экран текстового массива

Можно так:
Толлько координаты нужные поставте, и размер масива контролируйте, а еще лучше векторами (std::vector) пользуйтесь.

Acad::ErrorStatus postToDb(AcDbEntity* ent)
{
    Acad::ErrorStatus      es;
    AcDbBlockTable*        pBlockTable;
    AcDbBlockTableRecord*  pSpaceRecord;
    AcDbObjectId objId;
    es = acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pBlockTable, AcDb::kForRead);
    if(es!= Acad::eOk) return es;
    es = pBlockTable->getAt(ACDB_MODEL_SPACE, pSpaceRecord, AcDb::kForWrite);
    if(es!= Acad::eOk) return es;
    es = pBlockTable->close()
    if(es!= Acad::eOk) return es;
    es = pSpaceRecord->appendAcDbEntity(objId, ent)
    if(es != Acad::eOk) return es;
    es = pSpaceRecord->close();
    if(es!= Acad::eOk) return es;
    return ent->close();
}
void printIntArray(int *arr, int size)
{
    CString str;
    AcGePoint3d pnt;
    for(int i=0; i<size; ++i){
        str.Format("%d", arr[i]);
        pnt.x = i*10;
        pnt.y = 0;
        AcDbText *pText = new AcDbText(str, pnt);    
        postToDb(pText);
    }
}

Re: Вывод на экран текстового массива

Спасибо большое! Попробую

Re: Вывод на экран текстового массива

Возникла проблема. Компиллятор ругается на неизвестный идентификатор CString. Как решал данную проблему: насколько я смог понять, CString "растет" из файла acuiString.h. Подключил я его(вручную через include прописал). После повторной компилляции начал ругаться на неизвестный класс ACUI_PORT. Подключил ручками файл acui.h. Теперь компиллятор начал ругаться на ошибки синтаксиса как раз в файле acui.h. Что делать?
Я в этом деле новичок, потому и спрашиваю. Интуитивно чувствую, что что-то надо подключить для нормальной работы, только не могу додумать что подключить и как это грамотно сделать. Что подскажете?
Заранее благодарю!

Re: Вывод на экран текстового массива

Сделал то же с использованием MFC. Ручками подключил оба h-файла. Осталась одна ошибка:<<
error C2664: '__thiscall AcDbText::AcDbText(const class AcGePoint3d &,const char *,class AcDbObjectId,double,double)' : cannot convert parameter 1 from 'class CString' to 'const class.>> Пишет применительно к строке: <<AcDbText *pText = new AcDbText(str, pnt);>> Понятно, что он не может сконвертировать один тип данных в другой. Непонятно что делать?

Re: Вывод на экран текстового массива

Перепутаны параметры имхо

AcDbText *pText = new AcDbText(pnt, str);

должно быть так, компилятор же подсказывает
см. руководство ObjectArx