AutoCAD Orden "numera"

#1
Hola a todos, estoy alucinada con lo que sabe esta gente. :eek: Yo pensaba que sabía manejar el AutoCAD pero veo que estoy Cromañón :eek:
Hace tiempo estuve trabajando en un estudio y allí tenían la orden "numera", que te ponía números en los objetos según los ibas señalando (esto es bastante práctico, sobre todo cuando tienes que numerar trescientas plazas de aparcamiento, por ejemplo). ¿Se puede conseguir esta orden cargando alguna aplicación o rutina?
¡Ah! Y, de paso, ¿alguien sabe de alguna orden más (de esas que te ahorran tanto trabajo que el día que das con ellas se te saltan las lágrimas)?
Un saludo
 
#2
supongo que la conoceras, pero a mi la orden alinear (ALI) me dio la vida
 
#3
NUMERA.LSP
Código:
; NUMERA.LSP
; Rotula automáticamente números consecutivos en el dibujo.

; Versión 1.2: febrero de 2001: Acepta incremento y origen en números no enteros. Gestiona número de decimales
;
; Versión 2.0: Acepta prefijos y sofijos
; Versión 2.1: Permite que los prefijos y sufijos contengan espacios en blanco 
;
; Futuras versiones: 
;	- Seleccionando un texto ya existente en el dibujo que contenga un número,
;	 rotula a partir del siguiente valor.
;	- Permite rotular automáticamente en forma de matriz o línea
;
;
; Julio Pablo
;

(princ "\nnumera 2.1: Introduce automáticamente números consecutivos en el dibujo, en los puntos que indiquemos\n")

(defun c:numera(/ contador incremento frasecitainformativa opciondeturno)

 (setq contador 1.00)
 (setq incremento 1.00)
 (setq opciondeturno "")
 (if (null alturatexto) (setq alturatexto (getvar "TEXTSIZE")))
 (if (null prefijo) (setq prefijo ""))
 (if (null sufijo) (setq sufijo ""))
 (if (null ndecimales) (setq ndecimales 0))
 (setq opciondeturno "")

 (while opciondeturno
 (initget "Altura Origen Incremento Prefijo Sufijo Decimales")
 (setq rotulodeturno (strcat prefijo (rtos contador 2 ndecimales) sufijo))
 (setq 
	frasecitainformativa (strcat "\nAltura/Origen/Incremento/Prefijo/Sufijo/Decimales/<punto \"" rotulodeturno "\">:")
 ) 
 (setq puntodeturno (getpoint frasecitainformativa))
 (setq opciondeturno 

 (cond
 ( ;si el usuario pulsa A
 (eq puntodeturno "Altura")
 (setq nuevovalor (getdist (strcat "\n(Si el estilo vigente no tiene definida altura=0, este valor no será efectivo). Altura de texto <" (rtos alturatexto) ">:")))
 (if (> nuevovalor 0) (setq alturatexto nuevovalor))
 (princ "\naltura:")(princ alturatexto)
 ) 

 ( ;si el usuario pulsa O
 (eq puntodeturno "Origen")
 (setq nuevovalor 
 (getreal 
 (strcat "\nIntroduce el valor inicial <" (rtos contador) ">:")
 );getreal
 );setq
 (setq contador nuevovalor)
 (princ "\nOrigen:")(princ contador)
 (setq opciondeturno "")
 ) 

 ( ; si el usuario pulsa I
 (eq puntodeturno "Incremento")
 (setq nuevovalor 
 (getreal 
 (strcat "\nIntroduce el incremento <" (rtos incremento) ">:")
 );getreal
 );setq
 (setq incremento nuevovalor)
 (princ "\nOrigen:")(princ incremento)
 (setq opciondeturno "")
 ) 

 ( ; si el usuario pulsa P
 (eq puntodeturno "Prefijo")
 (setq prefijo (getstring T "\nIntroduce el prefijo:"))
 ) 

 ( ; si el usuario pulsa S
 (eq puntodeturno "Sufijo")
 (setq sufijo (getstring T "\nIntroduce el sufijo:"))
 ) 

 ( ; si el usuario pulsa D
 (eq puntodeturno "Decimales")
 (setq nuevovalor (getint (strcat "\nPrecisión. Cifras decimales <" (itoa ndecimales) ">:")))
 (if (>= nuevovalor 0) (setq ndecimales nuevovalor))
 (princ "\nCifras decimales:")(princ ndecimales)
 (setq opciondeturno "")

 ) 

 ( ;si la respuesta del usuario es marcar un punto...
 (eq (type puntodeturno) 'LIST) 
 (command "_text" "_mc" puntodeturno alturatexto "" rotulodeturno)
 (setq contador (+ contador incremento))
 );[opción]

 (; si el usuario pulsa [intro]
 T nil
 )

 );cond 

 );setq opciondeturno
 ) ;while

 (princ "\nMás órdenes como ésta en ...\n")
 (prin1)
);defun
 
#4
Esto es maravilloso, LGOMEZ, muchas gracias, y también a scaner, que explicó en el tema "orden recortar" cómo guardar estas órdenes.
tete55: ALI sí que está bien. También es digna de ver la cara que se le queda a la gente (yo incluida) cuando descubren que se puede recortar por una línea de borde, o cuando alguien te enseña el comando "superhatch", para sombrear con imágenes o bloques.
 
#5
Muchaas gracias por el autonumera, yo tenía muchas ordenes pero con los cambios de versión...adios

¿alguien sabe alguna para autosuperficiar?
 
#6
bueno a mi me alegro el trabajo o mejor dicho facilito el trabajo, la rutina de mediciones, facilita en este foro.

es una rutina la cual te suma lineas polineas, vien sea por un camino que le vas señalando o bien se las lineas o polineas que le señales.

mi trabajo antes era realizar proyectos de canalizacion de gas y por tanto el ingeniero me pedia los metros de tuberia por diametros, o por calles, etc....

me facilito mucho

si alguien queire esta rutina pues que la pida, se la mando por mensaje privado, no se como poner este archivo en este post

un saludo
 
#8
Hola Javier, si pudieras colgar la rutina que dices de las mediciones sería una gran ayuda. Yo también hago mediciones y me ahorraría un gran trabajo gracias a tu rutina. Un beso y gracias por el ofrecimiento.
 
#9
para los que sabemos un poquito menos, podríais explicarnos en que consiste una rutina?para qué vale?cómo se hacen?cómo se utilizan?en este o en otro tema.....como querais
una orden que me dio un subidon a mi fue la de selección rápida.....en el menú de herramientas
 
#10
Aquí dejo un lisp para mediciones, no se sí es el que comenta Javier.

LISTA DE COMANDOS:
Código:
Esta es una coleccion de rutinas en AutoLisp para Autocad, especialmente utiles para mediciones (suma de propiedades de numerosos elementos de Autocad).
No son de mi creacion, sino que las he recopilado y reunido en un solo *.lsp, aunque algunas se han traducido, otras modificado y otras readaptado.
Espero os sean de utilidad.
 
La lista de comandos asi como la funcion que realizan es esta:
 
*COMANDO: sumcam
Suma distancias consecutivamente entre puntos que se pediran en pantalla
 
*COMANDO: sumcnc
Suma distancias no necesariamente entre puntos consecutivos, los cuales se pediran en pantalla
 
*COMANDO: sumarco
Suma las longitudes de un numero indeterminado de arcos que se pediran en pantalla
 
*COMANDO: sumlinea
Suma las longitudes de un numero indeterminado de lineas que se pediran en pantalla
Para lineas con diferente cota en sus extremos se tomara la longitud real (3D Longitud), no la proyectada.
 
*COMANDO: sumlp
Suma las longitudes de un numero indeterminado de lineas y/o polilineas que se pediran en pantalla. Se expresa el resultado descompuesto segun lineas, polilineas y suma total de lineas mas polilineas.
 
*COMANDO: sumarea
Suma las areas y perimetros/longitudes de un numero indeterminado de polilineas (no necesariamente cerradas) que se pediran en pantalla
 
*COMANDO: sumlcapa
Suma las longitudes de todas las lineas de una capa cuya seleccion se hara mediante la designacion de cualquier objeto (linea o no) que pertenezca a esa capa. La capa puede tener otros objetos ademas de lineas, pero solo se sumara la longitud de estas.
NOTA: Se ha intentado hacer lo mismo con las areas pero no ha habido manera :((((((
 
INSTRUCCIONES: Para hacerlo funcionar (cargandose automaticamente cada vez que se inicie Autocad) colocais el archivo mediciones.LSP en cualquier carpeta. Despues, dentro de Autocad, os vais a 'Herramientas/Autolisp/Cargar', y en el menu que os salga os vais al cuadradito 'Cargar al inicio' y pulsais en 'Contenido'. En el proximo menu le dais a 'Añadir' y os sale una ventana de explorador desde la que seleccionareis el archivo alli donde lo tengais. Una vez seleccionado, pulsais 'Añadir', 'Cerrar' y listo. Los comandos se han de escribir directamente en la linea de comandos.
Si solo quieres usar el lisp ocasionalmente, no tienes mas que seleccionarlo desde el explorador de Windows y arrastrarlo y soltarlo sobre el dibujo en el que estes trabajando. Haciendo esto se cargara solo y unicamente se ejecutara en ese dibujo en concreto.
 
AGRADECIMIENTOS: a Rodanas y d5mac por algunos de los lisp originales.
 
DESCARGA DE RESPONSABILIDADES: Si trabajando con este lisp se te jode el Autocad, se te emparanoia el Windows, te explota el ordenador, se te quema la casa o te deja tu chic@, a mi ni me mires ni me busques ¿OK?
 
BUGS: Si encuentras fallos trabajando con el lisp puedes reportarlos al correo que se adjunta. Los intentare corregir si me es posible. No escribas para ninguna otra cosa porque entonces no se te hara ni puto caso.
 
 
 
 * ? ©º°¨¨°º© ? InnerCity ? ©º°¨¨°º© ? *
Este es el lisp, MEDICIONES.LSP

Código:
;:::::::::::::::::::: RECOPILACION DE LISP's PARA MEDICIONES (2/03/2004):::::::::::::::::::::::::::::
;********************************* CAMINO CONSECUTIVO **********************************
;Modificado por InnerCity
 
(defun c:sumcam ()
 (setvar "cmdecho" 0)
 (graphscr)
 (setq 
 p1 (getpoint "\nSelecciona el primer punto: ")
 p2 (getpoint p1 "\nSelecciona el siguiente punto: ")
 d1 (distance p1 p2)
 prdist (strcat "\nDistancia inicial: " (rtos d1))
 )
 (princ prdist)
 (setq p3 (getpoint p2 "\nSelecciona el siguiente punto o ENTER para acabar"))
 (while p3
 (setq
 d0 (distance p2 p3)
 d1 ( (distance p2 p3) d1)
 p2 p3
 prdist (strcat "\nDistancia parcial: " (rtos d0) ", Distancia acumulada: " (rtos d1))
 )
 (princ prdist)
 (setq p3 (getpoint p2 "\nSelecciona el siguiente punto o ENTER para acabar: "))
 )
 (setq cumd (strcat "Distancia total: " (rtos d1)))
 (prompt cumd)
 (princ)
) 
 
 
;********************************* CAMINO NO CONSECUTIVO ********************************
;Running distance calculator
;Modificado por InnerCity
 
(defun c:sumcnc (/ pt1 pt2 d0 d1 )
 (graphscr)
 (setvar "CMDECHO" 0)
 (setq pt1 (getpoint " Selecciona el primer punto: "))(terpri)
 (setq pt2 (getpoint " Selecciona el siguiente punto: " pt1))(terpri)
 (setq d1 (distance pt1 pt2))
 (prompt " Distancia inicial: ")(prompt (rtos d1 2 4)) 
 (while
 (setq pt1 (getpoint "\nSelecciona el siguiente primer punto o ENTER para acabar: " )) (terpri)
 (setq pt2 (getpoint " Selecciona el siguiente punto: " pt1 )) (terpri)
 (setq d0 (distance pt1 pt2))
 (setq d1 ( (distance pt1 pt2) d1))
 (prompt "Distancia parcial: ")(prompt (rtos d0 2 4))(prompt " Distancia acumulada: ")(prompt (rtos d1 2 4))
 )
 (prompt "Distancia total: ")(prompt (rtos d1 2 4))
 (princ)
)
 
; ----------------------------------------------------------------------
; (Returns the sum of selected arc objects)
; Copyright (C) 1998 DotSoft, All Rights Reserved
; ----------------------------------------------------------------------
 
 
(defun c:sumarco ()
 (setq tlen 0.0)
 (setq sset (ssget '((0 . "ARC"))))
 (setq num (sslength sset) itm 0)
 (while (< itm num)
 (setq hnd (ssname sset itm))
 (setq ent (entget hnd))
 (setq rads (cdr (assoc 40 ent)))
 (setq sang (cdr (assoc 50 ent)))
 (setq eang (cdr (assoc 51 ent)))
 (if (> eang sang)
 (setq iang (- eang sang))
 (setq iang ( (- 6.28319 sang) eang))
 )
 (setq larc (* iang rads))
 (setq tlen ( tlen larc))
 (setq itm (1 itm))
 )
 (princ (strcat "\nLongitud Total: " (rtos tlen)))
 (princ)
)
 
; ----------------------------------------------------------------------
; (Returns the sum of selected line objects)
; Copyright (C) 1997 DotSoft, All Rights Reserved
; ----------------------------------------------------------------------
 
; Para lineas con diferente cota en sus extremos se tomara la longitud real (3D Longitud), no la proyectada.
 
(defun C:sumlinea ()
 (setq sset (ssget '((0 . "LINE"))))
 (if sset
 (progn
 (setq tot 0.0)
 (setq num (sslength sset) itm 0)
 (while (< itm num)
 (setq hnd (ssname sset itm))
 (setq ent (entget hnd))
 (setq pt1 (cdr (assoc 10 ent)))
 (setq pt2 (cdr (assoc 11 ent)))
 (setq dis (distance pt1 pt2))
 (setq tot ( tot dis))
 (setq itm (1 itm))
 )
 (princ (strcat "\nLongitud Total: " (rtos tot)))
 )
 )
 (princ)
)
 
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Written by Joshua M Orth. February 2000
; Modificado por InnerCity
 
 
(defun C:sumlp (/ p l e sxy exy sum1 sum2 sum3)
 (setq p (ssget (list (cons -4 "<or")
 (cons 0 "LINE")
 (cons 0 "LWPOLYLINE")
 (cons -4 "<and")
 (cons 0 "POLYLINE")
 (cons -4 "<not")
 (cons -4 "&") (cons 70 ( 16 32 64))
 (cons -4 "not>")
 (cons -4 "and>")
 (cons -4 "or>")
 )
 )
 sum1 0.0
 sum2 0.0
 sum3 0.0
 )
 ;check for null selection set
 (if p
 (progn
 (setq l 0)
 (repeat (sslength p)
 (cond
 (:) "LINE" (cdr (assoc 0 (setq e (entget (ssname p l))))))
 (setq sxy (cdr (assoc 10 e))
 exy (cdr (assoc 11 e))
 sum1 ( sum1 (distance sxy exy))
 )
 (terpri)
 )
 (:) "LWPOLYLINE" (cdr (assoc 0 (entget (setq e (ssname p l))))))
 (command "_.area" "_E" e)
 (setq sum2 ( sum2 (getvar "perimeter")))
 (terpri)
 )
 (:) "POLYLINE" (cdr (assoc 0 (entget (setq e (ssname p l))))))
 (command "_.area" "_E" e)
 (setq sum2 ( sum2 (getvar "perimeter")))
 (terpri)
 )
 )
 (setq l (1 l))
 )
 (setq sum3 ( sum1 sum2))
 (princ "\nLa suma total de longitudes para lineas es: ")
 (princ (rtos sum1))
 (princ "\nLa suma total de longitudes para polilineas es: ")
 (princ (rtos sum2))
 (princ "\nLa suma total de longitudes para lineas y/o polilineas es: ")
 (princ (rtos sum3))
 )
 (princ "\nNo has seleccionado ninguna linea o polilinea") 
 )
 (princ)
)
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Suma el area y perimetro de distintas polilineas mediante seleccion directa
; Written by Joshua M Orth. February 2000
; Readaptado por InnerCity
 
 
(defun C:sumarea (/ p l e sum1 sum2)
 (setq p (ssget (list (cons -4 "<or")
 (cons 0 "LWPOLYLINE")
 (cons -4 "<and")
 (cons 0 "POLYLINE")
 (cons -4 "<not")
 (cons -4 "&") (cons 70 ( 16 32 64))
 (cons -4 "not>")
 (cons -4 "and>")
 (cons -4 "or>")
 )
 )
 sum1 0.0
 sum2 0.0
 )
 ;check for null selection set
 (if p
 (progn
 (setq l 0)
 (repeat (sslength p)
 (cond
 (:) "LWPOLYLINE" (cdr (assoc 0 (entget (setq e (ssname p l))))))
 (command "_.area" "_E" e)
 (setq sum1 ( sum1 (getvar "area")))
 (setq sum2 ( sum2 (getvar "perimeter")))
 (terpri)
 )
 (:) "POLYLINE" (cdr (assoc 0 (entget (setq e (ssname p l))))))
 (command "_.area" "_E" e)
 (setq sum1 ( sum1 (getvar "area")))
 (setq sum2 ( sum2 (getvar "perimeter")))
 (terpri)
 )
 )
 (setq l (1 l))
 )
 (princ "\nLa suma total de perimetros/longitudes es: ")
 (princ (rtos sum2))
 (princ "\nLa suma total de areas es: ")
 (princ (rtos sum1))
 )
 (princ "\nNo has seleccionado ninguna polilinea") 
 )
 (princ)
)
 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; SUMLCAPA program, modified by Joshua M Orth. February 2000
; Modificado por InnerCity
 
 
(defun C:sumlcapa ( / l suml en sumln)
 
 
 
 (defun sumln ( / count ss1 e sxy exy)
 (setq suml 0.0)
 (if :)(type l)'STR)
 (progn
 (setq ss1 (ssget "_X" (list (cons 0 "LINE") (cons 8 l)))
 count 0
 )
 (if ss1
 (progn
 (princ "\n")(princ(sslength ss1))(princ " lineas encontradas") 
 (princ "\nEspere, por favor ") 
 (repeat (sslength ss1)
 (setq e (entget (ssname ss1 count))
 sxy (cdr (assoc 10 e))
 exy (cdr (assoc 11 e))
 suml ( suml (distance sxy exy))
 count (1 count)
 )
 )
 )
 (princ (strcat "\nNo se han encontrado lineas en la capa: " l)) 
 )
 )
 )
 )
 
 
 (while (not (setq en (entsel "\nSelecciona la capa de trabajo: ")))) 
 (setq l (cdr (assoc 8 (entget (car en)))))
 
 (sumln)
 (princ (strcat "\nLongitud total de las lineas: " (rtos suml)))
 (princ)
)
 
;********************************* HOLA CARACOLA ********************************
 
 
(prompt "\n*** Conjunto de rutinas para mediciones correctamente cargadas ***")
(prin1)
 
#11
hola, tengo un pequeño problema, en donde trabajo a la rutina numera se le realizo una modificacion ya que insertamos el numero oficial del domicilio ,pero al querer iniciar a insertar me aparece una ventana de error Microsoft Visual Basic y la leyenda " ActiveX component can´t create objet" antes no lo hacia, no se si se debe a que he cambiado de version, agradesco la ayuda . saludos
 
Arriba