.NET
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

AutpCAD 2005 and .NET API

3 REPLIES 3
Reply
Message 1 of 4
Anonymous
278 Views, 3 Replies

AutpCAD 2005 and .NET API

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
3 REPLIES 3
Message 2 of 4
Anonymous
in reply to: Anonymous

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
Message 3 of 4
fantum
in reply to: Anonymous

The database should be empty when you call ReadDwgFile. Move
its creation into the foreach loop.
Message 4 of 4
Anonymous
in reply to: Anonymous

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.

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk DevCon in Munich May 28-29th


Autodesk Design & Make Report

”Boost