Пользовательское форматирование многострочного текста
Здравствуйте Уважаемые специалисты NanoCAD!
Подскажите пожалуйста, как кроме макроса lisp (*StripMtext) можно сбросить выполненные через редактор МТекста пользовательские настройки иные чем в стиле для большого количества МТекстов?
Может кто-то пробовал через excel-vba или др.
Ответы
-
Да практически никак. Либо программно (лиспом / NET / VBS …), либо заходить в каждый MText и руками сносить форматирование.
0 -
Подскажите пожалуйста, как вывести свойство ObliqueAngle для измененного мультитекста (не текстового стиля)? Только через число в Textstring (например, {\Q15.0000;Пример1})?
0 -
Если есть возможность использовать .net, и формат {\Q15.0000;Пример1} устраивает, то можно использовать свойство Contents для MText. Вот пример кода:
Если в чертеже есть несколько многострочных текстов :
То вызов функции выдаст следующее:
0 -
Я бы попытался анализировать текст на предмет наличия "\Q" и следующего за ним ";". Вопрос в том, что надо выводить, если в тексте будет нечто типа {\Q15.0000;Пример}{\Q17.2800;1} ? :)
0 -
Согласна, что нужно как-то отделять из общего содержимого мультитекста присутствующие записи, обозначающие форматирование. Но как это программно
0 -
А какая вообще стоит цель?
Т.е. если есть текст из двух слов, в котором первое слово имеет наклон 10, а второе 20, то что в итоге хочется получить как результат выполнения кода?
0 -
\Q может встретиться как текст, а не "ключ"?
0 -
"\Q" будет только как ключ. Если в самом тексте будет "\Q", то в Contents он будет экранированным записан как "\\Q".
Условно строка "{\Q Ещё какой-то текст" с наклоном в 15 будет выглядеть следующим образом:
{\Q15.0000;\{\\Q Ещё какой-то текст}
Это можно регулярным выражением всё обработать.
Но это всё-равно не отвечает на вопрос - что нам в итоге надо сделать? Вывести для каждого найденного текстового поля наличие/отсутствие в нём наклона? Обнулить во всех найденных текстах наклон? Или ещё что-то?
0 -
Найти, показать угол и обнулить
Можно Вас попросить показать как выглядит "шаблон выражения" для мультитекста (с параметрами форматирования разными - наклон, сжатие, жирный, …)
0 -
Ну если на скорую руку, то можно вот так:
Есть чертёж с 2 мтекстами:
В первом мтексте 2 строки, каждая строка со своим наклоном и обманка в виде "ключа" в самом тексте.
Во втором мтексте 3 разных наклона.
После выполнения кода вот что мы получаем:
И вот что получаем в консоли:
Вроде и наклоны везде убрали и на \Q в тексте не повелись и все наклоны в консоль вывели.
Вот функция:
[CommandMethod("MTextContent")] public static void MTextContent() { using (Transaction trans = HostMgd.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Database.TransactionManager.StartTransaction()) { BlockTable bt = (BlockTable)trans.GetObject(HostMgd.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Database.BlockTableId, OpenMode.ForWrite); foreach (ObjectId btrId in bt) { BlockTableRecord btr = (BlockTableRecord)trans.GetObject(btrId, OpenMode.ForWrite); foreach (ObjectId entId in btr) { if (entId.ObjectClass.DxfName == "MTEXT") { MText mText = (MText)trans.GetObject(entId, OpenMode.ForWrite); HostMgd.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("\nНайдена строка: {0}", mText.Text); HostMgd.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("\nЕё контент: {0}", mText.Contents); string pattern = @"(?<!\\)\\Q\d+\.\d+;"; foreach (Match match in Regex.Matches(mText.Contents, pattern)) { HostMgd.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage($"В ней использовался наклон: {match.Value.Replace(@"\Q","")}"); } mText.Contents = Regex.Replace(mText.Contents, pattern, @"\Q00.0000;"); } } } trans.Commit(); } }
0 -
Спасибо, поизучаю
0 -
как вариант
sDesignation;//форматированный текст
Multicad.Text.RTF.Node nd;
nd = Multicad.Text.RTF.Node.ForceParse(_sDesignation);
sDesignation = nd.PlainText;0 -
Спасибо,
у меня к сожалению нет библиотек MultiCAD
0 -
Вот библиотеки мультикада + справка по ним. Справка, правда, откровенно паршивая.
А вообще, в нанокаде почти все надстроечные пакеты типа СПДС, механика, nPlat и прочего используют в своей работе библиотеки мультикада. Так что если нанокад не голый, то можно эти библиотеки поискать в c:\Program Files\Nanosoft\nanoCAD x64 XX\bin_nPlat\, c:\Program Files\Nanosoft\nanoCAD x64 XX\NanoSPDS\bin\ и так далее.
0 -
На нет и суда нет((
Но они у тебя есть, если делала полную установку
0 -
Спасибо!
0
Разделы
- Все разделы
- 60 Общие вопросы
- 55 Работа nanoCAD в ОС Linux
- 427 Платформа nanoCAD
- 17 nanoCAD GeoniCS
- 88 nanoCAD BIM Строительство
- 42 nanoCAD Механика PRO
- 62 nanoCAD BIM Электро
- 11 nanoCAD BIM Вентиляция
- 13 nanoCAD BIM ВК
- 3 nanoCAD BIM Отопление
- 8 nanoCAD BIM СКС
- 57 nanoCAD BIM ОПС
- 3 nanoCAD Стройплощадка
- 4 nanoCAD Металлоконструкции
- 2 nanoCAD Конструкции PS
- 7 TDMS Фарватер
- 1 Облака точек
- nanoCAD GeoSeries
- NSR Specification
- Учебным заведениям и учащимся
- 8 nano360