12 mar 2008

Comando "chcolor" en vlisp, para seleccionar objetos por color y cambiar color por otro:

;;;----Rutina "chcolor"
;;;----pide numero de color a buscar
;;;----y numero de color nuevo
;;;----selecciona objetos segun color
;;;----y cambia color por el nuevo
;;;----luego queda indicada la
;;;----selección.
;;;***********************************************************
;;;*(c) by Prexem - Víctor Adolfo Bracamonte - 2008*
;;;***********************************************************
(defun c:chcolor ( /
color-busc
newcolor
sel
cant
index
selxcol
ent
vla-obj
color-obj
)
(vl-load-com)
(setq color-busc
(getint
"\nDar numero del color buscado: "
)
newcolor
(getint
"\nDar numero del color nuevo: "
)
)
(setq sel (ssget "_X")
cant (sslength sel)
index 0
selxcol (ssadd)
)
(repeat cant
(setq ent (ssname sel index)
vla-obj (vlax-ename->vla-object ent)
color-obj (vla-get-color vla-obj)
)
(if (equal color-busc color-obj)
(setq selxcol (ssadd ent selxcol))
);if
(setq index (1+ index))
);repeat
(command "_chprop" selxcol "" "c" newcolor "")
(sssetfirst nil selxcol)
(prompt "\n*ESCAPE para deseleccionar*")
(princ)
);fin defun

10 mar 2008

Rutina vlisp para numerar secuencialmente bloques desde un número inicial dado:

;;; Numerador secuencial de bloques
;;; comando "num_bl"
;;; (c) by PREXEM -
;;; Víctor Adolfo Bracamonte - 2008.
;;;*************************************
(defun c:num_bl (/
osmodant
cmdant
mob_bl
sel
n
numero
cont
bl
pt0
pttext
)
(setq osmodant (getvar 'osmode))
(setvar "osmode" 0)
(setq cmdant (getvar 'cmdecho))
(setvar "cmdecho" 0)
(setq nomb_bl
(getstring t "\nDar nombre del bloque: ")
)
(prompt "\nSeleccione Bloques : ")
(setq sel (ssget
(list
(cons 0 "INSERT")
(cons 2 nomb_bl)
)
)
n (sslength sel)
numero (getint "\nDar numero inicial: ")
cont 0
)
(repeat n
(setq bl (ssname sel cont)
pt0 (cdr (assoc 10 (entget bl)))
pttext (mapcar
'+
pt0
(list 10 10 0)
)
)
(command "_.text"
"_J"
"_R"
pttext
""
""
(itoa numero)
)
(setq cont (1+ cont)
numero (1+ numero)
)
);repeat
(setvar "osmode" osmodant)
(setvar "cmdecho" cmdant)
(princ)
);fin defun