Como tabelar pontos

Esses tempos atráz, me pediram um programa que criasse uma tabela com as coordenadas dos pontos de um desenho… Bem aí está:

ver isso!!!

(vl-load-com)
(
defun c:tabelar (/ ss NumRows InsertionPoint NumColumns RowHeight ColWidth
model table nRow id ent vla
)
(
setq ss (ssget “:S” ((0 . “POINT”)))
NumRows (sslength ss)
InsertionPoint (vlax-3d-point
(getpoint “\nEntre com um ponto”))
NumColumns 3 ;nome, x, y -> 3
RowHeight 2
ColWidth 10
model (vla-get-modelspace
(vla-get-activedocument (vlax-get-acad-object)))
table (vla-addtable model InsertionPoint
(1+ NumRows) ;uma linha pro titulo…
;ou vai depender do estilo da tabela
NumColumns RowHeight ColWidth)
nRow 0)
(
repeat NumRows
(setq ent (ssname ss nRow)
vla (vlax-ename->vla-object ent)
id (vla-get-ObjectID vla)
nRow (1+ nRow))

;escreve o nº do ponto na coluna 1
(vla-Settextstring
table
;a tabela em si
nRow ;linha
0 ;coluna
(* nRow 3) ;”id” da celula
(itoa nRow) ;conteudo da celula
)

;escreve o X na coluna 2:
(vla-Setformula
table
;a tabela em si
nRow ;linha
1 ;coluna
(+ 1 (* nRow 3)) ;”id” da celula
(strcat ;cria uma “field” q mostra o X
“%<\\AcObjProp Object(%<\\_ObjId “
(itoa id)
“>%).Coordinates \\f \”%pt1\”>%”))

;escreve o Y na coluna 3:
(vla-Setformula table nRow 2 (+ 2 (* nRow 3))
(
strcat ;cria uma “field” q mostra o Y
“%<\\AcObjProp Object(%<\\_ObjId “
(itoa id)
“>%).Coordinates \\f \”%pt2\”>%”)))
;atualiza a tabela:
(vla-GenerateLayout table))

Para usar é simples, carrega a lisp, desenha alguns pontos ( comando POINT ) e chama a lisp na linha de comando: TABELAR
Será pedido um ponto de inserção e será criada uma TABLE do autocad com as coordenadas X e Y desses pontos.

Bem bobinho este programa, eu sei, mas servirá de exemplo para quem quer saber como usar FIELD e desenhar TABLE com lisp.

3 comentários em “Como tabelar pontos”

  1. O AutoCAD já possui há algum tempo recursos para inserir tabelas de dados do desenho (por exemplo blocos atributados) por comandos tipo “field”, com isso, podemos criar uma tabela com as coordenadas dos blocos e ao mover estes blocos podemos pedir para atualizar as coordenadas.

    Se quiser posso te passar um exemplo.

Deixe um comentário

Carrinho de compras
Rolar para cima