11/10/2013
Расчленение MText, содержащего управляющие коды
Для того, чтобы расчленить примитив MText на фрагменты его текста можно использовать метод "ExplodeFragments". Почитайте эту статью, если вам нужен код для примера: Получение фрагментов текста примитива MtextЕсли использовать этот метод для расчленения примитива MText, содержащего управляющие коды, такие как "%%c", "%%d", тогда фрагмент текста в функции обратного вызова будет также содержать эти управляющие коды, а не спецсимволы, которые их представляют. Простейший способ для получения чистого фрагмента текста заключается в создании временного MText и установке в качестве его содержимого этого фрагмента текста. Вот пример кода:
Код - C#: [Выделить]
- public MTextFragmentCallbackStatus MTextCallback
- (MTextFragment frag, object userData)
- {
- Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
- String fragText = frag.Text;
- ed.WriteMessage(String.Format("{0} Fragment : {1}",
- Environment.NewLine, fragText));
- using (MText mt = new MText())
- {
- mt.SetDatabaseDefaults();
- mt.Contents = fragText;
- String mtText = mt.Text;
- ed.WriteMessage(String.Format("{0} Fragment : {1}",
- Environment.NewLine, mtText));
- }
- return MTextFragmentCallbackStatus.Continue;
- }
- [CommandMethod("TestMText")]
- public void TestMText()
- {
- Document doc = Application.DocumentManager.MdiActiveDocument;
- Database db = doc.Database;
- Editor ed = doc.Editor;
- PromptEntityResult per
- = ed.GetEntity("Select MText to explode :");
- if (per.Status != PromptStatus.OK)
- return;
- using (Transaction Tx = db.TransactionManager.StartTransaction())
- {
- MText mtext =
- (MText)Tx.GetObject(per.ObjectId, OpenMode.ForRead);
- mtext.ExplodeFragments(
- new MTextFragmentCallback(MTextCallback));
- Tx.Commit();
- }
- }
А это результат работы этого кода с примитивом MText, содержащим коды %%c и %%d :
Источник: http://adndevblog.typepad.com/autocad/2013/09/exploding-an-mtext-that-uses-control-codes.html
Обсуждение: http://adn-cis.org/forum/index.php?topic=244
Опубликовано 11.10.2013