• Industries
  • Products
  • Buy
  • Services & Support
  • Communities
  • Discussion Groups

    .NET

    Reply
    *Jon Prisbe

    AutpCAD 2005 and .NET API

    83 Views, 3 Replies
    07-14-2005 07:13 AM
    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
    Please use plain text.
    *Albert Szilvasy

    Re: AutpCAD 2005 and .NET API

    07-14-2005 08:32 AM in reply to: *Jon Prisbe
    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
    Please use plain text.
    Distinguished Contributor
    Posts: 313
    Registered: ‎12-06-2004

    Re: AutpCAD 2005 and .NET API

    07-14-2005 09:03 AM in reply to: *Jon Prisbe
    The database should be empty when you call ReadDwgFile. Move
    its creation into the foreach loop.
    Please use plain text.
    *Jon Prisbe

    Re: AutpCAD 2005 and .NET API

    07-15-2005 05:18 AM in reply to: *Jon Prisbe
    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.
    Please use plain text.