Vous êtes sur la page 1sur 20

AutoLISP - VII

Funes Geomtricas, de Strings, de Listas e de Manipulao de Arquivos

Joo Manuel R. S. Tavares Joaquim Oliveira Fonseca

Funes geomtricas

As funes geomtricas do AutoLISP so: distance, angle, polar, inters, cal, osnap e trans Essas funes permitem:

desenhar rapidamente e com preciso; efectuar clculos envolvendo os objectos desenhados; obter o mximo de informao a partir do desenho; permitir que o utilizador introduza o mnimo de dados para que entidades sejam criadas.

2009@JST/JOF

CFAC: AutoLISP (VII) - Funes Geomtricas, de Strings, de Listas e de Manipulao de Arquivos

Funo distance

Obtm a distncia entre dois pontos. Sintaxe: (distance ponto1 ponto2) Exemplo:
(setq p1 (getpoint "\nInsira um ponto:")) (setq p2 (getpoint p1 "\nInsira outro ponto:")) (setq d (distance p1 p2))

2009@JST/JOF

CFAC: AutoLISP (VII) - Funes Geomtricas, de Strings, de Listas e de Manipulao de Arquivos

Funo angle

Obtm o ngulo em radianos de uma recta definida por dois pontos e o eixo X do UCS ou WCS corrente, medido no sentido anti-horrio. Sintaxe: (angle ponto1 ponto2) Exemplo:
(setq p1 (getpoint "\nInsira um ponto:")) (setq p2 (getpoint p1 "\nInsira outro ponto:")) (setq a (angle p1 p2))

2009@JST/JOF

CFAC: AutoLISP (VII) - Funes Geomtricas, de Strings, de Listas e de Manipulao de Arquivos

Funo polar

Retorna um ponto em 3D do UCS corrente a partir de um ponto, de um ngulo (em radianos) e de uma distncia (coordenadas relativas polares). Sintaxe: (polar ponto ang dist) Exemplo:
(setq p1 (getpoint "\nInsira um ponto:")) (setq p2 (polar p1 0.785398 141.5))

2009@JST/JOF

CFAC: AutoLISP (VII) - Funes Geomtricas, de Strings, de Listas e de Manipulao de Arquivos

Funo inters

Obtm a interseco de duas rectas, cada uma definida por dois pontos. Sintaxe: (inters pnt1-r1 pnt2-r1 pnt1-r2 pnt2-r2 [onseg]) (onseg opcional e pode ter nil considera rectas infinitas ou T) Exemplo:
(setq p1r1 (getpoint "\nInsira um ponto da primeira recta:")) (setq p2r1 (getpoint p1r1 "\nInsira outro ponto:")) (setq p1r2 (getpoint "\nInsira um ponto da segunda recta:")) (setq p2r2 (getpoint p1r2 "\nInsira outro ponto:")) (setq pint (inters p1r1 p2r1 p1r2 p2r2))

2009@JST/JOF

CFAC: AutoLISP (VII) - Funes Geomtricas, de Strings, de Listas e de Manipulao de Arquivos

Funo osnap

Retorna um ponto em 3D do UCS corrente resultado da aplicao de uma funo de preciso (osnap) atravs de um ponto especificado. Os modos de preciso (opes osnap) so: end, mid, int, appint, cen, qua, per, tan, nod, ins, nea ... Sintaxe: (osnap ponto modo")
CFAC: AutoLISP (VII) - Funes Geomtricas, de Strings, de Listas e de Manipulao de Arquivos

2009@JST/JOF

Funo osnap

Exemplo: (seleco do ponto mdio de uma recta especificada)


(defun c:pontomediano(/ pt) (setq pt (getpoint "\nClique sobre uma recta:")) (Ponto mais prximo.) (setq pt (osnap pt "nea")) (Ponto mediano.) (setq ptmid (osnap pt "mid")) )

2009@JST/JOF

CFAC: AutoLISP (VII) - Funes Geomtricas, de Strings, de Listas e de Manipulao de Arquivos

Funo trans

Translada um ponto de um sistema de coordenadas para um outro sistema de coordenadas. Sintaxe: (trans pnt sc-orig sc-dest [disp]) sc-orig e sc-dest especificam os sistemas de coordenadas original e destino. Estes argumentos podem ser:

cdigos (0 para WCS,1 para UCS corrente, 2 para UCS do view, 3 para paperspace); nomes de entidade (obtidos com entnext, entlast, entsel, nentsel e ssname); um vector de extruso em 3D.

disp se presente e no-nulo, especifica que pnt deve ser tratado com um deslocamento em 3D e no um ponto.
CFAC: AutoLISP (VII) - Funes Geomtricas, de Strings, de Listas e de Manipulao de Arquivos

2009@JST/JOF

Funo trans - exemplos

Se o UCS corrente foi obtido da mudana de origem para o ponto (10,10,10), ento:
(setq p (list 0 0 0)) (trans p 0 1) ; retorna (-10.0 -10.0 -10.0) (trans p 1 0) ; retorna (10.0 10.0 10.0)

Para se converter pontos em 2D para 3D:


(setq ponto (list 1 2)) (trans ponto 0 1) ; acrescenta z = 0 ao ponto (trans ponto 1 0) ; acrescenta z = z do UCS corrente ao ponto

10

2009@JST/JOF

CFAC: AutoLISP (VII) - Funes Geomtricas, de Strings, de Listas e de Manipulao de Arquivos

Exemplo - funes trans e polar


(defun c:tr(/ centro1 centro2 ncentro dia) (command "ucs" "") ; ajustando o ucs para wcs (setq centro1 (getpoint "Escolha o centro da rotao:")) (setq dia (getreal "Diametro do crculo:")) (setq centro2 (polar centro1 0 (* 2 dia))) ; centro do primeiro crculo (command "circle" centro2 (/ dia 2)) ; desenho do 1 crculo, centro+raio (repeat 10 (command "ucs" "y" "36") ; roda ucs em torno do eixo Y 36 (setq ncentro (trans centro1 0 1)) ; translada centro1 para o novo ucs (setq centro2 (polar ncentro 0 (* 2 dia))) ; centro do prximo crculo (command "circle" centro2 (/ dia 2)) ; desenha o prximo crculo ) )

Exemplo do resultado (circles)

11

2009@JST/JOF

CFAC: AutoLISP (VII) - Funes Geomtricas, de Strings, de Listas e de Manipulao de Arquivos

Funes para Strings


Strings conjunto de caracteres

getstring: leitura de uma string a partir do teclado; read-line/write-line: leitura/escrita de uma string de um/num arquivo; substr: obteno de uma substring a partir de uma string original, por ex: (substr "abcde" 2 1) devolve b; strlen: devolve o nmero de caracteres de uma string; strcat: realiza a concatenao (soma) de strings, por ex: (strcat "a" "bout") devolve about.
CFAC: AutoLISP (VII) - Funes Geomtricas, de Strings, de Listas e de Manipulao de Arquivos

12

2009@JST/JOF

Mais funes para Listas


append: junta listas numa nica lista, por ex: (append '(a b) '(c d)) retorna (A B C D); list: cria uma lista, por ex: (list 3.9 6.7) retorna (3.9 6.7); nth: retorna o elemento de uma lista que ocupa uma determinada posio (o 1 elemento corresponde posio 0), por ex: (nth 3 '(a b c d e)) retorna d.
CFAC: AutoLISP (VII) - Funes Geomtricas, de Strings, de Listas e de Manipulao de Arquivos

13

2009@JST/JOF

Manipulao de arquivos ASCII

A manipulao de arquivos consiste em armazenar informao (e tambm ler ...) obtida durante uma sesso do AutoCAD em arquivos para uso posterior. O AutoLISP permite que dados sejam gravados e lidos a partir de arquivos escritos no padro ASCII. As funes de manipulao de arquivos ASCII em AutoLISP so:

de abertura e fecho de arquivos: open e close de leitura: read-char e read-line de escrita: write-char, write-line, princ, print, prin1
CFAC: AutoLISP (VII) - Funes Geomtricas, de Strings, de Listas e de Manipulao de Arquivos

14

2009@JST/JOF

Abrir arquivos

Quando um arquivo ASCII aberto pelo AutoLISP, o registro da sua abertura deve ficar associado a uma varivel especificada no programa. Essa varivel aponta para o arquivo dentro do programa. Sempre que se deseja referir esse arquivo dentro do programa, deve-se referir a correspondente varivel associada. Um arquivo pode ser aberto para:

leitura; escrita; leitura e escrita.


CFAC: AutoLISP (VII) - Funes Geomtricas, de Strings, de Listas e de Manipulao de Arquivos

15

2009@JST/JOF

Funo open

Sintaxe: (open "unidade:\\subdir\\arquivo.txt" "cdigo")

onde "cdigo" pode ser:


r (para leitura); w (para escrita); a (para leitura e escrita).

Exemplos:
(setq LE (open "c:\\lista.txt" "r")) (setq GRAVA (open "c:\\trab\\lista.txt" "w")) (setq INCRE (open "c:\\tmp\\lista.txt" "a"))

16

2009@JST/JOF

CFAC: AutoLISP (VII) - Funes Geomtricas, de Strings, de Listas e de Manipulao de Arquivos

Funes de escrita em arquivos ASCII

As funes write-char, write-line, princ, print e prin1 escrevem (gravam) informao num arquivo ASCII previamente aberto para escrita ou para leitura e escrita. Sintaxe: (comando-de-escrita informao arquivo)
(Varivel associada)

17

2009@JST/JOF

CFAC: AutoLISP (VII) - Funes Geomtricas, de Strings, de Listas e de Manipulao de Arquivos

Funes de escrita em arquivos ASCII

Exemplo:
(defun c:abrearq() ;abre arquivo para escrita e apaga o contedo se o arquivo ;j existia (setq arq (open "c:\\trab\\arquivo.txt" "w")) (princ "CFAC " arq) (setq ano 2009) (princ ano arq) (write-line Utilizando autocad" arq) (close arq) ; fecha o arquivo )

18

2009@JST/JOF

CFAC: AutoLISP (VII) - Funes Geomtricas, de Strings, de Listas e de Manipulao de Arquivos

Comandos de leitura

As funes read-line e read-char so funes que lem dados a partir de arquivos ASCII. Sintaxe: (read-line arquivo) ; retorna a linha lida (read-char arquivo) ; retorna o cdigo ascii do ; caracter lido Exemplo: (setq caracter (chr (read-char arq)))
(Converso ascii -> caracter.)
CFAC: AutoLISP (VII) - Funes Geomtricas, de Strings, de Listas e de Manipulao de Arquivos

19

2009@JST/JOF

Exemplo - funo read-line


(defun c:learq() (setq arq (open "c:\\trab\\arquivo.txt" "r")) (if (= arq nil) (alert "Open Invlido!") ; erro na abertura do file (progn (setq linha (read-line arq)) (Escrita de todas (while (/= linha nil) as linhas do (print linha) ficheiro.) (setq linha (read-line arq)) ) ) ) (princ) ) CFAC: AutoLISP (VII) - Funes Geomtricas, de Strings, de Listas e de
2009@JST/JOF Manipulao de Arquivos

20

Vous aimerez peut-être aussi