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

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

Удалить текст внутри блока определенной высоты

Ответ
Поиск в этой теме
Непрочитано 10.09.2024, 16:07 #1
Удалить текст внутри блока определенной высоты
Gretech89
 
Регистрация: 13.02.2016
Сообщений: 54

Всем доброе время суток!

Помогите доработать скрипт по удалению текста внутри блока определенной высоты.

Код:
[Выделить все]
 (defun c:DelText (/ ht ss eo blst bcol b)
 ;; ввод текста
 (setq ht (getint "\nВведите высоту текста: "))
 ;; выбор блоков
 (if (ssget "_:L" '((0 . "INSERT")))
 (progn
 (setq ss (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object))))
 (vlax-for eo ss
 (if (not (vl-position (vla-get-EffectiveName eo) blst))
 (setq blst (cons (vla-get-EffectiveName eo) blst))
 )
 )
 (vla-Delete ss)
 )
 )
 ;; проход по определениям блоков и удаление текста внутри
 (setq bcol (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object))))
 (foreach ss blst
 (setq b (vla-Item bcol ss))
 (if (and
 (eq :vlax-false (vla-get-isxref b))
 (eq :vlax-false (vla-get-islayout b))
 )
 (vlax-for eo b
 (if (and (wcmatch (vla-get-ObjectName eo) "AcDbText,AcDbMText")
	  (wcmatch (vla-get-TextHeight eo) ht) ; здесь затык
 )
 (vla-Delete eo)
 )
 )
 )
 )
 (vla-Regen (vla-get-ActiveDocument (vlax-get-acad-object)) acAllViewports)
 (princ)
)

Последний раз редактировалось Gretech89, 10.09.2024 в 17:03.
Просмотров: 754
 
Непрочитано 10.09.2024, 22:06
#2
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,809


Gretech89,
надо заменить это
Код:
[Выделить все]
 (wcmatch (vla-get-TextHeight eo) ht) ; здесь затык
на это
Код:
[Выделить все]
 (= (vla-get-Height eo) ht)
потому как wcmatch проверяет входимость подстроки в строку, а высота текста это число.
__________________
K Lisp
koMon вне форума  
 
Автор темы   Непрочитано 11.09.2024, 08:39
#3
Gretech89


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


koMon, спасибо большое!
Gretech89 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Удалить текст внутри блока определенной высоты



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать блок внутри блока с одинаковыми атрибутами и возможность получать информацию из внешнего атрибута блока во внутренний ? Timwellex Динамические блоки 12 03.09.2024 10:56
Взрыв динамического блока внутри динамического блока AlexZh Динамические блоки 19 29.09.2023 14:19
MathCad. Почему возникает ошибка при ранжировании внутри программного блока? eilukha Прочее. Программное обеспечение 6 20.09.2020 14:33
Как заставить многострочный текст при увеличении его высоты не переноситься на строку вниз? Shaft AutoCAD 4 06.05.2009 09:29
Как выделить весь текст и удалить Алексей К. AutoCAD 3 19.07.2005 08:20