Разделение текста

Автор Тема: Разделение текста  (Прочитано 3980 раз)

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

Оффлайн VLADIMIRnextАвтор темы

  • ADN OPEN
  • Сообщений: 33
  • Карма: 0
Разделение текста
« : 01-07-2022, 16:03:36 »
Еще раз здравствуйте))
Из чертежа получаю текст AcDbMText без разделителей, но автокад его делит на строки.
Как можно восстановить полностью исходный текст с переносами, где они есть в автокаде, но без управляющих символов?

Знаю что есть ограничивающие точки, но не приходит в голову правильного решения с использованием их. Я так понимаю задача непростая

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Разделение текста
« Ответ #1 : 01-07-2022, 22:25:07 »
Я так понимаю задача непростая
Очень непростая и в общем случае не имеющая решения.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Tever

  • ADN OPEN
  • Сообщений: 1
  • Карма: 0
Re: Разделение текста
« Ответ #2 : 03-07-2022, 14:13:38 »
Я делал вот так:
Код - C++ [Выбрать]
  1. AcString readString = L"", readAll  = L"";
  2. AcDbObjectId objId;
  3. acdbGetObjectId(objId, ss0);
  4. AcDbObject* tmpObj;
  5. if (acdbOpenAcDbObject(tmpObj, objId, AcDb::kForRead, true)== Acad::eOk)
  6. {
  7.         if(tmpObj->isKindOf(AcDbMText::desc()))
  8.         {
  9.                 AcDbMText *pMText = AcDbMText::cast(tmpObj);
  10.                 AcDbVoidPtrArray allMtext;
  11.                 pMText->explode(allMtext);
  12.                 if (allMtext.length() > 0)
  13.                 {
  14.                         for (int i=0; i < allMtext.length(); i++)
  15.                         {              
  16.                                 AcDbText *pText = (AcDbText *)allMtext[i];
  17.                                 pText->close();
  18.                                 readString = L"";
  19.                                 if (pText->isKindOf(AcDbText::desc()))
  20.                                 {
  21.                                         readString.format(L"%s",pText->textString());
  22.                                         readAll  = readAll  + readString;
  23.                                 }
  24.                         }
  25.                 }
  26.                 pMText->close();
  27.         }
  28.         tmpObj->close();
  29. }      
  30.  

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Разделение текста
« Ответ #3 : 03-07-2022, 20:18:14 »
Я делал вот так:
Я не уверен, что это именно то, что требуется VLADIMIRnext. Если я правильно понял, то его интересует не только разбиение на отдельные части и но их местоположение.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Разделение текста
« Ответ #4 : 04-07-2022, 00:01:12 »
VLADIMIRnext,
Можешь попробовать воспользоваться AcDbMText::explodeFragments
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн VLADIMIRnextАвтор темы

  • ADN OPEN
  • Сообщений: 33
  • Карма: 0
Re: Разделение текста
« Ответ #5 : 04-07-2022, 10:20:23 »
Я делал вот так:
Хорошо, спасибо посмотрю.

Оффлайн VLADIMIRnextАвтор темы

  • ADN OPEN
  • Сообщений: 33
  • Карма: 0
Re: Разделение текста
« Ответ #6 : 04-07-2022, 10:21:31 »
его интересует не только разбиение на отдельные части и но их местоположение.
Вы правы.
AcDbMText::explodeFragments
Сейчас все буду пробовать. Надеюсь получится не сильно костыльно)

Оффлайн VLADIMIRnextАвтор темы

  • ADN OPEN
  • Сообщений: 33
  • Карма: 0
Re: Разделение текста
« Ответ #7 : 04-07-2022, 11:13:06 »
Александр Ривилис,
А в explodeFraments нужно память освобождать, выделенную под фрагмент?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Разделение текста
« Ответ #8 : 04-07-2022, 19:22:57 »
Александр Ривилис,
А в explodeFraments нужно память освобождать, выделенную под фрагмент?
Насколько я помню - не нужно.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение