Autocad - Lenguajes de Programación - Opciones

11. enero 2011

 

0-Objetivo

 

El objetivo del presente articulo es comentar las distintas herramientas de programación que nos brinda Autocad para su personalización y poder generar aplicaciones dentro de distintos ambitos (Arquitectura, Ingeniería, SIG, etc...).

Los distintos lenguajes que podemos utilizar para la personalización de Autocad son los siguientes:

  1. Visual Lisp ; AutoLisp
  2. ObjectARX
  3. VBA ActiveX
  4. .NET

 

Principalmente he trabajado con los siguientes interfaces, Visual Basic (VBA), API COM y API NET.

Pasemos a enumerar las distintas ventajas e inconvenientes que nos podemos encontrar con cada uno de ellos.

 

1-Visual Lisp ; AutoLisp


Visual Lisp es una versión actualizada de AutoLisp lenguaje que se introdujo sobre 1985, se podría decir que es todo un clásico dentro de la programación para Autocad, si hay que destacar alguna características de este lenguaje es su compatibilidad con las distintas versiones de Autocad, aplicaciones de VisualLisp puden funcionar desde Autocad 12 hasta Autocad 2011, creo que esta es su principal ventaja, como inconveniente destacaría que no es un lenguaje fácil ni intuitivo de aprender, siendo su curva de aprendizaje muy lenta, además es un lenguaje exclusivo para la programación con Autocad por lo que si necesitas en un futuro vincular tus aplicaciones a bases de Datos, necesitarás conocer otros lenguajes de programación.

Ventajas:

  • Bastante Información en la Web
  • Buen Lenguaje para la Iniciación a la programación de Autocad
  • Compatibilidad entre Versiones de Autocad

Inconvenientes:

  • Lenguaje No Intuitivo
  • Curva Aprendizaje Lenta
  • Lenguaje Exclusivo (Necesario Aprender Otros Lenguajes)

 

2-ObjectARX


Este entorno de programación se introdujo en AUTOCAD con la versión 13 para Windows, proporcionando al programador el uso de un lenguaje orientado a objetos como es C++, esta tecnología te ayuda a desarrollar aplicaciones muy robustas y pronto se destaco como el entorno para la realización de aplicaciones profesionales que funcionan sobre Autocad. 

El principal inconveniente y ventaja es que la gestión de la memoria la debe de planificar el programador, y los errores en ese tema suelen ser graves y difíciles de depurar.

 

Ventajas:

  • Lenguaje Orientado a Objetos
  • Lenguaje de uso muy extendido
  • Gran cantidad de información

 

Inconvenientes:

  • Gestión de la Memoria por parte del programdor
  • Curva Aprendizaje Lenta
  • Incompatibilidad entre distintas versiones de Autocad

 

3-VBA ActiveX


Autodesk introdujo la disponibilidad de este lenguaje de programación en su versión de Autocad 2000, proporcionando al usuario de Autocad un entorno de programación integrado totalmente dentro de la aplicación, esto permite a los usuarios no programadores crear pequeñas rutinas de para la optimización  del trabajo. El lenguaje de programación usado es Visual Basic 6, lo cual permitía poder acceder o gestionar  otras aplicaciones que usan el mismo entorno de desarrollo, véase Excell, Access, etc....

La principal ventaja es que no es necesario instalar nada ya que el entorno de desarrollo se encuentra integrado en Autocad, además de usar un lenguaje de programación totalmente intuitivo que podemos utilizar para acceder a bases de datos, hojas de Excell, etc...

El principal inconveniente es que a partir de Autocad 2010, ya no viene integrado con Autocad y se encuentra en proceso de desaparición por lo que todas las aplicaciones se deberán de migrar a Autocad .NET

 

Ventajas:

  • Lenguaje Intuitivo y muy extendido
  • Capacidad de comunicarte con otras aplicaciones (Acces, Excell, etc..)
  • Facilidad de Uso al incluirse con Autocad
  • Curva de aprendizaje muy rápida
  • Óptimo para la iniciación a la programación de Autocad por parte de usuarios no programadores

Inconvenientes:

  • Lenguaje no orientado a Objetos
  • En proceso de desaparición con las nuevas versiones de Autocad.

 

4-AutoCAD .NET

 

Esta tecnología se encuentra disponible a partir de la versión 2004 de Autocad, este entorno de programación basado en el FrameWork .NET

4.1- API COM Automation

Este interface de programación 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 idéntica, 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 fácil 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) 

 

4.2- 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 entrañas de Autocad, con acceso directo a las estructuras de  la base de datos, manejando sus respectivas transacciones, una gran ventaja es la facilidad para creación comandos internos de Autocad, los cuales podemos llamar desde la linea de comandos

 

Ventajas

  • Presente y Futuro en la programación para Autocad
  • Disponemos de la potencia de la plataforma .NET
  • Podemos usar el lenguaje de programación que mejor conozcamos (VB.NET o C#)
  • [API COM] intuitiva y curva de aprendizaje rápida
  • [API NET] Facilicad creación 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

 

Podemos ver la distinta sintaxis de las API para la creación de una linea

Ejemplo con la API COM

 

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

 

Ejemplo con la API NET

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
      acBlkTblRec.AppendEntity(acLine)
      acTrans.AddNewlyCreatedDBObject(acLine, True)
 
      '' Save the new object to the database
      acTrans.Commit()
  End Using
End Sub

 

5-Conclusiones

 

Espero que el siguiente articulo despeje un poco las distintas opciones que nos da Autocad para su programación.

Si eres un usuario no programador pero con interés por iniciarte en el campo de la programación para Autocad creo que la mejor opción 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 opción es el aprendizaje de la API NET usando como lenguaje C#.

 

"El presente artículo de esta web esta sometido a las leyes de propiedad intelectual y pertenecen a CADnet & programacionautocad.com. Pueden ser utilizados total o parcialmente por cualquier medio de comunicación siempre que se haga una referencia a la empresa y a su página web. En caso de medios digitales se solicita únicamente un link visible para los buscadores."

Articulos Autocad .NET , , , , , ,

Comentarios (1) -

Jaime
07/04/2011 14:23:14 #
Muy interesante tu articulo y sobre todo tus recomendaciones en tus conclusiones...  

Agregar Comentario




biuquote
Loading