You are on page 1of 18

http://docs.autodesk.

com/ACD/2011/ENU/filesALR/WSfacf1429558a55de1a7524c1004e616f8b-
5913.htm
http://www.hispacad.com/foro/viewtopic.php?t=29660

Seleccionar Objeto(s).
Funcion SSGET

Se puede usar sin parametros.


(setq Conjunto (ssget))

(setq Conjunto (ssget "X"))


Selecciona todos los objetos en el archivo.

(setq Conjunto (ssget "P"))


Selecciona todos los objetos de la seleccion anterior.

(setq Conjunto (ssget "L"))


Selecciona el ultimo objeto creado en el dibujo.

(setq Conjunto (ssget "W" p1 p2))


Selecciona los objetos que se encuentren dentro de la ventana conformada por los
vertices p1 y p2.

(setq Conjunto (ssget "C" p1 p2))


Selecciona los objetos que se encuentren dentro o atraviesen la ventana conformada por los
vertices p1 y p2.

(setq Conjunto (ssget "WP" lista_puntos))


Selecciona los objetos que se encuentren dentro de la ventana conformada por los
vertices de la lista de puntos.

(setq Conjunto (ssget "CP" lista_puntos))


Selecciona los objetos que se encuentren dentro o atraviesen la ventana conformada por los
vertices de la lista de puntos.

(setq Conjunto (ssget "F" lista_puntos))


Selecciona todos los objetos que se cruzen con el borde formado por una lista de puntos.

Selecciona todos los elementos que cumplan los parametros de filtro.


(ssget "X"(list;;;;;;;;;;;;;;;;;;Creamos una lista
(cons 0 "CIRCLE");;;;;;Construimos el par punteado nombre del Objeto "CIRCLE"
(cons 8 "Construido");;Construimos el par punteado nombre del Layer ""Construido"
(cons 62 1);;;;;;;;;;;;Construimos el par punteado nombre del Color Rojo
);;;;;;;;;;;;;;;;;;;;;;Cerramos la lista
);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Cerramos la seleccion.
Esta se ejecuta de manera automatica debido al argumento "X".

Otra forma de expresion del ejemplo anterior.


(ssget "X" '((0 . "CIRCLE")
(8 . "Construido")
(62 . 1)
)
)

Operadores relacionales y booleanos.


(ssget "x" (list;;;;;;;;;;;;;Creamos una lista
(cons 0 "TEXT");;;Construimos el par punteado nombre del Objeto "TEXT"
(cons -4 "<=");;;;Construimos el par punteado del operador "Menor que o igual"
(cons 40 2.5);;;;;;;Construimos el par punteado Altura igual a 2.5
)
)

El operador relacional, que ha de ser una cadena, se aplica a la condicin que le siga en
la lista. En este ejemplo, SSGET selecciona entidades de texto de altura (asociativo 40)
sea menor o igual ("<=") a 2.5.

Operador relacional Descripcin


____________________________________________________________
"*" Cualquier valor (siempre verdadero)
"=" Igual que
"!=" Distinto de
"+/=" Distinto de
"<>" Distinto de
"<" Menor que
"<=" Menor o igual que
">" Mayor que
">=" Mayor o igual que
"&" AND binario (slo grupos de nmeros enteros)
"&=" Igual a enmascarado binario (slo grupos de nmeros enteros)

(ssget "X" (list;;;;;;;;;;;;;Creamos una lista


(cons 0 "LINE");;;:Construimos el par punteado nombre del Objeto "LINE"
(CONS -4 "<,>,*");;Construimos el par punteado de los operadores "Menor que","Mayor
que","Cualqueir valor"
'(11 10 100);;;;;;Creamos una lista que se relaciona con los aoperadores en el mismo orden
)
)
Seleccionar todas las lneas con coordenadas de punto final (asociativo 11):
X menores que 10, Y mayores que 100, Z cualesquiera.

Operadores booleanos
Estos operadores se especifican con el cdigo 4:
Operador booleano inicial Encierra... Operador booleano final
"<AND" uno o ms operandos "AND>"
"<OR" uno o ms operandos "OR>"
"<XOR" dos operandos "XOR>"
"<NOT" un operando "NOT>"

Ejemplo:
(ssget "X" '((-4 . "<OR");;Creamos la lista del primer Operador
(-4 . "<AND");;;;;;;;;;;;;;Creamos la lista del segundo Operador
(0 . "LINE");;;;;;;Construimos el par punteado nombre del Objeto "LINE"
(8 . "Construido");Construimos el par punteado nombre del Layer "Construido"
(-4 . "AND>");;;;;;;;;;;;;;Cerramos la lista del segundo Operador
(-4 . "<AND");;;;;;;;;;;;;;Creamos la lista del tercer Operador
(0 . "ARC");;;;;;;;Construimos el par punteado nombre del Objeto "ARC"
(40 . 10);;;;;;;;;;Construimos el par punteado DEL radio 10
(-4 . "AND>");;;;;;;;;;;;;;Cerramos la lista del tercer Operador
(-4 . "OR>");;;;;;;;;;;;;;Cerramos la lista del primer Operador
)
)
Esto nos permite Seleccionar todos los objetos y filtrarlos de la siguiente manera:
Lneas que se encuentren en el Layer "Construido" y Arcos que tenga radio igual a 10.
Los dems objetos no sern seleccionados.

(ssget "_:e") Selecciona todo lo que esta dentro de la caja del cursor (pickbox)
(ssget "_:n") llama a ssnamex para obtener informacin adicional sobre bloques contenedores y
matrices de transformacin para cualquier entidad seleccionada durante la operacin.
(ssget "_:r")
(ssget "_:s") Permite una sola seleccion.
(ssget "_:u") permite seleccionar subentidades.
(ssget "_:d") permite duplicados.
(ssget "_:v")fuerza la seleccion de subentidades. Esta es la que me gusta para polilineas
:DN;;Manejo de selecciones (selection sets)
(ssname ss #) ;;Obtiene el nombre de entidad (Entity name) de un elemento especfico de la
seleccin donde el 0 es el primer elemento
;; devuelve nombre de la entidad o nil si no hay entidad en ndice especifico
(ssnamex ss #) ;;Obtiene el nombre de entidad adems de informacin del mtodo por el cual fue
seleccionado, incluyendo las coordenadas
;;devuelve lista con el mtodo de seleccin, nombre de entidad y coordenadas (segn el caso)

;; IDs de Metodo de seleccin


;;0 nonspecific (i.e., Last All etc.)
;;1 Pick
;;2 Window or WPolygon
;;3 Crossing or CPolygon
;;4 Fence

(sslength ss);;Obtiene la cantidad de elementos que contiene la seleccin


;;Regresa un valor entero o nil si la seleccin no contiene ningn objeto
(ssmemb ename ss) ;;Prueba si una entidad pertenece a una seleccin, si pertenece regresa el
nombre de la entidad y si no regresa NIL
(ssadd ename ss) ;;Agrega una entidad a una seleccin ;;devuelve la seleccin con la entidad
aadida
(ssdel ename ss) ;;Elimina una entidad de una seleccin ;;devuelve la seleccin con la entidad
eliminada
(sssetfirst gripset pickset) ;;Fija que objetos son seleccionados y con grips activos
;;pickset es la seleccin que estar seleccionada
;;gripset es la seleccin que se le activaran los pinzamientos
(ssgetfirst) ;;Determina que objetos estn seleccionados y con pinzamientos activos
;; Devuelve una lista de dos selecciones la primera es la seleccin de objetos que estn con los
grips activos pero no seleccionados ;; y al segunda la seleccin de objetos seleccionados y con
pinzamientos activos
(SSNAME conjunto ndice) devuelve el nombre de la entidad (cdigo -1), el conjunto de seleccin
especificado, situado en el lugar indicado por el ndice.
Entidades dentro de un conjunto numeradas comienzan en 0.
As, en un conjunto con cinco entidades, que se numeran de 0 a 5. Por ejemplo:
Seleccionamos varias entidades pero la nica a evaluar ser la primera con ndice (ssname 0),
y se guardara en la variable Entidad.
(SETQ Entidad (SSNAME (SSGET) 0))

Para acceder a las dems entidades necesitamos ejecutar un bucle (while o repeat).

Ej.-
(SETQ Entidad (SSGET));;;;;;;;;;;;;;;;Seleccionamos un conjunto
(SETQ Longentidad (SSLENGTH Entidad));Longitud de elementos en el conjunto
(SETQ Cont 0);;;;;;;;;;;;;;;;;;;;;;;;;Indice con valor Cero
(REPEAT Longentidad;;;;;;;;;;;;;;;;;;;Repetimos el no. de veces de la longitud del conjunto
(SETQ Nombreentidad (SSNAME Entidad Cont));;;;Obtenemos el nombre de la entidad Cero del
Conjunto
;;;;;;;APLICAMOS UNA FUNCION PARA EL NOMBRE;;;;;;;;;;;;;;;
(SETQ Cont (+ 1 Cont));;;Sumamos una unidad al valor del ndice para que cuando repita la accin
tome la
;;;;;;;;;;;;;;;;;;;;;;;;;siguiente entidad del conjunto
);;;;;;;;;;;;;;;;;;;;;;;;Terminamos el REPEAT

EJ.-
(SETQ Entidad (SSGET));;;;;;;;;;;;;;;;Seleccionamos un conjunto
(SETQ Longentidad (SSLENGTH Entidad));Longitud de elementos en el conjunto
(SETQ Cont 0);;;;;;;;;;;;;;;;;;;;;;;;;Indice con valor Cero
(while (<= Cont Longentidad);;;;;;;;;;Mientras el valor del ndice sea menor o igual a la longitud del
conjunto
(SETQ Nombreentidad (SSNAME Entidad Cont));;;;Obtenemos el nombre de la entidad Cero del
Conjunto
(SETQ Cont (+ 1 Cont));;;Sumamos una unidad al valor del ndice para que cuando repita la accin
tome la
;;;;;;;;;;;;;;;;;;;;;;;;;siguiente entidad del conjunto
);;;;;;;;;;;;;;;;;;;;;;;;Terminamos el WHILE

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Para gerardo ayuda con el lisp xD

Notapor Gilberth Vie 01 Ago, 2008 16:58


Tengo un lisp que me borra capas y a otras les asigna otros valores para dibujar una planta del
nivel interior pero tengo un problema quiero hacer un filtro de seleccin que sea algo asi (ssget
"all" '((8 . "*capa"))) el problema es que no solo quiero filtrar la capa si no tambin todos aquellos
textos que tengan escrito lo mismo "VE2" algo asi para sustituirlas por otro texto solo que el
usuario no tenga la necesidad de seleccionarlos que por el filtro las seleccione solas pero no se
como hacerle gracias:-) :cry:
ltima edicin por Gilberth el Sab 02 Ago, 2008 00:22, editado 1 vez en total

Gilberth

Mensajes: 180
Registrado: Jue 08 May, 2008 19:19

Arriba
Re: Otra ayuda para terminar un lisp

Notapor gerardogqa Vie 01 Ago, 2008 17:44


(ssget "_X" '((0 . "text")(8 . "*capa")(1 . "VE2")))

Esto selecciona de todo el dibujo actual, los textos que digan "VE2" y que esten en la capa
indicada.

Ojo con el "*" que pusiste, este hara que la seleccion tome todas las capas que que terminen con
la particula capa ejemplo: "algunacapa" "_capa" "capa" "columnas-capa"

Lo mismo si quieres seleccionar tanto textos como multitextos pones (0 . "*text")

gerardogqa

Mensajes: 2312
Registrado: Mar 06 Mar, 2007 21:47

Arriba

Notapor Gilberth Sab 02 Ago, 2008 00:26


Aca te dejo el lisp aun le falta un poco de arreglo pero en si funciona

Cdigo: Seleccionar todo


(defun c:hola (/ ss1 ss2 ss3 ss4 ss5 tx v w x y z)
(command "undo" "be")
(if
(setq ss1 (ssget "_x" '((0 . "*text")(8 . "*SROT4")(1 . "VF1"))))
(progn (setq tx "VE/") (setq v 0)
(repeat (sslength ss1)
(setq nent
(ssname ss1 v)
lent (entget nent)
v (1+ v)
)
(entmod (subst (cons 1 tx)
(assoc 1 lent) lent))
)))
(if
(setq ss2 (ssget "_x" '((0 . "*text")(8 . "*SROT4")(1 . "VF2"))))
(progn (setq tx "VE/") (setq w 0)
(repeat (sslength ss2)
(setq nent
(ssname ss2 w)
lent (entget nent)
w (1+ w)
)
(entmod (subst (cons 1 tx)
(assoc 1 lent) lent))
)))
(if
(setq ss3 (ssget "_x" '((0 . "*text")(8 . "*SROT4")(1 . "VF3"))))
(progn (setq tx "VE/") (setq x 0)
(repeat (sslength ss3)
(setq nent
(ssname ss3 x)
lent (entget nent)
x (1+ x)
)
(entmod (subst (cons 1 tx)
(assoc 1 lent) lent))
)))
(if
(setq ss4 (ssget "_x" '((0 . "*text")(8 . "*SROT4")(1 . "VF4"))))
(progn (setq tx "VE/") (setq y 0)
(repeat (sslength ss4)
(setq nent
(ssname ss4 y)
lent (entget nent)
y (1+ y)
)
(entmod (subst (cons 1 tx)
(assoc 1 lent) lent))
)))
(if
(setq ss5 (ssget "_x" '((0 . "*text")(8 . "*SROT4")(1 . "VF5"))))
(progn (setq tx "VE/") (setq z 0)
(repeat (sslength ss5)
(setq nent
(ssname ss5 z)
lent (entget nent)
z (1+ z)
)
(entmod (subst (cons 1 tx)
(assoc 1 lent) lent))
)))
(if (tblsearch "layer" "Hs1") (command "-laydel" "n" "Hs1" "" "y"))
(if (tblsearch "layer" "Hs4") (command "-laydel" "n" "Hs4" "" "y"))
(if (tblsearch "layer" "Hs3") (command "-laydel" "n" "Hs3" "" "y"))
(if (tblsearch "layer" "2H") (command "-laydel" "n" "2H" "" "y"))
(if (tblsearch "layer" "0-PLAC") (command "-laydel" "n" "0-PLAC" "" "y"))
(if (tblsearch "layer" "0-BUQ-V")
(progn (command "-LAYER" "m" "0-VE" "C" 144 "" "")
(setq ss1 (ssget "all" '((8 . "*0-BUQ-V"))))
(command "change" ss1 "" "p" "la" "0-VE" "")))
(if (tblsearch "layer" "0-BUQ-P")
(progn (command "-LAYER" "m" "0-VE" "C" 144 "" "")
(setq ss2 (ssget "all" '((8 . "*0-BUQ-P"))))
(command "change" ss1 "" "p" "la" "0-VE" "")))
(if (tblsearch "layer" "0-VF")
(progn (command "-LAYER" "m" "0-VE" "C" 144 "" "")
(setq ss2 (ssget "all" '((8 . "*0-VF"))))
(command "change" ss2 "" "p" "la" "0-VE" "")))
(command "undo" "end")
)

Y te dejo el dwg para que lo compares gracias

Adjuntos

I-1143APLF01-G.dwg
nueva version
(106.56 KiB) 7 veces

ltima edicin por Gilberth el Sab 02 Ago, 2008 23:45, editado 1 vez en total

Gilberth

Mensajes: 180
Registrado: Jue 08 May, 2008 19:19

Arriba

Re: Para gerardo ayuda con el lisp xD

Notapor gerardogqa Sab 02 Ago, 2008 06:31


Si funciona esta bien. La practica te va enseando a aplicar las formas y funciones mas adecuadas
para comodidad tuya y rendimiento de la maquina.

Por ejemplo mira esta version de tu rutina. Comparalas para que notes donde se redujo
Cdigo: Seleccionar todo
(defun c:hola (/ ss lent v caso)
(command "undo" "be")
(setq v 0)
(if (setq ss (ssget "_X" '((0 . "*text")(8 . "SROT4")(1 . "VF*")) ))
(repeat (sslength ss)
(setq lent (entget (ssname ss v))
v (1+ v))
(entmod (subst '(1 . "VE/") (assoc 1 lent)lent))
)
)
(foreach caso '("Hs1" "Hs4" "Hs3" "2H" "0-PLAC")
(if (tblsearch "layer" caso) (command "-laydel" "n" caso "" "y"))
)
(if (setq ss (ssget "_X" '((8 . "0-BUQ-V,0-BUQ-P,0-VF"))))
(command "-layer" "m" "0-VE" "C" 144 "" "" "change" ss "" "p" "la" "0-VE" ""))
(command "undo" "end")
)

gerardogqa

Mensajes: 2312
Registrado: Mar 06 Mar, 2007 21:47

Arriba

Re: Para gerardo ayuda con el lisp xD

Notapor devitg Sab 02 Ago, 2008 13:43


Mas claro imposible .
Uso acad 2008 en W7.
DEVITG@GMAIL.COM
Si tuviera ocho horas , para voltear un arbol , me pasaria seis horas afilando mi hacha.
Abraham Lincoln
Mi nombre es Gabriel (Gabo)

devitg

Mensajes: 5770
Registrado: Lun 15 Mar, 2004 00:46
Ubicacin: CORDOBA ARGENTINA

Arriba
Re: Para gerardo ayuda con el lisp xD

Notapor Gilberth Sab 02 Ago, 2008 15:20


Ok veo que aun era mas simple de lo q pensaba por dicha hay cosas que aprendi con esta ayuda...
Pero tengo otra se podria hacer un filtro por geometria y por un valor alfabetico lo que quiero es q
si miras el dibujo que te di hay una etiqueta con un cuadrado verde con una sola letra pero con
diferentes valores alfabticos lo que quiero seria borrarlos espero no pasarme gracias :)
ltima edicin por Gilberth el Sab 02 Ago, 2008 17:01, editado 1 vez en total

Gilberth

Mensajes: 180
Registrado: Jue 08 May, 2008 19:19

Arriba

confirmar los elementos a borrar

Notapor devitg Sab 02 Ago, 2008 16:13


Me imagino , que son los cuadrados que tienen una sola letra.

O mejor mrcalos en el DWG

La clarividencia o adivinacin no son mis especialidades.


Uso acad 2008 en W7.
DEVITG@GMAIL.COM
Si tuviera ocho horas , para voltear un arbol , me pasaria seis horas afilando mi hacha.
Abraham Lincoln
Mi nombre es Gabriel (Gabo)

devitg

Mensajes: 5770
Registrado: Lun 15 Mar, 2004 00:46
Ubicacin: CORDOBA ARGENTINA

Arriba

Re: Para gerardo ayuda con el lisp xD

Notapor Gilberth Sab 02 Ago, 2008 16:57


Devitg exacto son las que dices si me das un par de horas te las marco :-)
Gracias un saludo de su amigo Gilberth :)
Gilberth

Mensajes: 180
Registrado: Jue 08 May, 2008 19:19

Arriba

Re: Para gerardo ayuda con el lisp xD

Notapor gerardogqa Sab 02 Ago, 2008 19:16


Esto podria servir. Selecciona las polilineas de 4 puntos en capa "srot3", luego filtra las que
parecen cuadrados y crea un nuevo conjunto de seleccion con esas polilineas y los textos que
hayan dentro de ellas en capa SROT4, siempre y cuando se encuentre un texto con dichas
caracteristicas

Cdigo: Seleccionar todo


(defun filtro ( / ss cont ssdef nent lent puntos caso ss2 )
(setq ss (ssget "_X" '((0 . "LWPOLYLINE")(8 . "SROT3")(90 . 4)))
cont 0
ssdef (ssadd)
)
(if ss
(repeat (sslength ss)
(setq nent (ssname ss cont)
cont (1+ cont)
lent (entget nent)
puntos nil
)
;;Listar puntos de la polilinea
(foreach caso lent
(if (= (car caso)10) (setq puntos (cons (cdr caso) puntos))))
;;Si parece cuadrado (polilinea cerrada, con deltax=deltay entre el primer y el tercer punto)
(if (and
(equal (abs (- (caar puntos)(caaddr puntos)))
(abs (- (cadar puntos)(cadr (nth 2 puntos))))0.000001)
(= (logand 1 (cdr (assoc 70 lent))) 1)
)
(progn
;;Seleccionar textos en capa srot4 que se encuentren dentro del cuadrado
(if (setq ss2 (ssget "_W" (car puntos)(caddr puntos)'((0 . "*TEXT")(8 . "SROT4"))))
(progn
;;Agregar el texto y el cuadrado a la seleccion definitiva (si existe el texto)
(ssadd (ssname ss2 0) ssdef)
(ssadd nent ssdef)
)
)
)
)
)
)
(eval 'ssdef)
)

gerardogqa

Mensajes: 2312
Registrado: Mar 06 Mar, 2007 21:47

Arriba

Re: Para gerardo ayuda con el lisp xD

Notapor Gilberth Sab 02 Ago, 2008 19:55


Ok capte algunas cosas las que no utilizare la ayuda del auto cad gracias :-)
Gracias un saludo de su amigo Gilberth :)

Gilberth

Mensajes: 180
Registrado: Jue 08 May, 2008 19:19

Arriba

Notapor Gilberth Sab 02 Ago, 2008 23:49

Gilberth escribi:
Devitg exacto son las que dices si me das un par de horas te las marco :-)

Esta acutualizado muchas gracias por el interes

Gilberth

Mensajes: 180
Registrado: Jue 08 May, 2008 19:19

Arriba
Re: Para gerardo ayuda con el lisp xD

Notapor Gilberth Dom 03 Ago, 2008 00:22


gerardo con respecto al filtro que me acabas de dar por lo que veo hace selecciones del cuadrado
y del texto pero no se como aplicarla a la funcion si me pudieras explicar como emplearla perdon
por la ignorancia y gracias otra vez
Gracias un saludo de su amigo Gilberth :)

Gilberth

Mensajes: 180
Registrado: Jue 08 May, 2008 19:19

Arriba

Re: Para gerardo ayuda con el lisp xD

Notapor gerardogqa Dom 03 Ago, 2008 00:43


Aqui un ejemplo de entre las muchas formas de usarlo

Cdigo: Seleccionar todo


(defun c:hola ( / ....)
(defun filtro ( / )
.... cuerpo de la funcion "filtro"
)

... funcion "c:hola"...

(setq ss (filtro))
.... aqui haces lo que quieras hacer con ss

... resto posible de la funcion "c:hola"


)

gerardogqa

Mensajes: 2312
Registrado: Mar 06 Mar, 2007 21:47

Arriba

Re: Para gerardo ayuda con el lisp xD


Notapor Gilberth Dom 03 Ago, 2008 01:10
men exelente ya entendi y funciono muchisimas gracias
Gracias un saludo de su amigo Gilberth :)

Gilberth

Mensajes: 180
Registrado: Jue 08 May, 2008 19:19

Arriba

Notapor Gilberth Lun 04 Ago, 2008 03:52


Hola solo necesito otra pequea ayuda me podrias ayudar con un poco de explicacion de este
codigo
que me proporcionastes e estado leyendo pero la funcionalidad gloval no la capto gracias :oops:

Cdigo: Seleccionar todo


(foreach caso lent
(if (= (car caso)10) (setq puntos (cons (cdr caso) puntos))))
(if (and
(equal (abs (- (caar puntos)(caaddr puntos)))
(abs (- (cadar puntos)(cadr (nth 2 puntos))))0.000001)
(= (logand 1 (cdr (assoc 70 lent))) 1)
)

Cambiar entidades a una capa nueva

Notapor leo Mar 29 Mar, 2005 08:27


Compaeros todos.
Tengo unos planos en los que las entidades dentro de una capa tienen distintas propiedades (De
tipo de linea y de color sobre).
Alguien sabe de alguna rutina que me seleccione las entidades que hay dentro de una misma capa,
seleccionandomelas por capa, por tipo de linea y/o por color, para poder cambiar dichas entidades
a una nueva capa que yo cree.
Se que es complicado, pero me solucionaria muchos problemas, y sobre todo tiempo de ir
seleccionando una a una con el filter.
De madrid al cielo.
Hasta pronto compaeros.

leo
Mensajes: 251
Registrado: Jue 23 Oct, 2003 14:23
Ubicacin: Madrid

Arriba

Re: Cambiar entidades a una capa nueva

Notapor LM2Arq Mar 29 Mar, 2005 08:58


Hola leo.

No hace falta hacer ninguna rutina para lo que pides, ya que AutoCAD viene "de fbrica" bien
surtido respecto de lo que buscas.

Se trata del comando FILTER, que lo puedes usar tanto slo a fin de obtener la seleccin de
objetos que deseas, como en modo transparente dentro de otro comando de AutoCAD
(precedindolo del apstrofo: 'FILTER). Con l puedes crear un filtro de seleccin de objetos que se
acomode a tus necesidades (objetos que cumplan unas determinadas propiedades, o que sean de
determinados tipos de entidades, etc, e incluso con funciones Booleanas AND, OR, XOR, etc.) y
pudiendo aplicar dicho filtro a todo el dibujo o slo a una parte del mismo o al grupo de objetos
que globalmente selecciones. En fin, una delicia de utilidad no del todo bien conocida ni
aprovechada que, como ves, ya est incorporada a AutoCAD desde hace algunas versiones atrs.

Hay otra orden, SELECR (o _QSELECT en ingls), que aunque aparenta ser distinta de la anterior, en
realidad internamente usa de aquella efectuando una seleccin de entidades semejante y lo que
tiene de distinto, digamos en forma "ms elaborada y amigable", es la interfaz grfica de usuario
en su cuadro de dilogo pero que paradjicamente y en contra de lo que nos pudiera sugerir su
nombre de orden ("seleccin rpida" o "quick selection"), no slo no realiza un trabajo de
bsqueda ms rpido sino que, con un filtro complicado y en un dibujo grande, hay mejoras
ostensibles de tiempo en la bsqueda y seleccin de entidades a favor de la orden FILTER.

Un saludo.
LM2Ark.
MIGUEL A. LAZARO, desarrollador de LM2Ark
(aplicacin para arquitectura y construccin)
http://perso.wanadoo.es/lm2ark/index.htm

LM2Arq

Mensajes: 221
Registrado: Dom 16 Nov, 2003 03:01
Ubicacin: Crdoba (ESPAA)

Arriba
Re: Cambiar entidades a una capa nueva

Notapor leo Mar 29 Mar, 2005 11:04


El problema es que tengo muchos archivos y muchas capas con entidades que necesito separar. Lo
estaba intentando con un scr, ya que casi todos los archivos tienen las mismas capas, pero no
consigo utilizar la orden filter en un archivo de este estilo, por eso preguntaba por una rutina de
seleccion de este tipo.
De todas maneras, como puedo usar el filter en un archivo scr?
De madrid al cielo.
Hasta pronto compaeros.

leo

Mensajes: 251
Registrado: Jue 23 Oct, 2003 14:23
Ubicacin: Madrid

Arriba

Re: Cambiar entidades a una capa nueva

Notapor oaleman64 Mar 29 Mar, 2005 12:34


Leo

con una rutina en visuallisp, se podria solucionar tu problema pero necesitaria la siguiente
informacion...........

Capas que se buscarian, el color y tipo de lineas , y la capa hacia donde irian cada una de estas
selecciones.......

bye

oaleman64
Con la Frente en alto
Leal a nosotros
Leal a nuestros principios
Leal a nuestro FSLN
Leal a nuestro grito de combate
PATRIA LIBRE O MORIR

Comandante Tomas Borge (En su memoria)

oaleman64
Mensajes: 1888
Registrado: Vie 21 May, 2004 19:34
Ubicacin: Managua, Nicaragua

Arriba

Re: Cambiar entidades a una capa nueva

Notapor LM2Arq Mar 29 Mar, 2005 16:52


Hola de nuevo leo.

Usando la orden FILTER para, por ejemplo, seleccionar aquellas entidades grficas de un dibujo
que cumplan con las condiciones de ser o bien Lnea o bien Polilnea, y que adems se encuentren
bien en la capa llamada "MUROS" o bien en la capa "SANEAMIENTO", y que adems tengan un
tipo de lnea que sea o bien "LNEAS_OCULTAS" o bien "MORSE_G, y que adems todas las
entidades que deseo seleccionar deben tener cualquier color menos el Rojo, entonces deberemos
fabricar con la referida orden un filtro en el que se aprecie lo siguiente en la ventana de edicin
del filtro del correspondiente cuadro de dilogo de la orden:

Cdigo: Seleccionar todo


**Inicio AND
**Inicio OR
Objeto = Lnea
Objeto = Polilnea
** Fin OR
** Inicio OR
Capa = MUROS
Capa = SANEAMIENTO
** Fin OR
** Inicio OR
Tipo de lnea = LNEAS_OCULTAS
Tipo de lnea = MORSE_G
** Fin OR
** Inicio NOT
Color = 1 - Rojo
** Fin NOT
** Fin AND

El uso de la orden FILTER, por su facilidad de uso, ya que el cuadro de dilogo mediante la lista
desplegable que contiene todos los elementos necesarios para la creacin de filtros complejos con
facilidad, es la herramienta que creo necesitas para el problema que planteas en tu caso.
No obstante si de lo que se tratase es de programar alguna utilidad de propsito general en donde
hiciera falta en algn momento seleccionar un conjunto de entidades que reunen caractersticas y
propiedades diversas que hacen de ello una seleccin compleja similar a la expresada antes, ello
tambin se puede hacer desde la rutina LISP con la funcin SSGET del modo siguiente (para el
mismo ejemplo anterior):

Cdigo: Seleccionar todo


(SSGET "X" '((-4 . "<AND")
(-4 . "<OR")
(0 . "LINE") (0 . "LWPOLYLINE")
(-4 . "OR>")
(-4 . "<OR")
(8 . "MUROS") (8 . "SANEAMIENTO")
(-4 . "OR>")
(-4 . "<OR")
(6 . "LNEAS_OCULTAS") (6 . "MORSE_G")
(-4 . "OR>")
(-4 . "!=") (62 . 1)
;;o lo siguiente en lugar de la lnea anterior:
;;(-4 . "<NOT") (62 . 1) (-4 . "NOT>")
(-4 . "AND>")
)
)

En tu caso te sigo recomendando el uso de la orden FILTER, ya que para cada caso distinto de
seleccin que necesitases te veras obligado a reprogramar la rutina, mtodo siempre ms tedioso
y expuesto a errores (por lo "artesanal"), mientras que la orden FILTER te permite guardar cada
filtro que generes para su uso posterior y en el peor de los casos en que tuvieras que fabricar otro
filtro diferente siempre es ms fcil y exento de errores mediante el manejo interactivo de la
interfaz de usuario que te proporciona el cuadro de dilogo de la orden.

Un saludo.
LM2Ark.

You might also like