Você está na página 1de 19

AutoLISP - V

Manipulação de entidades

AutoLISP - V Manipulação de entidades João Manuel R. S. Tavares Joaquim Oliveira Fonseca

João Manuel R. S. Tavares Joaquim Oliveira Fonseca

AutoLISP - V Manipulação de entidades João Manuel R. S. Tavares Joaquim Oliveira Fonseca
AutoLISP - V Manipulação de entidades João Manuel R. S. Tavares Joaquim Oliveira Fonseca
AutoLISP - V Manipulação de entidades João Manuel R. S. Tavares Joaquim Oliveira Fonseca
Dados das entidades  No Autolisp , o processo de acesso aos dados das entidades

Dados das entidades

Dados das entidades  No Autolisp , o processo de acesso aos dados das entidades estende-se
Dados das entidades  No Autolisp , o processo de acesso aos dados das entidades estende-se
Dados das entidades  No Autolisp , o processo de acesso aos dados das entidades estende-se

No Autolisp, o processo de acesso aos dados das entidades estende-se a vários níveis da estrutura da base de dados do AutoCAD.

Conjuntos de selecção representam um nível que contém listas de nomes de entidades.

O nome da entidade é um apontador para a base de dados onde os dados referentes à mesma entidade estão armazenados.

Avançando um nível, os dados das entidades estão na forma de uma lista de associações. Esta hierarquia de dados, e a habilidade de trabalhar dentro dela, fornece um mecanismo flexível para a interface de aplicativos em Autolisp com a base de dados de desenho do AutoCAD.

2 2009@JST/JOF

CFAC: AutoLISP (V) - Manipulação de entidades

Nome de uma entidade e Lista de dados  A função entlast obtém o nome

Nome de uma entidade e Lista de dados

Nome de uma entidade e Lista de dados  A função entlast obtém o nome da
Nome de uma entidade e Lista de dados  A função entlast obtém o nome da

A função entlast obtém o nome da última entidade desenhada no desenho actual.

A função entget obtém a lista de dados de uma entidade a partir do seu nome.

(setq entnome (entlast))

; retorna <Entity name x

(setq entdados (entget entnome))

; retorna ((-1 . <Entity name x

x>

x>) (0 . "LINE") (8 ."0")

)

3 2009@JST/JOF

CFAC: AutoLISP (V) - Manipulação de entidades

Nome de uma entidade e Lista de dados  A lista de dados é uma

Nome de uma entidade e Lista de dados

Nome de uma entidade e Lista de dados  A lista de dados é uma lista
Nome de uma entidade e Lista de dados  A lista de dados é uma lista

A lista de dados é uma lista de associações. A maioria destas associações são pares (código . valor) denominados “par pontuado” (dotted par).

A lista “par pontuado” é composta por dois valores (o ponto não conta).

é composta por dois valores (o ponto não conta). 4 2009@JST/JOF CFAC: AutoLISP (V) - Manipulação

4 2009@JST/JOF

CFAC: AutoLISP (V) - Manipulação de entidades

Funções cons , assoc e subst  As funções de manipulação de entidades são: –
Funções cons , assoc e subst  As funções de manipulação de entidades são: –

Funções cons, assoc e subst

Funções cons , assoc e subst  As funções de manipulação de entidades são: – entdel
Funções cons , assoc e subst  As funções de manipulação de entidades são: – entdel

As funções de manipulação de entidades são:

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

Entretanto, antes de verificar cada uma destas funções deve-se conhecer as funções cons, assoc e subst, pois são muito utilizadas em conjunto com estas.

5 2009@JST/JOF

CFAC: AutoLISP (V) - Manipulação de entidades

Função cons  Sintaxe: – (cons primeiro-novo-elemento lista) acrescenta um novo elemento no início da

Função cons

Função cons  Sintaxe: – (cons primeiro-novo-elemento lista) acrescenta um novo elemento no início da lista
Função cons  Sintaxe: – (cons primeiro-novo-elemento lista) acrescenta um novo elemento no início da lista
Função cons  Sintaxe: – (cons primeiro-novo-elemento lista) acrescenta um novo elemento no início da lista

Sintaxe:

(cons primeiro-novo-elemento lista)

acrescenta um novo elemento no início da lista

(cons primeiro-novo-elemento átomo)

constrói 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))

6 2009@JST/JOF

;retorna (A B C D) ;retorna ((A) (B C D)) ;retorna (A . 2) ;retorna A ;retorna 2

CFAC: AutoLISP (V) - Manipulação de entidades

Função assoc  Procura por um elemento numa lista de dados e retorna a lista

Função assoc

Função assoc  Procura por um elemento numa lista de dados e retorna a lista de
Função assoc  Procura por um elemento numa lista de dados e retorna a lista de
Função assoc  Procura por um elemento numa lista de dados e retorna a lista de

Procura por um elemento numa lista de dados e retorna a lista de associação em que o elemento participa.

Sintaxe: (assoc item lista)

Exemplo:

(setq a1 '((nome box) (largura 3) (comprimento 4.72) (altura 5)))

(assoc 'largura a1) (assoc 'peso a1)

;retorna (largura 3) ;retorna nil (não existe)

7 2009@JST/JOF

CFAC: AutoLISP (V) - Manipulação de entidades

Função subst  Executa uma substituição de um elemento numa lista (retorna a lista com

Função subst

Função subst  Executa uma substituição de um elemento numa lista (retorna a lista com a
Função subst  Executa uma substituição de um elemento numa lista (retorna a lista com a
Função subst  Executa uma substituição de um elemento numa lista (retorna a lista com a

Executa uma substituição de um elemento numa lista (retorna a lista com a substituição 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

8 2009@JST/JOF

CFAC: AutoLISP (V) - Manipulação de entidades

Funções entlast e entsel  A função entlast obtém o nome da última entidade desenhada.
Funções entlast e entsel  A função entlast obtém o nome da última entidade desenhada.

Funções entlast e entsel

Funções entlast e entsel  A função entlast obtém o nome da última entidade desenhada. (entlast)
Funções entlast e entsel  A função entlast obtém o nome da última entidade desenhada. (entlast)

A função entlast obtém o nome da última entidade desenhada.

(entlast)

;retorna <Entity name: x

x>

A função entsel é similar à função anterior, obtém o nome de uma entidade; entretanto, entsel retorna uma lista composta pelo nome de uma entidade seleccionada (pelo utilizador) e pelo ponto de selecção.

(entsel) retorna (<Entity name: x Object:” será utilizada

x>

(3.5 5.5 6.8)) e a mensagem “Select

(entsel "\nSeleccione um objecto:")

retorna (<Entity name: x

incluída no prompt da função será utilizada

x>

(3.5 5.5 6.8)) e a mensagem

9 2009@JST/JOF

CFAC: AutoLISP (V) - Manipulação de entidades

Função entget  Obtém a lista de dados de uma entidade a partir do seu

Função entget

Função entget  Obtém a lista de dados de uma entidade a partir do seu nome.
Função entget  Obtém a lista de dados de uma entidade a partir do seu nome.
Função entget  Obtém a lista de dados de uma entidade a partir do seu nome.

Obtém a lista de dados de uma entidade a partir do seu nome.

A lista de dados é uma lista de associações, algumas destas associações são representadas por listas denominadas “par pontuado” (dotted par).

Uma lista “par pontuado” é formada por dois átomos (código . valor) separados por um ponto (o ponto não conta como átomo da lista).

Cada código 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;

10 2009@JST/JOF

CFAC: AutoLISP (V) - Manipulação de entidades

Exemplo de uso de entsel , entget e assoc  Obter o nome da layer

Exemplo de uso de entsel, entget e assoc

Exemplo de uso de entsel , entget e assoc  Obter o nome da layer de
Exemplo de uso de entsel , entget e assoc  Obter o nome da layer de

Obter o nome da layer de um objecto seleccionado:

; obtém (<nome-da-entidade> (ponto-de-selecção))

(setq entidade (entsel))

; obtém a lista de dados da entidade seleccionada

(setq entdados (entget (car entidade)))

; obtém o “par pontuado” que contém o nome da layer da entidade

(setq par-layer (assoc 8 entdados))

; obtém o nome da layer da entidade

(setq entlayer (cdr par-layer))

; ou

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

11 2009@JST/JOF

CFAC: AutoLISP (V) - Manipulação de entidades

Função entnext e entdel  A função entnext retorna o nome da primeira entidade desenhada
Função entnext e entdel  A função entnext retorna o nome da primeira entidade desenhada

Função entnext e entdel

Função entnext e entdel  A função entnext retorna o nome da primeira entidade desenhada no
Função entnext e entdel  A função entnext retorna o nome da primeira entidade desenhada no

A

função entnext retorna o nome da primeira entidade

desenhada no desenho ou da próxima entidade em relação

a

uma entidade determinada.

Exemplos:

 

armazena em ent o nome da primeira entidade desenhada no desenho (setq ent (entnext)) obtém o nome da entidade desenhada após a entidade determinada (ent) (entnext ent)

A

função entdel elimina uma entidade pelo seu nome.

(entdel (entlast))

12 2009@JST/JOF

; elimina a última entidade desenhada

CFAC: AutoLISP (V) - Manipulação de entidades

Função entmake  Cria um novo objecto no desenho a partir de uma lista contendo

Função entmake

Função entmake  Cria um novo objecto no desenho a partir de uma lista contendo informações
Função entmake  Cria um novo objecto no desenho a partir de uma lista contendo informações
Função entmake  Cria um novo objecto no desenho a partir de uma lista contendo informações

Cria um novo objecto no desenho a partir de uma lista contendo informações descritivas do objecto.

Sintaxe: (entmake (lista-que-descreve-o-objecto))

Exemplo:

(entmake (lista-que-descreve-o-objecto))  Exemplo: (entmake '( (0 . "LINE") (8 . "0") (62 .

(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 2009@JST/JOF

CFAC: AutoLISP (V) - Manipulação de entidades

Função handent  O handle da entidade é um código único e permanente associado a

Função handent

Função handent  O handle da entidade é um código único e permanente associado a cada
Função handent  O handle da entidade é um código único e permanente associado a cada
Função handent  O handle da entidade é um código único e permanente associado a cada

O handle da entidade é um código único e permanente associado a cada entidade no desenho em qualquer sessão de trabalho.

O nome da entidade é um código dado à entidade que muda entre sessões de trabalho.

A função handent obtém o nome da entidade a partir do handle da entidade.

(handent "código-do-handle") ; retorna o nome da entidade

14 2009@JST/JOF

CFAC: AutoLISP (V) - Manipulação de entidades

Função nentsel  A função nentsel acede aos dados de um objecto contido num outro

Função nentsel

Função nentsel  A função nentsel acede aos dados de um objecto contido num outro objecto;
Função nentsel  A função nentsel acede aos dados de um objecto contido num outro objecto;
Função nentsel  A função nentsel acede aos dados de um objecto contido num outro objecto;

A função nentsel acede aos dados de um objecto contido num outro objecto; por exemplo, objectos que compõem um bloco.

outro objecto; por exemplo, objectos que compõem um bloco. Exemplo : (setq Ent (nentsel "\nPick an

Exemplo:

(setq Ent (nentsel "\nPick an entity or subEntity: ")) (print (strcat "O handle da subentidade seleccionada é: " (cdr (assoc 5 (entget (car Ent))))))

15 2009@JST/JOF

CFAC: AutoLISP (V) - Manipulação de entidades

Funções entmod e entupd  A função entmod altera as características de uma dada entidade.
Funções entmod e entupd  A função entmod altera as características de uma dada entidade.

Funções entmod e entupd

Funções entmod e entupd  A função entmod altera as características de uma dada entidade. 
Funções entmod e entupd  A função entmod altera as características de uma dada entidade. 

A função entmod altera as características de uma dada entidade.

A função entupd actualiza a exibição de uma dada entidade alterada por entmod.

entupd só é necessária para alterar a exibição de entidades compostas alteradas, por exemplo polylines.

no caso de entidade simples, por exemplo círculos, arcos, etc., a própria entmod actualiza as características e a visualização.

16 2009@JST/JOF

CFAC: AutoLISP (V) - Manipulação de entidades

Exemplo do uso de entmod  Função que altera o raio de um círculo: (defun
Exemplo do uso de entmod  Função que altera o raio de um círculo: (defun

Exemplo do uso de entmod

Exemplo do uso de entmod  Função que altera o raio de um círculo: (defun c:raio()
Exemplo do uso de entmod  Função que altera o raio de um círculo: (defun c:raio()

Função que altera o raio de um círculo:

(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 2009@JST/JOF

CFAC: AutoLISP (V) - Manipulação de entidades

Funções tblnext e tblsearch  Pesquisa as tabelas de informação de um desenho sobre os
Funções tblnext e tblsearch  Pesquisa as tabelas de informação de um desenho sobre os

Funções tblnext e tblsearch

Funções tblnext e tblsearch  Pesquisa as tabelas de informação de um desenho sobre os seguintes
Funções tblnext e tblsearch  Pesquisa as tabelas de informação de um desenho sobre os seguintes

Pesquisa as tabelas de informação de um desenho sobre os seguintes recursos:

LAYER, LTYPE, VIEW, STYLE, BLOCK, UCS, APPID, DIMSTYLE e VPORTS.

Obs: na tabela de informação sobre as layers de um desenho, cada layer definida compõe uma linha da tabela. O mesmo é válido para cada recurso enumerado acima.

A função 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 2009@JST/JOF

CFAC: AutoLISP (V) - Manipulação de entidades

Funções tblnext e tblsearch  A função tblsearch procura por um dado item na tabela
Funções tblnext e tblsearch  A função tblsearch procura por um dado item na tabela

Funções tblnext e tblsearch

Funções tblnext e tblsearch  A função tblsearch procura por um dado item na tabela indicada:
Funções tblnext e tblsearch  A função tblsearch procura por um dado item na tabela indicada:

A função tblsearch procura por um dado item na tabela indicada:

(tblsearch "layer" "2d-par") ; retorna informação sobre a layer 2d-par

; retorna informação sobre a layer 2d-par 19 2009@JST/JOF CFAC: AutoLISP (V) - Manipulação de

19 2009@JST/JOF

CFAC: AutoLISP (V) - Manipulação de entidades