Seleccion Bloques Intersectados

Ver el tema anterior Ver el tema siguiente Ir abajo

Seleccion Bloques Intersectados

Mensaje por SushyM el Vie Sep 22, 2017 1:31 am

Consulta
Tengo unos bloques, algunos estan intersectado por algunas lineas y otros no, hay alguna forma de seleccionar solo los bloques intersectados. o en caso contrario los no intersectado por las lineas.
O tal vez darme una idea de como hacerlo.

https://drive.google.com/open?id=0B3HBbf2wcY4nZjlaeVUxMTZUeU0

;-) Saludos.

SushyM

Mensajes : 20
Fecha de inscripción : 13/09/2017

Ver perfil de usuario

Volver arriba Ir abajo

Re: Seleccion Bloques Intersectados

Mensaje por nolo el Vie Sep 22, 2017 8:10 pm

Mi Maestro Devitg dice que una imagen no se puede editar en autocad, y esta en lo cierto.
Pero como en este caso parece que el nombre de los bloques da igual, prueba con esto que debe funcionar siempre que tanto línea como bloques sean bien visibles en la pantalla del espacio modelo
Los bloques que cortan la línea
Código:
(defun c:setb( / ss)
(setq ss (ssget "_f"
 (mapcar 'cdr (vl-remove-if-not
 '(lambda(a)(member (car a) '(10 11)) )
 (entget (car(entsel "Seleccionar línea : ")))
 ))
 '((0 . "INSERT"))
))
(sssetfirst ss ss)
(princ)
)
Los bloques que no la cortan
Código:
(defun c:nsetb( / ss sb)
(setq sb (ssget "_a"'((0 . "INSERT")) )
 ss (ssget "_f"
 (mapcar 'cdr (vl-remove-if-not
 '(lambda(a)(member (car a) '(10 11)) )
 (entget (car(entsel "Seleccionar línea : ")))
 ))
 '((0 . "INSERT")))
 ss (mapcar 'cadr (ssnamex ss))
)
(foreach a ss (ssdel a sb))
(sssetfirst sb sb)
(princ)
)

Un saludo

nolo

Mensajes : 131
Fecha de inscripción : 17/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Seleccion Bloques Intersectados

Mensaje por SushyM el Vie Sep 22, 2017 10:26 pm

Hola, si puse esa imagen era para capturar la idea de seleccion, hasta donde he visto esta rutina cumple lo que menciona, pero si tuviera una muchas lineas en el espacion como podria hacer para que la rutina tenga la opcion de seleccionar masivamente y de toda esa seleccion solo me deje los intersectados o lo no intersectados.

https://drive.google.com/open?id=0B3HBbf2wcY4nUmJzdUtHT2dfYnc Bloques a seleccionar
https://drive.google.com/open?id=0B3HBbf2wcY4ndVp1N0IySDlpQ0k Forma de seleccion

Ojala se pueda lograr esto
;-)

SushyM

Mensajes : 20
Fecha de inscripción : 13/09/2017

Ver perfil de usuario

Volver arriba Ir abajo

sin persona, difícil hacer el traje

Mensaje por Admin el Lun Sep 25, 2017 4:53 pm

Sube el DWG o lo envías a mi correo devitg@gmail.com

Admin
Admin

Mensajes : 160
Fecha de inscripción : 16/03/2016
Edad : 69
Localización : CORDOBA ARGENTINA

Ver perfil de usuario http://acadhispano.foroargentina.net

Volver arriba Ir abajo

Re: Seleccion Bloques Intersectados

Mensaje por SushyM el Lun Sep 25, 2017 5:57 pm

Saludos amigos,
Devit ya lo envio, pero igual lo cuelgo al drive
https://drive.google.com/open?id=0B3HBbf2wcY4nUlNJUkZJWk1xYlk
;-)

SushyM

Mensajes : 20
Fecha de inscripción : 13/09/2017

Ver perfil de usuario

Volver arriba Ir abajo

bloque si , bloques no

Mensaje por Admin el Mar Sep 26, 2017 7:44 pm

SushyM escribió:Consulta
Tengo unos bloques, algunos estan intersectado por algunas lineas y otros no, hay alguna forma de seleccionar solo los bloques intersectados. o en caso contrario los no intersectado por las lineas.
O tal vez darme una idea de como hacerlo.

https://drive.google.com/open?id=0B3HBbf2wcY4nZjlaeVUxMTZUeU0

;-) Saludos.

Bien te comento hay

261 interceptados
79 no interceptados

Ahora ¿QUE quieres hacer ?






Admin
Admin

Mensajes : 160
Fecha de inscripción : 16/03/2016
Edad : 69
Localización : CORDOBA ARGENTINA

Ver perfil de usuario http://acadhispano.foroargentina.net

Volver arriba Ir abajo

Re: Seleccion Bloques Intersectados

Mensaje por SushyM el Mar Sep 26, 2017 9:09 pm

Hola que tal amigo Devitg
Como comente al inicio poder seleccionarlo, con la ayuda que tuve de nolo se podia hacer pero no de la forma masiva, solo de linea por linea.
Una vez que los tenga seleccionado voy a poder agruparlos.

;-)


SushyM

Mensajes : 20
Fecha de inscripción : 13/09/2017

Ver perfil de usuario

Volver arriba Ir abajo

Re: Seleccion Bloques Intersectados

Mensaje por Admin el Mar Sep 26, 2017 9:25 pm

Y luego qué?

Admin
Admin

Mensajes : 160
Fecha de inscripción : 16/03/2016
Edad : 69
Localización : CORDOBA ARGENTINA

Ver perfil de usuario http://acadhispano.foroargentina.net

Volver arriba Ir abajo

Re: Seleccion Bloques Intersectados

Mensaje por SushyM el Mar Sep 26, 2017 9:37 pm

En mi trabajo me han dado muchos accesorios en redes de agua y tengo que agruparlos por tipo de red sea existente o proyectada, por diametro, material y como todo los tengo en capas es la necesitada de dejar una capa de linea y seleccionarlo los bloques que estan en esas lineas para poder llenar en los campos de atributo los tipos que mencione lineas arriba

;-)

SushyM

Mensajes : 20
Fecha de inscripción : 13/09/2017

Ver perfil de usuario

Volver arriba Ir abajo

Re: Seleccion Bloques Intersectados

Mensaje por SushyM el Sáb Sep 30, 2017 5:47 pm

Hola que tal amigo, Devitg, al final pudistes dar mejoria al lips que coloco nolo, ojala me puedas ayudar.
;-)

SushyM

Mensajes : 20
Fecha de inscripción : 13/09/2017

Ver perfil de usuario

Volver arriba Ir abajo

Re: Seleccion Bloques Intersectados

Mensaje por nolo el Mar Oct 03, 2017 11:10 pm

A ver ...
Se me ocurre la siguiente rutina que se basa en seleccionar con una ventana los bloques e ir rastreando uno a uno si hay alguna polilinea que los corte.
Se selecciona si vas a editar los bloques que cortan <c + intro> o los que no cortan <n + intro> y finalmente, uno a uno, se van identificando con un circulito para conocer donde están y se editan en el editor de atributos para que les pongas lo que proceda.
Código:
(defun c:ELOS(/ bbi p1 p2 ss corta no_corta r )
(vl-load-com)
; lista con los puntos del boundingbox de un objeto
(defun bbi(obj / lp);; by nolo octubre 2017
(if (=(type obj) 'ENAME) (setq obj (vlax-ename->vla-object obj)))
(if (vlax-method-applicable-p obj 'GetBoundingBox)
(progn
 (vla-GetBoundingBox obj 'minimo 'maximo )
 (setq lp(list
 (vlax-safearray->list minimo)
 (vlax-safearray->list maximo)
 ))
))
)
(setq p2
 (getcorner (setq p1 (getpoint(strcat(chr 10)"Seleccionar zona : "))) )
 ss (ssget "_c" p1 p2 '((0 . "INSERT")(66 . 1)))
 ss (mapcar 'cadr (ssnamex ss))
 ss (vl-remove-if '(lambda(x) (listp x)) ss)
 corta '()
 no_corta '()
 r (/ (getvar 'viewsize) 20)

)
(foreach ent ss
 (setq a (bbi ent) ent (list ent))
 (if (ssget "_c" (car a)(cadr a) '((0 . "*LINE")) )
 (setq corta (cons(append a ent) corta))
 (setq no_corta (cons (append a ent) no_corta))
 )
)
(princ(strcat(chr 10)
"hay "(itoa (length corta) )" bloques que cortan a polilinea"
" y " (itoa (length no_corta)) " que no"
))
(initget "c C N n")
(if (= (strcase(getkword (strcat(chr 10)"Elige <C>orta o <N>o_corta :"))) "C")
 (setq ss corta)
 (setq ss no_corta)
)

(foreach a ss
(entmake(list'(0 . "CIRCLE")
 (cons 10 (mapcar '/(mapcar '+ (car a)(cadr a))'(2 2) ))(cons 40 r))
)
(entupd (entlast))
(command "_delay" 500)
(command "_eattedit" (last a) )
(entdel (entlast))
)
(princ)
)

Puedes jugar con el valor de r (radio de los circulitos) que es una proporción del alto de la pantalla y con el valor del comando "_delay" pero, este último, tiene que tener un valor lo suficientemente alto como para que le de tiempo al cad de dibujar el circulo antes de entrar en el editor. Si quitas el delay, el circulo sale después de cerrar el editor de atributos (me volvió loco esa tontería).

A ver si te sirve

Un saludo

nolo

Mensajes : 131
Fecha de inscripción : 17/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Seleccion Bloques Intersectados

Mensaje por SushyM el Miér Oct 04, 2017 2:15 am

Hola amigo nolo que tal, he revisado la rutina, y veo que va complica la selecion, ya que entra al editor bloque a bloque, y mi necesidad inicial solo es poder selecionarlo nada mas.

Agradezco bastante tu apoyo, si por ahy tienes alguna otra asi como la primera que publicastes, pero que seleccione por ventana me serviria mucho.

Saludos
;-)

SushyM

Mensajes : 20
Fecha de inscripción : 13/09/2017

Ver perfil de usuario

Volver arriba Ir abajo

Re: Seleccion Bloques Intersectados

Mensaje por nolo el Miér Oct 04, 2017 6:23 pm

No entiendo como lo vas a usar, pero aquí lo tienes

Código:
(defun c:SELOS(/); bbi p1 p2 ss corta no_corta r )
(vl-load-com)
; lista con los puntos del boundingbox de un objeto
(defun bbi(obj / lp);; by nolo octubre 2017
(if (=(type obj) 'ENAME) (setq obj (vlax-ename->vla-object obj)))
(if (vlax-method-applicable-p obj 'GetBoundingBox)
(progn
 (vla-GetBoundingBox obj 'minimo 'maximo )
 (setq lp(list
 (vlax-safearray->list minimo)
 (vlax-safearray->list maximo)
 ))
))
)
(setq p2
 (getcorner (setq p1 (getpoint(strcat(chr 10)"Seleccionar zona : "))) )
 ss (ssget "_c" p1 p2 '((0 . "INSERT"))) ;; añadir si solo con atributos (66 . 1)
 ss (mapcar 'cadr (ssnamex ss))
 ss (vl-remove-if '(lambda(x) (listp x)) ss)
 corta (ssadd)
 no_corta (ssadd)
)
(foreach ent ss
 (setq a (bbi ent) )
 (if (ssget "_c" (car a)(cadr a) '((0 . "*LINE")) )
 (setq corta (ssadd ent corta))
 (setq no_corta (ssadd ent no_corta))
 )
)
(princ(strcat(chr 10)
"hay "(itoa (sslength corta) )" bloques que cortan a polilinea"
" y " (itoa (sslength no_corta)) " que no"
))
(initget "c C N n")
(if (= (strcase(getkword (strcat(chr 10)"Elige <C>orta o <N>o_corta :"))) "C")
 (sssetfirst corta corta)
 (sssetfirst no_corta no_corta)
)
(princ)
)

Un saludo

nolo

Mensajes : 131
Fecha de inscripción : 17/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Seleccion Bloques Intersectados

Mensaje por SushyM el Jue Oct 05, 2017 1:23 pm

SushyM escribió:Saludos amigos,
Devit ya lo envio, pero igual lo cuelgo al drive
https://drive.google.com/open?id=0B3HBbf2wcY4nUlNJUkZJWk1xYlk
;-)

Gracias amigo nolo, es lo que necesito para mi trabajo.
Una consulta, si corro la rutina en ese ejemplo que colgue me identifica cuantos hay pero al finalizarla no lo seleeciona, pero si mi area de seleccion es menor si funciona.
No se si es por el tamaño de area de seleccion afecta la rutina, cuando mi area de seleccion es pequeña si corre muy bien.

Igual muchas gracias
Amigo nolo

;-)

SushyM

Mensajes : 20
Fecha de inscripción : 13/09/2017

Ver perfil de usuario

Volver arriba Ir abajo

Re: Seleccion Bloques Intersectados

Mensaje por nolo el Jue Oct 05, 2017 4:50 pm

Encantado que diría el último termineitor.

A ver SushyM, imagino que lo que te pasa es como a mi, que cuando el zoom es muy grande, no se ve la selección en pantalla.
Aprieta la tecla suprimir o utiliza el icono de mover para que veas que si están seleccionado.

Precisamente por ese motivo redacté el lisp anterior dibujando unos circulitos provisionales y por eso te decía yo que no se como puede  servirte la rutina sin el editor o cualquier operador posterior a la selección ...

Un saludo

nolo

Mensajes : 131
Fecha de inscripción : 17/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Seleccion Bloques Intersectados

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.