• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Как найти все тексты текущего документа

Автор Борис_С, 11.03.19, 14:56:52

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.


Борис_С

Это понятно. Мне нужно выделить не весь текст, а только его часть. Это возможно?

Борис_С

Прошу прощения. Сразу не понял. Я понял, что можно выделить всю строку. Выделить часть строки нельзя. Верно?

Разложили текст на строки ITextLine и нужную выделили.
+ Благодарностей: 1

Борис_С

Написал процедуру получения всех надписей текущего документа и выделения 1-ой строки многострочного текста:

void GetTextTitles(ksDocument2DPtr& doc, IDrawingTextsPtr& pDrawingTexts)
{
for (int i = 0; i < pDrawingTexts->Count; i++)
{
IDrawingTextPtr pDrawingText;
VARIANTARG index;
VariantInit(&index);
index.vt = VT_I4;
index.intVal = i;
pDrawingTexts->get_DrawingText(index, &pDrawingText);
//int i1 = doc->ksAddObjGroup(0, pDrawingText->Reference); //выделение текста

if (!pDrawingText) {
kompas->ksError("pDrawingText не получен. Выход");
return;
}
ITextPtr pText = ITextPtr(pDrawingText);
if (!pText) {
kompas->ksError("pText не получен. Выход");
return;
}
//string Text = pText->Str;
for (int i1 = 0; i1 < pText->Count; i1++)
{
ITextLinePtr pTextLine = pText->GetTextLine(i1);
if (pTextLine)
{
   if (i1 == 0)
     int i2 = doc->ksAddObjGroup(0, pTextLine->Reference); //выделение текста
}
}
      }
}


Строки не выделяются. Где я не прав?

Так посмотрите в отладчике, что возвращает строка ниже.
int i2 = doc->ksAddObjGroup(0, pTextLine->Reference);


Борис_С

Она возвращает 0, т.е. выделение строки не происходит. Вопрос - почему?
Возможно строку в принципе нельзя выделить.

В Компасе можно вручную, значит должно быть и программно можно, только копать глубже нужно, мне этим заниматься некогда.

Борис_С

Поговорил с разработчиком. Он сказал, ручками это можно сделать, а на уровне API это не реализовано.