Vous êtes sur la page 1sur 10

CFAC: AutoLISP (V) - Manipulao de entidades

FEUP/DEMEGI-SDI

AutoLISP - V

Manipulao de entidades

Joo Manuel R. S. Tavares / JOF

Dados das entidades


No Autolisp, o processo de acesso aos dados das entidades estende-se a vrios nveis da estrutura da base de dados do AutoCAD.

Conjuntos de seleco representam um nvel que contm listas de nomes de entidades. O nome da entidade um apontador para a base de dados onde os dados referentes mesma entidade esto armazenados.

Avanando um nvel, os dados das entidades esto na forma de uma lista de associaes. Esta hierarquia de dados, e a habilidade de trabalhar dentro dela, fornece um mecanismo flexvel para a interface de aplicativos em Autolisp com a base de dados de desenho do AutoCAD.

@2008 Joo Tavares / JOF

CFAC: AutoLISP (V) - Manipulao de entidades

JOF / Joo Manuel R. S. Tavares

CFAC: AutoLISP (V) - Manipulao de entidades

FEUP/DEMEGI-SDI

Nome de uma entidade e Lista de dados


A funo entlast obtm o nome da ltima entidade desenhada no desenho actual. A funo entget obtm a lista de dados de uma entidade a partir do seu nome.
(setq entnome (entlast)) ; retorna <Entity name x...x> (setq entdados (entget entnome)) ; retorna ((-1 . <Entity name x...x>) (0 . "LINE") (8 ."0") ...)

@2008 Joo Tavares / JOF

CFAC: AutoLISP (V) - Manipulao de entidades

Nome de uma entidade e Lista de dados


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).

@2008 Joo Tavares / JOF

CFAC: AutoLISP (V) - Manipulao de entidades

JOF / Joo Manuel R. S. Tavares

CFAC: AutoLISP (V) - Manipulao de entidades

FEUP/DEMEGI-SDI

Funes cons, assoc e subst


As funes de manipulao de entidades so:

entdel, entget, entlast, entmake, entmod, entnext, entsel, entupd, handent, nentsel, nentselp, tblnext e tblsearch.

Entretanto, antes de verificar cada uma destas funes deve-se conhecer as funes cons, assoc e subst, pois so muito utilizadas em conjunto com estas. 5

@2008 Joo Tavares / JOF

CFAC: AutoLISP (V) - 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)) (cons '(a) '(b c d)) (cons 'a 2) (car (cons 'a 2)) (cdr (cons 'a 2)) ;retorna (A B C D) ;retorna ((A) (B C D)) ;retorna (A . 2) ;retorna A ;retorna 2
CFAC: AutoLISP (V) - Manipulao de entidades

@2008 Joo Tavares / JOF

JOF / Joo Manuel R. S. Tavares

CFAC: AutoLISP (V) - Manipulao de entidades

FEUP/DEMEGI-SDI

Funo assoc
Procura por um elemento numa lista de dados 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 (no existe)

@2008 Joo Tavares / JOF

CFAC: AutoLISP (V) - Manipulao de entidades

Funo subst
Executa uma substituio de um elemento numa lista (retorna a lista com a substituio efectuada, permanecendo intacta a lista original). 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 a lista permanece igual (setq lista (subst 'qq '(c d) lista)) ; retorna a lista modificada para (A B QQ B) (subst '(qq rr) 'qq lista) ; retorna (A B (QQ RR) B) e a lista permanece igual

@2008 Joo Tavares / JOF

CFAC: AutoLISP (V) - Manipulao de entidades

JOF / Joo Manuel R. S. Tavares

CFAC: AutoLISP (V) - Manipulao de entidades

FEUP/DEMEGI-SDI

Funes entlast e entsel


A funo entlast obtm o nome da ltima entidade desenhada no desenho.
(entlast) ;retorna <Entity name: x...x>

A funo entsel similar funo anterior, obtm o nome de uma entidade; entretanto, entsel retorna uma lista composta pelo nome de uma entidade seleccionada (pelo utilizador) e pelo ponto de seleco.
(entsel) retorna (<Entity name: x...x> (3.5 5.5 6.8)) e a mensagem Select Object: ser utilizada. (entsel "\nSeleccione um objecto:") retorna (<Entity name: x...x> (3.5 5.5 6.8)) e a mensagem includa no prompt da funo ser utilizada

@2008 Joo Tavares / JOF

CFAC: AutoLISP (V) - Manipulao de entidades

Funo entget
Obtm a lista de dados de uma entidade a partir do 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 na qual a entidade foi desenhada; ...
CFAC: AutoLISP (V) - Manipulao de entidades

10

@2008 Joo Tavares / JOF

JOF / Joo Manuel R. S. Tavares

CFAC: AutoLISP (V) - Manipulao de entidades

FEUP/DEMEGI-SDI

Exemplo de uso de entsel, entget e assoc


Obter o nome da layer de um objecto seleccionado:
; obtm (<nome-da-entidade> (ponto-de-seleco))

(setq entidade (entsel))


; obtm a lista de dados da entidade seleccionada

(setq entdados (entget (car entidade)))


; obtm o par pontuado que contm o nome da layer da entidade

(setq par-layer (assoc 8 entdados))


; obtm o nome da layer da entidade

(setq entlayer (cdr par-layer))


; ou

(setq entnome (cdr (assoc 8 (entget (car (entsel))))))

11

@2008 Joo Tavares / JOF

CFAC: AutoLISP (V) - Manipulao de entidades

Funo entnext e entdel


A funo entnext retorna o nome da primeira entidade desenhada no desenho ou da prxima entidade em relao a uma entidade determinada. Exemplos:
armazena em ent o nome da primeira entidade desenhada no desenho (setq ent (entnext)) obtm o nome da entidade desenhada aps a entidade determinada (ent) (entnext ent)

A funo entdel elimina uma entidade pelo seu nome. (entdel (entlast)) ; elimina a ltima entidade desenhada

12

@2008 Joo Tavares / JOF

CFAC: AutoLISP (V) - Manipulao de entidades

JOF / Joo Manuel R. S. Tavares

CFAC: AutoLISP (V) - Manipulao de entidades

FEUP/DEMEGI-SDI

Funo entmake
Cria um novo objecto no desenho a partir de uma lista contendo informaes descritivas do objecto. Sintaxe: (entmake (lista-que-descreve-o-objecto)) 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) ) )

13

@2008 Joo Tavares / JOF

CFAC: AutoLISP (V) - Manipulao de entidades

Funo handent
O handle da entidade um cdigo nico e permanente associado a cada entidade no desenho em qualquer sesso de trabalho. O nome da entidade um cdigo dado entidade que muda entre sesses 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

14

@2008 Joo Tavares / JOF

CFAC: AutoLISP (V) - Manipulao de entidades

JOF / Joo Manuel R. S. Tavares

CFAC: AutoLISP (V) - Manipulao de entidades

FEUP/DEMEGI-SDI

Funo nentsel
A funo nentsel acede aos dados de um objecto contido num outro objecto; por exemplo, objectos que compem um bloco.
Exemplo:
(setq Ent (nentsel "\nPick an entity or subEntity: ")) (print (strcat "O handle da subentidade seleccionada : " (cdr (assoc 5 (entget (car Ent))))))

15

@2008 Joo Tavares / JOF

CFAC: AutoLISP (V) - Manipulao de entidades

Funes entmod e entupd


A funo entmod altera as caractersticas de uma dada entidade. A funo entupd actualiza a exibio de uma dada entidade alterada por entmod.

entupd s necessria para alterar a exibio de entidades compostas alteradas, por exemplo polylines. no caso de entidade simples, por exemplo crculos, arcos, etc., a prpria entmod actualiza as caractersticas e a visualizao.
CFAC: AutoLISP (V) - Manipulao de entidades

16

@2008 Joo Tavares / JOF

JOF / Joo Manuel R. S. Tavares

CFAC: AutoLISP (V) - Manipulao de entidades

FEUP/DEMEGI-SDI

Exemplo do uso de entmod


Funo que altera o raio de um crculo:
(defun c:raio() (setq vl (getreal "Novo raio: ")) (setq sair "N") (while (= sair "N") (setq ent (car (entsel "\nClique o circulo a ser modificado: "))) (setq dados (entget ent)) (print dados) (setq dados (subst (cons 40 vl) (assoc 40 dados) dados)) (entmod dados) (initget 1 "S N") (prompt "\nSair? (S/N) ") (setq sair (getkword)) ) )

17

@2008 Joo Tavares / JOF

CFAC: AutoLISP (V) - Manipulao de entidades

Funes tblnext e tblsearch


Pesquisa as tabelas de informao de um desenho sobre os seguintes recursos:

LAYER, LTYPE, VIEW, STYLE, BLOCK, UCS, APPID, DIMSTYLE e VPORTS. Obs: na tabela de informao sobre as layers de um desenho, cada layer definida compe uma linha da tabela. O mesmo vlido para cada recurso enumerado acima.

A funo tblnext percorre a tabela linha por linha:


(tblnext "layer" T) ; retorna a lista com a primeira linha da tabela layers (T=TRUE) (tblnext "layer") ; retorna a lista com a linha seguinte da tabela layers

18

@2008 Joo Tavares / JOF

CFAC: AutoLISP (V) - Manipulao de entidades

JOF / Joo Manuel R. S. Tavares

CFAC: AutoLISP (V) - Manipulao de entidades

FEUP/DEMEGI-SDI

Funes tblnext e tblsearch


A funo tblsearch procura por um dado item na tabela indicada:
(tblsearch "layer" "2d-par") ; retorna informao sobre a layer 2d-par

19

@2008 Joo Tavares / JOF

CFAC: AutoLISP (V) - Manipulao de entidades

JOF / Joo Manuel R. S. Tavares

10

Vous aimerez peut-être aussi