11/06/2014
Обновление выравнивания текста
В ряде случаев выравнивание текста примитива DBText не выполняется. Для того чтобы заставить выполнится выравнивание используется метод DBText.AdjustAlignment. Этот метод для работы использует рабочую базу данных. Таким образом особенно важно указать ему рабочую базу данных, когда DBText еще не добавлен в рабочую базу данных.Вот пример кода:
Код - C#: [Выделить]
- [CommandMethod("TextAlign")]
- public void TextAlign()
- {
- Document activeDoc = Application.DocumentManager.MdiActiveDocument;
- // Для добавления текста с выравниванием в текущий документ
- bool isInMemory = false;
- Database db = activeDoc.Database;
- // Для добавления текста в базу в оперативной памяти
- // bool isInMemory = true;
- // Database db = new Database(true, false);
- using (Transaction tr = db.TransactionManager.StartTransaction())
- {
- BlockTable bt = tr.GetObject(
- db.BlockTableId,
- OpenMode.ForRead
- ) as BlockTable;
- BlockTableRecord mSpace = tr.GetObject
- (
- bt[BlockTableRecord.ModelSpace],
- OpenMode.ForWrite
- ) as BlockTableRecord;
- DBText dbText = new DBText();
- dbText.SetDatabaseDefaults(db);
- dbText.Position = Point3d.Origin;
- dbText.Height = 5.0;
- dbText.TextString = "Autodesk";
- dbText.HorizontalMode = TextHorizontalMode.TextRight;
- dbText.AlignmentPoint = Point3d.Origin;
- if (isInMemory)
- { // Для добавления текста с выравниванием к базе в памяти
- // установим рабочую базу данных перед вызовом AdjustAlignment
- Database prevWorkingDb = HostApplicationServices.WorkingDatabase;
- HostApplicationServices.WorkingDatabase = db;
- dbText.AdjustAlignment(db);
- HostApplicationServices.WorkingDatabase = prevWorkingDb;
- }
- else
- { // Для добавления текста к текущему документу
- // рабочая база данных уже установлена
- dbText.AdjustAlignment(db);
- }
- mSpace.AppendEntity(dbText);
- tr.AddNewlyCreatedDBObject(dbText, true);
- tr.Commit();
- }
- if (isInMemory)
- {
- db.SaveAs("C:\\Temp\\Test.dwg", DwgVersion.Current);
- db.Dispose();
- }
- }
Источник: http://adndevblog.typepad.com/autocad/2012/06/updating-text-alignment-.html
Обсуждение: http://adn-cis.org/forum/index.php?topic=795
Опубликовано 11.06.2014