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

ADN Club => ObjectARX => Тема начата: Vt от 05-10-2018, 10:50:39

Название: Изменение текста mleader
Отправлено: Vt от 05-10-2018, 10:50:39
Вопрос по mleader - я пытаюсь изменить текст мультивыноски но он остается прежним. Почему так происходит?
Код - C++ [Выбрать]
  1. bool MleaderController::setTextMessage(const AcDbObjectId &MLeaderId, const CString &textMessage)
  2. {
  3.         AcDbObjectPointer<AcDbMLeader>pEnt(MLeaderId, AcDb::kForWrite);
  4.         if (pEnt.openStatus() != Acad::eOk) return false;
  5.         pEnt->mtext()->setContents(textMessage.GetString());
  6.         return true;
  7. }
  8.  
Название: Re: Изменение текста mleader
Отправлено: Александр Ривилис от 05-10-2018, 12:27:30
Как-то так (не проверял):
Код - C++ [Выбрать]
  1. bool MleaderController::setTextMessage(const AcDbObjectId &MLeaderId, const CString &textMessage)
  2. {
  3.         AcDbObjectPointer<AcDbMLeader>pEnt(MLeaderId, AcDb::kForWrite);
  4.         if (pEnt.openStatus() != Acad::eOk) return false;
  5.         AcDbMText *pMtext = pEnt->mtext();
  6.         if (pMtext) {
  7.            pMtext->setContents(textMessage.GetString());
  8.            pEnt->setMText(pMtext);
  9.            delete pMtext;
  10.         }
  11.         return true;
  12. }
Название: Re: Изменение текста mleader
Отправлено: Vt от 05-10-2018, 13:01:24
Как-то так (не проверял):
Код - C++ [Выбрать]
  1. bool MleaderController::setTextMessage(const AcDbObjectId &MLeaderId, const CString &textMessage)
  2. {
  3.         AcDbObjectPointer<AcDbMLeader>pEnt(MLeaderId, AcDb::kForWrite);
  4.         if (pEnt.openStatus() != Acad::eOk) return false;
  5.         AcDbMText *pMtext = pEnt->mtext();
  6.         if (pMtext) {
  7.            pMtext->setContents(textMessage.GetString());
  8.            pEnt->setMText(pMtext);
  9.            delete pMtext;
  10.         }
  11.         return true;
  12. }
Ага в описании функции mtext() нашел:
 Gets a copy of mleader’s mtext content
Не подумал сразу что копия возвращается - думал просто указатель