public static void Etrans(string desenho)
{
System.Windows.MessageBox.Show(desenho + " Passou");
Autodesk.AutoCAD.ApplicationServices.Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
Editor ed = doc.Editor;
Database myDB = new Autodesk.AutoCAD.DatabaseServices.Database(false, true);
using (myDB)
{
myDB.ReadDwgFile(desenho, FileOpenMode.OpenForReadAndAllShare, true, "");
System.Windows.MessageBox.Show("DB Passou");
string verDb = myDB.Ltscale.ToString();
System.Windows.MessageBox.Show(verDb);
try
{
System.Windows.MessageBox.Show("Entrou try");
DBDictionary nod2 = myDB.NamedObjectsDictionaryId.GetObject(OpenMode.ForRead) as DBDictionary;
ObjectId imageDictId2 = nod2.GetAt("ACAD_IMAGE_DICT");
string verDit = imageDictId2.IsNull.ToString();
System.Windows.Forms.MessageBox.Show(verDit);
using (Autodesk.AutoCAD.DatabaseServices.Transaction myTrans = myDB.TransactionManager.StartTransaction())
{
DBDictionary nod = myTrans.GetObject(myDB.NamedObjectsDictionaryId, OpenMode.ForRead) as DBDictionary;
ObjectId imageDictId = nod.GetAt("ACAD_IMAGE_DICT");
DBDictionary imageDict = myTrans.GetObject(imageDictId, OpenMode.ForRead) as DBDictionary;
foreach (DBDictionaryEntry dbDictEntry in imageDict)
{
RasterImageDef rasterImageDef = myTrans.GetObject(dbDictEntry.Value, OpenMode.ForWrite) as RasterImageDef;
try
{
if (System.IO.File.Exists(rasterImageDef.SourceFileName))
{
dynamic dwgPathUri = new Uri(desenho);
dynamic rasterImagePathUri = new Uri(rasterImageDef.SourceFileName);
// Make the raster image path
// relative to the drawing path
dynamic relativeRasterPathUri = dwgPathUri.MakeRelativeUri(rasterImagePathUri);
// Set the source path as relative
rasterImageDef.SourceFileName = Uri.UnescapeDataString(relativeRasterPathUri.ToString());
// Reload for AutoCAD to
// resolve active path
rasterImageDef.Load();
// Check if we found it
//RasterImage raster = new RasterImage();
}
}
catch (Exception ex)
{
System.Windows.MessageBox.Show("Erro_Raster");
}
myDB.SaveAs(desenho, DwgVersion.Current);
myDB.Dispose();
}
}
}
catch (Exception ex)
{
System.Windows.MessageBox.Show(ex.ToString());
}
}
}
#endregion
}
This is the code, called by:
foreach (var f in files)
{
if(f.FullName.Contains(".dwg"))
{
ZiTools.Etrans(f.FullName);
}