Перейти к содержанию

Рекомендуемые сообщения

Под Autocad есть много популярных LISP скриптов, сбрасывающих форматирование многострочного текста (а это реально проблема, когда смежники используют CAD как PaintBrush). Предлагаю простое решение на базе Multicad:

static public void ClearTextFormat()
    {
	    InputJig Jig = new InputJig();
	    List<McObjectId> lId = Jig.SelectObjects("Выбери Mtext : ");
	    foreach (McObjectId id in lId)
	    {
		    if (id.IsNull) continue;
		    DbText text = id.GetObject() as DbText;
		    if (text == null) continue;
		    string str = text.Text.Text;
		    //удаляем все символы форматирования
		    str = Regex.Replace(str, @"\\[^\\]*?;", "");
		    str = Regex.Replace(str, @"[{}]", "");
		    TextGeom tg = new TextGeom(str, text.Text.Origin, text.Text.Direction, text.Text.TextStyle);
		    text.Text = tg;

	    }
    }

Ссылка на сообщение
Поделиться на другие сайты

А точно у Вас создается в итоге MText? Там в символах форматирования, кроме палочек и прочего, есть также буквы.

Ссылка на сообщение
Поделиться на другие сайты

А точно у Вас создается в итоге MText? Там в символах форматирования, кроме палочек и прочего, есть также буквы.

Не совсем понял, что имеется в виду :)

Смысл происходящего в следующем: берём MText, который выглядит внутри вот так:

Техническое {\fCourier New CYR|b0|i0|c204|p49;перевооружение} сетей г{\H1.4286x;азопотребления.}\P Узел учета газа{\W0.5; котельной по\Q19; адресу: у\Q15;л. ул. Р.Люксембург, 52-а }г.Таганрог, \PРостовская область

1) Находим и удаляем внутри все лексемы вида:

\<внутри что-угодно кроме повторяющегося символа "\">;

тут нюанс, нельзя в регулярном выражении написать просто

 

\\.*?;

потому, что в таком случае будут удалены "полезные" символы конца абзаца многострочного текста "\Р"

нотация "\Р" отличается от остальных команд форматирования тем, что она не заканчивается ";"

кроме того, возможны ещё какие-то нюансы. Так что пишем:

 

\\[^\\]*?;

заставляя .NET проверять, что внутри найденной лексемы, которую он собрался удалять нет слэшей.

 

2) потом удаляем фигурные скобки... тут, кстати косяк, если в тексте есть фигурные скобки, напечатанные пользователем - они удалятся...

нужно строку

Regex.Replace(str, @"[{}]", "");

заменить на совсем непонятную

Regex.Replace(str, @"[^\\][{|}]", "");

и после выполнения функции получим MText без форматирования.

Техническое перевооружение сетей газопотребления.\P Узел учета газа котельной по адресу: ул. ул. Р.Люксембург, 52-а г.Таганрог, \PРостовская область

 

Ну или как-то так... я в программировании на C# упражняюсь реже чем в отпуск хожу... придёт МАКРОДЕМОН и всё разъяснит....

Изменено пользователем westwind
Ссылка на сообщение
Поделиться на другие сайты

Макродемон, это Слободин? Если так, то тоже ждем). В MC за DText и MText отвечает один тип DbText. Я как то пробовал создавать текст, у меня получился только однострочный. А версия у Вас какая NC?

Ссылка на сообщение
Поделиться на другие сайты

Версия 7.0.

Ну, в данном случае, мы объект не создаём, а редактируем - у меня работает.

Вообще же... ко мне вчера прилетела куча чертежей газовых по узлам учёта, которые править нужно было. Стал срочно искать скрипт, вычищающий форматирование - не нашёл :( Написал небольшой кусочек кода - решил поделиться... по свободе нужно будет сделать с диалогом - какие команды форматирования убирать, а какие оставить.

Плюс - автоматический перенос текста на свой слой, выставление всех свойств "по слою" и т.д.

Сейчас времени нет....

Ссылка на сообщение
Поделиться на другие сайты
  • 8 месяцев спустя...

У меня этот скрипт почему-то просто разбивает мтекст в текст. Может кто пояснить как им пользоваться?

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Расскажите друзьям

    Нравится Официальный форум компании Нанософт? Расскажите друзьям!
×
×
  • Создать...