Rutina Lisp en Autocad

CaNaRy_r00lz

Buenas, no creo que haya gente aqui que controle de autocad, pero bueno de perdidos al rio, que seguro que ingenieros tiene mv!

Me gustaría hacer 2 rutinas en autocad, pero no tengo ni idea de como hacerlas ni donde mirar información para aprender y demás, pk todo lo que veo son ejemplos sin explicar de donde vienen las cosas o para que se usan o pk se usan.

Mi primera rutina que me gustaría hacer es: en un dibujo de autocad poder enumerar y sacar las coordenadas de los puntos que designe, exportando esto a un archivo txt, cvs o pts. Me explico mejor, no tiene pk ser un punto tal cual, puede ser una interseccion o cualquier punto que yo designe.
Vamos que si pincho en una intersección/centro de un circulo/esquina, cree un número en el dibujo (para seguir un orden y saber los que he pillado) de 1 en adelante y cuando termine cree un archivo ya sea txt/cvs/pts , sería genial que preguntase si quieres X,Y o X,Y,Z pero vamos con lo primero me conformo :P

La segunda rutina sería: tienes una línea con ciertas propiedades, digamos discontinua + color "X" con una inclinación de 92º, y lo que quiero es seleccionar un texto y que se alinee con la linea (92º) y que además se separe digamos no se 3 unidades, así todos los textos siempre tendrán la misma alineacion a la línea que selecciones, las mismas propiedades e inclinación, sino se entiende esto puedo subir un pantallazo con ejemplo

Si alguien sabe donde puedo buscar o ayudarme a hacerlo lo agradecería mucho. Gracias y saludos :)

elfito

Hace mil años que no toco autocad, y ahora ando con fusion para diseño 3D así que no te puedo ayudar al 100%

Pero hay un par de tutoriales para hacer routines LISP. http://www.cadtutor.net/forum/showthread.php?1390-How-to-use-the-LISP-routines-in-this-archive

Entiendo que programar lo que pides no es que sea muy complicado en función de lo que permita el conjunto de instrucciones.

Y si no siempre puedes buscar lisp ya hechos: https://www.cadcorner.ca/lisp.php

2 respuestas
CaNaRy_r00lz

#2 Si para alguien entedido no creo que sea excesivamente complicado, de hecho tengo una rutina que describe lo 2º que quiero hacer, pero sin hacer el match properties y la separación

spoiler

Pero claro sin tener ni puta idea la veo y me quedo igual haha, gracias por los links voy a ver si consigo sacar algo

kotapab

La forma más "sencilla" de extraer coordenadas:

-En lugar de clickear, hacés una polilínea. Los vértices deben estar en los puntos que te interesan.
-Usás el comando LIST para listar las coordenadas de la polilínea
-Copiás y pegás el resultado en excel.
-Usás "texto a columnas" para separar lo pegado (usar espacios y "=" como separadores).

Listo, tenés las coordenadas XYZ en excel.

Te recomiendo aprender VBA y/o .NET en lugar de LISP, porque te sirve para muchos otros programas además de Autocad. Además podés escribir una macro en excel que extraiga información de Autocad, la pase a Word, la dibuje en Power Point, y en cualquier programa que use macros VBA.

1 respuesta
CaNaRy_r00lz

#4 Pero yo no busco la forma más sencilla, es como lo necesito, soy topógrafo y necesito que sea así, no siempre necesito todas las coordenadas de una línea, por eso busco que sea donde hago el click y que se numeren, así cuando voy con el plano a obra se que número buscar dentro de mi controller para replantear esas coordenadas por ejemplo

1 respuesta
kotapab

#5 Esta macro VBA te alinea textos con una línea (LINE):

Para usarla ejecutás la macro, seleccionás la línea, y a punto seguido los textos a alinear.
Lo que hace es mover los "insertion points" de los textos hacia la línea.

spoiler
1 respuesta
CaNaRy_r00lz

#6 Como se ejecuta? y como puedo hacer para que ponga siempre el texto a la misma distancia de la línea, pk si te fijas en #2 ya tengo eso, pero me falta la distancia del texto a la línea

1 respuesta
kotapab

#7 Cómo se ejecuta: apretás "alt"+"F11" y se abre el editor de VBA. Pegás el texto, ponés el cursor dentro del texto de la macro, y apretás "play"/F5 para ejecutar la macro (también podés asignar la macro a un botón).

Es posible que tu Autocad necesite habilitar las macros VBA. Las instrucciones para hacer eso dependen de la versión de Autocad.

Distancia a la línea
El texto se va a mover sobre la línea, así que debés tener una línea allí. Con un simple offset, podés hacer una copia de la línea a la distancia deseada, y luego borrar la línea nueva.

Ojo: debe ser un objeto de tipo línea, no una polilínea.

1 respuesta
CaNaRy_r00lz

#8 A ver, pero es que no quiero estar haciendo offset a mano, por eso quiero una rutina lisp, pk cuando me toca tengo que hacer eso como 300 veces, y para eso ya tengo al rutina que he puesto en #3, que me alinea el texto en la misma dirección que la línea, pero lo que quiero es hacerlo todo en una, alinar el texto, hacer match a las propiedades de la línea para ponerselas al texto y además meterle un offset de la línea

1 respuesta
kotapab

#9 ¿Y cómo sabés cuál es la distancia exacta? ¿Siempre es un número entero, o fácil de escribir, como 2 ó 3 metros, o en realidad tenés que medirla sobre el plano, y puede ser 10,3452567?

¿Y cuáles propiedades son las que copiás de la línea al texto? Layer, color... hay miles de propiedades (todas las que muestra la ventana propiedades).
Una respuesta sencilla sería todas las propiedades que copia el botón de "match properties"

1 respuesta
CaNaRy_r00lz

#10 La distancia del texto a la línea es la que tú quieras darle, realmente es la escala a la que va a ser impreso multiplicado por 0.2mm que es la apreciacion del ojo humano, pero vamos que con darle una distancia "x" me vale, no necesito más

1 respuesta
kotapab

#11 Ah, había malinterpretado lo que querés hacer. La macro que te di antes mueve muchos textos hacia una línea, "alineándolos".

Lo que vos querés hacer es rotar el texto para que quede paralelo a la línea.

No sé si por "propiedades" querés decir lo que significa "propiedad" en Autocad: nombre del layer, color, tipo de línea, etc.

kotapab

No es muy complicado hacer una macro que haga eso, pero quizás lo más sencillo sea usar una dimensión en lugar de un texto. Podés crear un estilo de dimensión en donde no se impriman las líneas, y en donde configures la distancia.

Eso te serviría si vos escribís los textos a mano. Si en cambio ya recibis los textos, o ya los tenés en el plano, entonces sí, una macro sería mejor solución.

1 respuesta
CaNaRy_r00lz

#13 Si, el comando es MATCHPROP o algo así, la cosa es que ya tengo líneas y texto, entonces tengo que igualar propiedades con las propiedades referencia, así todas las líneas de GAS , son iguales a la de referencia, y tb lo haces con el texto, pero claro el texto cuando lo exportas todo a autocad no viene siguiendo la línea, y si tienes 400 líneas con 1000 textos es un puto coñazo, por eso busco algo que coja el texto le de las propiedades de la línea referencia (capa, color, grosor) y luego lo alinee y lo deje a una distancia digamos de 3mm de la línea, y claro si tienes algo que sólo tienes que escribir RT por ejemplo y hacerlo ahorras muchíisimo tiempo

kotapab

Esta macro pide que el usuario marque puntos en la pantalla, escribe los textos en esos puntos, y te copia las coordenadas a Notepad

spoiler

Usuarios habituales

  • kotapab
  • CaNaRy_r00lz
  • elfito