Excel x AutoCAD (conversão de tabelas)

Mais um da série desafios...

Moderador: Moderadores

Responder
Avatar do usuário
admin
Administrador
Administrador
Mensagens: 621
Registrado em: Sex 28 Nov 2003 11:00:00 pm
Localização: Itu / SP
Contato:

Excel x AutoCAD (conversão de tabelas)

Mensagem por admin »

Inaugurando esta nova categoria ( desafios)

Lanço como o primeiro desafio, uma ideia de aplicação que pode ser útil a todos ( isto se já não existir em Autolisp/Vlisp!)
Uma aplicação que transfira uma tabela do Excel para o AutoCAD.
Sei que existem VÁRIA$$$$$ opções pagas. Mas a ideia aqui do forum é ir exatamente em caminho posto.

- considerações:

- Importar do excel apenas uma área delimitada (pode ser um quadrilátero de coordenadas - [A1 a A10] e [H1 a H10] por exemplo)
- Considerar celulas agrupadas
- Ignorar calculos (pegar apenas valores)
- Sem esquecer de desenhar as bordas... assim como no excel

Todas as ideias são bem vindas!
Mesmo quem já tenha algo pronto!
Marcos Mendes de Almeida
mmalbr@gmail.com
Avatar do usuário
cracksther
Diamante
Diamante
Mensagens: 1063
Registrado em: Seg 13 Dez 2004 11:00:00 pm

Mensagem por cracksther »

marcos... Acho interessante a idéia, inclusive boa parte do necessário já está no próprio forum, porém o maior impessilho é o tempo disponível...

Até mais!
Marcelo Silva - Cascavel - PR
cracksther@gmail.com
Avatar do usuário
admin
Administrador
Administrador
Mensagens: 621
Registrado em: Sex 28 Nov 2003 11:00:00 pm
Localização: Itu / SP
Contato:

Mensagem por admin »

Para dar inicio.. segue código de comunicação

[lsp](vl-load-com) ;carrega as funções VL[/lsp]


O código abaixo inicia o Excel - note o parametro "visible"( 1 = visivel ou 0 = invisivel)
[lsp] (defun init-excel (/ excel-app wb-colletion workbook sheets sheet1)
(setq excel-app (vlax-create-object "excel.application"))
(setq wb-collection (vlax-get excel-app "workbooks"))
(setq workbook (vlax-invoke-method wb-collection "add"))
(setq sheets (vlax-get workbook "sheets"))
(setq sheet1 (vlax-get-property sheets "item" 1))
(setq *excel-cells* (vlax-get sheet1 "cells"))
(vlax-put excel-app "visible" 1))[/lsp]


A função write-row-column vai gravar os dados na planilha do excel; em linha e coluna informada.

[lsp](defun write-row-column (row col x)
(vlax-put-property *excel-cells* "item" row col (vl-princ-to-string x)))[/lsp]

Para a próxima etapa a variável *model-space* deve estar com seu valor sempre nulo.

A função init-app vai criar as colunas de cabeçalho na planilha do excel, além de desenhar o objeto da seção corrente do AutoCAD no modespace.

[lsp](defun init-app ()
(setq *model-space*
(vla-get-modelspace
(vla-get-activedocument
(vlax-get-acad-object))))
(write-row-column 1 1 "Centro x")
(write-row-column 1 2 "Centro y")
(write-row-column 1 3 "Centro z")
(write-row-column 1 4 "Raio")
(setq *row* 2))[/lsp]


A função seguinte aciona a função write-row-column passando os parâmetros necessários e desenha os objetos (circulos) no desenho corrente e vai criar as colunas de cabeçalho na planilha do excel.

[lsp] (defun add-circle (px py pz radius)
(write-row-column *row* 1 px)
(write-row-column *row* 2 py)
(write-row-column *row* 3 pz)
(write-row-column *row* 4 radius)
(setq *row* (+ *row* 1))
(vla-addcircle *model-space*
(vlax-3d-point px py pz )
radius))[/lsp]

Executando a função demo será processada toda as sequencias anteriores e consequentemente criado o arquivo do Excel com os dados já exportados do AutoCAD.

[lsp](defun c:demo ()
(init-excel)
(init-app)
(add-circle 5 5 0 5)
(add-circle 5 5 0 10))[/lsp]

Ou seja, este é apenas um exemplo... pois o que queremos na verdade é ler os dados do Excel e passar para o AutoCAD.
Marcos Mendes de Almeida
mmalbr@gmail.com
Avatar do usuário
jc105
Bronze 1/3
Bronze 1/3
Mensagens: 155
Registrado em: Qua 07 Abr 2004 12:00:00 am

Mensagem por jc105 »

Imagino que vocês já sabem mas não custa acrescentar....
do excel para o cad é só copiar as tabelas no excel e depois dar um paste especial no autocad, marcar a opção autocad entities e ok.... não é uma comunicação mas resolve o problema....

Ah aproveitando... Crackster muito obrigado pela aquela ajuda sobre este mesmo assunto, "Formatar celula no excel de dentro do autocad..." Na ocasião em que você me deu a resposta, não tava conseguindo postar do meu serviço... e depois acabei esquecendo.....

Abraço a todos...
"Há duas formas para viver sua vida:
Uma é acreditar que não existe
milagre... a outra é acreditar que todas as
coisas são um milagre....."
Albert Einstein 1879 - 1955
Avatar do usuário
cracksther
Diamante
Diamante
Mensagens: 1063
Registrado em: Seg 13 Dez 2004 11:00:00 pm

Mensagem por cracksther »

jc105... Fico feliz em poder ajudar...

Até mais!
Marcelo Silva - Cascavel - PR
cracksther@gmail.com
Responder