miércoles, 18 de marzo de 2009

Segunda Entrega

Cote

Cuantas veces haz tenido que insertar números consecutivos en un plano Autocad?
Por ejemplo, para numerar lotes: 1... 2... 3... 4... etc.
La siguiente rutina copia un texto con una cadena numérica (cadena numérica es lo que "dice" el texto y el texto es la entidad grafica) y le suma un factor indicado.
Ejemplo:
Tenemos un texto cuya cadena es "1" (sin comillas) y queremos seguir numerando hasta el "5".

Hacemos correr la rutina y escribimos en la línea de comando cote (Command: cote) y le damos enter. Nos solicita que seleccionemos el texto a copiar y el factor a sumar, en este caso el texto con la cadena "1" e ingresamos un 1 como factor a sumar, luego nos pide un punto de referencia para copiar el texto y finalmente indicamos posición final del nuevo texto (que tendrá la cadena "2").
Al seguir indicando nuevas posiciones para el texto este se incrementa de uno en uno, al llegar a "5" hacemos enter para finalizar.
La rutina continúa sumando hasta finalizar con un enter.

Nota: Esta rutina solo es aplicable a entidades "TEXT".
Si desconoces si la entidad es un TEXT o MTEXT debes hacer un list y pinchar dicha entidad antes de aplicar la rutina.
El comando LIST entrega una descripción de las propiedades de la entidad en la pantalla de texto de autocad.

Ejemplo de entidad TEXT


Command: list
Select objects: 1 found
Select objects:
TEXT Layer: 0
Space: Model space
Handle = 4260
Style = STANDARD
Font file = txt
start point, X= -1.1062 Y= -0.0527 Z= 0.0000
height 0.2852
text 1
rotation angle 0
width scale factor 1.0000
obliquing angle 0
generation normal

Ejemplo de entidad MTEXT

Command: list
Select objects: 1 found
Select objects:
MTEXT Layer: 0
Space: Model space
Handle = 4261
Location: X= -0.4106 Y= 0.1255 Z= 0.0000
Width: 1.0390
Normal: X= 0.0000 Y= 0.0000 Z= 1.0000
Rotation: 0
Text style: STANDARD
Text height: 0.2852
Attachment: TopLeft
Flow direction: ByStyle
Contents: 1


Si tienes una entidad MTEXT puedes aplicar el comando Explode para descomponerla en una entidad TEXT.


Bueno basta de cháchara y vamos al grano.

Descarga aquí

miércoles, 11 de marzo de 2009

Ejemplo

Esta primera entrega esta dedicada a mi primera rutina "Grilla.lsp".
Para utilizar esta rutina (y todas las demás a futuro) solo debes seguir los siguientes pasos:

1.- Copiar el código y pegarlo en un archivo nuevo del notepad y guardarlo con la extensión ".lsp" es decir "grilla.lsp" (sin comillassss).

2.- Ese archivo lo ubicas en la carpeta de instalación de Autocad Ej.

C:\Archivos de programa\AutoCAD R14

3.- Cargar la rutina desde el menú Tools -> Load Aplication... ->File -> Seleccionas el archivo grilla.lsp -> Abrir ->Load.

4.- Al estar copiado el archivo en el directorio de instalación puedes ocupar esta alternativa al punto 3:

En la línea de comando escribes (load "grilla") ... esta vez con comillas y le das un enter

Ej. Command:(load "grilla")

5.- Para hacer correr la rutina escribes en la línea de comando "grilla" (sin comillas)

Command:grilla ... y le das un enter.

Solicita la escala y luego el extremo inferior izquierdo y después el extremo superior derecho.

Nota: trabaja con la configuración de unidades decimales.


El código


(defun c:grilla (/ e osm col la a n c sca scat alh alv nor est b xb
yb xc yc dix diy pt1 pt2 ptn ptxt txt)
(setq e (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setq osm (getvar "osmode"))
(setvar "osmode" 0)
(setq col (getvar "cecolor"))
(setvar "cecolor" "8")
(setq la (getvar "clayer"))
(if (tblsearch "layer" "grilla")
(command "layer" "set" "grilla" "")
(command "layer" "new" "grilla" "set" "grilla" "")
)
(command "style" "ro" "romans.shx" "" "" "" "" "" "")
(setq a (getint "Factor de escala: "))(terpri)
(setq n (getpoint "Extremo inferior izquierdo: "))(terpri)
(setq c (getpoint "Extremo superior derecho: "))(terpri)
(setq sca (/ a 10))
(setq scat (/ a 500.0))
(setq alh (/ sca 250.0))
(setq alv (/ sca 166.6666))
(setq nor "N = ")
(setq est "E = ")
(setq b n)
(setq xb (* (fix (/ (car b) sca)) sca))
(setq yb (* (fix (/ (cadr b) sca)) sca))
(setq xc (+ (* (fix (/ (car c) sca)) sca) sca))
(setq yc (+ (* (fix (/ (cadr c) sca)) sca) sca))
(setq dix (- xc xb))
(setq diy (- yc yb))
(repeat (+ (/ dix sca) 1)
(setq xb (* (fix (/ (car b) sca)) sca))
(setq yb (* (fix (/ (cadr b) sca)) sca))
(setq xc (+ (* (fix (/ (car c) sca)) sca) sca))
(setq yc (+ (* (fix (/ (cadr c) sca)) sca) sca))
(setq pt1 (list xb yb))
(setq pt2 (list xb yc))
(setq ptn (list (+ xb sca) yb))
(setq b ptn)
(setq ptxt (list (- xb alh)(+ yb alv)))
(setq txt (strcat est (itoa xb)))
(command "text" ptxt scat "90" txt)
(command "line" pt1 pt2 "")
)
(setq b n)
(repeat (+ (/ diy sca) 1)
(setq xb (* (fix (/ (car b) sca)) sca))
(setq yb (* (fix (/ (cadr b) sca)) sca))
(setq xc (+ (* (fix (/ (car c) sca)) sca) sca))
(setq yc (+ (* (fix (/ (cadr c) sca)) sca) sca))
(setq pt1 (list xb yb))
(setq pt2 (list xc yb))
(setq ptn (list xb (+ yb sca)))
(setq b ptn)
(setq ptxt (list (+ xb alh)(+ yb alv)))
(setq txt (strcat nor (itoa yb)))
(command "text" ptxt scat "0" txt)

(command "line" pt1 pt2 "")
)
(setvar "osmode" osm)
(setvar "cecolor" col)
(setvar "clayer" la)
(setvar "cmdecho" e)
)