AutpCAD 2005 and .NET API

AutpCAD 2005 and .NET API

Anonymous
Not applicable
693 Views
3 Replies
Message 1 of 4

AutpCAD 2005 and .NET API

Anonymous
Not applicable
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
0 Likes
694 Views
3 Replies
Replies (3)
Message 2 of 4

Anonymous
Not applicable
What is the exception you are getting?

Albert
"Jon Prisbe" wrote in message
news:4901309@discussion.autodesk.com...
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
0 Likes
Message 3 of 4

Anonymous
Not applicable
The database should be empty when you call ReadDwgFile. Move
its creation into the foreach loop.
0 Likes
Message 4 of 4

Anonymous
Not applicable
I moved the creation and it works.

Thanks,


wrote in message news:4901565@discussion.autodesk.com...
The database should be empty when you call ReadDwgFile. Move
its creation into the foreach loop.
0 Likes