Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
Introduo
por R.C. Ruschel, DCC-FEC-UNICAMP, Agosto 1997 Interfaces do AutoCAD:
Alm da interao pela linha de comando e por menus o AutoCAD R13 permite: executar um conjunto de comandos por meio de command-scripting a programao pelo usurio utilizando-se: a linguagem de programao AutoLISP ou a linguagem C atravs do ADS (AutoCAD Developing System) A forma de programao depende: das necessidades da aplicao (desempenho, custo) da experincia de programao da equipe envolvida
AutoLisp:
O AutoLisp baseado na linguagem de programao LISP (List Processing) de aprendizado simples porm poderosa. O AutoCAD tem um interpretador de Lisp embutido, permitindo a digitao de expresses/funes AutoLisp na linha de comando e sua interpretao automtica. O AutoCAD inclue rotinas AutoLisp bastante teis nos sub-diretrios sample e support.
Aplicaes em AutoLisp:
So armazenadas em arquivos ASCII com extenso .lsp. Devem ser carregadas para o ambiente do AutoCAD para serem executadas. Como carregar: na linha de comando pelo menu Tools/Applications ... de forma automtica inclundo-a no arquivo acad.lsp
ADS x AutoLisp:
A escolha ADS x AutoLisp depende: da experncia do programador
do desempenho desejado para a aplicao aplicaes em ADS so + rpidas e utilizam menos memria do desempenho do processo de desenvolvimento da applicao AutoLisp recomendado para prototipagem e aplicaes onde o custo do desenvolvimento e manuteno mais importante que o desempenho da aplicao. da portabilidade desejada para a aplicao Aplicaes em AutoLisp so mais portteis. Dependem apenas do AutoCAD para a plataforma desejada. Aplicaes em ADS dependem do AutoCAD, da verso da linguagem C e do ambiente de desenvolvimento.
Lisp:
A LP Lisp : da mesma poca que o Fortran diferente de outras LPs, i.e., dados e programas so tratados da mesma forma (tudo como listas) e so colodados no mesmo espao de memria do computador. interpretada, i.e.,toda vez que o programa executado o cdigo fonte avaliado. muito utilizada na programao da rea de inteligncia artificial. Lisp utiliza a notao infixa (operador seguido dos operandos):
1 + 2 ----------> (+ 1 2)
Listas - composio:
inicia com "(", termina com ")" e composta por tomos, que podem ser: um nmero interio: -32.768 a 32.767 um nmero real: -4.932 a 4.932 onde e: -307 a 307 uma cadeia de caracteres (string): "Ola", "Insira um ponto:" um smbolo: nome de funo interna ou definida pelo usurio uma varivel: um smbolo que representa um nome de dado um nil: valor nulo (vazio) um ponteiro para arquivo (file descriptor): nome de arquivo uma sub-rotina (subr): nome de funes internas e externas do AutoLisp um nome de entidade: cdigo numrico associado ao objeto numa sesso de trabalho conjunto de seleo: conjunto de objetos selecionados
Listas - Exemplos:
Lista de dados: (2.0 3.5 7.6) ("paola" (11 06 1996) 3.150 51) Lista de programa (primeiro elemento um nome de funo ou uma subr):
(setq A 21) (list 2 3 4) ;setq uma subr, A um smbolo (nome de varivel) ;list uma subr
Obs: a subr quote empregada para acessar o nome da referncia (no o valor) de um smbolo. Portanto, o 2o. exemplo para ser processado como um lista de programa deveria ser:
(quote (2.0 3.0 6.6)) ou '(2.0 3.0 6.6)
Command: (command "line" p1 p2 "") line From point: to point: to point: Command: nil Command:(defun vistalatdir ()(command "vpoint" "1,0,0")) VISTALATDIR Command:(vistalatdir)
Arquivo acad.pgp:
Para fazer com que o comando EDIT chame o editor de texto diferente do edit do windows necessrio alterar uma linha do arquivo r13\com\support\acad.pgp: Linha original: EDIT,EDIT,0, File to edit: ,4 Nova linha: EDIT,c:\windows\notepad, 0, File to edit: ,4 O subdiretrio onde o notepad.exe est localizado pode variar. Portanto, verifique no seu microcomputador o subdiretrio correto. A mesma observao vale para a localizao do arquivo acad.pgp.
No pull-down menu Tools/Applications indicar arquivo a ser carregado procurando sua localizao com auxlio do botton File e depois carrega-lo acionando Load.
Exemplo - isomets.lsp:
Contedo do arquivo isomets.lsp:
;;;Vista isometrica lat-dir, fundo, por-cima (defun c:iso1() (command "vpoint" "1,1,1")) ;;;Vista isometrica lat-esq, fundo, por-cima (defun c:iso2() (command "vpoint" "-1,1,1"))
;;;Vista isometrica lat-dir, frente, por-cima (defun c:iso3() (command "vpoint" "1,-1,1"))
Exemplo - media.lsp:
Contedo do arquivo media.lsp
;;;Programa principal (defun c:mediatestes() (setq t1(getreal "\nNota teste-1: ")) (setq t2(getreal "\nNota teste-2: ")) (setq nota (soma-e-divide)) (princ "\nMedia dos testes = ") (princ nota) (princ)) ;;;funcao soma-e-divide (defun soma-e-divide() (/ (+ t1 t2) 3.0))
Homework:
Ler o captulo 1 de (Gal, 1997) ou captulos 1 e 2 de (Kramer&Kramer, 1995). Faa os seguintes exerccios propostos por (Gal, 1997): 1.Crie uma rotina que aplique um offset de 3 unidades numa entidade e altere em seguida o layer ao qual ela pertence para OFFLINES. Suponha que o layer j exista. 2.Crie um bloco qualquer (interno ao desenho). A seguir, crie uma rotina que insira este bloco rapidamente, com as escala x e y constantes e rotao 0, explodindo-o em seguida. O usurio dever somente informar a posio em que ser inserido o bloco.
Variveis:
A varivel um recurso utilizado pelo programa para executar funes iguais mas com valores que podem ser alterados a cada execuo. Existem trs tipos: livre (global) associada local O tipo da varivel determinado pela sua posio na lista de parmetros na definio da funo.
Varivel associada: Equivalente a parmetros de entrada de uma funo. Variveis associadas e locais so zeradas na sada da funo.
Nota teste-1: 5.0 Nota teste-2: 7.0 Media dos testes = 6.0 Command:
As linha de centro devem ser colocadas no Layer LC pr-existente com tipo de linha hidden.
Figura D: If A<0 executa as funes prog1 e prog2, seno executa as funes prog3 e prog4.
(if (< A 0) (progn (prog1) (prog2) ) (progn (prog3)
(prog4) ) )
Figura F: Caso A=1 execute a funo prog1, A=2 execute a funo prog2, A=3 execute a funo prog3.
(cond (= A 1)(prog1) (= A 2)(prog2) (= A 3)(prog3) )
Operadores de comparao:
= (igual) (if (= A B C) (rotina)) /= (diferente) (if (/= A B) (rotina)) < (menor) (if (< A B) (rotina)) <= (menor ou igual) (if (<= A B) (rotina)) > (maior) (if (> A B) (rotina))
>= (maior ou igual) (if (>= A B) (rotina)) eq (idntico) (if (eq A B) (rotina)) equal (resultar em =) (if (equal A B) (rotina)
(setq CODIGO " ") (while (/= (strlen CODIGO) 6) (prompt "\nO codigo do desenho deve ter apenas 6 digitos. ") (setq CODIGO (getstring "Insira o codigo: ")) ) (setq NOME (strcat "c:\\" FOLHA "\\" CODIGO ".DWG")) (setq ARQ (findfile NOME)) (if (/= ARQ nil) (command "OPEN" ARQ) (alert (strcat "O arquivo " (strcase NOME) "\nnao foi encontrado.")) ) )
Obtendo dados:
As rotinas escritas em AutoLisp podem interagir com o usurio e o sistemas. Portanto, so necessrias funes para obter informao: getangle, getcorner, getdist, getenv, getfiled, getint, getkword, getorient, getpoint, getreal, getstring, getvar Na interao com o usurio deve-se utilizar prompts (mensagens com pedido de insero de dados) claros e realizar testes de consistncia sobre os dados obtidos. A funo initget restringe dados de entrada.
Deve-se clicar um ponto e a distanca entre este ponto e pt1 ser calculada.
Exemplos:
(initget 2) (initget (+ 1 2 4)) (initget 7) (initget 1 "S N") (initget "10 11 12")
Convertendo dados:
Determinadas funes manipulam dados de um tipo especfico. Nem sempre o dado obtido do tipo exigido pela funo que o manipular. Portanto, so necessrias funes de converso entre tipos.
Funes de converso:
float - inteiro para real atoi - string para inteiro itoa - inteiro para string atof - string para real rtos - real para string angtos - radianos para string angtof - radianos para real ascii - string para cdigo na tabela ASCII chr - cdigo na tabela ASCII para string A diviso (/ real int) resulta em real. A diviso (/ int int) resulta em int (casas decimais eliminadas).
(setq NUMREP (fix (/ DISTANCIA INTERVALO))) (command "copy" pause "" "0,0" (strcat "@" (rtos INTERVALO) "<" (angtos ALPHA 0 4))) (repeat (- NUMREP 1) (command "copy" "last" "" "0,0" (strcat "@" (rtos INTERVALO) "<" (angtos ALPHA 0 4))) ) )
Funes de impresso:
princ: Imprime uma expresso na linha de comando ou num arquivo aberto. Se a expresso contm caracteres de controle (como \\, \", \e, \n, \t ....). estes so interpretados e executados, i.e.: \n equivale a uma nova linha. Igual a funo princ exceto que caracteres de controle no so interpretados e sim impressos literalmente. Igual a funo princ exceto que sempre imprime a expresso numa nova linha com um espao aps o que foi impresso.
prin1:
print:
Exemplos:
(setq A 123 B (A)) (princ 'A) ;imprime A e retorna A (princ A) ;imprime 123 e retorna 123 (princ B) ;imprime (A) e retorna (A) (princ "\nOla") ;imprime "Ola" numa nova linha e retorna "Ola" (princ "Ola" f) ;imprime "Ola" no arquivo f e retorna "Ola"
Homework:
Ler os captulos 4 e 5 de (Gal, 1997) ou captulos 5, 6, 7 e 8 de (Kramer&Kramer, 1995). Fazer o exericcio 4.3.3 (pgina 61) de (Gal, 1997), apresentado a seguir: Para utilizao dos recursos de repetio e contadores, crie uma rotina que pea ao usurio que clique um determinado ponto, onde estar supostamente um pilar. Nos pontos clicados, dever ser gerado o texto no formato Pn, onde n um nmero seqencial representando a numerao do pilar. Caso o usurio desejar, os pilares podero comear a ser numerados por qualquer valor. Isto dever ser uma opo a ser apresentada no incio do programa.
2.Selecionar arquivo .lsp desejado, e.g.: c:\vill20.pro\examples\inyn.lsp 3.Clicar OK As opes no MENU WINDOW organizam a disposio da janela do editor, e.g.: tile horizontally
O colorido do editor:
VILL "color coding", e.g.: azul: funes internas (car, setq ...) verde: nmeros magenta: strings vermelho: parnteses preto: smbolos (nome de funes e variveis definidas pelo usurio) fundo cinza (background color): comentrios Ajuda visualizar erros de digitao.
Sando do VILL:
Para concluir uma seo de trabalho no VILL escolher no MENU FILE a opo EXIT. Se o arquivo .lsp no editor de texto tiver sido alterado sem ter sido salvo, o VILL ir perguntar se deseja salvar o contedo do editor. Neste caso deve-se responder SIM ou NO.
O VILL oferece os seguintes recursos para detectar e corrigir estes erros: execuo controlada do programa, acompanhamento visual de variveis, verificao da pilha de execuo do programa, mensagem de erro detalhada associada a expresso errnea, editor colorido enfatisando sintaxe da linguagem e formatador de texto.
Colocando breakpoints:
Breakpoints so pontos de pausa de execuo inseridos num programa para possibilitar sua verificao (debugging). Como inserir breakpoints: 1.V para o editor do VILL. 2.Posicione o cursor em frente ao parntese de abertura da expresso desejada. 3.Selecione: no MENU DEBUG a opo Set Breakpoint ou na TOOLBAR DEBUG o boto Set Breakpoint.
Para executar uma expresso selecione STEP na TOOLBAR RUN. Para entrar numa expresso selecione STEP IN na TOOLBAR RUN. Observe o cone STATUS BUTTON da TOOLBAR RUN que mostra onde o programa est parado, i.e.: antes de uma expresso I( ) ou depois de uma expresso ( )I.
O MENU EDIT oferece os seguintes mecanismos para a verificao de parnteses: Match Forward: procura o ) correpondente a um abre parntese. Match Backward: procura ( correpondente a um fecha parntese. Select Forward: ilumina a expressa do parntese de abertura at o correspondente de fechamento. Select Backward: ilumina a expressa do parntese de fechamento at o correspondente de abertura.
Erros de execuo:
Existem erros que s aparecem durante a execuo. Veja o exemplo a seguir: 1.Faa um LOAD BUFFER do programa inyno.lsp. 2.Execute-o digitando na janela de console (c:inyno). 3.Responda no AutoCAD as mensagens necessrais. 4.A mensagem de erro aparecer: ;***ERROR: bad argument type for compare: 36.0555 (155.0 155.0 0)
Clique o boto da direta do mouse e selecione a opo CALL POINT SOURCE Faa uma anlise, com recursos vistos anteriormente (e.g. visualizando valor de variveis), da causa do erro indicado .
O manual do VitalLisp:
Esta aula foi preparada a partir do Captulo Getting Started do Manual do VitalLisp. O manual deve sempre ser consultado para se obter melhor desempenho com o software. O manual composto pelos seguintes captulos: 1.Introduction 2.Getting started 3.The main features fo teh VILL user interface 4.The VILL windows 5.VitalLisp data inspection tools 6.Debugging in VILL 7.The VILL Autolisp emulation system 8.The Autolisp compiler 9.Building stand-alone applications 10.Managing multiple lisp files 11.The VILL command reference 12.Appendix 13.Glossary of terms 14.Index
Homework:
Para fixar os comandos do VILL apresentados em aula leia e execute tarefas do captulo Getting Started do manual do VitalLisp. Crie uma funo para subtrair uma box de um slido qualquer. As dimenses da box devem ser dadas clicando-se dois pontos na diagonal na base e o valor da altura. O desenho da box deve ser feito sobre o slido que sofrer a subtrao. A funo desenha a box a ser subtrada. O slido que sofrer a subtrao deve ser selecionado e a subtrao executada pela funo.
A lista de dados uma lista de associaes. A maioria destas associaes so pares (cdigo . valor) denominados par pontuado (dotted par). A lista par pontuado composta por dois valores (o ponto no conta).
Entretanto, antes de apresentarmos cada uma deve-se conhecer as funes cons, assoc e subst, pois so muito utilizadas em conjunto com as funes de manipulao de entidades.
Funo cons:
Sintaxe: (cons primeiro-novo-elemento lista) acrescenta um novo elemento no incio da lista (cons primeiro-novo-elemento tomo) constri uma lista do tipo par pontuado Exemplos:
(cons 'a '(b c d)) ;retorna (A B C D) (cons '(a) '(b c d)) ;retorna ((A) (B C D)) (cons 'a 2) ;retorna (A . 2) (car (cons 'a 2)) ;retorna A (cdr (cons 'a 2)) ;retorna 2
Funo assoc:
Procura por um elemento numa lista de associaes e retorna a lista de associao em que o elemento participa. Sintaxe: (assoc item lista) Exemplo:
(setq a1 '((nome box) (largura 3) (comprimento 4.72) (altura 5))) (assoc 'largura a1) ;retorna (largura 3) (assoc 'peso a1) ;retorna nil
Funo subst:
Executa uma substituio de elemento numa lista. Sintaxe: (subst item-novo item-velho lista) Exemplos:
(setq lista '(a b (c d) b)) (subst 'qq 'b lista) ;retorna (A QQ (C D) QQ) e lista permanece = (setq lista (subst 'qq '(c d) lista)) ;retorna lista modificada para (A B QQ B) (subst '(qq rr) qq lista) ;retorna (A B (QQ RR) B) e lista permanece =
A funo entsel similar a funo anterior, obtm nome de entidade; entretanto, entsel retorna uma lista composta pelo nome de uma entidade selecionada e o ponto de seleo.
(entsel) ;retorna (<Entity name: x...x> (3.5 5.5 6.8)) e ;a mensagem Select Object: ser utlizada. (entsel "\nSelecione um objeto:") ;retorna (<Entity name: x...x> (3.5 5.5 6.8)) e ;a mensagem incluida no prompt da funo ser utilizada
Funo entget:
Obtm a lista de dados de uma entidade a partir de seu nome. A lista de dados uma lista de associaes, algumas destas associaes so representadas por listas denominadas par pontuado (dotted par). Uma lista par pontuado formada por dois tomos (cdigo . valor) separados por um ponto (o ponto no conta como tomo da lista). Cada cdigo representa um tipo de valor: -1 est associado ao nome da entidade 0 est associado ao tipo da entidade "LINE", "ARC" ... 8 est associado ao nome da layer onde a entidade foi desenhada ... Ver lista de cdigos no Help/Topics/Contedo/AutoCAD Customization Guide/Apndice C -DXF Group Codes/Conventions/Numerical Order.
Funo entmake:
Cria um novo objeto no desenho a partir de uma lista contendo informaes descritivas do objeto. Sintaxe: (entmake (lista-que-descreve-o-objeto)) Exemplo:
(entmake '( (0 . "LINE")
(8 . "0") (62 . 1) (10 3.0 4.0 0.0) (11 8.0 4.0 0.0) (210 0.0 0.0 1.0) ) )
Funo handent:
O handle da entidade um cdigo nico e permanente associado a cada entidade no desenho em qualquer seo de trabalho. O nome da entidade um cdigo dado a entidade que muda entre sees de trabalho. A funo handent obtm o nome da entidade a partir do handle da entidade.
(handent "cdigo-do-handle");retorna o nome da entidade
Funo nentsel:
A funo nentsel acessa informaes de um objeto contido em outro objeto, e.g., objetos que compem um bloco. Exerccio: 1.Desenhe um bloco formado por um cculo dentro de um retngulo. O ponto de insero do bloco deve ser o centro do crculo. 2.Insira o bloco uma vez. 3.Obtenha o nome de entidade da insero do bloco com (entsel). 4.Para se obter o nome da entidade retngulo naquela insero do bloco utilize (nentsel) e clique sobre o retngulo. 5.Para se obter o nome da entidade crculo da mesma insero do bloco utilize (nentsel) e clique sobre o crculo. 6.Observe que na lista retornada por nentsel o primeiro elemento o nome da entidade componente e o ltimo elemento o nome da entidade bloco.
Exerccio:
(defun c:tbllayer () ;obtenha a primeira linha da tabela de layers do desenho ;imprima a lista retornada ;enquanto no chegar no final da tabela (i.e. retorno de tblnext \= nil) ;obtenha proxima linha ;imprima lista retornada ;fim-do-enquanto )
Crie uma funo tblltype, equivalente a acima, para tipos de linhas (LTYPES).
Homework:
Ler os captulos 5 e 6 de (Gal, 1997) ou o captulo 10 de (Kramer&Kramer, 1995). Fazer o exerccio 6.3.2 (pgina 96 de Gal, 1997), apresentado a seguir:
Crie uma funo que, com base num crculo clicado, faa o desenho de uma flange apresentada abaixo, seguindo as reles entre as medidas cotadas: (nmero de furos constante = 10).
Funo ssadd:
Cria um conjunto seleo vazio ou acrescenta entidades a um conjunto existente. Sintaxe: (ssadd [nome-de-entidade [conjunto-seleo]]) sem opes cria conjunto seleo vazio apenas com opo nome-de-entidade cria conjunto seleo composto pela entidade especificada com opes nome-de-entidade e conjuto-seleo acrescenta entidade a um conjunto seleo existente.
Exemplo:
(setq ss1 (ssadd)) ;retorna <Selection set: XX>
Funo ssget:
Cria um conjunto seleo a partir de uma seleo de objetos. Sintaxe: (ssget [mode] [pt1] [pt2] [pt-list] [filter-list]) onde mode: "P" (previous), "L" (last), "W"(window), "C" (crossing), "X" (all), "WP" (window poligon), "CP" (crossing poligon), "F" (fence). Exemplos:
(ssget "X") ;cria conjunto seleo com todas entidades do desenho (ssget "W" pt1 pt2);cria conj. sel. com objetos contidos na janela definida por pt1 e pt2 (ssget '((0 . "LINE"))); conj. sel. de linhas selecionadas individual/e
(defun c:sslist () (setq grupo (ssget)) (print grupo) (setq num (sslength grupo)) (print num) (setq cont 0) (repeat num (setq nome (ssname grupo cont)) (print cont) (princ nome) (setq cont (1+ cont)) ) (princ) )
Exerccio:
Defina uma funo denominada ssredraw. A funo tem como parmetro de entrada o nome de um conjunto seleo. A funo deve aplicar um redraw com cdigo 3 em todas entidades que participam do conjunto seleo especificado. A sintaxe da funo redraw (redraw nome-de-entidade cdigo). Redefina a funo c:seleciona-janela apresentada anteriormente incluindo uma chamada para a funo ssredraw. Desta forma, os objetos selecionados sero destacados.
Funo ssmemb:
A funo ssmemb verifica se uma determina entidade pertence a um conjunto seleo. Se a entidade pertence ao conjunto seu nome retornado, seno a funo retorna nil. Sintaxe: (ssmemb nome-da-entidade conjunto-seleo) Exemplo:
(setq ss1 (ssget))
Funo ssdel:
A funo ssdel remove uma entidade de um conjunto seleo. OBS: a entidade no apagada do desenho. Sintaxe: (ssdel nome-da-entidade conjunto-seleo) Exemplo:
(setq ss1 (ssget)) (ssdel (car (entsel)) ss1)
Homework:
Ler os captulos 7 e 8 de (Gal, 1997) ou o captulo 10 de (Kramer&Kramer, 1995).
Funo distance:
Obtm a distncia entre dois pontos. Sintaxe: (distance ponto1 ponto2) Exemplo:
(setq p1 (getpoint "\nInsira um ponto:")) (setq p2 (getpoint "\nInsira outro ponto:")) (setq d (distance p1 p2))
Funo angle:
Obtm o ngulo em radianos de uma reta 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 "\nInsira outro ponto:")) (setq a (angle p1 p2))
Funo polar:
Retorna um ponto em 3D do UCS corrente a partir de um ponto, ngulo (em radianos) e distncia especificados. Sintaxe: (polar ponto ang dist) Exemplo:
(setq p1 (getpoint "\nInsira um ponto:")) (setq p2 (polar p1 0.785398 1.414214))
Funo inters:
Obtm interseo de duas retas definidas cada uma por dois pontos. Sintaxe: (inters pnt1-r1 pnt2-r1 pnt1-r2 pnt2-r2) Exemplo:
(setq p1r1 (getpoint "\nInsira um ponto1 da primeira reta:")) (setq p2r1 (getpoint "\nInsira outro ponto:")) (setq p1r2 (getpoint "\nInsira um ponto1 da segunda reta:")) (setq p2r2 (getpoint "\nInsira outro ponto:")) (setq pint (inters p1r1 p2r1 p1r2 p2r2))
Funo osnap:
Retorna um ponto em 3D do UCS corrente resultado da aplicao de uma funo de preciso sobre um ponto especificado. As funes de preciso so: end, mid, int, appint, cen, qua, per, tan, nod, ins, nea ... Sintaxe: (osnap ponto "preciso") Exemplo:
(defun c:pontomediano (/ pt) (setq pt (getpoint "\Clique sobre uma reta:")) (setq pt (osnap pt "nea")) (setq ptmid (osnap pt "mid")) )
Funo trans:
Translada um ponto de um sistema de coordenadas para outro sistema de coordenadas. Sintaxe: (trans pnt sc-orig sc-dest [disp]) sc-orig e sc-dest espeficam 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 vertor 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.
(setq ponto (list 1 2)) (trans ponto 0 1);acrescenta z=0 no ponto (trans ponto 1 0);acrescenta z = z do UCS corrente no ponto
Abrindo arquivos:
Quando um arquivo ASCII aberto pelo Autolisp, o registro da sua abertura deve ficar gravado numa varivel especificada no programa. Essa varivel representa o arquivo dentro do programa. Sempre que se deseja referir ao arquivo dentro do programa, deve-se referir a essa varivel. Um arquivo pode ser aberto para: leitura escrita leitura e escrita
Funo open:
Sintaxe: (open "unidade:\\subdir\\arquivo.txt" "cdigo") onde "cdigo" pode ser: r (para leitura), w (para escrita) e
Comandos de leitura:
As funes read-line e read-char so funes que lem dados de arquivos ASCII. Sintaxe: (read-line arquivo) ;retorna linha lida (read-char arquivo) ;retorna cdigo do caracter lido Exemplo: (setq caracter (chr (read-char arq)))
Homework:
Ler os captulos 7 e 8 de (Gal, 1997) ou o captulo 10 de (Kramer&Kramer, 1995). Exerccio 8.3.2 sugerido por Gal na pgina 119:
Crie uma funo que, tendo como base o desenho de um pilar formado por quatro linhas, insira um texto indicando as suas dimenses (ex. P1 (20x50), P2 (60x30)) Pgina confeccionada por RCR. ltima atualizao em 15-10-1997.