public static bool HasProxyEntities(string file)
{
// Взято у Александра Ривилиса - http://adn-cis.org/forum/index.php?topic=1060.msg5017#msg5017
if (!File.Exists(file)) return false;
var db = new Database(false, true);
db.ReadDwgFile(file, FileShare.Read, true, string.Empty);
Handle firstHandle = db.BlockTableId.Handle; // Первая метка объекта - метка таблицы блоков
Handle lastHandle = db.Handseed; // Следующая после последней метки
int nObjects = db.ApproxNumObjects; // Приблизительное количество объектов в базе
string bufferLast = lastHandle.ToString();
string bufferFirst = firstHandle.ToString();
Int64 iLast = Int64.Parse(bufferLast, System.Globalization.NumberStyles.HexNumber);
Int64 iFirst = Int64.Parse(bufferFirst, System.Globalization.NumberStyles.HexNumber);
using (var tr = db.TransactionManager.StartTransaction())
{
for (Int64 i = iFirst; i < iLast && nObjects > 0; i++)
{
Handle h = new Handle(i);
ObjectId id = ObjectId.Null;
if (db.TryGetObjectId(h, out id))
{
try
{
DBObject dbObj = tr.GetObject(id, OpenMode.ForRead, true, true);
if (dbObj != null && !dbObj.IsErased && dbObj.IsAProxy)
{
return true;
}
nObjects--;
}
catch
{
//ignored
}
}
}
tr.Commit();
}
return false;
}