ADN Open CIS
Сообщество программистов Autodesk в СНГ

22/12/2015

Текст мультивыноски соответствующий установкам стиля мультивыноски

Это небольшой пример кода, который создаёт мультивыноску, основанную на существующем стиле мультивыноски. Для того, чтобы текст мультивыноски отражал изменения стиля мультивыноски, необходимо клонировать MLeaderStyle.DefaultText и использовать его в качестве текста мультивыноски. Создание нового MText без клонирования DefaultText приводит к тому, что он в дальнейшем перестаёт отражать изменения, которые происходят с его стилем мультивыноски.

Спасибо Xin Xu из команды инженеров AutoCAD за предоставленный совет.

Код - C#: [Выделить]
  1. [CommandMethod("MLTest")]
  2. public void MLTestMethod()
  3. {
  4.     Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
  5.  
  6.     PromptPointResult ppr1 = ed.GetPoint(
  7.         new PromptPointOptions("Укажите начальную точку "));
  8.  
  9.     if (ppr1.Status != PromptStatus.OK)
  10.         return;
  11.  
  12.     PromptPointResult ppr2 = ed.GetPoint(
  13.             new PromptPointOptions("Укажите конечную точку "));
  14.     if (ppr2.Status != PromptStatus.OK)
  15.         return;
  16.  
  17.     Database db = HostApplicationServices.WorkingDatabase;
  18.  
  19.     ObjectId myMLeaderId = ObjectId.Null;
  20.     using (Transaction trans
  21.                 = db.TransactionManager.StartTransaction())
  22.     {
  23.         ObjectId myleaderStyleId = db.MLeaderstyle;
  24.         MLeaderStyle mlstyle
  25.             = trans.GetObject(myleaderStyleId,
  26.                         OpenMode.ForRead) as MLeaderStyle;
  27.  
  28.         using (MLeader myMLeader = new MLeader())
  29.         {
  30.             myMLeader.SetDatabaseDefaults();
  31.             myMLeader.PostMLeaderToDb(db);
  32.             myMLeaderId = myMLeader.ObjectId;
  33.             myMLeader.MLeaderStyle = db.MLeaderstyle;
  34.  
  35.             int leaderIndex = myMLeader.AddLeader();
  36.             int leaderLineIndex
  37.                 = myMLeader.AddLeaderLine(leaderIndex);
  38.             myMLeader.AddFirstVertex(
  39.                         leaderLineIndex, ppr1.Value);
  40.             myMLeader.AddLastVertex(
  41.                         leaderLineIndex, ppr2.Value);
  42.  
  43.             MText myMText
  44.                 = mlstyle.DefaultMText.Clone() as MText;
  45.             if (myMText != null)
  46.             {
  47.                 myMText.SetContentsRtf("Autodesk");
  48.                 myMLeader.MText = myMText;
  49.             }
  50.         }
  51.         trans.Commit();
  52.     }
  53. }

 

Источник: http://adndevblog.typepad.com/autocad/2015/11/mleader-text-that-reflects-mleaderstyle-settings.html

Автор перевода: Александр Ривилис

Обсуждение: http://adn-cis.org/forum/index.php?topic=3293

Опубликовано 22.12.2015
Отредактировано 22.12.2015 в 00:17:00