Microstation ConnectSDK I cannot modify existing text in textblock

Hello, I am scanning a file for text and pass the MSElementDescr to my function for modification.  I have tried a number of methods from the examples file.  I can ADD text, but my ability to modify the existing simple text string seems to be lacking something.  Is there an element add needed, or am I using the incorrect process for modifying existing text?  I am fairly new to programming for Microstation, are there any books explaining how to program for Microstation using Visual Studio 2017 in c++?

Public void getText(MSElementDescr *elm) {

ElementHandle eh(elm,false);
EditElementHandle eeh(elm, true, true, 0);

TextBlockPtr textBlock = TextHandlerBase::GetFirstTextPartValue(eh);
CaretPtr searchStart =textBlock->CreateStartCaret();
CaretPtr searchEnd = textBlock->CreateEndCaret();
ITextQueryCP textQueryHandler = eh.GetITextQuery();

if (!textQueryHandler || !textQueryHandler->IsTextElement(eh)) {
return;
}


ITextEditP textEdit = eh.GetITextEdit();
ITextPartIdPtr textPart;
TextBlockPtr textBlock = textEdit->GetTextPart(eh, *textPart);

if (!textBlock.IsNull() && !textBlock->IsEmpty())
{
WString strW = textBlock->ToString();
 CaretPtr startCaret = textBlock->CreateStartCaret();
  CaretPtr endCaret = textBlock->CreateEndCaret();
   WString originalString = textBlock->ToString();


if (0 == originalString.compare(L"TEXT_TO_MATCH"))

{
std::wostringstream oss;
oss << "this is a test";
textBlock->ReplaceText(oss.str().c_str(), *textBlock->CreateStartCaret(), *textBlock->CreateEndCaret());//CHANGES TEXT IN TEXTBLOCK, BUT NOT IN DESIGN FILE
textBlock->PerformLayout();//DESPERATE TEST TO SEE IF IT WOULD UPDATE FILE... BUT NO
textEdit->ReplaceTextPart(eeh, *textPart, *textBlock);

//THESE REMAIN FROM MY FAILED TESTS BELOW
//ElementRefP erp = eeh.GetElementRef();
//MSElementCP msecp = eeh.GetElementCP();


//eeh.ReplaceInModel(erp); //doesn't work
//eeh.ReplaceElement(msecp); doesn't work
//textBlock->AppendText(oss.str().c_str());//doesn't work
//eeh.AddToModel();//will add element to file, keeps old element this works.
}

}

}

Parents
  • Hello Jan,
    Thanks for the response... .yes, I figured I'd get spanked on the format... I wasn't sure on the tools for posting or formatting,in fact, I hit tab a few times and it bounced me off the page and made me gasp... I was worried I'd lost my input.
    I looked for an "about" under help for the info you've requested but it doesn't exist there.  I'm using Microstation Connect Edition release 14.  I am going to need to convert all our old MDL apps for the new Microstation.
    Sorry about the formatting, and thanks for the info.  I'll do more digging to find out why my ReplaceInModel isn't working.
    Thanks again,
    John Schenk

Reply
  • Hello Jan,
    Thanks for the response... .yes, I figured I'd get spanked on the format... I wasn't sure on the tools for posting or formatting,in fact, I hit tab a few times and it bounced me off the page and made me gasp... I was worried I'd lost my input.
    I looked for an "about" under help for the info you've requested but it doesn't exist there.  I'm using Microstation Connect Edition release 14.  I am going to need to convert all our old MDL apps for the new Microstation.
    Sorry about the formatting, and thanks for the info.  I'll do more digging to find out why my ReplaceInModel isn't working.
    Thanks again,
    John Schenk

Children
No Data