AutoCAD Insertar un bloque automáticamente en puntos existentes

Buenos días.

Tengo un archivo de un parque en el que cada árbol (hay 2.500) está representado por un punto. Me he creado un bloque "árbol" y quiero insertarlo en cada punto. ¿Existe alguna manera de decirle al programa que me inserte el bloque automáticamente en cada punto? Me resisto a creer que me va a tocar que insertar el bloque a mano 2.500 veces.

Gracias.
 

FRANK SOLO

Esmeralda
Pues mucho me temo que no, a no ser que el "punto" que representa al árbol sea ya un bloque, si es así sería sencillísimo, pero si el "punto" no es un bloque lo tienes crudo.
 
Sí se puede, con una pequeña orden LISP, pero los árboles quedarán todos del mismo tamaño y orientación.
El dibujo tiene que estar en "planta" (X-Y) y sistema de coordenadas universal.
No sé cómo adjuntar un fichero con esta orden, quizás podría escribir la rutina LISP y después te creas el archivo si te interesa.

Saludos.
 

FRANK SOLO

Esmeralda
Supongo que la rutina lo que hará es extraer las coordenadas de cada punto y luego insertar el bloque en cada una de esas coordenadas, es la única forma que veo y en la cual había pensado, pero no sé LISP para hacer una rutina similar. Si quieres te doy mi correo por privado y me envías el fichero a ver si yo puedo subirlo.
 

FRANK SOLO

Esmeralda
Pues @miguel_pm me ha enviado la rutina, acabo de probarla y funciona, voy a intentar subirla junto con la explicación.
 

FRANK SOLO

Esmeralda
Pues como no veo cómo adjuntar un archivo lo voy a transcribir aquí:

1º) La explicación:

El bloque tiene que estar en un subdirectorio de trabajo de AutoCAD.
Se inserta en la capa actual.
Con E puedes elegir los puntos que quieras, si aprietas Entrar o T, se insertará en todos los puntos del dibujo, incluso en capas desactivadas o bloqueadas.
Si acabas de insertar el bloque basta que le des Entrar a la petición del nombre.
Si quieres que borre los puntos quita el ";" que hay antes de la línea
(command "_erase" seleccion "")
borrará todos los puntos seleccionados excepto los que estén en una capa bloqueada.

2º) La rutina. Hay que guardarla sin dar ningún tipo de formato, solo como texto y guardarla con extensión lsp (corrijo lo de la extensión, que antes lo había explicado mal).

(defun c:insertmb ()
(setq cmdecho_ini (getvar "cmdecho"))
(setvar "cmdecho" 0)
(initget "E T")
(setq puntos (getkword "\nElige los puntos <Todos>:") n -1)
(if (= puntos "E")
(setq seleccion (ssget))
(setq seleccion (ssget "x" '((0 . "point"))))
)
(setq nombre (getstring "\nEscribe el nombre del bloque o pulsa Entrar para el último:"))
(while (setq conjunto (ssname seleccion (setq n (1+ n))))
(command "_-insert" nombre (cdr (assoc 10 (entget conjunto))) 1 "" "")
)
;(command "_erase" seleccion "")
(setvar "cmdecho" cmdecho_ini)
)

Supongo que sabrás cómo se cargan las rutinas, tienes que ir al menú desplegable Herramientas y en él, seleccionar Cargar aplicación; si lo quieres hacer (dependiendo de la versión de AutoCAD que tengas) desde la Cinta, tendrás que ir a la ficha Administrar y en ella seleccionar lo mismo que en el caso anterior, Cargar aplicación, ahí tendrás que ir a la carpeta donde hayas guardado la rutina y seleccionarla.

Para invocar la rutina, el comando es INSERTMB.

Suerte.
 
Buenas tardes... con tres años de retraso, pero vale.
Sería bueno poder modificar la rutina para que en vez de seleccionar puntos en el dibujo, el bloque se insertara automáticamente atendiendo al código del punto.
 

FRANK SOLO

Esmeralda
Bueno, antes que nada decir que los agradecimientos y "me gusta" deberían ser para @miguel_pm que es el autor de la rutina, yo solo he sido un mero "transmisor" de la misma.
Y ahora, con respecto a la última pregunta o petición pues me remito a lo mismo, si lo ve @miguel_pm igual puede retocar esa rutina y supongo que con respecto al "código del punto" se refiere al "código" numérico que hace que el punto se represente de una forma u otra, o sea, que se vea como una "x", como un "+", como un punto real, etc.
 
Hola @FRANK SOLO, mucho gusto estar en contacto contigo. Explico lo que quiero expresar cuando me refiero a "atendiendo al código del punto". Nosotros los topógrafos hacemos planos en donde hay muchos elementos repetitivos, por ejemplo árboles, pozos de inspección, postes de energía, etc., y resulta muy dispendioso insertar un bloque de, por ejemplo, un árbol, en cada punto del plano que tenga ese código. Tú sabes que las estaciones totales arrojan un fichero con coordenadas norte y este, cota y el mencionado código.
Un abrazo desde Barranquilla, Colombia.
 

FRANK SOLO

Esmeralda
Hola, @Cecil Alfonso. Pues aunque he hecho algún que otro trabajo de topografía, soy delineante, nunca lo he hecho usando ese tipo de fichero con coordenadas, cota y código, por lo que sería bueno que explicases cómo es ese código por si alguien puede ayudarte.
 
Hola @FRANK SOLO, el fichero al que me refiero es el que descargamos de la estación total, que básicamente es un archivo de texto que tiene esta estructura. Por ejemplo:

PUNTO - NORTE - ESTE - COTA - CÓDIGO
1 10580.668 9320.774 50.88 Poste Eléctrico
2 10576.932 9326.014 50.35 Pozo de Inspección
3 10548.765 9329.345 51.01 Árbol

Este archivo suele tener cientos de puntos, producto del levantamiento topográfico, los cuales exportamos a AutoCAD
para generar la llamada nube de puntos, que luego nos servirá para realizar el plano. Dichos archivos suelen tener muchos elementos repetitivos como dije anteriormente, como árboles, pozos de inspección, registros de gas, y cosas así que encontramos en la zona objeto del estudio topográfico.
 
Se podría hacer un LISP que leyese ese archivo e insertase los bloques según ese código, no seria nada difícil, pero ya hace mucho que no uso LISP.
 
Hola @Cecil Alfonso, la verdad es que me pasa lo mismo que a @FRANK SOLO, nunca he usado la famosa nube de puntos, más que nada porque no hacemos trabajos topográficos. Es curioso que en el ejemplo que pones, sitúas la coordenada Y (norte) antes que la X.
No es fácil crear una rutina que haga lo que pretendes, pero en el mercado tiene que haber muchas, desgraciadamente de pago.

También me pasa como a @Perezoso, que hace tiempo que no uso AutoLISP y si quiero hacer alguna rutina (básica, pues no doy para más) me cuesta centrarme; con lo que no puedo es con Visual LISP, aunque reconozco que permite más "funciones" con menos "comandos".
Saludos.
 
Si me dieras algunas indicaciones de cómo hacer el LISP, tal vez intentaría hacerlo yo mismo
No es fácil lo que pretendes. Si no sabes programar en LISP, tendrías que empezar con rutinas sencillas, pero antes que nada aprender ese lenguaje con la ayuda de un buen libro y una buena dosis de paciencia.

Saludos.
 
OK, muchachos, un gusto interactuar con ustedes. Eso de programar en LISP es como empezar a aprender a dibujar en AutoCAD desde cero... requiere esfuerzo, paciencia y sobre todo tiempo (que desgraciadamente nos falta a todos en este mundo tan acelerado). Así que, a seguir insertando uno a uno los bloques en el dibujo. Muchas gracias muchachos.
 
Arriba