Как изменить содержание текста C#

Автор Тема: Как изменить содержание текста C#  (Прочитано 144 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Ирина_CАвтор темы

  • ADN OPEN
  • Сообщений: 3
  • Карма: 0
Хочу изменить содержание текста. Так понимаю что нужно найти либо сам текст, либо координаты этого объекта. Но пока получается поменять только цвет. Если есть другое решение вопроса, буду рада если подскажите. Цвет текста меняю так:

Код - C# [Выбрать]
  1.     acAppComObj = null;
  2.             const string strProgId = "AutoCAD.Application.18";
  3.  
  4.             try
  5.             {
  6.                 acAppComObj = (AcadApplication)Marshal.GetActiveObject(strProgId);
  7.                
  8.             }
  9.             catch
  10.             {
  11.                 try
  12.                 {
  13.                     acAppComObj = (AcadApplication)Activator.CreateInstance(Type.GetTypeFromProgID(strProgId), true);
  14.                  
  15.                 }
  16.                 catch
  17.                 {
  18.                     System.Windows.Forms.MessageBox.Show("Instance of 'AutoCAD.Application'" +
  19.                                                           " could not be created.");
  20.                     return;
  21.                 }
  22.             }
  23. acAppComObj.Visible = true;
  24.             System.Windows.Forms.MessageBox.Show("Now running " + acAppComObj.Name +
  25.                                                    " version " + acAppComObj.Version);
  26.  
  27.  
  28.             string strFileName = @"D:\OP1.DWG";
  29.  
  30.             acAppComObj.ActiveDocument.Application.Documents.Open(strFileName, false);
  31.             AcadDocument acDocComObj;
  32.             acDocComObj = acAppComObj.ActiveDocument;
  33.  
  34.             double[] T4 = new double[] { 15, 200, 0 };
  35.             AcadText text = null;
  36.             AcadText text2 = null;
  37.             text = acDocComObj.Database.ModelSpace.AddText("это текст !", T4, 100);
  38.             text2 = acDocComObj.Database.ModelSpace.AddText("это текст2 !", T4, 100);
  39.             string stringtest = "";
  40.             for (int i = 0; i < acDocComObj.Database.ModelSpace.Count; i++)
  41.             {
  42.                 if (acDocComObj.Database.ModelSpace.Item(i).ObjectName.ToString()=="AcDbText")
  43.                 {
  44.                     acDocComObj.Database.ModelSpace.Item(i).color = AutoCAD.ACAD_COLOR.acRed;
  45.                 }
  46.                 stringtest= stringtest + acDocComObj.Database.ModelSpace.Item(i).ObjectID.ToString() + acDocComObj.Database.ModelSpace.Item(i).ObjectName.ToString() + "\n";
  47.             }
« Последнее редактирование: 06-10-2019, 23:25:55 от Александр Ривилис »

Отмечено как Решение Ирина_C 07-10-2019, 15:20:30

Оффлайн trir

  • ADN Club
  • ****
  • Сообщений: 299
  • Карма: 35
Re: Как изменить содержание текста C#
« Ответ #1 : 06-10-2019, 22:57:48 »
1. Зачем на C# работать через COM?
2. После того как нашли нужный объект - приведите его к нужному типу

Код - C# [Выбрать]
  1.                if (acDocComObj.Database.ModelSpace.Item(i).ObjectName.ToString()=="AcDbText")
  2.                 {
  3.                      text = acDocComObj.Database.ModelSpace.Item(i) as AcadText;
  4.                 }
« Последнее редактирование: 06-10-2019, 23:25:02 от Александр Ривилис »

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 10027
  • Карма: 1281
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Как изменить содержание текста C#
« Ответ #2 : 06-10-2019, 23:29:30 »
Ирина_C,
Приветствую на форуме!
Прошу обратить внимание на правило форматирования кода на нашем форуме и в дальнейшем соблюдать его. У меня в подписи есть ссылка на него.
Чтобы подсказать нужно понять в каком контексте выполняется код. Вы пишете приложение под AutoCAD или это отдельный exe-файл, который запускает AutoCAD и дальше через COM/ActiveX управляет им?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Ирина_CАвтор темы

  • ADN OPEN
  • Сообщений: 3
  • Карма: 0
Re: Как изменить содержание текста C#
« Ответ #3 : 07-10-2019, 13:54:22 »
Из собственной программы хочу запустить autocad с заполниными полями, для ускорения процесса. Так поняла что проще сделать через com.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 10027
  • Карма: 1281
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Как изменить содержание текста C#
« Ответ #4 : 07-10-2019, 14:02:26 »
Из собственной программы хочу запустить autocad с заполниными полями, для ускорения процесса. Так поняла что проще сделать через com.
Не могу приветствовать такое решение, т.к. управление AutoCAD'ом из внешнего приложения имеет кучу подводных камней.
Но если уж остановились на такой стратегии, то вариант trir, вам должен помочь.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Ирина_CАвтор темы

  • ADN OPEN
  • Сообщений: 3
  • Карма: 0
Re: Как изменить содержание текста C#
« Ответ #5 : 07-10-2019, 15:21:06 »
Большое всем спасибо. Получилось.