[CommandMethod("MTtoDB")]
public void MTextToDBText()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
using (Transaction tran = db.TransactionManager.StartTransaction())
{
BlockTableRecord btr = (BlockTableRecord)tran.GetObject(SymbolUtilityServices.GetBlockModelSpaceId(db), OpenMode.ForRead);
//Create a 'static' list of the BlockIds, before altering the BlockTableRecord with adding/removing entities
foreach (ObjectId id in btr.Cast<ObjectId>().ToList())
{
DBText text = null;
MText mText = null;
///You can find the EntityType without opening the ID with GetObject
//Entity ent = tran.GetObject(id, OpenMode.ForWrite, false) as Entity;
//if (ent != null && ent.GetType() == typeof(MText))
if (id.ObjectClass.DxfName == "MTEXT")
{
text = tran.GetObject(id, OpenMode.ForRead, false) as DBText;
mText = new MText();
mText.SetDatabaseDefaults(db);
//Copy the DBText properties to the MText entity
mText.Contents = text.TextString;
mText.Location = text.Position;
//...
text.UpgradeOpen();
text.Erase();
}
//if (ent != null && ent.GetType() == typeof(DBText))
else if (id.ObjectClass.DxfName == "TEXT")
{
mText = tran.GetObject(id, OpenMode.ForRead, false) as MText;
text = new DBText();
//Copy the MText properties to the DBText entity
text.TextString = mText.Contents;
text.Position = mText.Location;
//....
mText.UpgradeOpen();
mText.Erase();
}
}
tran.Commit();
}
}
[CommandMethod("MTextToText")]
public static void MTextToText()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
try
{
using (Transaction tran = db.TransactionManager.StartTransaction())
{
BlockTableRecord btr = (BlockTableRecord)tran.GetObject(SymbolUtilityServices.GetBlockModelSpaceId(db), OpenMode.ForWrite);
foreach (ObjectId id in btr.Cast<ObjectId>().ToList())
{
DBText text = null;
MText mText = null;
if (id.ObjectClass.DxfName == "MTEXT")
{
mText = tran.GetObject(id, OpenMode.ForRead, false) as MText;
text = new DBText();
text.TextString = mText.Contents;
text.Position = mText.Location;
text.Layer = mText.Layer;
text.Color = mText.Color;
text.Height = mText.TextHeight;
btr.AppendEntity(text);
tran.AddNewlyCreatedDBObject(text, true);
mText.UpgradeOpen();
mText.Erase();
} //Chưa xử lý lỗi cho font "Times New Roman"
}
tran.Commit();
}
}
catch (Autodesk.AutoCAD.Runtime.Exception ex)
{
Application.ShowAlertDialog(ex.ToString());
}
}
// Counterwork for "TextToMText"