I have written a .NET app that does the following:
1. Get a folder name from the user
2. Get a list of DWG files in the folder
3. Open each DWG and check for and blocks references in the DWG
4. Repeat 1, 2 and 3 until all DWGs have been checked.
problem:
It only opens the first DWG, each subsequent call to ReadDwgFile throws an
exception. Code below:
string folder2d = ui.TwoDFolder;
Database db = new Database();
if (Directory.Exists(folder2d))
{
StreamWriter logFile = new StreamWriter("c:\\temp\\stc_hunt2d.log");
string[] files = Directory.GetFiles(folder2d, "*.dwg");
foreach (string filename in files)
{
bool hasBlock = false;
db.ReadDwgFile(filename, FileShare.Read, false, "");
using (Transaction t = db.TransactionManager.StartTransaction())
{
BlockTable bt =
(BlockTable)t.GetObject(db.BlockTableId,OpenMode.ForRead);
BlockTableRecord btr =
(BlockTableRecord)t.GetObject(bt[BlockTableRecord.ModelSpace],OpenMode.ForRead);
foreach(ObjectId objId in btr)
{
DBObject dbObj = t.GetObject(objId,OpenMode.ForRead);
BlockReference blkRef = dbObj as BlockReference;
if (blkRef!=null)
hasBlock = true;
}
t.Commit();
}
if (hasBlock)
logFile.WriteLine(Path.GetFileNameWithoutExtension(filename));
}
logFile.Close();
}
Any ideas what is happening?
Thanks,
Jon