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!
Excel x AutoCAD (conversão de tabelas)
Moderador: Moderadores
- admin
- 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)
Marcos Mendes de Almeida
mmalbr@gmail.com
mmalbr@gmail.com
- cracksther
- Diamante
- Mensagens: 1063
- Registrado em: Seg 13 Dez 2004 11:00:00 pm
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!
Até mais!
Marcelo Silva - Cascavel - PR
cracksther@gmail.com
cracksther@gmail.com
- admin
- Administrador
- Mensagens: 621
- Registrado em: Sex 28 Nov 2003 11:00:00 pm
- Localização: Itu / SP
- Contato:
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.
[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
mmalbr@gmail.com
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...
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
Uma é acreditar que não existe
milagre... a outra é acreditar que todas as
coisas são um milagre....."
Albert Einstein 1879 - 1955
- cracksther
- Diamante
- Mensagens: 1063
- Registrado em: Seg 13 Dez 2004 11:00:00 pm