Академический Документы
Профессиональный Документы
Культура Документы
NET
6 respuestas
Microsoft Visual Studio 2008 o 2010, ya que estaremos utilizando el .NET Framework
3.5.
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:
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()
{
}
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!!");
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()
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 ;)