1.得到模型空间中所有实体:
public List<Autodesk.AutoCAD.DatabaseServices.ObjectId> GetEntitiesInModelSpace()
{
List<Autodesk.AutoCAD.DatabaseServices.ObjectId> objects = new List<Autodesk.AutoCAD.DatabaseServices.ObjectId>();
using (Autodesk.AutoCAD.DatabaseServices.Transaction transaction =
Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.TransactionManager.StartTransaction())
{
Autodesk.AutoCAD.DatabaseServices.BlockTable blockTable =
(Autodesk.AutoCAD.DatabaseServices.BlockTable)transaction.GetObject(
Autodesk.AutoCAD.DatabaseServices.HostApplicationServices.WorkingDatabase.BlockTableId,
Autodesk.AutoCAD.DatabaseServices.OpenMode.ForRead);
Autodesk.AutoCAD.DatabaseServices.BlockTableRecord blockTableRecord =
(Autodesk.AutoCAD.DatabaseServices.BlockTableRecord)transaction.GetObject(
blockTable[Autodesk.AutoCAD.DatabaseServices.BlockTableRecord.ModelSpace],
Autodesk.AutoCAD.DatabaseServices.OpenMode.ForRead);
foreach (Autodesk.AutoCAD.DatabaseServices.ObjectId objId in blockTableRecord)
{
objects.Add(objId);
}
transaction.Commit();
}
return objects;
}
2.如何通过ObjectId得到一个实体:
private DBObject GetObject(ObjectId id)
{
DBObject obj = null;
using (Transaction transaction = Application.DocumentManager.MdiActiveDocument.TransactionManager.StartTransaction())
{
obj = transaction.GetObject(id, Autodesk.AutoCAD.DatabaseServices.OpenMode.ForRead, true);
transaction.Commit();
}
return obj;
}
1. 如何添加实体:
public static void AppendEntity(Entity ent)
{
using (Transaction transaction =
HostApplicationServices.WorkingDatabase.TransactionManager.StartTransaction())
{
BlockTableRecord blockTableRecord;
//get block table record of current space
blockTableRecord = (BlockTableRecord)transaction.GetObject(
HostApplicationServices.WorkingDatabase.CurrentSpaceId,
OpenMode.ForWrite);
blockTableRecord.AppendEntity(ent);
transaction.AddNewlyCreatedDBObject(ent, true);
transaction.Commit();
}
return;
}
2. 如何给实体添加XData:
public static bool AttachXData(DBObject obj, int MyData)
{
RegAppTableRecord app = new RegAppTableRecord();
app.Name = "MyData";
using (Transaction transaction =
Application.DocumentManager.MdiActiveDocument.TransactionManager.StartTransaction())
{
try
{
Database workingdatabase = HostApplicationServices.WorkingDatabase;
SymbolTable table = (SymbolTable)transaction.GetObject(workingdatabase.RegAppTableId,
Autodesk.AutoCAD.DatabaseServices.OpenMode.ForWrite, false);
if (!table.Has(app.Name))
{
table.Add(app);
transaction.AddNewlyCreatedDBObject(app, true);
}
if (!obj.IsWriteEnabled)
obj.UpgradeOpen();
obj.XData = new ResultBuffer(
new TypedValue((int)DxfCode.ExtendedDataRegAppName, app.Name),
new TypedValue((int)DxfCode.ExtendedDataInteger32, MyData));
transaction.Commit();
transaction.Dispose();
}
catch
{
return false;
}
}
return true;
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/blucexi/archive/2006/09/27/1296484.aspx