Изменение текста в мультивыноске

Автор Тема: Изменение текста в мультивыноске  (Прочитано 7619 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн BazingaАвтор темы

  • ADN Club
  • ***
  • Сообщений: 101
  • Карма: 4
Помогите, пожалуйста, советом, как можно отредактировать текст мультивыноске ?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Изменение текста в мультивыноске
« Ответ #1 : 23-11-2017, 16:15:10 »
Я правильно понимаю, что программа должна быть на lisp'е?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн BazingaАвтор темы

  • ADN Club
  • ***
  • Сообщений: 101
  • Карма: 4
Re: Изменение текста в мультивыноске
« Ответ #2 : 23-11-2017, 16:23:01 »
Александр Ривилис, угу.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Изменение текста в мультивыноске
« Ответ #3 : 23-11-2017, 16:24:54 »
Тогда как-то так:
Код - Auto/Visual Lisp [Выбрать]
  1. (progn
  2.  (vl-load-com)
  3.  (setq en_obj (vlax-ename->vla-object en_ename)) ; получаем vla-объект
  4.  (setq en_txt (vla-get-TextString en_obj)) ; Получаем старую строку
  5.  ;; Модифицируем строку
  6.  (vla-put-TextString en_obj en_txt) ; Новая строка в мультивыноске.
  7. )

(vla-get-TextString) иногда "спотыкается". Поэтому лучше такой вариант:

Код - Auto/Visual Lisp [Выбрать]
  1. ;; Extract textstring (with symbols) from text object
  2. ;; Works on: MText, Text, Attrib, Attdef, Multileader
  3. ;; Obj - Object to extract textstring from
  4. ;; Alan J. Thompson, 11.24.09 / 04.13.10
  5. (defun AT:TextString (Obj)
  6.   (if Obj
  7.     ((lambda (e s)
  8.        (cond ((eq (cdr (assoc 0 e)) "MULTILEADER") (cdr (assoc 304 e)))
  9.              ((vl-position (cdr (assoc 0 e)) '("ATTDEF" "ATTRIB" "MTEXT" "TEXT"))
  10.               (foreach x e (and (vl-position (car x) '(1 3)) (setq s (strcat s (cdr x)))))
  11.               s
  12.              )
  13.        )
  14.      )
  15.       (cond ((vl-consp Obj) (entget (car Obj)))
  16.             ((eq (type Obj) 'ENAME) (entget Obj))
  17.             ((eq (type Obj) 'VLA-ObjECT) (entget (vlax-vla-Object->ename Obj)))
  18.       )
  19.       ""
  20.     )
  21.   )
  22. )
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн BazingaАвтор темы

  • ADN Club
  • ***
  • Сообщений: 101
  • Карма: 4
Re: Изменение текста в мультивыноске
« Ответ #4 : 23-11-2017, 16:25:59 »
Александр Ривилис, спасибо огромное!!! Буду пробовать.