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

ADN Club => AutoCAD .NET API => Тема начата: Ирина_C от 06-10-2019, 22:49:12

Название: Как изменить содержание текста C#
Отправлено: Ирина_C от 06-10-2019, 22:49:12
Хочу изменить содержание текста. Так понимаю что нужно найти либо сам текст, либо координаты этого объекта. Но пока получается поменять только цвет. Если есть другое решение вопроса, буду рада если подскажите. Цвет текста меняю так:

Код - 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.             }
Название: Re: Как изменить содержание текста C#
Отправлено: trir от 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.                 }
Название: Re: Как изменить содержание текста C#
Отправлено: Александр Ривилис от 06-10-2019, 23:29:30
Ирина_C,
Приветствую на форуме!
Прошу обратить внимание на правило форматирования кода на нашем форуме и в дальнейшем соблюдать его. У меня в подписи есть ссылка на него.
Чтобы подсказать нужно понять в каком контексте выполняется код. Вы пишете приложение под AutoCAD или это отдельный exe-файл, который запускает AutoCAD и дальше через COM/ActiveX управляет им?
Название: Re: Как изменить содержание текста C#
Отправлено: Ирина_C от 07-10-2019, 13:54:22
Из собственной программы хочу запустить autocad с заполниными полями, для ускорения процесса. Так поняла что проще сделать через com.
Название: Re: Как изменить содержание текста C#
Отправлено: Александр Ривилис от 07-10-2019, 14:02:26
Из собственной программы хочу запустить autocad с заполниными полями, для ускорения процесса. Так поняла что проще сделать через com.
Не могу приветствовать такое решение, т.к. управление AutoCAD'ом из внешнего приложения имеет кучу подводных камней.
Но если уж остановились на такой стратегии, то вариант trir, вам должен помочь.
Название: Re: Как изменить содержание текста C#
Отправлено: Ирина_C от 07-10-2019, 15:21:06
Большое всем спасибо. Получилось.