Вы находитесь на странице: 1из 7

Primer programa en AutoCAD con .

NET
6 respuestas

Qu mejor manera de comenzar a aprender la programacin en AutoCAD con .NET que el


clsico Hola mundo?
Los requisitos para poder ejecutarlo son:

Microsoft Visual Studio 2008 o 2010, ya que estaremos utilizando el .NET Framework
3.5.

Autodesk AutoCAD 2010 o 2011.

Las libreras de ObjectARX. (En el post anterior est el link de descarga).

El primer paso es crear un nuevo proyecto, del tipo Librera de clases, que vamos a llamar
HolaMundo, no olvidarse de usar el .NET Framework 3.5:

Luego agregamos la referencias a las libreras que estamos necesitando (las mismas se
encuentran en el directorio donde instalamos ObjectARX):

AcMgd.dll

AcDbMgd.dll

Estas son las libreras que nos van a permitir conectarnos con el entorno de AutoCAD. Como
estas libreras ya estn incluidas en AutoCAD, no deben ser copiadas en el directorio de
destino de nuestra librera, para ello cambiamos las propiedades de nuestras referencias como
se muestra en la imagen y colocamos la copia local en falso:

Con esto estamos listos para comenzar a programar!!


Vamos a utilizar la clase que Visual Studio cre automticamente cuando creamos el proyecto.
Agregamos las clusulas using necesarias:

using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;

Ahora creamos una nueva funcin, con visibilidad pblica, y que no devuelve nada, llamada
HolaMundo:
public void HolaMundo()
{
}

A ella le vamos a agregar un atributo, para que se transforme en un comando de AutoCAD y


pueda ser ejecutado desde la lnea de comandos:
[CommandMethod("HolaMundo")]

Dentro de nuestra funcin escribimos el cdigo que devuelve nuestro ya conocido mensaje:
Hola Mundo!!:
Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
ed.WriteMessage("Hola Mundo!!");

Y listo! Con esto ya creamos nuestro primer programa en AutoCAD!


Para poder probarlo, luego de compilar nuestro proyecto, abrimos AutoCAD y ejecutamos el
comando netload, y cargamos la dll generada desde Visual Studio.
El resultado de la ejecucin se puede ver en la imagen:

Les comparto abajo el cdigo completo:


using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
namespace HolaMundo
{
public class Class1
{
[CommandMethod("HolaMundo")]
public void HolaMundo()
{
Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
ed.WriteMessage("Hola Mundo!!");
}
}
}

Comenzando a dibujar desde .NET


3 respuestas

En el post anterior, solamente devolvimos un mensaje de texto ante la ejecucin de un


comando.
En este post vamos a comenzar a agregar entidades al dibujo. Para ello lo primero que vamos

a hacer crear un nuevo proyecto (librera de clases) y vamos a utilizar la clase que se crea por
defecto.
Agregamos las clusulas using necesarias:
using
using
using
using

Autodesk.AutoCAD.Runtime;
Autodesk.AutoCAD.ApplicationServices;
Autodesk.AutoCAD.DatabaseServices;
Autodesk.AutoCAD.Geometry;

Obtenemos la informacin del documento actual, su base de datos, y generamos una nueva
transaccin para ejecutar las modificaciones al dibujo:
Document acDoc = Application.DocumentManager.MdiActiveDocument;
Database acCurDb = acDoc.Database;
using (Transaction acTrans = acCurDb.TransactionManager.StartTransacti
on())
{

Ahora vamos a crear las entidades que queremos agregar al dibujo: vamos a agregar una
lnea y un crculo.
Line acLine = new Line(new Point3d(5, 5, 0), new Point3d(12, 3, 0));
Circle acCircle = new Circle(new Point3d(7, 4, 0), Vector3d.ZAxis, 2);
acLine.SetDatabaseDefaults();
acCircle.SetDatabaseDefaults();
Una vez que tenemos todas las propiedades de nuestras dos entidades listas, las agregamos
a la transaccin y hacemos un commit:

acBlkTblRec.AppendEntity(acLine);
acTrans.AddNewlyCreatedDBObject(acLine, true);
acBlkTblRec.AppendEntity(acCircle);
acTrans.AddNewlyCreatedDBObject(acCircle, true);
acTrans.Commit();
Agregamos el atributo para que esta funcin pueda ser llamada como un comando:
[CommandMethod(Dibujar)]
public static void DibujarLineaYCirculo()

Y ya estamos listos para ejecutarlo y ver lo que hace:

Les comparto el cdigo completo:


using
using
using
using

Autodesk.AutoCAD.Runtime;
Autodesk.AutoCAD.ApplicationServices;
Autodesk.AutoCAD.DatabaseServices;
Autodesk.AutoCAD.Geometry;

namespace Demo2
{
public class Class1
{
[CommandMethod(Dibujar)]
public static void DibujarLineaYCirculo()
{
Document acDoc = Application.DocumentManager.MdiActiveDocument;
Database acCurDb = acDoc.Database;
using (Transaction

acTrans = acCurDb.TransactionManager.StartTransacti

on())
{

acBlkTbl;
acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId,
OpenMode.ForRead) as BlockTable;
BlockTable

BlockTableRecord acBlkTblRec;
acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpac

e],
OpenMode.ForWrite) as BlockTableRecord;
Line acLine = new Line(new Point3d(5, 5, 0), new Point3d(12, 3, 0));
Circle acCircle = new Circle(new Point3d(7, 4, 0), Vector3d.ZAxis, 2);

acLine.SetDatabaseDefaults();
acCircle.SetDatabaseDefaults();
acBlkTblRec.AppendEntity(acLine);
acTrans.AddNewlyCreatedDBObject(acLine, true);
acBlkTblRec.AppendEntity(acCircle);
acTrans.AddNewlyCreatedDBObject(acCircle, true);
acTrans.Commit();
}
}
}
}

Happy coding ;)

Вам также может понравиться