public static void SynchronizeDrawings()
{
List < string > fileNames = Drawing.SelectDrawings();
if ( fileNames.Count == 0 )
{
return;
}
Document acDoc = Application.DocumentManager.MdiActiveDocument;
Database acCurDb = acDoc.Database;
ObjectId idMSpace = ObjectId.Null;
using ( Transaction acTrans = acCurDb.TransactionManager.StartTransaction() )
{
BlockTable acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
idMSpace = acBlkTbl[ BlockTableRecord.ModelSpace ];
acTrans.Commit();
}
foreach ( string fileName in fileNames )
{
using ( Database db = new Database(false, true) )
{
db.ReadDwgFile(fileName, FileOpenMode.OpenForReadAndAllShare, false, null);
// string areaNumber = db.GetBuildingAreaNumber();
string areaNumber = null;
try
{
areaNumber = db.GetBuildingAreaNumber();
}
catch ( NullReferenceException )
{
// Application.ShowAlertDialog("Set construction area number in source drawing by Drawing properties => subject");
}
DeletePreviousEntities(areaNumber, acCurDb);
using ( IdMapping idMap = new IdMapping() )
{
db.WblockCloneObjects(Drawing.GetObjects(db), idMSpace, idMap, DuplicateRecordCloning.Ignore, false); // !!!!
}
EntityProcessor.SetDynamicBlockProperty(acCurDb);
Logger logger = new Logger();
logger.CreateSynchronizationLog(fileName);
}
}
}