Você está na página 1de 3

07/09/12

AutoCAD e

AutoLISP - Exportando dados do AutoCAD para o MS-Excel

e AutoLISP - Exportando dados do AutoCAD para o MS-Excel Exportando dados do AutoCAD para o

Exportando dados do AutoCAD para o MS-Excel Data: 20 12 2003 Tópico: Tutoriais

Veja como é possível comunicar dados entre o AutoCAD e o Ms-Excel utilizando o Visual Lisp.

O Visual Lisp possibilita a comunicação do AutoCAD com qualquer aplicativo que suporte o

ActiveX, como um exemplo vamos demonstrar como é possível transferir informações do desenho para uma planilha do Ms-Excel. Vale informar que este é apenas um exemplo e que o mesmo pode ser adaptado às suas necessidades.

Primeiramente devemos carregar a funçao vl-load-com que permite que utilizemos as funções ActiveX suportadas pelo Visual Lisp.

(vl-load-com)

Para o nosso exemplo as variaveis *excel-cells* e *row* devem estar com seus valores sempre nulos toda vez que a rotina for iniciada

(setq *excel-cells* nil) (setq *row* nil)

A função init-excel irá iniciar o Excel criar uma pasta e definir janela do aplicativo como

"visível".

(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))

07/09/12

AutoCAD e AutoLISP - Exportando dados do AutoCAD para o MS-Excel

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

informada.

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

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

(setq *model-space* nil)

A função init-app vai criar as colunas de cabeçalho na planilha do excel, além de amazenar o

objeto da seção corrente do AutoCAD no ambiente modespace.

(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))

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, além de amazenar o objeto da seção corrente do AutoCAD no ambiente "modelspace".

(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))

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. (conforme figura)

(defun c:demo () (init-excel) (init-app)

07/09/12

AutoCAD e AutoLISP - Exportando dados do AutoCAD para o MS-Excel

(add-circle 5 5 0 5) (add-circle 5 5 0 10))

Este está hospedado em AutoCAD e AutoLISP http://www.autolisp.com.br/autolisp

O Link direto para este artigo é:

http://www.autolisp.com.br/autolisp/modules.php?name=News&file=article&sid=5