Página 1 de 1

Autolisp gestión de capas

Publicado: Mar Jun 24, 2008 5:34 pm
por oscoag
Hace tiempo cayeron en mis manos una serie de rutinas autolisp para gestión de capas.
Lamentablemente las he perdido. Recuerdo que había una, que bloqueaba todas las capas menos la que se seleccionaba.
¿Alguien las conoce, para autocad 2008?

Gracias.

Publicado: Mié Jun 25, 2008 12:07 pm
por Afga
No serian las express de autocad esas herramientas que mencionas?

En el caso de que no fuesen estas, recuerdas como se llamaba para a ver si podemos localizarla.

Un saludo

Publicado: Mié Jun 25, 2008 12:26 pm
por oscoag
Gracias Afga, pero no se trata de las express tools.

Creo que la he localizado, pero no funciona en autocad 2008.

Te trannscribo a continuación la secuencia que me aparece en visualisp:

(defun c:blcap()
(command "undo" "begin")
(setq osna (getvar "OSMODE"))
(setvar "OSMODE" 512)
(setq p1 (getpoint "Seleccionar capa a no bloquear"))
(setq sel (ssget p1))
(setq nsel (ssname sel 0))
(setq lent (entget nsel))
(setq cap (cdr (assoc '8 lent)))
(command "-layer" "lo" "*" "u" cap "")
(setvar "OSMODE" osna)
(command "undo" "end")
)

La aplicación en cuestión, funcionaba de tal manera que al seleccionar un objeto de una capa cualquirera, automáticamente bloqueaba el resto de capas, lo que optimizaba mucho el rendimiento de trabajo.
Además recuerdo que había otra que realizaba el proceso inverso, esto es, desbloqueaba todas las capas bloqueadas con una sola órden.


Un saludo y gracias

Publicado: Mié Jun 25, 2008 12:58 pm
por Afga
Prueba con estos pequeños cambios.

Código: Seleccionar todo

;; Desbloquea todas las capas excepto la seleccionada

(defun c:blcap (/ osna sset cap)

(vl-load-com)
(vl-cmdf "_undo" "_begin") 
(setq osna (getvar "OSMODE")) 
(setvar "OSMODE" 512)

(setq sset (entget (car (entsel "\nSeleccione la capa a no bloquear"))))
(setq cap (cdr (assoc 8 sset)))
  
(vl-cmdf "_-layer" "_lock" "*" "_unlock" cap "")
  
(setvar "OSMODE" osna) 
(vl-cmdf "_undo" "_end")
  
) ;_end defun blcap

;; ////////////////////////////////////////////////////////

;; Desbloquea todas las capas

(defun c:ublcap (/ osna)

(vl-load-com)
(vl-cmdf "_undo" "_begin") 
(setq osna (getvar "OSMODE")) 
(setvar "OSMODE" 512)
  
(vl-cmdf "_-layer" "_unlock" "*" "")
  
(setvar "OSMODE" osna) 
(vl-cmdf "_undo" "_end")
  
) ;_end defun blcap

Publicado: Mié Jun 25, 2008 1:49 pm
por oscoag
Afga, definitivamente, eres un genio.

Funciona perfectamente.

La única "pega" en que tarda un poco en ejecutarla.

Saludos y muchas gracias.