LISP. Замена текстового стиля - Страница 16
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > LISP. Замена текстового стиля

LISP. Замена текстового стиля

Ответ
Поиск в этой теме
Непрочитано 18.09.2008, 17:53 16 | 1
LISP. Замена текстового стиля
VVA
 
Инженер LISP
 
Минск
Регистрация: 11.05.2005
Сообщений: 6,996

По мотивам Замена текстового стиля
Команды CTS и CTSU подверглись косметическим улучшением.
Добавлена команда TSUP - изменение начертания текстов, атрибутов на основе установок выбранного стиля (начертание, сжатие, угол наклона).
Использована функция ru-textstyle-update любезно предоставленная ShaggyDoc
Описание команд:
Как это работает - см пост #12
CTS - замена текстовых стилей у всех объектов на выбранный
CTSU - замена текстовых стилей у всех объектов на выбранный с очисткой форматирования многострочных текстов
TSUP - Для выбранного стиля изменяется начертания всех существующих ТЕКСТОВ, АТРИБУТОВ во ВСЕХ примитивах, включая блоки в соответствии с установками стиля (начертание, сжатие, угол наклона). Сначала с помощью команды _style задаем необходимые установки стиля (шрифт, наклон, сжатие/растяжение). Затем командой TSUP для всех текстов и атрибутов, вычерченных этим стилем, устанавливается наклон, сжатие/растяжение такой же как и в определении стиля.
UNF-MTEXT - Убрать форматирование мтекста
Допустим у Вас текст, вычерченный стилем Стиль1 с углом наклона 15 градусов. Вызываем команду _style и выставляем в стиле Стиль1 угол 0. В тексте угол остался прежним 15 градусов. Чтобы синхронизировать параметры текста с параметрами стиля (наклон, сжатие/растяжение) и вызываем команду TSUP.

Возможный вариант макроса для пунктов 3-5
Код:
[Выделить все]
(if (null C:CTS)(load "change text styles (cts)"));CTS;(cts:layer-status-save);(ru-textstyle-update "*");_.PURGE;
***Изменения
22.10.2008 Добавлена обработка форматирования МТЕКСТОВ для Автокада с 2008 версии (выравнивание влево, вправо, посередине, по ширине, распределенное)
02.12.2008 Изменена ф-ция cts:msg-yes в соответствии с постом #46 Диалог строится не VBA, а лиспом (dcl)
26.02.2009 Версия 1.3 Исключена обработка блоков внешних ссылок (Спасибо Sleekka). Добавлен выбор игнорируемых стилей
16.03.2009 В версии 1.3 CTSU исправлена ошибка с разным количеством аргументов
05.02.2010 Добавлена обработка дополнительного форматирования в ф-цию mip_MTEXT_Unformat (см. сообщение wetr)
09.03.2010 В версии 1.4 в TSUP исправлена ошибка обработки примитивов только на текущем листе
03.06.2010 Отдельная команда для удаления форматирования мтекста
23.12.2011 UNF-MTEXT (vla-SetCellState item row col acCellStateNone) Снятие блокировки ячейки
21.11.2013 Добавлена обработка MLEADER. Команда CTS
20.04.2016 Добавлена функция CTS:GET-TEXTSTRING (как замена vla-get-textstring. Т.к. неверно возвращает строку при наличии юникод символов)
http://forums.autodesk.com/t5/visual...s/td-p/4365165
26.12.2017 Добавлена для таблиц vla-put-RegenerateTableSuppressed
03.06.2019 Обновление артибутов блоков, включенных в другие блоки
24.12.2021 Обновлена ф-ция mip_MTEXT_Unformat, обработка форматирования //PI
03.04.2024 Изменения в функции CTS (формулы в таблицах остаются) https://forum.dwg.ru/showthread.php?...77#post2065477 post #306


Описание
Цитата:
DESCRIPTION

StripMtext v5.0b Copyright© Steve Doman and Joe Burke 2010

StripMtext is an AutoLISP program that runs inside AutoCAD 2000 or above and enables the AutoCAD user to quickly remove unwanted Mtext formatting embedded in Mtext, Mleaders, Dimensions, Tables, and Multiline Attributes objects.
Оригинальный пост (требуется регистрация)





В версии 1.5 добавлена отдельная команда UNF-MTEXT для удаления форматирования MTEXTa
В версии 1.6 добавлено снятие блокировки ячейки таблицы при установке связи Datalink
Важно!!! Начиная с 2021 Автокада может не срабатывать команда stripmtext. Решение - установить системную переменную LISPSYS=0
См пост #281 и #282 или гугл

Вложения
Тип файла: lsp StripMtext v5-0c.lsp (60.1 Кб, 25761 просмотров)
Тип файла: lsp change text styles (cts) 2.0d.LSP (44.5 Кб, 4176 просмотров)

__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 03.04.2024 в 08:14. Причина: см пост #290
Просмотров: 625080
 
Непрочитано 02.11.2023, 22:19
#301
engngr

сети
 
Регистрация: 03.11.2008
Московия*
Сообщений: 5,914


... И шрифт не сбрасывает в AC2021.
282 пост же нашелся -
https://forum.dwg.ru/showpost.php?p=...&postcount=282
- но уже после гугла и https://forums.augi.com/showthread.p...n-AutoCAD-2021

Последний раз редактировалось engngr, 02.11.2023 в 22:58.
engngr вне форума  
 
Непрочитано 17.01.2024, 18:25 Задача наоборот, переопределить все стили
#302
baaba

архитектор
 
Регистрация: 07.07.2007
Москва
Сообщений: 664
<phrase 1= Отправить сообщение для baaba с помощью Skype™


А можно сделать так, в чертеже 10 разных стилей. Каждому из этих стилей изменить гарнитуру шрифта (isocpeur italic)? И больше ничего не торогать.
Миниатюры
Нажмите на изображение для увеличения
Название: Снимок.PNG
Просмотров: 136
Размер:	16.4 Кб
ID:	261012  
baaba вне форума  
 
Автор темы   Непрочитано 22.01.2024, 18:56
#303
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от baaba Посмотреть сообщение
Каждому из этих стилей изменить гарнитуру шрифта (isocpeur
Font Style в дампе не нашел
Код:
[Выделить все]
 (vl-load-com)(VLAX-FOR t_s(vla-get-textstyles(vla-get-activedocument(vlax-get-acad-object)))(vla-put-fontfile t_s "isocpeur.ttf"))
Еще можно посмотреть здесь How to Add "Bold" font style in a lisp
и здесь Lisp .... textfontstyle bold, italic, bolditlaic
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 23.01.2024 в 08:53.
VVA вне форума  
 
Непрочитано 22.01.2024, 19:29
#304
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,402


Offtop: Ttf-шрифты в текстовых стилях вообще боль.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 23.01.2024, 08:36
#305
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


И кстати у меня в isocpeur.ttf нет стиля itallic. Возможно потребуется подкорректировать имя шрифта ttf
Миниатюры
Нажмите на изображение для увеличения
Название: iso.png
Просмотров: 67
Размер:	27.3 Кб
ID:	261114  
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 26.03.2024, 12:03
#306
ElectricSib


 
Регистрация: 03.11.2015
Сообщений: 37


Есть файл с таблицами, в которых вбиты формулы наподобие Екселя, типа "=A1+B2", "=sum(B3:B12)" и т.д.
Заметил, что при применении скрипта CTS эти формулы убиваются, ячейки становятся пустыми. Никто не наблюдал этот глюк?

Update: Применение последней версии скрипта change text styles (cts) 2.0c.LSP не уничтожает данные, но формула становится просто текстом.

Возможно ли изменить код CTS таким образом, чтобы он не повреждал формулы в таблицах?
Вложения
Тип файла: dwg
DWG 2013
Тест.dwg (87.1 Кб, 10 просмотров)

Последний раз редактировалось ElectricSib, 01.04.2024 в 15:45. Причина: Уточняющий вопрос
ElectricSib вне форума  
 
Автор темы   Непрочитано 03.04.2024, 08:15
1 | 1 #307
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от ElectricSib Посмотреть сообщение
Возможно ли изменить код CTS таким образом, чтобы он не повреждал формулы в таблицах?
Возможно. Обновил до версии change text styles (cts) 2.0d
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 22.05.2024, 23:18
#308
nikola88


 
Регистрация: 22.05.2024
Сообщений: 2


Спасибо автору за лисп.
Столкнулся с задачей, меняю все на выбранный текстовый стиль через команду CTSU. Все срабатывает, как надо, но изменяется высота текста в размерах. Можно как-то сделать, чтобы шрифт менялся, а высота текста в размерах оставалась прежней.
nikola88 вне форума  
 
Автор темы   Непрочитано 24.05.2024, 14:16
1 | #309
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


пример файла выложи, посмотрю
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 24.05.2024, 21:54
#310
nikola88


 
Регистрация: 22.05.2024
Сообщений: 2


Цитата:
Сообщение от VVA Посмотреть сообщение
пример файла выложи, посмотрю
Пытаюсь изменить стиль на любой гостовский, так как текущий simplex, при печати очень бледный
Вложения
Тип файла: dwg
DWG 2018
Пример.dwg (600.3 Кб, 3 просмотров)
nikola88 вне форума  
 
Непрочитано 02.07.2024, 13:53
#311
Nikilin


 
Регистрация: 28.10.2019
Сообщений: 57


Здравствуйте коллеги.
Много лет пользовался бесплатным Lisp приложением StripMtext
Недавно возникла проблема.
Лисп не сбрасывает высоту у МТЕКСТА.
Пример в dxf code 1 следующее содержание \A1;{\fD431|c1|b1|i1;\H1.06;\l\C0;834,65} [
После применения StripMtext с выбором всех встроенных функций остается следующее значение "\Н1.06:834.65".
Может кто в курсе как это пофиксить. Покопался в лиспе, код у него благо открытый. Вроде должно сбрасывать все верно, но не работает именно на высоте.
Если я верно понял в коде за это отвечает данная строка (RE:Replace "" "\\\\H[0-9]*?[.]?[0-9]*?(x|X)+;" str)
Nikilin вне форума  
 
Непрочитано 08.10.2024, 19:05
#312
ElectricSib


 
Регистрация: 03.11.2015
Сообщений: 37


Цитата:
Сообщение от VVA Посмотреть сообщение
Возможно. Обновил до версии change text styles (cts) 2.0d
Спасибо.
Кстати, такой же глюк с уничтожением формул наблюдается при применении UNF-MTEXT по таблицам.
ElectricSib вне форума  
 
Непрочитано 09.10.2024, 09:59
#313
AlexCondor

инженер
 
Регистрация: 03.08.2007
Сообщений: 1,401


Nikilin, Как-то сталкивался с подобным. Посмотрите, может поможет.
AlexCondor вне форума  
 
Непрочитано 27.12.2024, 15:57
#314
name02


 
Регистрация: 10.01.2020
Сообщений: 415


Обнаружил что StripMtext не удаляет форматирование зачеркнутого мтекста (код форматирования \K). Решается добавлением в буквально в трех местах кода аналогично коду удаления "надчеркнутого" текста (код \O). Если есть возможность и желание можно переделать. Ну и окно программы тоже надо исправить, по-хорошему.
name02 вне форума  
 
Непрочитано 10.01.2025, 06:49
#315
SultanovNS


 
Регистрация: 10.01.2025
Красноярск
Сообщений: 5


Владимир, здравствуйте!

Просто превосходный LISP! Большое Вам спасибо!

Протестировали работу в nanoCAD - работает на 99%! Но есть проблема с командой TSUP:

Команда: TSUP
TSUP - TSUP
ошибка: load_dialog failed to load file "C:\Tmp\mip49C4.tmp"


Подскажите пожалуйста, в чем может быть проблема и возможные пути её решения?
SultanovNS вне форума  
 
Непрочитано 13.01.2025, 11:25
#316
SultanovNS


 
Регистрация: 10.01.2025
Красноярск
Сообщений: 5


Во вложении письма dwg на котором приводил тестирование LISP.

В нем представлены объекты:
1) Стандартный блок
2) Блок с атрибутами (открытые параметры текста)
3) Блок с атрибутами (в параметрах текста, у основного атрибута недоступны для редактирования "Степень растяжения" и "Угол наклона")
4) МТекст
5) Текст
6) МТекст

На объектах 1, 4, 6 LISP работает прекрасно, CTSU сразу всё меняет. На объектах 2, 3 , предполагаю что без TSUP не обойтись, т.к. после CTSU в блоках меняется "Стиль текста", а вот "Степень растяжения" и "Угол наклона" остаются прежними (не изменяются в соответствие со стилем). C объектом 5 вообще странно, вроде обычный Текст, но ситуация после CTSU аналогична 2, 3.

К сожалению без TSUP, LISP переваривает не все элементы.
Миниатюры
Нажмите на изображение для увеличения
Название: Тест CTS 2.0d.jpg
Просмотров: 19
Размер:	28.6 Кб
ID:	266260  Нажмите на изображение для увеличения
Название: Блок с атрибутами (открытые параметры текста).jpg
Просмотров: 19
Размер:	40.4 Кб
ID:	266264  Нажмите на изображение для увеличения
Название: Блок с атрибутами (в параметрах текста, у основного атрибута недоступны для редактирования Степень растяжения и Угол наклона).jpg
Просмотров: 16
Размер:	39.3 Кб
ID:	266265  
Вложения
Тип файла: dwg
DWG 2013
Тест CTS 2.0d.dwg (290.5 Кб, 1 просмотров)
SultanovNS вне форума  
 
Непрочитано 10.02.2025, 07:57
#317
SultanovNS


 
Регистрация: 10.01.2025
Красноярск
Сообщений: 5


Владимир, здравствуйте!

Представители профессионального сообщества, которые вынуждены работать в nanoCAD, на одном из форумов утверждают, что Ваш LISP "change text styles (cts) 1.8" не нуждается в адаптации и изумительно работает под nanoCAD!

Обрадовался - протестировал - расстроился

Дело в том, что в версии 1.8 при запуске TSUP уже появляется окно ИЗМЕНЕНИЕ СТИЛЕЙ!!!!, в отличии от версии 2.0, а это уже прогресс. Но в итоге всё равно приходим к сбою!

Алгоритм действий:

1) Загружаем LISP:
APPLOAD,ЗАГПРИЛ - Загрузка приложения...
Наберите CTSU, CTS,UNF-MTEXT или TSUP в командной строкеCTS:MASSOC
change text styles (cts) 1.8.LSP загружен. Команды: UNF-MTEXT,CTS,TSUP,CTSU


2) Запускаем CTSU:
Команда: CTSU
CTSU - CTSU
2 COUNT_COL=1
3 FL=C:\Tmp\dwg5CE1.tmp.dcl
5 _LOC_FINISH
2 COUNT_COL=1
3 FL=C:\Tmp\dwg62DF.tmp.dcl
6 _LOC_CLEAR
5 _LOC_FINISH


3) Запускаем TSUP (открывается окно ИЗМЕНЕНИЕ СТИЛЕЙ!!!!), в командной строке видим следующее:
Команда: TSUP
TSUP - TSUP
2 COUNT_COL=1
3 FL=C:\Tmp\dwgD592.tmp.dclошибка: неверный тип аргумента: numberp: "BSAM"


4) В окне ИЗМЕНЕНИЕ СТИЛЕЙ!!!! на вопрос "Будем делать?" отвечаем "Yes", в командной строке видим следующее:
Команда: TSUP
TSUP - TSUP
2 COUNT_COL=1
3 FL=C:\Tmp\dwgEDFB.tmp.dcl
5 _LOC_FINISH
OdError - Object of class AcDbDimStyleTableRecord can't be cast to AcDbEntity.


В итоге команда не срабатывает! Может быть эта информация, поможет в поиске решения по адаптации LISP под nanoCAD!
Миниатюры
Нажмите на изображение для увеличения
Название: Командная строка после  ответа Yes в окне ИЗМЕНЕНИЕ СТИЛЕЙ!!!!.jpg
Просмотров: 16
Размер:	39.3 Кб
ID:	266694  Нажмите на изображение для увеличения
Название: Командная строка после первого запуска TSUP.jpg
Просмотров: 19
Размер:	24.0 Кб
ID:	266695  Нажмите на изображение для увеличения
Название: ИЗМЕНЕНИЕ СТИЛЕЙ!!!!.jpg
Просмотров: 13
Размер:	29.6 Кб
ID:	266696  
Вложения
Тип файла: lsp change text styles (cts) 1.8.LSP (41.4 Кб, 7 просмотров)
SultanovNS вне форума  
 
Непрочитано 28.02.2025, 13:27
#318
unton

Волокита бумажная
 
Регистрация: 28.05.2012
Сообщений: 16


Жаль, что с размерами не работает. В них тоже текст есть и его тоже нужно обнулять иногда.
unton вне форума  
 
Непрочитано 12.03.2025, 12:59
#319
sergey12


 
Регистрация: 29.08.2009
Сообщений: 87


Имеются размеры. В текстовой строке в размерах прописаны параметры (\H5.0;\H5.0;\H3.50;400\H5.00;\H5.0;*), где-то пусто.
Как исправить текстовый стиль размеров под нужный мне размер? Примитивы пришли с компаса, вот и заморочки.
Если два раза ЛКМ по размеру и выбрать стиль текста "standart 350", то текст нормальным, большим становится.

Пробовал CTS, CTSU, TSUP, UNF-MTEXT, SMT.
LISPSYS=0

Установлен ACAD 2024.


UPD:
"В правильно заданном вопросе кроется 90% ответа))"

Всё выделил, выбрал свойства -> все размеры -> Текстовая строка (у меня там было *различные*), очистил кнопкой del. И всё норм стало)
Вложения
Тип файла: dwg
DWG 2013
Размер формат.dwg (233.3 Кб, 2 просмотров)

Последний раз редактировалось sergey12, 12.03.2025 в 13:46.
sergey12 вне форума  
 
Непрочитано 12.03.2025, 13:49
1 | 1 #320
name02


 
Регистрация: 10.01.2020
Сообщений: 415


По всей видимости указанные программы не работают, потому что в текстовой строке размера записано \H5.0;\H5.0;\H3.50;400\H5.00;\H5.0;*, в то время как у "правильных" автокадовских размеров, при наличии кодов форматирования, эта же строка выглядит как {\H0.01167x;400\H1.42857x;*}
"Разформатирование" текста ориентируется на эти фигурные скобки (насколько я помню код этих программ) - при их отсутствии, программа "думает" что это текст и не "разформатирует" его.
Попробуй такой вариант:
Код:
[Выделить все]
 (defun c:test (/ LM:UnFormat *adoc* e i s)

  (vl-load-com)

  ;;-------------------=={ UnFormat String }==------------------;;
  ;;                                                            ;;
  ;;  Returns a string with all MText formatting codes removed. ;;
  ;;------------------------------------------------------------;;
  ;;  Author: Lee Mac, Copyright © 2011 - www.lee-mac.com       ;;
  ;;------------------------------------------------------------;;
  ;;  Arguments:                                                ;;
  ;;  str - String to Process                                   ;;
  ;;  mtx - MText Flag (T if string is for use in MText)        ;;
  ;;------------------------------------------------------------;;
  ;;  Returns:  String with formatting codes removed            ;;
  ;;------------------------------------------------------------;;

  (defun LM:UnFormat (str mtx / _replace rx)

    (defun _replace (new old str)
      (vlax-put-property rx 'pattern old)
      (vlax-invoke rx 'replace str new)
    ) ;_ end of defun
    (if	(setq rx (vlax-get-or-create-object "VBScript.RegExp"))
      (progn
	(setq str
	       (vl-catch-all-apply
		 (function
		   (lambda ()
		     (vlax-put-property rx 'global actrue)
		     (vlax-put-property rx 'multiline actrue)
		     (vlax-put-property rx 'ignorecase acfalse)
		     (foreach pair
				   '(
				     ("\032" . "\\\\\\\\")
				     (" " . "\\\\P|\\n|\\t")
				     ("$1"
				      .
				      "\\\\(\\\\[ACcFfHLlOopQTW])|\\\\[ACcFfHLlOopQTW][^\\\\;]*;|\\\\[ACcFfHLlOopQTW]"
				     )
				     ("$1$2/$3" . "([^\\\\])\\\\S([^;]*)[/#\\^]([^;]*);")
				     ("$1$2" . "\\\\(\\\\S)|[\\\\](})|}")
				     ("$1" . "[\\\\]({)|{")
				    )
		       (setq str (_replace (car pair) (cdr pair) str))
		     ) ;_ end of foreach
		     (if mtx
		       (_replace "\\\\"
				 "\032"
				 (_replace "\\$1$2$3" "(\\\\[ACcFfHLlOoPpQSTW])|({)|(})" str)
		       ) ;_ end of _replace
		       (_replace "\\" "\032" str)
		     ) ;_ end of if
		   ) ;_ end of lambda
		 ) ;_ end of function
	       ) ;_ end of vl-catch-all-apply
	) ;_ end of setq
	(vlax-release-object rx)
	(if (null (vl-catch-all-error-p str))
	  str
	) ;_ end of if
      ) ;_ end of progn
    ) ;_ end of if
  ) ;_ end of defun

  (setq *adoc* (vla-get-activedocument (vlax-get-acad-object)))
  (vla-startundomark *adoc*)
  
  (if (setq s (ssget '((0 . "*DIMENSION"))))
    (repeat (setq i (sslength s))
      (setq e (entget (ssname s (setq i (1- i)))))
      (entmod
	(subst
	  (cons 1 (LM:UnFormat (cdr (assoc 1 e)) T))
	  (assoc 1 e)
	  e
	) ;_ end of subst
      ) ;_ end of entmod
    ) ;_ end of repeat
  ) ;_ end of if

  (vla-endundomark *adoc*)
  (princ)
) ;_ end of defun
name02 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > LISP. Замена текстового стиля



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена текстого стиля Shoorup Программирование 43 19.05.2015 09:22
Есть ли замена текстового редактора MtmdEdit 2.4.0 beta for AutoCAD 2007 dextron3 Программирование 16 23.06.2008 20:54
Библиотека доступа к содержимому растров из LISP - существуе kp+ LISP 6 16.10.2007 21:45
загрузка DOS прог через LISP Gaa LISP 15 12.08.2005 19:19
Настройка "Стандартного" текстового стиля. Кулик Алексей aka kpblc AutoCAD 6 23.10.2003 22:49