Sei sulla pagina 1di 8

Desarrollo de aplicaciones en AutoCAD .

NET
Autor: Victor Hugo Ruiz
Egr. Ing.Mecanica. Univ. Tcnica de Oruro. E-mail: h_u_g_z@hotmail.com

RESUMEN
El desarrollo de aplicaciones en AutoCAD .NET, es un tema un tanto complejo y se requiere un
tiempo razonable de dedicacin para su aprendizaje, una vez dominado se pueden crear complejas
aplicaciones especializadas en cualquier campo del diseo grfico asistido por computadora.
Se puede personalizar el AutoCAD a nuestra medida de tal forma que sea difcil reconocer siquiera
que se trata del AutoCAD y podramos utilizarlo como nuestro propio software para alguna
aplicacin especfica.
Para realizar aplicaciones complejas aprovechando el entorno grfico del AutoCAD se cuenta con
el ObjectARX (AutoCAD Runtime Extension) es una API para personalizar y extender AutoCAD.
Proporciona acceso a una clase base que modela los dibujos e interacciones con el usuario de
AutoCad. Existen dos versiones de la API; una para C++ en compilacin nativa, y la otra es para la
plataforma .NET.
AutoCAD funciona por medio de una Base de Datos en la cual organiza y almacena diferentes
tipos de Objetos. La forma en que lo hace, es Manteniendo Contenedores que utilizan
Procedimientos y Mtodos los cuales manipulan Objetos que son del mismo tipo, por ejemplo:
Entidades (Lneas, Textos. Arcos, etc.), Estilos de Texto. Capas, Estilos de Acotaciones, etc. Por lo
tanto un Dibujo de AutoCAD es una coleccin de Objetos almacenadas en una Base de Datos

Palabras Clave: AutoCAD, AutoCAD .NET, ObjectARX, aplicaciones en AutoCAD


.NET,API AutoCAD,SDK ObjectARX

ABSTRACT
The development of applications in AutoCAD.NET, is a topic a so much complex and a reasonable
time of dedication is required for its learning, once dominated complex applications can be created
specialized in any field of the graphic design attended by computer.
You can personalize AutoCAD to our measure in such a way that is difficult to recognize at least
that it is about AutoCAD and we could use it as our own software for some specific application.
To carry out complex applications taking advantage of the graphic environment of AutoCAD it is
had ObjectARX it is API to personalize and to extend AutoCAD. It provides access to a class it
bases that it models the drawings and interactions with the user of AutoCad. Two versions of API
exist; one for C++ in native compilation, and the other one is for the platform .NET.
AutoCAD works by means of a Database in which organizes and it stores different types of
Objects. The form in that makes it, is Maintaining Containers that use Procedures and Methods
which manipulate Objects that are of the same type, for example: Entities (Lines, Texts. Arches,
etc.), Styles of Text. You castrate, Styles of Demarcations, etc. therefore a Drawing of AutoCAD is
a collection of Objects stored in a Database.

Key Words : AutoCAD, AutoCAD .NET, ObjectARX, Applications in AutoCAD .NET,API


AutoCAD,SDK ObjectARX

INTRODUCCION
Como funciona AutoCAD internamente.
AutoCAD funciona por medio de una Base de Datos en la cual organiza y almacena diferentes
tipos de Objetos. La forma en que lo hace, es Manteniendo Contenedores que utilizan
Procedimientos y Mtodos los cuales manipulan Objetos que son del mismo tipo, por ejemplo:
Entidades (Lneas, Textos. Arcos, etc.), Estilos de Texto. Capas, Estilos de Acotaciones, etc. Por lo
tanto un Dibujo de AutoCAD es una coleccin de Objetos almacenadas en una Base de Datos, que
contiene la informacin mnima para que cada Objeto mantenga su definicin. Estos Objetos
pueden ser grficos o Estructuras no grficas, por ejemplo: Tablas de Smbolos y Diccionarios.
Las Entidades son un tipo especial de Objetos dentro de la Base de Datos y cuentan con
representacin grfica.
Las Tablas de Smbolos son Contenedores usados para almacenar Objetos en la Base de Datos, por
ejemplo: la Tabla de Capas (layer table), contiene los registros de la Tabla de Capas.
Los Diccionarios al igual que las Tablas de Smbolos, tambin son Contenedores usados para
almacenar Objetos en la Base de Datos, su diferencia estriba en que en este tipo de Contenedor se
puede almacenar prcticamente cualquier tipo de informacin.

Figura 1 Componentes de la base de datos de AutoCAD

Que es ObjectARX
ObjectARX es un ambiente de Programacin que contiene un conjunto de Libreras para
desarrollar Aplicaciones para AutoCAD usando C++, facilita el acceso a las estructuras de la Base
de Datos de AutoCAD, ya que el acceso es directo, tambin facilita el acceso al Sistema Grfico,
permite definir comandos nativos dentro de AutoCAD, entre otras cosas, adicionalmente nos
permite crear Objetos Personalizados en la Base de Datos para Aplicaciones especificas.
ObjectARX es bsicamente una DLL (biblioteca de enlaces dinmicos), tambin soporta el
Desarrollo de Aplicaciones complejas.
Con ObjectARX utilizaremos bsicamente 3 tipos de objetos:

Entidades: son objetos que poseen representacin grfica. Por ejemplo: Lneas, Textos,
Crculos, etc.
Contenedores: son objetos especiales para manejar y almacenar Colecciones. Por
ejemplo: la Tabla de Capas (layer table), la Tabla de Block (block table), etc.
Objetos: son objetos sin representacin grfica. Por ejemplo: layouts, Groups, etc.

El SDK de ObjectARX tambin incluye una API manejada, comnmente referida como la
AutoCAD .NET API. Se puede utilizar cualquier lenguaje soportado en .NET para personalizar y
extender AutoCAD con acceso directo a las estructuras de base de datos, definicin de comandos
nativos y ms.

AutoCAD .NET
la API de AutoCAD .NET te permite manipular AutoCAD y archivos de dibujo programando con
los ensambles o bibliotecas que son expuestas. Con estos objetos expuestos, ellos pueden acceder
por muchos lenguajes de programacin.
Ventajas

Presente y Futuro en la programacin para AutoCAD


Disponemos de la potencia de la plataforma .NET
Podemos usar el lenguaje de programacin que mejor conozcamos (VB.NET o C#)
[API COM] intuitiva y curva de aprendizaje rpida
[API NET] Facilidad creacin de comandos
[API NET] Rapidez, se ejecuta dentro del proceso de AutoCAD

Inconvenientes:

Necesidad de instalar un IDE de .NET (Visual Studio, VS Express)


[API NET] ; API compleja y poco intuitiva de utilizar
Incompatibilidad entre distintas versiones de AutoCAD

API COM Automation


Este interface de programacin nos va a permitir poder migrar aplicaciones desarrolladas con VBA
ActiveX a .NET de una manera sencilla y sin muchos problemas al ser la sintaxis de la Api
practicamente idntica, eso si deberemos de adaptar nuestros conocimientos de Visual Basic 6 a
Visual Basic .NET, La principal ventaja de esta Api es una sintaxis muy intuitiva y similar a VBA
ActiveX, por lo tanto si hemos programado con VBA, no ser relativamente fcil adaptarnos.
Con esta API generamos un fichero ejecutable (.exe) mediante el cual podremos tomar el control de
Autocad de una manera externa (out-of-process)

API .NET
Esta API similar a la ObjectArx la cual nos permitira generar dll que podremos cargar dentro de
Autocad, con el comando "NETLOAD", su sintaxis es completamente distinta a la COM, siendo
muy poco intuitiva y compleja, nos permite trabajar desde dentro de las entraas de Autocad, con
acceso directo a las estructuras de la base de datos, manejando sus respectivas transacciones, una
gran ventaja es la facilidad para creacin comandos internos de Autocad, los cuales podemos
llamar desde la linea de comandos

METODOLOGIA
Preparacion para el primer programa en autocad: : ObjectARX SDK
El SDK para AutoCAD se descargara de la pagina de Autodesk con el nombre de ObjectARX
SDK el comprimido contara con las siguientes carpetas:

Como Hacer un plugin para AutoCAD

Creando un nuevo Proyecto en VB.Net

Aadiendo una referencia a autocad

Pasos para crear un comando para Autocad

Debajo de <CommandMethod("myCommand")> _ se puede observar um procedimento que es el


que se ejecuta cuando introduscamos el comando myCommand en la linea de comandos de
AutoCAD.
LA forma de crear, editar, borrar objetos en AutoCAD se encuentra en el AutoCAD .NET
Developers Guide que se puede descargar desde la pgina de Autodesk.

Comparacin de cdigo para crear una linea en VB.Net VBA/ActiveX


Estos ejemplos aaden una lnea que comienza en (5,5,0) y termina en (12,3,0) en el AutoCAD

VB.NET
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Geometry
<CommandMethod("AddLine")> _
Public Sub AddLine()
'' Get the current document and database
Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
Dim acCurDb As Database = acDoc.Database
'' Start a transaction
Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()
'' Open the Block table for read
Dim acBlkTbl As BlockTable
acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead)
'' Open the Block table record Model space for write
Dim acBlkTblRec As BlockTableRecord
acBlkTblRec = acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), _
OpenMode.ForWrite)
'' Create a line that starts at 5,5 and ends at 12,3
Dim acLine As Line = New Line(New Point3d(5, 5, 0), _
New Point3d(12, 3, 0))
acLine.SetDatabaseDefaults()
'' Add the new object to the block table record and the transaction
6

acBlkTblRec.AppendEntity(acLine)
acTrans.AddNewlyCreatedDBObject(acLine, True)
'' Save the new object to the database
acTrans.Commit()
End Using
End Sub

VBA/ActiveX Code Reference


Sub AddLine()
' Define the start point
Dim ptStr(0 To 2) As Double
ptStr(0) = 5: ptStr(1) = 5: ptStr(2) = 0#
' Define the end point
Dim ptEnd(0 To 2) As Double
ptEnd(0) = 12: ptEnd(1) = 3: ptEnd(2) = 0#
' Create a Line object in model space
Dim lineObj As AcadLine
Set lineObj = ThisDrawing.ModelSpace.AddLine(ptStr, ptEnd)
ThisDrawing.Application.ZoomAll
End Sub

RESULTADOS Y DISCUSION.
En el ejemplo mostrado se puede ver claramente la facilidad de programar en BVA (programacion
procedural) encambio con VB.NET la programacion es un tanto compleja sin embargo la
principales ventajas que tiene el Autocad.NET API es que es un entorno de programacion
netamente orientado a objetos, tambien se puede aprovechar todo la potencialidad del visual
Studio, se pueden crear comandos identicos al de autocad, la velocidad de respuesta es aplastante
frente al BVA, y mucho mas a los otros lenguajes soportados por Autocad.
Por tanto el AutoCAD.NET API es el futuro para la programacion de complejas aplicaciones
especializadas en cualquier campo del diseo grfico asistido por computadora.

CONCLUSIONES
Espero que el siguiente articulo despeje un poco las distintas opciones que nos da AutoCAD para
su programacin.
Si eres un usuario no programador pero con inters por iniciarte en el campo de la programacin
para AutoCAD creo que la mejor opcin es el aprendizaje de la API COM, usando como lenguaje
VB.NET, sin embargo si eres un usuario con amplios conocimientos en .NET la mejor opcin es el
aprendizaje de la API NET usando como lenguaje C#, VB, y las otras opciones que nos da el
Visual Studio.

REFERENCIAS BIBLIOGRAFICAS
Stephen Preton , AutoCAD .NET Developers Guide, PDF
Jose Luis Madrid Villa Curso Basico de ObjectARX, PDF
http://www.blog.programacionautocad.com/category/Articulos-Autocad-NET.aspx
http://www.pcmag.com/encyclopedia_term/0,2542,t=application+programming+interface&i=3785
6,00.asp
http://www.autocad.net\Lenguajes de programacin para AutoCAD.mht

SDK: kit de desarrollo de software (siglas en ingls de software development kit)


API: interfaz de programacin de aplicaciones (del ingls application programing interface)
IDE: entorno de desarrollo integrado (del ingls Integrated Development Environment)
Interfaz: Conexin fsica y funcional entre dos aparatos o sistemas independientes
DLL: biblioteca de enlaces dinmicos(del ingls dynamic link libraries)

Potrebbero piacerti anche