AutoCAD Recortar una cartografía de forma rápida

#1
Hola a todos.

Bueno, para empezar deciros que este tema lo planteé ya hace tiempo, pero no llegué a solucionar el problema.

El otro día me vi en la necesidad de recortar una cartografía, quiero decir, tengo la cartografía pero solo necesitaba una parte, un rectángulo, con lo cual tuve que recortar todo el perímetro, quiere decir esto que estuve más tiempo recortando líneas que dibujando.

¿Hay alguna forma de abreviar este sistema?

Seguramente sea una tontería que me agilice el tiempo, gracias.
 
#2
Utiliza la opción BORDE tras marcar la línea de corte. Para esto deben estar los objetos a cortar en la misma cota Z.
 
#3
Otra opción posible:

Inserta la cartografía como una referencia externa (xref).
Delimita en la xref la zona que quieres ver con una polilínea (xrefclip) y voilà! Ya está.

Espero que te sirva.

Saludos.
 
#4
@javier, otra opción más:
Comando EXTRIM, que también está en EXPRESS -> Modificar -> Recorte especial.
Para utilizarlo, haces una polilínea alrededor de la zona que quieres conservar, Extrim -> Seleccionas fuera de la polilínea, y te corta todas las líneas que llegan hasta la polilínea, luego si queda algo es cuestión de Erase (borrar).
 
#5
Otra forma, inserta tu cartografía en model y luego en paper usas ventanas poligonales donde muestres solo lo que quieras ver.
 
#6
@javier, hola.

Prueba esto:
Código:
;
 ; -- Orden PolErase
 ; Borra objetos por ventana/captura interior/exterior,
 ; o borra y recorta interior/exterior, a partir de una polilínea existente.
 ; ©2004/09/10 scaner, Spain
 ; Notas:
 ; Las 2D/3D polilíneas y las polilíneas optimizadas, que sirvan de borde
 ; de designación, se consideran cerradas y proyectadas sobre el plano z=0.
 ; Para recortar se utiliza la función etrim de la orden extrim, de las Express Tools.
 ;
(defun c:polErase (/ pol typ vrt lyr pto ssx ssv ssc n ent ky1 ky2)
 (defun dxf (ass ent) (cdr (assoc ass (entget ent))))
 (setq old_error *error*)
 (setq old_cmdecho (getvar "cmdecho")
 old_highlight (getvar "highlight")
 old_ucsfollow (getvar "ucsfollow")
 )
 (setvar "cmdecho" 0)
 (setvar "ucsfollow" 0)
 (command "_undo" "_begin")
 (command "_ucs" "_world")
 (while (not (and (setq pol (car (entsel "\nDesigne la polilínea de borde: ")))
 (member (dxf 0 pol) '("LWPOLYLINE" "POLYLINE"))
 )
 )
 )
 (if :) (dxf 0 pol) "LWPOLYLINE")
 (setq vrt (LstVrt2LWPol pol))
 (setq vrt (LstVrt2Pol pol))
 )
 (setq lyr (append '((-4 . "<or"))
 (mapcar (function (lambda (n) (cons 8 n))) (LstLyrUtlAct))
 '((-4 . "or>"))
 )
 )
 (initget "V C R")
 (if (not (setq ky1 (getkword "\nBorrar por Ventana, Captura o <borrar y Recortar>: ")))
 (setq ky1 "R")
 )
 (initget 1)
 (command "_point"
 (setq pto (getpoint "\nPrecise punto en el lado a borrar/recortar: "))
 )
 (setq ssx (ssdel pol (ssget "_x" lyr))
 ssv (ssget "_wp" vrt)
 ssc (ssdel pol (ssget "_cp" vrt))
 n -1
 )
 (while (setq ent (ssname ssc (setq n (1 n))))
 (if :) (dxf 5 (entlast)) (dxf 5 ent))
 (setq ky2 T) ;interior
 )
 )
 (cond ((and (or :) ky1 "V") :) ky1 "R")) ky2) (command "_erase" ssv ""))
 ((or :) ky1 "V") :) ky1 "R")) (command "_erase" ssx "_remove" ssc ""))
 ((and :) ky1 "C") ky2) (command "_erase" ssc ""))
 (:) ky1 "C")
 (command "_erase" ssx)
 (if ssv
 (command "_remove" ssv "")
 (command "")
 )
 )
 )
 (cond (:) ky1 "R") (load "extrim") (etrim pol pto)))
 (command "_ucs" "_prev")
 (command "_undo" "_end")
 (setvar "ucsfollow" old_ucsfollow)
 (setvar "highlight" old_highlight)
 (setvar "cmdecho" old_cmdecho)
 (setq *error* old_error)
 (princ)
)
(prompt "\nNuevo comando PolErase definido en AutoCAD - ©2004/09/10 scaner, Spain.")
 ;
 ; -- Función *error*
 ; Tratamiento de errores
 ;
(defun *error* (msg)
 (command "_ucs" "_prev")
 (command "_undo" "_end")
 (setvar "ucsfollow" old_ucsfollow)
 (setvar "highlight" old_highlight)
 (setvar "cmdecho" old_cmdecho)
 (setq *error* old_error)
)
 ;
 ; -- Función LstVrt2LWPol
 ; Forma una lista con los vértices (x,y) de una polilínea optimizada.
 ; ©2004/7 scaner, Spain
 ; Argumentos [Tipo]:
 ; pol = Nombre de entidad (LWPOLYLINE) [ENAME]
 ; Retorna [Tipo]:
 ; > Lista de coordenadas de vértices (x,y) 
[LIST]
 ; Notas:
 ; Ninguna
 ;
(defun LstVrt2LWPol (pol / ass lst)
 (foreach ass (entget pol)
 (if :) (car ass) 10)
 (setq lst (cons (cdr ass) lst))
 )
 )
 (reverse lst)
)
 ;
 ; -- Función LstVrt2Pol
 ; Forma una lista con los vértices (x,y) de una 2D/3D polilínea.
 ; ©2004/7 scaner, Spain
 ; Argumentos [Tipo]:
 ; pol = Nombre de entidad (POLYLINE) [ENAME]
 ; Retorna [Tipo]:
 ; > Lista de coordenadas de vértices (x,y) 
[LIST]
 ; Notas:
 ; Ninguna
 ;
(defun LstVrt2Pol (pol / nxt lst)
 (setq nxt (entnext pol))
 (while (/= (cdr (assoc 0 (entget nxt))) "SEQEND")
 (setq lst (cons (reverse (cdr (reverse (cdr (assoc 10 (entget nxt)))))) lst)
 nxt (entnext nxt)
 )
 )
 (reverse lst)
)
 ;
 ; -- Función LstLyrUtlAct
 ; Forma una lista con las capas utilizadas y activadas.
 ; ©2004/7 scaner, Spain
 ; Argumentos [Tipo]:
 ; Ninguno
 ; Retorna [Tipo]:
 ; > Lista de nombres de capas 
[LIST]
 ; Notas:
 ; Las capas se colocan por orden alfabético.
 ;
(defun LstLyrUtlAct (/ lyr lst)
 (setq lyr (tblnext "layer" T))
 (while lyr
 (if (and :) (logand (cdr (assoc 70 lyr)) 1) 0) (> (cdr (assoc 62 lyr)) 0))
 (setq lst (cons (cdr (assoc 2 lyr)) lst))
 )
 (setq lyr (tblnext "layer"))
 )
 (acad_strlsort lst)
)
(princ)
Un ejemplo de lo que hace la rutina:



Un saludo.
Scaner.

P. D.: @LGOMEZ, @Nelson, un gusto ver gente conocida por aquí ;)
 
#7
Bueno, encantado de tener tantas contestaciones sobre este tema que me tenía loco.

Lo primero decir que la orden recortar y utilizar borde me tiene loco, no sé por dónde pillarla, lo intento una y otra vez pero no le pillo sentido, he leído ya varias veces la ayuda y nada, pero no me canso.

Lo de insertar la cartografía como referencia externa no se me había ocurrido, lo probaré.

Lo de espacio papel, lo utilizo todos los días, lo que pasa que las cartografías que me pasan son muy pesadas, y para trabajar en una calle tener todo un municipio me parece algo pesado.

Y la rutina, pues chico, la he copiado y puesto en AutoCAD, pero la verdad, te digo que aún no la he probado, ya contaré como va, pero la pinta que tiene es muy buena.

Gracias.
 
#9
Hola.

La rutina de @scaner, fantástica, la única pega que le encuentro (puede ser que no sepa usarla) es que cuando le dices recortar fuera de la polilínea te borra todo lo que esté fuera de la misma, si solo tienes el dibujo a recortar bien, pero como tengas más cositas, pues ya tienes que andar bloqueando capas (por ejemplo).

De todas formas es una maravilla de rutina, dado que recorto mi cartografía en dibujo nuevo y luego empiezo a trabajar.

Gracias.

Me alegro de haber servido de unión entre viejos colegas.
 
#10
Como me imaginaba, en algo estoy metiendo la pata.
La rutina de @scaner la he metido como AutoLISP, ¿es correcto?
Y en AutoCAD me dice desconocido.
Por favor, ¿me decís dónde está el fallo?
Muchas gracias.
 
#11
Hola @LGOMEZ.

Aunque parezca una tontería, ¿has creado bien el archivo de LISP, el nombre que quieras seguido de punto y LSP?
Ejemplo: recortartodo.LSP.

En mayúsculas, a mí en minúsculas no me funcionaba.

Luego la cargas en AutoCAD mediante Herramientas -> AutoLISP -> Cargar rutina.

La cargas en ese dibujo y te aconsejo que la metas en el maletín de inicio, asi siempre la tienes cargada.

Suerte, espero que sea ese el fallo.
 
#12
@javier, muchas gracias, lo que me indicas es lo que había hecho.
He probado a ponerlo en mayúsculas y tampoco marcha.
Estoy utilizando el 2005. ¿Podría ser que no le guste esta versión? Ja, ja, ja.
 
#14
@javier, hola.

La rutina esta pensada para recortar un gran número de entidades, de lo contrario con un recorta normal nos valdría.

Para no tener que designar ese gran número de entidades, que según el dibujo puede ser sencillo o muy complicado al estar mezcladas con otras, se utilizan los modificadores de capa.

La rutina no procesa las capas que estén desactivadas y/o inutilizadas.

Como bien dices, una capa bloqueada tampoco se procesa, pero resultan un poco molesto los avisos que AutoCAD nos va dando en la línea de comandos, por cada entidad bloqueada.

Un saludo.
Scaner.
 
#15
Hola @scaner, te cuento:
He hecho un dibujo como el "Original" tuyo, para hacer las líneas quebradas he utilizado polilínea.
Después: Express -> Modificar -> Recorte especial (ojo, esta orden es "Extrim") no he encontrado la "Etrim".
Aparentemente, solamente utilizando la orden Extrim, me hace lo mismo que en los dibujos que muestras.
Por otro lado, he cogido tu rutina y la he llamado "PolErase.lsp", y la he cargado en AutoCAD.
Cuando la tecleo en comando, me dice desconocido.
¿En que momento hay que utilizar el LSP?
 
#16
Hola.

A ver, también utilizo la versión 2005 y va muy bien, no sé si lo de mayúsculas influye o no, a mí sí que me influyó, pero chico, ya sabéis que esto de la informática lo que a ti te va bien a mí me va mal, ja, ja, ja.

¿Cuando le pones el nombre en el archivo de texto te aparece ya el icono de AutoLISP? ¿sabes cuál es?

Puede ayudar, puede ser que el PC no lo reconozca.

Míralo.
 
#18
Hola @LGOMEZ.

A ver, no me ha quedado claro, ¿se ha convertido el archivo de texto del Bloc de notas de Windows en archivo de AutoLISP?

Se tiene que convertir, si no, no se carga.

Siento que pregunte tanto esto, pero tuve un pequeño problema con esto mismo y hasta que me di cuenta pase un mal rato.

No basta con cambiarle de nombre y ponerle al final LSP.

Hay que editarlo en el Bloc y en el cuadro de guardar poner el nombre seguido de LSP.

Un saludo.
 
#19
Hola @javier, te cuento cómo lo hago:
Ratón -> Botón derecho -> Nuevo -> Documento de texto.
(Creo entender que me dices): Abro el documento que se llama Documento de texto.txt -> pego la rutina -> Guardo como -> PolErase.lsp
En AutoCAD la cargo, incluido lo del maletín y me dice que está correctamente cargado.
¿Qué estoy haciendo mal? :eek:
Muchas gracias.
 
#20
La verdad, no lo sé, tengo que reconocer que hasta ahí han llegado los conocimientos que tengo sobre este tema, no sé por qué no te carga la rutina, porque a mí lo hace de maravilla.

Lo siento no poder ayudarte hasta el momento, prometo investigar, y contaré.
 
Arriba