使用RealDWG加载DWG格式图纸文件参考:http://t.csdn.cn/QxXhf
根据不同的使用需求,可做不同方式的各类型图元提取,话不多说直接上代码;
using (Transaction acTrans = db.TransactionManager.StartTransaction())
{
//解锁所有图层
using (LayerTable aclt = (LayerTable)acTrans.GetObject(db.LayerTableId, OpenMode.ForRead))
{
foreach (ObjectId ltrId in aclt)
{
using (LayerTableRecord acltr = (LayerTableRecord)acTrans.GetObject(ltrId, OpenMode.ForWrite))
{
if (acltr.IsLocked)
{
acltr.IsLocked = false;
}
}
}
}
//按照布局
using (DBDictionary layoutDict = (DBDictionary)acTrans.GetObject(db.LayoutDictionaryId, OpenMode.ForRead))
{
foreach (DBDictionaryEntry lytEnt in layoutDict)
{
string layoutName = lytEnt.Key;
using (Layout layout = (Layout)acTrans.GetObject(lytEnt.Value, OpenMode.ForRead))
{
using (BlockTableRecord acBlkRecord = (BlockTableRecord)acTrans.GetObject(layout.BlockTableRecordId, OpenMode.ForRead, false))
{
ObjectIdCollection btrObjIds = new ObjectIdCollection();
// 根据绘图次序返回图元
var orderTable = acBlkRecord.GetDrawOrderTable();
if (orderTable != null)
{
try
{
btrObjIds = orderTable.GetFullDrawOrde