PDA

Ver versión completa : Cálculo de áreas AutoCAD



arquiche
02/03/2006, 00:10
Hola a todos, quisiera preguntaros si es posible realizar calculos de áreas curvas , y si se pudiera hacer , como se hace ?
tego instalado autocad 2005 , si necesito otro programa os agradeceria me lo comunicarais . si me podeis contestar rapido mejor q mejor ... Gracias de antemano .

PEPIN TROVATOR
02/03/2006, 00:15
Si lo que preguntas es para calcular el area encerrada por una curva lo puedes hacer con la orden Dibujo/contorno..., que te crea una polilinea con el contorno (desactiva lo que haya dentro del area por si acaso) y luego directamente clickas en la polilinea y ves el area que tiene en su cuadro de propiedades.

Si lo que quieres es saber el area cuando lo que se curva es el plano que la contiene... a mí también!

Salut

Nelson
02/03/2006, 00:24
Hola Arquiche. Primero para empezar el area a calcular necesariamente debe estar hecha con polilineas cerradas ó splines, luego en la linea de comandos escribes FIELD, aparece un cuadro de dialogo, arriba a la izquierda esta Field Category, seleccionas Object, abajo en Field Names, escoges Object, luego en Object Type, pinchas el boton y seleccionas la polilinea ó splines a la que le quieres medir el area (recuerda que deben estar cerradas), luego abajo aparece un listado de todo lo que puedes hacer con esa polilinea ó spline, entonces marcas AREA y al lado de eso escoges el formato y la presición (cantidad de decimales). Otra cosa util es el boton FIELD FORMAT, en el puedes darle escala al calculo del AREA, colocar prefijo y sufijo, si quieres coma, punto ó espacio, etc. Espero no haber sido muy enredado y te sirva.

arquiche
02/03/2006, 01:00
muchas gracias tio , era la primera opcion . y ya ta resuelto joer q facil era .... se nota q soy un novato jejej gracias por la brevedad y por tu tiempo un abrazo

arquiche
02/03/2006, 01:01
gracias ati tb nelson me habeis sido de gran ayuda un abrazo

LGOMEZ
02/03/2006, 01:02
Hola Nelson, no conocía esta forma de sacar superficies, pero la considero un poco larga.
No sería más fácil utilizar un lisp, o a falta de éste, incluso los comandos
area y _list
De todas formas gracias, he aprendido una cosa más.

vorpal
02/03/2006, 07:16
La gran ventaja que tiene hacerlo con campos (field) es que luego al estirar la polilinea puedes actualizar el campo automáticamente. (actualizacampo)

Saludos.

xoubino
02/03/2006, 12:08
Yo tengo hecho un boton con un macro con el que una vez que seleccionas la polilinea que quieres que te calcule el area, pinchas en la pantalla y te aparece el valor numerico de ese area. Te ahorra tenerlo que hacer a mano, y cuando son muchas areas a calcular se agradece.

LGOMEZ
02/03/2006, 13:28
Hola Vorpal, no veo que sea tan rápida de usar como una macro o un lisp, pero no está nada mal. Dime por favor, donde está actualizacampo?

eepa
02/03/2006, 13:29
Mi truco para hallar este tipo de áreas es sombrear la zona y en propiedades del sombreado puedes consultar su área.

Saludos.

moby
02/03/2006, 13:57
:D :D Hola a todos.
Estoy muy interesada en al calculo de areas rapidamente, por esto me viene de perlas este foro.
Os cuento como calculo yo las areas, bueno yo trabajo con el 2004, con polilineas creo el contorno y dejando desplegada la barra de propiedades voy seleccionando cada una y me da su area en el cuadro de dialogo de area, es mas rapido que seleccionar area y luego seleccionar el boton de objeto.
1ª pregunta:¿ Se puede que el comando area por defecto te pida un objeto en lugar que el primer punto de una esquina?
2ªPregunta, puede hacerme un listado de las area seleccionadas, ojo, no me sirve el listado de F2 sino algo mas claro
3-Pregunta, xoubino puedes explicar lo de Yo tengo hecho un boton con un macro con el que una vez que seleccionas la polilinea que quieres que te calcule el area, pinchas en la pantalla y te aparece el valor numerico de ese area, no se como se hace un macro.
Podria insertarme un texto con dicho valor de area a la vez que lo calcula, ESO SERIA LA PANACEA.
4.- En el 2004, version español lo de field o campo o campos, no me reconoce el comando.
Buno gracias a todos y perdonar por el rollo que os he metido pero me ahorraria mucho trabajo si conoceis una manera mas agil de calcular el area.

vorpal
02/03/2006, 14:06
Hola Vorpal, no veo que sea tan rápida de usar como una macro o un lisp, pero no está nada mal. Dime por favor, donde está actualizacampo?

En el ADT 2006 en castellano es tal cual ACTUALIZACAMPO, (_updatefield en inglés), no sé si existe en otras versiones anteriores. Yo lo utilizo sobre todo para los cajetines de los planos.

Menu herramientas > actualizar campos

Saludos.

LGOMEZ
02/03/2006, 21:19
Vorpal, gracias lo intentaré, uso el 2005
Moby, utiliza _ delante de las ordenes en ingles.
Cuentame como te interesa que te ponga las superficies
S=0,00m2, Sup=0,00 m2, ¿necesitas que te ponga los perímetros?

jano
02/03/2006, 22:22
Vorpal, gracias lo intentaré, uso el 2005
Moby, utiliza _ delante de las ordenes en ingles.
Cuentame como te interesa que te ponga las superficies
S=0,00m2, Sup=0,00 m2, ¿necesitas que te ponga los perímetros?

Yo no soy Moby, pero vamos, que también me interesa MOGOLLÓN-MOGOLLÓN eso :eek: :eek: :eek:

estoy harto de poner a mano las áreas... y eso que tengo en el curro las autohook que funcionan de maravilla (y también tenemos la orden de calcular áreas con un comando)

PEPIN TROVATOR
02/03/2006, 23:58
Nos interesa a tod@s! Si no hubiera tanto spam, podríamos abrir una dirección de correo para enviarnos los documentos... :(
Saluti a tuti

LGOMEZ
03/03/2006, 00:41
Aquí dejo uno de ellos, espero os sirva.

Matc-G.lsp
Hay que poner un texto con “_Dtext”, donde deseemos colocar la superficie.

Teclear ACH > seleccionar la polilinea > enter > seleccionar el texto > enter

El resultado será: Sup. x,xx m2


; Matc-G.LSP (Español)

; INDICE 0.- GENERAL
; 1.- ROTACION FIJA 45,90,180,270
; 3.- EDICION DE TEXTOS
; 4.- PEDIT (GROSOR A 0)
; 5.- SCALE EN P. INSERCCION
; 6.- VARIOS
; 7.-
; 8.- CAMBIOS DE CAPAS DIRECTAS (M,P,C)
; CAMBIO A CAPA DE ULTIMO (M,P,C,D,L,SUP)
; SITUA CAPAS (M,P,C)
; CAMBIA A CAPA Y COLOR A BYLAYER, A LT. HIDDEN
; 9.- DISPLAY: ZOOMS
; ZOOM A VISTAS PREGRABADAS, TILEMODE O Y 1
; 10.- AREAS
;

;0:
(defun g:entv (code ename)
(cdr (assoc code (entget ename)))
)

(defun C:UF()(setvar"cmdecho"1)
(setq oer *error* *error* err2)(command ".UCSICON" "0" "" ))


(defun C:UN()(setvar"cmdecho"1)
(setq oer *error* *error* err2)(command ".UCSICON" "1" "" ))

(defun C:DC()(setvar"cmdecho"1)
(SETQ CC(GETREAL "Definir constannte: "))
)

(defun c:U()(setvar"cmdecho"1)
(setq oer *error* *error* err2)(command ".deshacer" "" ))

(defun c:Sa()(setvar"cmdecho"1)
(setq oer *error* *error* err2)(command ".guardar" ""))

;1:
(defun C:R45()(setvar"cmdecho"1)
(SETQ SS1(SSGET))
(setq oer *error* *error* err2)
(SETQ BR(GETPOINT "Base de rotacion :" ))
(command ".gira" SS1 "" BR "45" "" ))

(defun C:R90()(setvar"cmdecho"1)
(SETQ SS1(SSGET))
(setq oer *error* *error* err2)
(SETQ BR(GETPOINT "Base de rotacion :" ))
(command ".gira" SS1 "" BR "90" "" ))

(defun C:R180()(setvar"cmdecho"1)
(SETQ SS1(SSGET))
(setq oer *error* *error* err2)
(SETQ BR(GETPOINT "Base de rotacion :" ))
(command ".gira" SS1 "" BR "180" "" ))

(defun C:R270()(setvar"cmdecho"1)
(SETQ SS1(SSGET))
(setq oer *error* *error* err2)
(SETQ BR(GETPOINT "Base de rotacion :" ))
(command ".gira" SS1 "" BR "270" "" ))

;2:



;3:

(defun C:CHX()(setvar"cmdecho"1)
(SETQ SS1(SSGET))
(setq oer *error* *error* err2)(command ".Cambia" SS1 "" "" "" "" "" ""))

;4:
(defun C:W0()(setvar"cmdecho"1)
(setq SS1(SSGET))
(command ".editpol" SS1 "G" "0" ""))

(defun C:WC()(setvar"cmdecho"1)
(setq SS1(SSGET))
(command ".editpol" SS1 "G" "CC" ""))


;5:
(defun C:SCC()(setvar"cmdecho"1)
(SETQ SS1(SSGET))
(setq oer *error* *error* err2)
(SETQ BR(GETPOINT "Punto Base: " ))
(command ".escala" SS1 "" BR CC))


;8:
(defun C:CHM()(setvar"cmdecho"1)
(SETQ SS1(SSGET))
(setq oer *error* *error* err2)(command ".CAMBIA" SS1 "" "P" "C" "M" ""))

(defun C:CHP()(setvar"cmdecho"1)
(SETQ SS1(SSGET))
(setq oer *error* *error* err2)(command ".CAMBIA" SS1 "" "P" "C" "P" ""))

(defun C:CHS()(setvar"cmdecho"1)
(SETQ SS1(SSGET))
(setq oer *error* *error* err2)(command ".CAMBIA" SS1 "" "P" "C" "S" ""))

;8.2:
(defun C:UM()(setvar"cmdecho"1)
(setq oer *error* *error* err2)(command ".CAMBIA" "LT" "" "P" "C" "M" ""))

(defun C:UP()(setvar"cmdecho"1)
(setq oer *error* *error* err2)(command ".CAMBIA" "LT" "" "P" "C" "P" ""))

(defun C:UH()(setvar"cmdecho"1)
(setq oer *error* *error* err2)(command ".CAMBIA" "LT" "" "P" "LA" "H" ""))

;8.3:
(defun C:STM()(setvar"cmdecho"1)
(setq oer *error* *error* err2)(command ".CAPA" "E" "M" ""))

(defun C:STP()(setvar"cmdecho"1)
(setq oer *error* *error* err2)(command ".CAPA" "E" "P" ""))

(defun C:CRD()(setvar"cmdecho"1)
(setq oer *error* *error* err2)
(command ".CAPA" "N" "D" "L" "HIDDEN" "D" ""))

;8.4:
(defun C:ON()(setvar"cmdecho"1)
(setq oer *error* *error* err2)(command ".CAPA" "ACT"))

(defun C:OF()(setvar"cmdecho"1)
(setq oer *error* *error* err2)(command ".CAPA" "DES"))

(defun C:SUN()(setvar"cmdecho"1)
(setq oer *error* *error* err2)(command ".CAPA" "ACT" "SUP" ""))

(defun C:SUF()(setvar"cmdecho"1)
(setq oer *error* *error* err2)(command ".CAPA" "DES" "SUP,*|SUP" ""))

;8.5:
(defun C:CB()(setvar"cmdecho"1)
(SETQ SS1(SSGET))
(setq oer *error* *error* err2)
(SETQ NC(GETSTRING "Nueva capa :" ))
(command ".CAMBIA" SS1 "" "P" "O" "BYLAYER" "C" NC ""))

(defun C:CONT()(setvar"cmdecho"1)
(SETQ SS1(SSGET))
(setq oer *error* *error* err2)(command ".CAMBIA" SS1 "" "P" "T" "CONTINUOUS" ""))

(defun C:VR1() (setvar"cmdecho"1)
(setq oer *error* *error* err2)
(command ".VISRETAIN" "1" ""))

(defun C:Cmp()(setvar"cmdecho"1)
(SETQ SS1(SSGET))
(setq oer *error* *error* err2)
(command ".CAMBIA" ss1 "" "P" "O" "6" "C" "P" ""))

:9:
(defun C:ZE()(setvar"cmdecho"1)
(setq oer *error* *error* err2)(command ".REGENAUTO""ACT")
(setq oer *error* *error* err2)(command ".ZOOM""E"))

(defun C:ZD()(setvar"cmdecho"1)
(setq oer *error* *error* err2)(command ".ZOOM" "D"))

(defun C:ZP()(setvar"cmdecho"1)
(setq oer *error* *error* err2)(command ".ZOOM" "P"))

(defun C:ZW()(setvar"cmdecho"1)
(setq oer *error* *error* err2)(command ".ZOOM" "V"))

(defun C:W()(setvar"cmdecho"1)
(command ".ZOOM" "v"))

(defun C:ZG()(setvar"cmdecho"1)
(command ".Vista" "R" "G" ""))

(defun C:Z1()(setvar"cmdecho"1)
(command ".Vista" "R" "1" ""))

(defun C:Z2()(setvar"cmdecho"1)
(command ".Vista" "R" "2" ""))

(defun C:Z3()(setvar"cmdecho"1)
(command ".Vista" "R" "3" ""))

(defun C:TL0()(setvar"cmdecho"1)
(command ".TILEMODE" "0" ""))

(defun C:TL1()(setvar"cmdecho"1)
(command ".TILEMODE" "1" ""))

(defun C:SV()(setvar"cmdecho"1)
(SETQ V(GETSTRING "Nombre vista: "))
(command ".Vista" "g" v ""))

;10:

(defun c:ach ()
(setq SS1 (ssget))
(Command "Area" "E" SS1)
(setq Sup (strcat "Sup. " (rtos(getvar "area") 2 2)" m2"))
(setq SS2 (ssget))
(Command ".Cambia" SS2 "" "" "" "" "" "" Sup))




; EOF MATC-G.LSP

Estas maravillas no las se hacer, pero llegan a mis manos.

xoubino
03/03/2006, 02:08
Veo que lo que explica LGOMEZ es un poco lioso para los que no esten muy puestos en esto de los macros. Yo os explico paso a paso como lo tengo hecho para el que le pueda servir:

1. Nos situamos encima de alguna de las barras de herramientas y le damos al boton derecho del raton
2. Pulsamos sobre Personalizar
3. En la pestaña comando, seleccionamos definido por el usuario y "Boton definido por el usuario"
4. Pulsamos sobre la pestaña "propiedades"
5. Pulsamos sobre el boton que hemos creado y se nos abrira un cuadro donde se indicara el nombre, descripcion y macro asociada ese boton.
6. El nombre elegimos el que queremos, la descripcion pues lo mismo, y en la macro ponemos:
_area;o;\;;_text;\;0;$M=$(rtos,$(getvar,area),2,2) ;
7. Modifficamos la imagen del boton para no confundirlo con otro y ya esta lista para funcionar, basta con seleccionar una polilinea y el lugar donde queremos que nos inserte el texto del area.

vorpal
03/03/2006, 06:04
De mis antiquisimos tiempos de programador LISP guardo esta rutinilla, que lo que hace es dibuja una polilinea envolvente, calcula su área, la mete en un texto y borra la polilinea.

Solo hace falta cargar este LSP e invocar el comando AREAT

Saludos.


;***** AREAT: coloca el valor de area de una entidad cerrada en un texto
(defun C:AREAT ( / a2 a3 a4 a5 punto)
(setq punto (getpoint "\nPunto interno:"))
(command "_bpoly" punto "")
(command "_AREA" "_e" "_last")
(command "_REDRAWALL")
(setq a2 (+ 2.5 (* 100 (getvar "AREA"))))
(setq a3 (/ (* 5.0 (fix (/ a2 5))) 100))
(setq a4 (strcat (rtos a3 2 2) "m2"))
(setq a5 (strcat "P=" (rtos (getvar "PERIMETER") 2 2) "m"))
;(command "_ERASE" "_last" "")
(command "_TEXT" punto "" "0" a4)
)

LGOMEZ
03/03/2006, 11:37
Xoubino, Vorpal, muy buenas las dos.
Este fin de semana, las miraré más despacio, por si me podeis echar una mano para decirme como variar o añadir alguna cosa. Ahora estoy liada.

Gracias

LGOMEZ
05/03/2006, 20:42
Aquí dejo otro Lisp, que previa selección de las polilíneas, inserta un texto con la superficie, el perimetro y los totales de ambas dimensiones, solicitando la altura de texto que deseas.

Se carga como cualquier lisp y el comando es SPT


;;; Copyright ©2004 by draftteam softwar

;;; All rights reserved

;;;

;;; DRAFTTEAM PROVIDES THIS PROGRAM SOFTWARE "AS IS" AND WITH ALL
;;; FAULTS. DRAFTTEAM SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY
;;; OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. DRAFTTEAM
;;; SOFTWARE DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL
;;; BE UNINTERRUPTED OR ERROR FREE

;;;

;;; code: José Luis García


;;; modificion sobre la original para que ponga tb el perimetro

;;; http://www.draftteam.com

;;; modificacion hecha por Lucinda Gómez Obregón en agosto 2005, para que ponga
Total Superficie Util / S= y P= y que el comando de arranque sea SPT

;;; ------------------------------------------------------------------------------------
(vl-load-com)
;;-----------------------c:SPT-------------------------------------------------
;;calcula el area y el perimetro de multiples polilineas
;; -------------------------------------------------------------------------------------

(defun c:SPT ( / sele cod Htxt$ ListaAreas ListaPerim mens TotArea TotPerim mens)
(setq TotArea 0.0 TotPerim 0.0)
(or HTxt (setq HTxt (getvar "TEXTSIZE")))
(initget 6)
(if (setq Htxt$ (getdist (strcat "\nAltura de texto;< " (rtos Htxt) " >: ")))
(setq HTxt Htxt$)
)
(prompt "\nSeleccione Polilineas para suma de Areas: ")
(if (setq sele (ssget (list '(0 . "LWPOLYLINE"))))
(progn
(vl-cmdf "_.UNDO" "_BE")
(setq Cod 0 )
(mapcar (function (lambda (LwPol / Centroid Area$ Perim$)
(setq Area$ (vlax-curve-getArea LwPol)
Perim$ (vlax-curve-getDistAtParam LwPol (vlax-curve-getEndParam LwPol)))
(setq TotArea ( TotArea Area$)
TotPerim ( TotPerim Perim$))
(setq Centroid (CentroidePol LwPol))
(XDraw_Txt HTxt Centroid (strcat "S= " (rtos Area$ 2 2) " m2") 256 4 0) ;paso a poner el texto del area en el centro del poligono
(XDraw_Txt HTxt (POLAR Centroid (* 1.5 PI) (* 1.5 HTxt)) (strcat "P= " (rtos Perim$ 2 2) " ml") 256 4 0) ;paso a poner el texto del perimetro en el centro del poligono
(setq Cod (1 Cod))
(prompt (strcat "\rSe Analizarón " (itoa Cod) " Polilineas..."))
)) (SsToList sele));c.mapcar
(if (setq pick_pt (getpoint "\nPunto insercion suma areas: "))
(progn
(XDraw_Txt HTxt pick_pt (strcat "Total Superficie Util = " (rtos TotArea 2 2) " m2") 256 4 0)
(XDraw_Txt HTxt (POLAR pick_pt (* 1.5 PI) (* 1.5 HTxt)) (strcat "Total Perimetro = " (rtos TotPerim 2 2) " ml") 256 4 0)
)
)
(princ)
(if (not (zerop TotArea))
(progn
(setq mens (strcat "\nListado de Areas:\n\n"
"Nº de Polilineas Seleccionadas: " (itoa (sslength sele)) " \n\n"
"Area Total: \t" (rtos TotArea) "\n"
"Perimetro Total:\t" (rtos TotPerim) "\n"))
(alert mens)
)
)
(vl-cmdf "_UNDO" "_E")
);c.prg
(Alert "\nError en SELECCION\n\nNo se seleccionarón Polilineas.")
);c.if
(prin1)
);c.defun

;;---------------------------------------------------------------------------------------
;; dibuja un texto en la pantalla
;; --------------------------------------------------------------------------------------
(defun XDraw_Txt (al p cad col codh codv)
(setq EntTxt
(entmakex
(list '(0 . "TEXT");'(8 . "ARQ_Areas_C_Cuadros")
(cons 62 col)
(cons 40 al)
(cons 1 cad)
'(50 . 0.0) '(41 . 1.0)
(cons 7 (getvar "TEXTSTYLE"))
(cons 72 codh)
(cons 10 p)
(cons 11 p)
(cons 73 codv)
);c.list
);c.entmk
);c.setq
);c.defun

;;-------------------------------------------
;; conjunto de seleccion a lista de entidades
;;-------------------------------------------
(defun SSToList (ss / ssl n)
(if (and ss (= (type ss) 'PICKSET))
(repeat (1 (setq n (1- (sslength ss))))
(setq ssl (cons (ssname ss n) ssl) n (1- n))
);c.repeat
)
ssl
);c.defun

(defun dxf (n eg) (cdr (assoc n eg)))

;----------------------------------------------------
;lista de vertices de LWPOLYLINE
;----------------------------------------------------
(defun GetVertPol (Pol / LPtspol)
(mapcar 'cdr
(vl-remove-if (function (lambda (x) (/= (car x) 10))) (entget Pol)))
)

;;-------------------------------------------------------------------------------
;;; Centroide de LWPOLILINE
;;-------------------------------------------------------------------------------
(defun CentroidePol (Poliline / lVertices Centroide)
(setq lVertices (GetVertPol Poliline)
Centroide (trans (CentroidLisPts lVertices) 0 1) )
) ;_ fin de defun

;;---------------------------- CentroidLisPts -----------------------------------
;; (Centroide de lista de puntos obtenidos de Polilinea)
;;-------------------------------------------------------------------------------
(defun CentroidLisPts (vlist / segno n ttl_area basex basey p1 p2 x1 x2 y1 y2 t_x t_y
t_area t_xm t_ym r_x r_y r_area r_xm r_ym Mx My)
(setq vlist (append vlist (list (car vlist)))
segno (1- (length vlist))
n 0
Ttl_Area 0.0
Mx 0.0
My 0.0
basex (car (nth 0 vlist))
basey (cadr (nth 0 vlist)))
(repeat segno
(setq p1 (nth n vlist)
p2 (nth (1 n) vlist)
x1 (car p1)
y1 (cadr p1)
x2 (car p2)
y2 (cadr p2)
t_x (- (* ( x2 x2 x1) 0.333333) basex)
t_y (- (* ( y1 y1 y2) 0.333333) basey)
t_area (* (- y2 y1) (- x2 x1) 0.5)
t_xm (* t_area t_x)
t_ym (* t_area t_y)
r_x (- (/ ( x1 x2) 2) basex)
r_y (- (/ ( basey y1) 2) basey)
r_area (* (- x2 x1) (- y1 basey))
r_xm (* r_area r_x)
r_ym (* r_area r_y)
Ttl_Area ( Ttl_Area t_area r_area)
Mx ( Mx t_xm r_xm)
My ( My t_ym r_ym)
n (1 n)) ;_ c. setq
) ;_ c. repeat
(list ( (/ Mx Ttl_Area) basex) ( (/ My Ttl_Area) basey))) ;c. defun
(princ)

moby
06/03/2006, 12:11
:D :D :D
Muchiiiiiisimas gracias a todos.
Pero aun no lo consigo........
Debo ser un poco torpe, aunque me he dado cuenta que no soy la unica que tiene este problemilla
Xoubino, muchisimas gracias de ante mano.
Lo tuyo parece lo mas facil pero creo solo se consigue realizar en un mismo comando: que te de el area y tu escribir posteriormente la superficie a mano.
El avance frente al lo que yo hacia es bastante, pero una vez leido todos los mensajes enviados al foro aun quiero mas..
Vorpal, sino es mucho pedir puedes comentar para una desconocedora total de programación como se carga un LSP, por que vamos la "rutinilla" que conservas a mi ma vendria de lujo.......
Me repito pero muchas gracias

LGOMEZ
06/03/2006, 12:24
Hola Moby, vamos a ver si consigo indicarte bien:

Ratón>boton derecho>Nuevo>Documento de texto

Pones al documento el nombre del lisp, seguido de la extensión lsp (xxx.lsp) y le metes el lisp que te interese.

DONDE SITUAR LOS AUTOLISP
Cargar el archivo:
*.LSP
En Archivos de Programa \ Autocad 2005 \ Support

PARA CARGARLE EN AUTOCAD:
Herramientas>Autolisp>Cargar,
Donde Esta El Dibujo Del Maletín Cargar Al Inicio

Si quieres utilizar el lisp ocasionalmente:

Selecciónalo desde el explorador de Windows, arrástralo y suéltalo sobre el dibujo en que tengas que usarlo.

Haciendo esto se carga únicamente en el dibujo que lo has metido, una vez que cierras el dibujo, desaparece.

vorpal
06/03/2006, 16:54
Esta rutina suma textos, pinchas cualquier texto que sea un número y te lo suma, y te escribe el total donde quieras. Muy util combinada con la otra de AREAT que está colgada mas atrás.
Supongo que a alguien le podrá servir.

La primera función (CHOOSE) es para seleccionar los objetos, el resto es la de sumar propiamente dicha.

Saludos.

(defun CHOOSE ()
(setq sel nil)
(while (= sel nil)
(setq sel (ssget))
)
(prin1)
)
;***** SUMATEXT: suma todos los textos numericos seleccionados
(defun C:SUMATEXT ( / txt numel n st)
(setq suma 0)
(defun suma_texto ( param / string num )
(setq string (cdr (assoc '1 param )))
(setq num (atof string))
(setq suma (+ suma num))
(princ ".")
)
(choose)
(setq numel (sslength sel))
(setq n -1)
(repeat numel
(setq n (1+ n))
(setq txt (list (ssname sel n)))
(setq k (entget (car txt)))
(setq k1 (cdr (assoc '-1 k)))
(setq k2 (cdr (assoc '0 k)))
(setvar "CMDECHO" 0)
(if (= k2 "TEXT") (suma_texto k))
(setvar "CMDECHO" 1)
)
(setq st (strcat (rtos suma 2 2) "m2"))
(princ "\nSuma=")
(princ st)
(command "_TEXT" pause "" "0" st)
(prin1)
)

EL_INUTIL_©
06/03/2006, 17:11
Que cosas mas rara escribis, se os ha estropeado el teclado? ;)

Gote_1981
07/03/2006, 01:09
Hola Moby, vamos a ver si consigo indicarte bien:

Ratón>boton derecho>Nuevo>Documento de texto

Pones al documento el nombre del lisp, seguido de la extensión lsp (xxx.lsp) y le metes el lisp que te interese.

DONDE SITUAR LOS AUTOLISP
Cargar el archivo:
*.LSP
En Archivos de Programa \ Autocad 2005 \ Support

PARA CARGARLE EN AUTOCAD:
Herramientas>Autolisp>Cargar,
Donde Esta El Dibujo Del Maletín Cargar Al Inicio

Si quieres utilizar el lisp ocasionalmente:

Selecciónalo desde el explorador de Windows, arrástralo y suéltalo sobre el dibujo en que tengas que usarlo.

Haciendo esto se carga únicamente en el dibujo que lo has metido, una vez que cierras el dibujo, desaparece.

Acabo de descubrir lo que son los LISP :rolleyes: ...

He conseguido cargar el ejemplo que posteaste antes... pero una vez cargado no soy capaz de usarlo sobre tres areas hechas con polilíneas a modo de prueba.

Muchas gracias

LGOMEZ
07/03/2006, 12:38
Hola Gote: No se cual puede ser el problema, le acabo de utilizar y corre bien.

Tecleas SPT>Solicita altura de texto>Seleccionas todas las polilíneas que desees>Intro y coloca en el punto medio la superficie y el perimetro de cada una de las polilíneas. Despues te solicita el punto de insercción de la suma de las áreas, pinchas dónde quieras o escape si no te interesa.

Gote_1981
07/03/2006, 16:58
Hola Gote: No se cual puede ser el problema, le acabo de utilizar y corre bien.

Tecleas SPT>Solicita altura de texto>Seleccionas todas las polilíneas que desees>Intro y coloca en el punto medio la superficie y el perimetro de cada una de las polilíneas. Despues te solicita el punto de insercción de la suma de las áreas, pinchas dónde quieras o escape si no te interesa.

Muchas gracias, no había leido que había q poner el comando SPT.
Me ha salido perfectamente ;)

Conoceis alguna web donde haya LISP interesantes??

Nelson
07/03/2006, 17:57
Conoceis alguna web donde haya LISP interesantes??

Puedes visitar estas paginas :

www.soportecad.com --> subforos codigo abierto y codigo cerrado
www.hispacad.com
www.3dgazpacho.com

Es necesario registrarse en todos.

rodrigomateo
14/04/2006, 01:09
Hola a todos

Les agradezco los datos especialmente a Lgomez...no sabes la cantidad de trabajo que me ahorraste.

Usé el Lisp publicado el 5 de marzo. No se como cargarlo asi que lo copie en la ventana de comandos y me funciono. No se si se puede cargar de otra forma?

Por otro lado, tenia polilineas y polilineas 2D. Estas ultimas no me las reconocia asi que grabe el archivo como R12 dxf...al abrirlo nuevamente ya estaban todas las polilineas sensillas (sin el 2D) y listas para trabajar.

Otra cosa, cualquier linea que estuviera en el dibujo me arrojaba un error al dividir por cero. Se soluciona dejando solo poligonos en una sola capa...y obviamente, todos cerrados.

Un saludo a todos desde Chile lindo.

Paula
14/04/2006, 11:56
Usé el Lisp publicado el 5 de marzo. No se como cargarlo asi que lo copie en la ventana de comandos y me funciono. No se si se puede cargar de otra forma?

Se carga en Herramientas/cargar aplicación, ahí indicas la ruta donde has guardado el archivo.

Luego, si quieres que se te cargue siempre que inices el AutoCAD, señalas el archivo y lo arrastras al maletín.

Un saludo.

rodrigomateo
18/04/2006, 22:14
ok...todo perfecto...muchas gracias

un problemita son las polilineas repetidas (una sobre otra aparentando ser una sola) ya que el programa cuenta polilineas y sobrestima la superficie... alguien conoce una funcion o lisp para poder "descubrir" estas polilineas repetidas????

Saludos

Nelson
19/04/2006, 00:22
Rodrigomateo. El comando OVERKILL (de las express) elimina cualquier duplicación de objetos dentro del dibujo

rodrigomateo
19/04/2006, 00:43
Chuta!! y como se usa ese comando? lo escribi en la linea de comando y no me resulta... ni como overkill ni como _overkill

Saludos

LGOMEZ
19/04/2006, 00:50
Rodrigomateo, debes tener instaladas las Express.
Teclea: _OVERKILL
o tambien en las express lo puedes encontrar en: Modificar>Borrar objetos duplicados.

rodrigomateo
19/04/2006, 00:55
hola LGomez....como puedo instalar las express?? la verdad es q es la primera vez q escucho de eso y me hace falta el tema de borrar las polilineas repetidas....es mucho trabajo ir una por una buscando las repetidas...

Muchas Gracias y Saludos

Ya lo hice!!! espectacular...muchas gracias....las encontre en el cd de instalacion...

saludos

jano
19/04/2006, 13:25
firgen santa como me funcione lo del overkill... :cool:

Mies
20/04/2006, 16:19
No conocía el comando OVERKILL, pero al tratar de utilizarlo me dice: 'cadena de modo ssget errónea' El resto de comandos de las express parecen funcionar bien (las que utilizo habitualmente son las relativas a las capas).
Alguien sabe que significa eso?

adiaz
21/04/2006, 19:15
dios, flipo con los masters del universo que estais hechos todos...

yo toda la vida preguntandome q será eso del auto lisp....

:eek: :eek: :eek: :eek: :eek: :eek:

Condiciones de uso | Publicidad | Acerca de | FacebookUnirse a Sólo Arquitectura en Facebook | TwitterSeguir a @SArquitectura en Twitter

Prohibida la reproducción total o parcial sin la autorización previa y por escrito del editor.