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

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

Лисп для скрытия заднего фона мультитекста

Ответ
Поиск в этой теме
Непрочитано 24.01.2013, 13:07 #1
Лисп для скрытия заднего фона мультитекста
sertor
 
Геодезист
 
Ухта
Регистрация: 23.05.2012
Сообщений: 1,377

Уважаемые форумчане. Подскажите, "существует ли в природе" лисп для скрытия заднего фона мультитекста кликом по нему, с заранее установленными параметрами(коэффициент перекрытия, использование цвета фона чертежа)? Если да, то сориентируйте, где искать. Поиском самому найти не удалось. Спасибо.
__________________
Как-то так.
Просмотров: 4207
 
Непрочитано 24.01.2013, 13:14
#2
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


textmask?
trir вне форума  
 
Автор темы   Непрочитано 24.01.2013, 13:51
#3
sertor

Геодезист
 
Регистрация: 23.05.2012
Ухта
Сообщений: 1,377


Цитата:
Сообщение от trir Посмотреть сообщение
textmask?
Ну не совсем. Я имел ввиду опцию МТекста "скрытие заднего плана" с определенными настройками.
Миниатюры
Нажмите на изображение для увеличения
Название: Скрин.jpg
Просмотров: 160
Размер:	55.3 Кб
ID:	95127  
__________________
Как-то так.
sertor вне форума  
 
Непрочитано 24.01.2013, 14:05
1 | #4
ciril

САПР
 
Регистрация: 29.09.2011
СПб
Сообщений: 283


В настройках мультитекста существует. А если программно, то DXf 90, 63, 45, 441. 63 - номер цвета, 45 - коэффициент перекрытия, если 90 - 3 (использовать цвет фона чертежа, 0 - не использовать), то 63 - цвет фона, что такое 441 - не сам знаю
Код:
[Выделить все]
 (defun c:mask  (/ x00)
  (while (not (eq "MTEXT" (cdr (assoc 0 (setq x00 (entget (car (entsel)))))))))
  (entmod (append x00 '((90 . 3) (63 . 256) (45 . 1.0) (441 . 0))))
  (princ))
ciril вне форума  
 
Непрочитано 24.01.2013, 16:19
1 | #5
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 575


Цитата:
Сообщение от ciril Посмотреть сообщение
что такое 441 - не сам знаю
441 - прозрачность фона (зарезервировано на будущее)
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 25.01.2013, 11:27
#6
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от ciril Посмотреть сообщение
В настройках мультитекста существует. А если программно, то DXf 90, 63, 45, 441. 63 - номер цвета, 45 - коэффициент перекрытия, если 90 - 3 (использовать цвет фона чертежа, 0 - не использовать), то 63 - цвет фона, что такое 441 - не сам знаю
Код:
[Выделить все]
 (defun c:mask  (/ x00)
  (while (not (eq "MTEXT" (cdr (assoc 0 (setq x00 (entget (car (entsel)))))))))
  (entmod (append x00 '((90 . 3) (63 . 256) (45 . 1.0) (441 . 0))))
  (princ))
Интересно, а что случится, если выбранного у MTEXTа уже есть задний фон?
Do$ вне форума  
 
Непрочитано 25.01.2013, 12:02
#7
ciril

САПР
 
Регистрация: 29.09.2011
СПб
Сообщений: 283


Черт его знает, хотя, согласен, небрежность Тогда так:
Код:
[Выделить все]
 (defun c:mask  (/ x00)
 (while (not (eq "MTEXT" (cdr (assoc 0 (setq x00 (entget (car (entsel)))))))))
 (or (assoc 441 x00) (entmod (append x00 '((90 . 3) (63 . 256) (45 . 1.0) (441 . 0)))))
 (princ))
ciril вне форума  
 
Автор темы   Непрочитано 25.01.2013, 13:56
#8
sertor

Геодезист
 
Регистрация: 23.05.2012
Ухта
Сообщений: 1,377


Цитата:
Сообщение от ciril Посмотреть сообщение
В настройках мультитекста существует. А если программно, то DXf 90, 63, 45, 441. 63 - номер цвета, 45 - коэффициент перекрытия, если 90 - 3 (использовать цвет фона чертежа, 0 - не использовать), то 63 - цвет фона, что такое 441 - не сам знаю
Спасибо большое, работает. И еще один вопрос. А нельзя ли дополнить код функцией преобразования однострочного текста в многострочный, со всеми "вытекающими..." Я понимаю, что это есть в Expresse и в ToolPacе, но в идеале, одним кликом, было бы супер.
В дополнение, имя команды лиспа mask совпадает с внутренней командой AutoCAD Civil 3D 2012г mask (маскирующие блоки). Переименовать бы? Спасибо.
__________________
Как-то так.

Последний раз редактировалось sertor, 25.01.2013 в 14:17.
sertor вне форума  
 
Непрочитано 25.01.2013, 14:39
#9
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Offtop:
Цитата:
Сообщение от sertor Посмотреть сообщение
В дополнение, имя команды лиспа mask совпадает с внутренней командой AutoCAD Civil 3D 2012г mask (маскирующие блоки). Переименовать бы? Спасибо.
Это очень сложная, длительная по времени, а так же требующая значительных финансовых затрат операция, которую так просто не решить... Особенно имея на руках четыре строчки исходников... Придётся подождать годика пол...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 25.01.2013, 15:00
#10
sertor

Геодезист
 
Регистрация: 23.05.2012
Ухта
Сообщений: 1,377


Цитата:
Сообщение от hwd Посмотреть сообщение
Это очень сложная, длительная по времени, а так же требующая значительных финансовых затрат операция, которую так просто не решить... Особенно имея на руках четыре строчки исходников... Придётся подождать годика пол...
Это я на тот случай, если кому-нибудь, помимо меня, (с подобным багажом знаний) понадобится.
__________________
Как-то так.

Последний раз редактировалось sertor, 25.01.2013 в 15:10.
sertor вне форума  
 
Непрочитано 25.01.2013, 18:33
#11
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от ciril Посмотреть сообщение
Тогда так:
В чем смысл этого, если есть панель свойств. Если уж делать в один клик, тогда как-то так:
Код:
[Выделить все]
 (defun c:bgcmskmtxt (/ i ss dx)
  (if (setq i  -1
	    ss
	       (ssget "_X" '((0 . "MTEXT")))
      )
    (repeat (sslength ss)
      (if
	(setq
	  dx (assoc 90 (setq en (entget (ssname ss (setq i (1+ i))))))
	)
	 (entmod
	   (subst '(90 . 3) dx en)
	 )
      )
    )
  )
  (princ)
)

Последний раз редактировалось gomer, 25.01.2013 в 20:34.
gomer вне форума  
 
Автор темы   Непрочитано 25.01.2013, 21:41
#12
sertor

Геодезист
 
Регистрация: 23.05.2012
Ухта
Сообщений: 1,377


Цитата:
Сообщение от gomer Посмотреть сообщение
В чем смысл этого, если есть панель свойств. Если уж делать в один клик, тогда как-то так:
Почему-то не срабатывает. При вводе команды никакой реакции. Программы AutoCAD 2013 и аналогично Civil 3D 2012г. Подскажите, в чем может быть проблема?
__________________
Как-то так.
sertor вне форума  
 
Непрочитано 26.01.2013, 00:06
#13
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


а какая должна реакция быть?
Если тексты не имеют маски, то ее сначала добавить нужно
Если маска есть, но не совсем такая как надо, то это тоже надо учитывать

Код:
[Выделить все]
 (defun c:bgcmskmtxt2 (/ i ss dxf90 wid cnt0 cnt1 cnt2)
  (if (setq wid	2.0
	    i -1
	    cnt0 0
	    cnt1 0
	    cnt2 0
	    ss
	     (ssget "_X" '((0 . "MTEXT")))
      )
    (progn
      (repeat (sslength ss)
	(if
	  (setq
	    dxf90 (assoc
		    90
		    (setq en (entget (ssname ss (setq i (1+ i)))))
		  )
	  )
	   (if (= 3 (cdr dxf90))
	     (setq cnt0 (1+ cnt0))
	     (progn
	       (entmod
		 (subst	(cons 45 wid)
			(assoc 45 en)
			(subst '(90 . 3) dxf90 en)
		 )
	       )
	       (setq cnt1 (1+ cnt1))
	     )
	   )
	   (progn
	     (entmod
	       (append
		 en
		 (list '(90 . 3) '(63 . 256) (cons 45 wid) '(441 . 0))
	       )
	     )
	     (setq cnt2 (1+ cnt2))
	   )
	)
      )
      (terpri)
      (princ (sslength ss))
      (princ (strcat " entit"
		     (if (= 1 (sslength ss))
		       "y"
		       "ies"
		     )
		     " processed: "
	     )
      )
      (if (< 0 cnt0)
	(princ (strcat (itoa cnt0)
		       " mask"
		       (if (< 1 cnt0)
			 "s"
			 ""
		       )
		       " ignored"
		       (if (or (< 0 cnt1) (< 0 cnt2))
			 ", "
			 "."
		       )
	       )
	)
      )
      (if (< 0 cnt1)
	(princ (strcat (itoa cnt1)
		       " mask"
		       (if (< 1 cnt1)
			 "s"
			 ""
		       )
		       " changed"
		       (if (< 0 cnt2)
			 ", "
			 "."
		       )
	       )
	)
      )
      (if (< 0 cnt2)
	(princ (strcat (itoa cnt2)
		       " mask"
		       (if (< 1 cnt2)
			 "s"
			 ""
		       )
		       " added."
	       )
	)
      )
    )
    (princ "No MTexts found")
  )
  (princ)
)
gomer вне форума  
 
Автор темы   Непрочитано 26.01.2013, 12:27
#14
sertor

Геодезист
 
Регистрация: 23.05.2012
Ухта
Сообщений: 1,377


Доброго времени суток.
gomer , спасибо большое! Здорово. И если можно, последний нюанс. Возможно ли подкорректировать лисп (если это не очень сложно), чтобы скрытие заднего плана выполнялось с цветом 255,255,255? Если да, то прошу помочь. Спасибо.
__________________
Как-то так.
sertor вне форума  
 
Непрочитано 26.01.2013, 12:58
1 | #15
getr

Конструктор
 
Регистрация: 06.04.2005
Из тех ворот-откуда весь народ.
Сообщений: 361
<phrase 1=


По ссылке имеется неплохой лисп http://lee-mac.com/mask.html
__________________
"Мнение не бывает ни истинным, ни ложным, а лишь полезным в жизни или бесполезным. ",- Ауробиндо
И не надо делать удивленных движений руками.
getr вне форума  
 
Автор темы   Непрочитано 26.01.2013, 16:53
#16
sertor

Геодезист
 
Регистрация: 23.05.2012
Ухта
Сообщений: 1,377


Спасибо всем за помощь. Решение надено. Вопрос снят. Удачи!
__________________
Как-то так.
sertor вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Лисп для скрытия заднего фона мультитекста

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
параметры по умолчанию для скрытия заднего плана многострочного текста CHILD_11 AutoCAD 9 05.09.2021 15:05
Как программно изменить цвет заднего фона (вкладка Модель)? mmmx Программирование 8 27.04.2011 20:45
Изменить цвет фона редактора мультитекста Torino AutoCAD 8 02.11.2004 18:45