Jump to content

Lisp.Изменение высоты и ширины MTEXTA (BoundMText)


Recommended Posts

 Lisp.Изменение высоты и ширины MTEXTA (BoundMText)

1336775352_UntitledProject.thumb.gif.dbaadb03bdc97a8298e89b139bb39341.gif

Описание- Lisp позволяет изменить ширину и высоту полей MTEXTA под фактический размер самого текста, удобно для тех, кто использует функцию "Скрытие заднего фона"

 

Lisp умеет так же делать рамку вокруг MTEXTA , и делать заливку MTEXTA. Фон цвета может принимать, как различные цвет (ввод значения "1", по умолчанию применяется заливка фона белого цвета (255)), так по цвету чертежа( ввод значения "Да")

 

 

Отдельное спасибо EdwardSt

 

BoundMText.lsp

  • Like 2
  • Thanks 1
Link to comment
Share on other sites

  • aerohost changed the title to Lisp.Изменение высоты и ширины MTEXTA (BoundMText)
  • 1 year later...
Posted (edited)

Подделал, для мультивыноски заливку, Можно в скопе выбрать группу объектов, лисп сам определить где выноска, где Мтекст  

BoundMText.lsp

Edited by aerohost
  • Like 1
Link to comment
Share on other sites

Спойлер

 

Я бы на серьезных щщах задумался о том, чтобы запросы "Да/Нет" вытащить в отдельную функцию и использовал бы уже ее. Нечто типа:

(defun _kpblc-get-yesno (message default / res)
                        ;|
*    Запрашивает Да/Нет.
*    Параметры вызова:
  message  ; выводимое сообщение
  default  ; t - принять "по умолчанию" = "Да"; nil - "Нет"
*    Возвращает 1, если был выбран "Да", 0, если был выбран "Нет", и nil если был выполнен отказ
*    Примеры вызова:
(_kpblc-get-yesno "Проверка" t)
(_kpblc-get-yesno "Проверка" nil)
|;
  (if (not (vl-catch-all-error-p
             (vl-catch-all-apply (function (lambda (/)
                                             (initget "Да Нет Yes No _ Y N Y N")
                                             (setq res (getkword (strcat "\n"
                                                                         message
                                                                         " [Да/Нет] <"
                                                                         (if default
                                                                           "Да"
                                                                           "Нет"
                                                                         ) ;_ end of if
                                                                         "> : "
                                                                 ) ;_ end of strcat
                                                       ) ;_ end of getkword
                                             ) ;_ end of setq
                                             (setq res (if (not res)
                                                         default
                                                         (= res "Y")
                                                       ) ;_ end of if
                                             ) ;_ end of setq
                                           ) ;_ end of lambda
                                 ) ;_ end of function
             ) ;_ end of vl-catch-all-apply
           ) ;_ end of vl-catch-all-error-p
      ) ;_ end of not
    (if res
      1
      0
    ) ;_ end of if
  ) ;_ end of if
) ;_ end of defun

И тогда код основной команды становится немного более читабельным:

 (initget "Да Нет  0 1 2 3")
 (setq backgroundfill(getkword  "\n Заливка фон MTEXTa (Да,Нет) <Да>"))
 
(cond 
	((or (= backgroundfill nil) (= backgroundfill "Да") (= backgroundfill 3) )
	(setq backgroundfill 3)
	)
	
	((or (= backgroundfill 0) (= backgroundfill "Нет") (= backgroundfill "0"))
	(setq backgroundfill 0)
	)
	
	(T 
	(setq  backgroundfill  (atoi backgroundfill))
	)
)   

(cond 
 		((or(= backgroundfill 3)  (= backgroundfill 1)) 
		
			(initget "Да Нет 0 1")
			(setq contour(getkword  "\n Контур MTEXTa (Да,Нет) <Нет>"))
			
			(cond 
				((or (= contour nil) (= contour "Нет") (= contour "0") )
				(setq contour 0)
				)
				
				((or (= contour "1") (= contour "Да"))
				(setq contour 16)
				)
			)
									
			(setq fill (getreal "\n Масштаб заливки фона <1.1>:"))
			(if (= fill nil) (setq fill 1.1) (setq  fill fill))	
			
			)
		
		
				
		(T (princ "\n Без Заливки MTEXTa \n ")
			(setq  fill 0)
			(setq contour 0)
		)
		
)

(initget "Да Нет  0 1")
 (setq centr (getkword  "\n Центрировать текст (Да,Нет) <Да>"))

(cond 
((or (= centr nil) (= centr "Да") (= centr 1) )
	(setq centr 5)
	)
)

(initget "Да Нет  0 1 3")
 (setq VPU (getkword  "\n Заменить на ВПУ?(Да,Нет) <Нет>"))

(cond 
	((or (= VPU nil) (= VPU "Нет") (= VPU 0 ) )
	(setq VPU 0)
	
	)

	((or (= VPU 1) (= VPU "1"))
	(setq VPU 1)
	
	)

	((or (= VPU 3) (= VPU "3") )
	(setq VPU 3)
	
	)
)

заменится на

  (setq backgroundfill (_kpblc-get-yesno "Заливка фона MTEXT" t)
        centr (_kpblc-get-yesno "Центрировать тексты" t)
        vpu  (_kpblc-get-yesno "Заменить на ВПУ" nil)
  )

А потом уже преобразовывать ответы. А по-хорошему, наверное, стоило бы вообще делать примерно так:

  (if (and (setq backgroundfill (_kpblc-get-yesno "Заливка фона MTEXT" t))
           (setq centr (_kpblc-get-yesno "Центрировать тексты" t))
           (setq vpu  (_kpblc-get-yesno "Заменить на ВПУ" nil)))
    (progn
	;; И здесь основная логика
	)
	(princ "\nОтказ выполнения")
  )


 

 

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Tell a friend

    Love Официальный форум компании Нанософт Разработка? Tell a friend!
×
×
  • Create New...