[CommandMethod("GetLayerPro")]
public static void GetLayerPro()
{
Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
//新建一个数据库对象以读取Dwg文件
Database db = new Database(false, true);
string fileName = "C:\\Drawing3.dwg";
//如果指定文件名的文件存在
if(System.IO.File.Exists(fileName))
{
//把文件读入到数据库中
db.ReadDwgFile(fileName, System.IO.FileShare.Read, true, null);
using(Transaction trans = db.TransactionManager.StartTransaction())
{
//获取数据库的图层表对象
LayerTable lt = (LayerTable) trans.GetObject(db.LayerTableId, OpenMode.ForRead);
//循环遍历每个图层
foreach(ObjectId layerId in lt)
{
LayerTableRecord ltr = (LayerTableRecord) trans.GetObject(layerId, OpenMode.ForRead);
if(ltr != null)
{
Autodesk.AutoCAD.Colors.Color layerColor = ltr.Color;
ed.WriteMessage("\n图层名称为:" + ltr.Name);
ed.WriteMessage("\n图层颜色为:" + layerColor.ToString());
}
}
trans.Commit();
}
}
}
[CommandMethod("GetEntitiesFromLayer")]
public static void GetEntitiesFromLayer(string layerName)
{
Database db = HostApplicationServices.WorkingDatabase;
Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
using(Transaction trans = db.TransactionManager.StartTransaction())
{
LayerTable lt = (LayerTable) trans.GetObject(db.LayerTableId, OpenMode.ForRead);
if(lt.Has(layerName))
{
BlockTableRecord ltr = (BlockTableRecord) trans.GetObject(db.CurrentSpaceId, OpenMode.ForRead);
foreach(ObjectId objId in ltr)
{
Entity ent = (Entity) trans.GetObject(objId, OpenMode.ForRead);
// 假设该图层中有一个圆
Circle myCircle = (Circle) ent;
if(ent.Layer == layerName && myCircle != null)
{
Point3d cirCenter = myCircle.Center;
ed.WriteMessage("\n圆心为:" + cirCenter.ToString());
}
}
}
trans.Commit();
}
}