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

ADN Club => AutoCAD .NET API => Тема начата: Вильдар от 22-02-2016, 11:38:58

Название: TransientManager цвет текста?
Отправлено: Вильдар от 22-02-2016, 11:38:58
Всем добрый день,
Почему не меняется цвет текста временной графики?  :(
Тестовый пример:
Код - C# [Выбрать]
  1.       [CommandMethod("Test", CommandFlags.Modal)]
  2.       public void Test()
  3.       {
  4.          Document doc = Application.DocumentManager.MdiActiveDocument;
  5.          if (doc == null) return;
  6.          Database db = doc.Database;
  7.          Editor ed = doc.Editor;
  8.  
  9.          // Запрос выбора полилинии, дополнительно возвращается указанная точка.
  10.          Point3d ptPicked;
  11.          ObjectId idPolyline = SelectPolyline(ed, out ptPicked);
  12.          if (idPolyline.IsNull) return;
  13.  
  14.          // Текст для временной графики
  15.          DBText text = new DBText();
  16.          text.SetDatabaseDefaults(db);
  17.          text.Position = ptPicked;
  18.          text.TextString = "Test";
  19.          // Высота относительно текущего вида
  20.          text.Height = ed.GetCurrentView().Height * 0.025;
  21.          text.Color = Color.FromColor(System.Drawing.Color.Red);
  22.          text.Justify = AttachmentPoint.MiddleCenter;
  23.          text.AlignmentPoint = ptPicked;
  24.          text.AdjustAlignment(db);
  25.          
  26.          // Добавление временной графики.
  27.          // То, что я не сохраняю нарисованный объект, пока не важно. Интересует только цвет. Он не меняется.
  28.          Autodesk.AutoCAD.GraphicsInterface.TransientManager tm = Autodesk.AutoCAD.GraphicsInterface.TransientManager.CurrentTransientManager;
  29.          tm.AddTransient(text, Autodesk.AutoCAD.GraphicsInterface.TransientDrawingMode.Main, 0, new IntegerCollection());
  30.       }
  31.  
  32.       private ObjectId SelectPolyline(Editor ed, out Point3d ptPicked)
  33.       {
  34.          var prOpt = new PromptEntityOptions("\nВыберите полилинию");
  35.          prOpt.SetRejectMessage("\nМожно выбрать только полилинию");
  36.          prOpt.AddAllowedClass(typeof(Autodesk.AutoCAD.DatabaseServices.Polyline), true);
  37.          prOpt.AllowNone = false;
  38.          prOpt.AllowObjectOnLockedLayer = true;
  39.  
  40.          var prRes = ed.GetEntity(prOpt);
  41.          if (prRes.Status == PromptStatus.OK)
  42.          {
  43.             ptPicked = prRes.PickedPoint;
  44.             return prRes.ObjectId;
  45.          }
  46.          ptPicked = Point3d.Origin;
  47.          return ObjectId.Null;
  48.       }
Название: Re: TransientManager цвет текста?
Отправлено: Александр Ривилис от 22-02-2016, 15:20:11
Интересный факт. Добавил еще окружность с тем же цветом. Результат:
Visual Style: 2dWireFrame
(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fimg-fotki.yandex.ru%2Fget%2F45886%2F7842324.5%2F0_11a767_d3b880c7_orig.png&hash=ecf1d0ad7ddbab9d683014f5fe060ceb)
Visual Style: Realistic (и любой другой кроме 2dWireFrame)
(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fimg-fotki.yandex.ru%2Fget%2F63585%2F7842324.5%2F0_11a769_ba0bd25b_orig.png&hash=26fa40762a8221859dc46a36e39ad60a)
Название: Re: TransientManager цвет текста?
Отправлено: Александр Ривилис от 22-02-2016, 15:29:11
А вот VisualStyle == 2DWireFrame, но (!!!) шрифт не TTF, а SHX:
(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fimg-fotki.yandex.ru%2Fget%2F37861%2F7842324.5%2F0_11a76b_c4adf8be_orig.png&hash=7dc7d0c3221a487ad7f6e7bcf1214048)

Ну и здесь объяснение: https://forums.autodesk.com/t5/net/transient-text-color/m-p/4352239#M36227
Название: Re: TransientManager цвет текста?
Отправлено: Вильдар от 22-02-2016, 15:38:20
Т.е. дело в ttf шрифте.
Да, поменял шрифт на shx, текст меняет цвет на установленный.