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

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

Высота текста через LISP

Ответ
Поиск в этой теме
Непрочитано 21.09.2023, 10:07 #1
Высота текста через LISP
leshkabar
 
Регистрация: 14.10.2020
Сообщений: 7

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

Код:
[Выделить все]
 (defun c:th (/ sset i txtheight textsize)
  (vl-load-com)
  (setq i 0)
  (setq sset (ssget '((-4 . "<OR") (0 . "MTEXT") (0 . "TEXT") (-4 . "OR>"))))
  (if sset
    (progn
      (setq textsize (getvar "textsize"))
      (setq txtheight (getdist (strcat "\nSpecify text height <" (rtos textsize) ">: ")))
      (if (= txtheight nil) (setq txtheight textsize))
      (repeat (sslength sset)
        (vla-put-height (vlax-ename->vla-object (ssname sset i)) txtheight)
        (setq i (1+ i))
      )
      (setq sset nil)
    )
  )
  (princ)
)

(princ "\nRun with the TH command")
(princ)

)
Вынес необходимые кнопки с высотами на панель и быстро меняю TEXT и MTEXT в проекте при необходимости. Однако, есть проблемка.
Код не работает с :
- Мультивыносками
- СПДСными Позиционными выносками
- СПДСными Выносками для многослойных конструкций.
- высотой текста в ячейке в таблицах

.. Может кто-нибудь сделать апгрейд?

.
Просмотров: 1110
 
Непрочитано 21.09.2023, 10:50
#2
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


это не апгрейд, а новая программа по сути) И, кстати, в фильтре ssget можно одним условием и текст, и мультитекст выбирать - "*TEXT".
Сергей812 вне форума  
 
Непрочитано 21.09.2023, 10:56
#3
Sege


 
Регистрация: 05.07.2007
Санкт-Петебург
Сообщений: 110


vla-put-height не работает с мультитекстом, а высоту для таблицы меняет высоту самой таблицы
Sege вне форума  
 
Непрочитано 21.09.2023, 11:00
| 1 #4
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


и почему текстовыми стилями не воспользоваться...
Сергей812 вне форума  
 
Непрочитано 24.09.2023, 07:35
1 | #5
name02


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


Вот такой "апгрейд":
Код:
[Выделить все]
 (defun c:th (/ sset txtheight textsize i obj obj_name row column)
  (vl-load-com)

  (setq sset (ssget '((0 . "*TEXT,MULTILEADER,ACAD_TABLE"))))
  (if sset
    (progn
      (setq textsize (getvar "textsize"))
      (setq txtheight (getdist (strcat "\nSpecify text height <" (rtos textsize) ">: ")) ;_ end getdist
      ) ;_ end setq
      (if (= txtheight nil)
        (setq txtheight textsize)
      ) ;_ end if
      (setq i 0)
      (repeat (sslength sset)
        (setq obj (vlax-ename->vla-object (ssname sset i)))
        (setq obj_name (vlax-get-property obj 'ObjectName))
        (cond
          ((wcmatch obj_name "AcDbMLeader") (vla-put-TextHeight obj txtheight))
          ((wcmatch obj_name "*Text") (vlax-put-property obj 'Height txtheight))
          ((wcmatch obj_name "AcDbTable")
           (vla-put-RegenerateTableSuppressed obj :vlax-true)
           (setq
             row 0
             column 0
           ) ;_ end setq
           (repeat (vla-get-rows obj)
             (repeat (vla-get-columns obj)
               (vla-SetCellTextheight obj row column txtheight)
               (setq column (1+ column))
             ) ;_ end repeat
             (setq
               column 0
               row    (1+ row)
             ) ;_ end setq
           ) ;_ end repeat
           (vla-RecomputeTableBlock obj :vlax-true)
           (vla-put-RegenerateTableSuppressed obj :vlax-false)
          ) ;_ end cond
        ) ;_ end cond
        (setq i (1+ i))
      ) ;_ end repeat
    ) ;_ end progn
  ) ;_ end if
  (princ)
) ;_ end defun
Что касается СПДС-ных объектов - наверное у них свои есть методы и свойства, но надо разбираться
name02 вне форума  
 
Непрочитано 24.09.2023, 10:09
#6
Ingpro


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


Цитата:
Сообщение от name02 Посмотреть сообщение
Вот такой "апгрейд":
Отличный апгрейд!!!
Ingpro вне форума  
 
Непрочитано 24.09.2023, 16:17
#7
Кулик Алексей aka kpblc
Moderator

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


(wcmatch obj_name "AcDbMLeader") (vla-put-TextHeight obj txtheight)
влегкую может вывалить ошибку, если у мультивыноски тип аннотации не текст
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 26.09.2023, 10:33
#8
leshkabar


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


Цитата:
Сообщение от name02 Посмотреть сообщение
Вот такой "апгрейд":
name02!, спасибо тебе огромное добрый человек. Просто бомба! То что нужно. Всё работает. Мало того!, как ни странно, код у меня срабатывает даже с СПДСными выносками, всё меняется как нужно, даже высоту текста в Таблицах меняет! Супер.
... единственное, маленькая просьба - Можешь сделать чтобы шрифт менялся в таблице не во всех ячейках, а только в выбранной?
Ещё раз СПАСИБО.
leshkabar вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Высота текста через LISP



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Высота дробного текста при использовании форматирования FmtText.. AlexV ПО от CSoft 4 02.06.2016 10:40
Lisp. Проблема с перезагрузкой списка через action_tile в диалоговом окне . BoTTePa3 LISP 3 29.02.2016 21:14
LISP Объединение нескольких объектов многострочного текста в один Cren LISP 8 26.02.2016 08:57
Высота многострочного текста не соответствует его высоте, заданной в "свойствах" granit201z AutoCAD 3 23.05.2015 20:39
LISP очистить стиль текста в буфере объмена gizmo_zx LISP 1 20.12.2011 11:36