;; DCL Temporal ---> Lee Mac
(setq EscalaTextVersion
"1.1")
(defun TextoEscala:GetSavePath
( / tmp
) )
( (setq tmp (findfile "ACAD.pat"))
(vl-string-right-trim "\" (vl-string-translate "/" "\" (vl-filename-directory tmp)))
)
( (vl-string-right-trim "\" (vl-filename-directory (vl-filename-mktemp))))
)
)
;; Agregar Listado ---> Lee Mac
(defun _ax:start ( key lst )
(start_list key)
(mapcar 'add_list lst)
(end_list)
lst
)
;; ssget - Lee Mac
;; A wrapper for the ssget function to permit the use of a custom selection prompt
;; msg - [str] selection prompt
;; arg - [lst] list of ssget arguments
(defun LM:ssget ( msg arg / sel )
(princ msg)
(setvar 'nomutt 1)
(setq sel (vl-catch-all-apply 'ssget arg))
(setvar 'nomutt 0)
(if (not (vl-catch-all-error-p sel)) sel)
)
;; Start Undo - Lee Mac
;; Opens an Undo Group.
(defun LM:startundo ( doc )
(LM:endundo doc)
(vla-startundomark doc)
)
;; End Undo - Lee Mac
;; Closes an Undo Group.
(defun LM:endundo ( doc )
(while (= 8 (logand 8 (getvar 'undoctl)))
(vla-endundomark doc)
)
)
;; Active Document - Lee Mac
;; Returns the VLA Active Document Object
(defun LM:acdoc nil
(eval (list 'defun 'LM:acdoc 'nil (vla-get-activedocument (vlax-get-acad-object))))
(LM:acdoc)
)
;;; ----------------------- Función Principal ----------------------
(defun c:MESCTEXT (/ *error* texto_escala)
(vl-load-com)
;;; Control de errores
(defun *error* ( msg )
(LM:endundo (LM:acdoc))
(if (not (wcmatch (strcase msg t) "*break,
*cancel
*,
*exit*")) (princ (strcat "\nError: " msg))
)
(princ)
)
(setq texto_escala '("*Selecciona Escala*" "1:20" "1:25" "1:50" "1:75" "1:100" "1:125" "1:200" "1:250" "1:500" "MS:PS"))
;;----------Ruta temporal y configuración DCL ---------------------------------
;;Guardamos la ruta con la funcíon (NumInc:GetSavePath)
;;-----------------------------------------------------------------------------
(setq savepath (TextoEscala:GetSavePath))
(setq dcl (strcat savepath "\\Biblioteca_Block" (vl-string-translate "." "-" EscalaTextVersion) ".dcl"))
(setq des (open dcl "w"))
(foreach line
'(
"spc1 : spacer"
"{"
" height = 0.1;"
" fixed_height = true;"
" width = 0.1;"
" fixed_width = true;"
"}"
"EscalaText : dialog { label = "Escala textos:"; width=30;"
"spc1;"
" : row { alignment = left; "
" : paragraph {"
" : text_part {key = "LtSample8"; label = "";}"
" }"
" }"
"spc1;"
":popup_list { key = "key_text_escala"; width=20; value = "1";}"
"spc1;"
" : row {"
" : button { label = " &Cancelar "; mnemonic = "C"; key = "cancel"; fixed_width = true; is_cancel = true;}"
" : button { label = " &Aplicar "; key = "key_in"; fixed_width = true;}"
" }"
"spc1;"
" : row { alignment = left; "
" : text {label = "Copyright (c) Ax:Program Lisp"; } "
" }"
"}"
)
"\n--------------------------------------------------------------------------------"
"\nlamentamos este inconveniente porfavor comunicate via"
"\nemail [ amc.dicsac@gmail.com ]"
"\n"))
;;Carpetas por defecto
(if (null key_text_escala
) (setq key_text_escala
"0"))
;;--------------------------- _addlist -----------------------------------------
;;Agregamos la lista con su propio "key"
;;------------------------------------------------------------------------------
(_ax:start "key_text_escala" texto_escala)
;;--------------------------- set_tile / action_tile "key_text_escala"-----------------------------------------
;;Definimos la lista de escalas para luego usarlas
;;y la guardarmos en la varibale key_text_escala
;;------------------------------------------------------------------------------------------------------
(set_tile "key_text_escala" key_text_escala
) (action_tile "key_text_escala" "(setq var_text_escala (nth (atoi (setq key_text_escala $value)) texto_escala))")
(action_tile "cancel" "(setq *screenpointEscalaText* (done_dialog 1))") (action_tile "key_in" "(setq *screenpointEscalaText* (done_dialog 2))") (if (= ddiag
1) (prompt "\n*Programa Cancelado...*")) (if (= ddiag
2) (2ap_Program_Escalatext
))
;;----------- Programa para modificar las escalar ----------------
(defun 2ap_Program_Escalatext
( ) (cond ((= var_text_escala
"1:20") (setq opt_escala
0.035)) ((= var_text_escala
"1:25") (setq opt_escala
0.040)) ((= var_text_escala
"1:50") (setq opt_escala
0.10)) ((= var_text_escala
"1:75") (setq opt_escala
0.13)) ((= var_text_escala
"1:100") (setq opt_escala
0.18)) ((= var_text_escala
"1:125") (setq opt_escala
0.23)) ((= var_text_escala
"1:200") (setq opt_escala
0.36)) ((= var_text_escala
"1:250") (setq opt_escala
0.40)) ((= var_text_escala
"1:500") (setq opt_escala
0.90)) ((= var_text_escala
"MS:PS") (setq opt_escala
2.0))) (LM:startundo (LM:acdoc))
(prompt "\n- Cambiar texto(s) de altura: ") (if (setq i
-1 ObjSelect
(LM:
ssget "\nSelecciona el texto, mtext o attdef <exit>: " '
(((0 .
"text,mtext,attdef"))))) (LM:endundo (LM:acdoc))