domingo, 29 de julio de 2012

Autocad ; Lenguajes de Programación ; Opciones

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:

Visual Lisp ; AutoLispObjectARXVBA ActiveX.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.

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 WebBuen Lenguaje para la Iniciación a la programación de AutocadCompatibilidad entre Versiones de Autocad

Inconvenientes:

Lenguaje No IntuitivoCurva Aprendizaje LentaLenguaje Exclusivo (Necesario Aprender Otros Lenguajes)

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 ObjetosLenguaje de uso muy extendidoGran cantidad de información

Inconvenientes:

Gestión de la Memoria por parte del programdorCurva Aprendizaje LentaIncompatibilidad entre distintas versiones de Autocad

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 extendidoCapacidad de comunicarte con otras aplicaciones (Acces, Excell, etc..)Facilidad de Uso al incluirse con AutocadCurva 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 ObjetosEn proceso de desaparición con las nuevas versiones de Autocad.

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 AutocadDisponemos de la potencia de la plataforma .NETPodemos 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 utilizarIncompatibilidad 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.ZoomAllEnd 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 UsingEnd Sub

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 , , , , , ,


View the original article here

No hay comentarios:

Publicar un comentario