Vlisp.pdf

  • Uploaded by: nelmi
  • 0
  • 0
  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Vlisp.pdf as PDF for free.

More details

  • Words: 1,525
  • Pages: 10
CFAC: AutoLISP (V) - Manipulação de entidades

2011@FEUP/DEMec-SDI

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 estende-se a vários níveis da estrutura da base de dados do AutoCAD. – –



2

JST/JOF

Conjuntos de seleçã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 com a mesma, fornece um mecanismo flexível para a interface de aplicativos em Autolisp com a base de dados de desenho do AutoCAD.

2011@JST/JOF

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

1

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

2011@FEUP/DEMec-SDI

Nome de uma entidade e Lista de dados  

A função entlast obtém o nome da última entidade desenhada no desenho atual. 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...x> (setq entdados (entget entnome)) ; retorna ((-1 . <Entity name x...x>) (0 . "LINE") (8 ."0") ...)

3

2011@JST/JOF

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

Nome de uma entidade e Lista de dados 

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

4

JST/JOF

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

2011@JST/JOF

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

2

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

2011@FEUP/DEMec-SDI

Funções cons, assoc e subst 

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



5

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.

2011@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 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

JST/JOF

2011@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

3

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

2011@FEUP/DEMec-SDI

Função assoc



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) ;retorna (largura 3) (assoc 'peso a1) ;retorna nil (não existe)

7

2011@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 a substituição efetuada, permanecendo intacta a lista original). Sintaxe: (subst item-novo item-anterior 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

JST/JOF

2011@JST/JOF

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

4

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

2011@FEUP/DEMec-SDI

Funções entlast e entsel 

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



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 selecionada (pelo utilizador) e pelo ponto de seleção.

(entlast)

;retorna <Entity name: x...x>

(entsel) retorna (<Entity name: x...x> (3.5 5.5 6.8)) e a mensagem “Select Object:” será utilizada (entsel "\nSelecione um objeto:") retorna (<Entity name: x...x> (3.5 5.5 6.8)) e a mensagem incluída no prompt da função será utilizada

9

2011@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 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: – – – –

10

JST/JOF

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

2011@JST/JOF

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

5

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

2011@FEUP/DEMec-SDI

Exemplo de uso de entsel, entget e assoc 

Obter o nome da layer de um objeto selecionado: ; obtém (<nome-da-entidade> (ponto-de-seleção))

(setq entidade (entsel)) ; obtém a lista de dados da entidade selecionada

(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

2011@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 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)



12

JST/JOF

A função entdel elimina uma entidade pelo seu nome. (entdel (entlast)) ; elimina a última entidade desenhada

2011@JST/JOF

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

6

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

2011@FEUP/DEMec-SDI

Função entmake   

Cria um novo objeto no desenho a partir de uma lista contendo informações 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) ) )

13

2011@JST/JOF

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

Função handent 

 

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

JST/JOF

2011@JST/JOF

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

7

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

2011@FEUP/DEMec-SDI

Função nentsel 

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

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

15

2011@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. A função entupd atualiza a exibição de uma dada entidade alterada por entmod. –



16

JST/JOF

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 atualiza as características e a visualização.

2011@JST/JOF

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

8

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

2011@FEUP/DEMec-SDI

Exemplo do uso de entmod 

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

2011@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 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

JST/JOF

2011@JST/JOF

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

9

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

2011@FEUP/DEMec-SDI

Funções tblnext e tblsearch 

A função tblsearch procura por um dado item na tabela indicada: (tblsearch "layer" "2d-par") ; retorna informação sobre a layer 2d-par

19

JST/JOF

2011@JST/JOF

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

10

More Documents from "nelmi"

Vlisp.pdf
May 2020 1
6885.xlsx
May 2020 1
Processo 6771.docx
May 2020 1
08.pdf
May 2020 3
8166desonerado.xls
June 2020 2