Не могу создать com-объект AutoCAD

Автор Тема: Не могу создать com-объект AutoCAD  (Прочитано 6178 раз)

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

Оффлайн Борис_САвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 222
  • Карма: 3
Всем доброго времени суток.
У меня такая проблемка. Не создается com-объект AutoCAD.
Для подключения к AutoCAD использую следующий код:
Код - C# [Выбрать]
  1. dynamic acApp = null;   // ссылка на экземпляр Application приложения AutoCAD
  2. public void GetComApp()
  3. {
  4.          try
  5.         {            {
  6.                 // Получение ссылки на экземпляр Application уже запущенного приложения AutoCAD
  7.                 acApp = CallFunc(() => Marshal.GetActiveObject("AutoCAD.Application"));
  8.             }
  9.             catch
  10.             {
  11.                 try
  12.                 {
  13.                     // Создание нового экземпляра Application приложения AutoCAD
  14.                     Type comAppType = Type.GetTypeFromProgID("AutoCAD.Application");
  15.                     acApp = GetApp(() => Activator.CreateInstance(comAppType));                    
  16.                 }
  17.                 catch(System.Exception e)
  18.                 {
  19.                     MessageBox.Show("Cannot create Com object AutoCAD");
  20.                 }
  21.             }
  22.       }
  23. }
  24.  

Метод CallFunc описан в сообщении https://adn-cis.org/forum/index.php?topic=7364.0
Все это прекрасно работало. Пару дней назад обнаружил, что код перестал работать.
Подключение к запущенному автокаду не происходит.
Значение переменной comAppType в операторе Type comAppType = Type.GetTypeFromProgID("AutoCAD.Application"); равно null
На компе стоит AutoCAD 2020.1
Спасибо.

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

  • Administrator
  • *****
  • Сообщений: 13077
  • Карма: 1687
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Не могу создать com-объект AutoCAD
« Ответ #1 : 22-08-2021, 22:55:42 »
Борис_С,
Могу лишь посочувствовать. В первую очередь смотрите какие обновления Windows/AutoCAD были установлены с момента, когда это работало.
Возможно придётся переустанавливать AutoCAD. Это если не меняли разрядность вашего приложения. Разрядность приложения должна совпадать с разрядностью AutoCAD. В противном случае точно будут проблемы. Заодно проверьте в реестре наличие HKEY_CLASSES_ROOT\AutoCAD.Application и на что он ссылается.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Борис_САвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 222
  • Карма: 3
Re: Не могу создать com-объект AutoCAD
« Ответ #2 : 23-08-2021, 16:01:29 »
AutoCAD.Application имеет 2 подпапки:
CLSID - значение - {4AC6DFE1-607B-45B2-B289-D7FBCD44169C}
CurVer - значение - AutoCAD.Application.23

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

  • Administrator
  • *****
  • Сообщений: 13077
  • Карма: 1687
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Не могу создать com-объект AutoCAD
« Ответ #3 : 23-08-2021, 18:02:22 »
AutoCAD.Application имеет 2 подпапки:
CLSID - значение - {4AC6DFE1-607B-45B2-B289-D7FBCD44169C}
CurVer - значение - AutoCAD.Application.23
Этого недостаточно. Нужно проверять всю цепочку.



И установи своему приложению Platform Target: x64



Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Борис_САвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 222
  • Карма: 3
Re: Не могу создать com-объект AutoCAD
« Ответ #4 : 25-08-2021, 10:48:31 »
А зачем менять Any CPU на x64. У меня стоит 64 битный Windows. Any CPU и означает, что программа подхватит текущую версию системы и будет работать с 64 битной версией.

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

  • Administrator
  • *****
  • Сообщений: 13077
  • Карма: 1687
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Не могу создать com-объект AutoCAD
« Ответ #5 : 25-08-2021, 10:54:27 »
А зачем менять Any CPU на x64. У меня стоит 64 битный Windows. Any CPU и означает, что программа подхватит текущую версию системы и будет работать с 64 битной версией.
Нет. Совершенно необязательно.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Борис_САвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 222
  • Карма: 3
Re: Не могу создать com-объект AutoCAD
« Ответ #6 : 25-08-2021, 11:00:38 »
Немного подправил реестр.
Программа стала создавать com-объект, но по-прежнему не видит уже запущенную программу и не подключается к ней.

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

  • Administrator
  • *****
  • Сообщений: 13077
  • Карма: 1687
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Не могу создать com-объект AutoCAD
« Ответ #7 : 25-08-2021, 12:54:04 »
Немного подправил реестр.
В чем заключались правки?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Борис_САвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 222
  • Карма: 3
Re: Не могу создать com-объект AutoCAD
« Ответ #8 : 25-08-2021, 13:31:12 »
не было HKEY_CLASSES_ROOT\AutoCAD.Application
было только HKEY_CLASSES_ROOT\AutoCAD.Application.23

Мой коллега создал HKEY_CLASSES_ROOT\AutoCAD.Application, настроив его на HKEY_CLASSES_ROOT\AutoCAD.Application.23

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

  • Administrator
  • *****
  • Сообщений: 13077
  • Карма: 1687
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Не могу создать com-объект AutoCAD
« Ответ #9 : 25-08-2021, 13:36:48 »
не было HKEY_CLASSES_ROOT\AutoCAD.Application
Ну тогда наверняка нет еще кучи веток в реестре. Нужно или откатывать систему на дату, когда всё работало или переустанавливать AutoCAD. Другого способа нет. Найти все необходимые ветки реестра и создать их вручную нереально.
Подозреваю, что установлен какой-нибудь чистильщих типа reg organizer или ccleaner, которые чистят реестр от того, что ини считают неиспользуемым и ненужным. Результат обычно именно такой...
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Борис_САвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 222
  • Карма: 3
Re: Не могу создать com-объект AutoCAD
« Ответ #10 : 25-08-2021, 15:24:45 »
Спасибо, Саша. Будет окно, переставлю.

Оффлайн Борис_САвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 222
  • Карма: 3
Re: Не могу создать com-объект AutoCAD
« Ответ #11 : 27-08-2021, 10:43:00 »
Я не прав. Все работает. Подключаюсь и к работающему приложению. Здесь оказалась одна тонкость. Действительно нельзя подключиться к приложению сразу после старта, но, если загрузить в AutoCAD хотя бы один файл, подключаюсь на ура.

Оффлайн marsh_one

  • ADN OPEN
  • Сообщений: 14
  • Карма: 0
Re: Не могу создать com-объект AutoCAD
« Ответ #12 : 23-09-2021, 14:28:28 »
Александр Ривилис,  Добрый день. Александр, подскажите каким образом можно установить Platform Target: x64?
У меня похожая проблема, выскакивала ошибка, я добавил в код
Код - C# [Выбрать]
  1.         const uint RPC_E_SERVERFAULT = 0x80010105;
  2.         const uint HRESULT = 0x800706BA;

Теперь при запуске просто висит и нчиего не происходит, типа бесконечного цикла.

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

  • Administrator
  • *****
  • Сообщений: 13077
  • Карма: 1687
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Не могу создать com-объект AutoCAD
« Ответ #13 : 23-09-2021, 14:35:52 »
Добрый день. Александр, подскажите каким образом можно установить Platform Target: x64?




я добавил в код
Код - C# [Выбрать]

            const uint RPC_E_SERVERFAULT = 0x80010105;
            const uint HRESULT = 0x800706BA;


Теперь при запуске просто висит и нчиего не происходит, типа бесконечного цикла.
Не понял взаимосвязь.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн marsh_one

  • ADN OPEN
  • Сообщений: 14
  • Карма: 0
Re: Не могу создать com-объект AutoCAD
« Ответ #14 : 23-09-2021, 15:08:25 »
Вот в этой теме.
https://adn-cis.org/forum/index.php?topic=7364.0

Код - C# [Выбрать]
  1.     public partial class Form1 : Form
  2.     {
  3.         const int sleep = 500;
  4.         const uint RPC_E_CALL_REJECTED = 0x80010001;
  5.         const uint RPC_E_RETRY = 0x80010109;
  6.         const uint RPC_E_SERVERCALL_RETRYLATER = 0x8001010A;
  7.         const uint RPC_S_SERVER_TOO_BUSY = 1723;
  8.         const uint RPC_E_SERVERFAULT = 0x80010105;
  9.         const uint HRESULT = 0x800706BA;
  10.        
  11.  
  12.         public Form1()
  13.         {
  14.             InitializeComponent();
  15.         }
  16.  
  17.         private static string FormatNumber(string text)
  18.         {
  19.             if (double.TryParse(text, out double number))
  20.             {
  21.                 return number.ToString("N", CultureInfo.CreateSpecificCulture("en-US"));
  22.                 // Console.WriteLine(number);
  23.             }
  24.             return text;
  25.         }
  26.  
  27.         static void WriteErrorMsg(Exception ex, ConsoleColor c)
  28.         {
  29.             ConsoleColor prew = ForegroundColor;
  30.             ForegroundColor = c;
  31.  
  32.             Error.WriteLine("\nException (HResult = {0}):\n{1}",ex.HResult, ex.Message);
  33.             ForegroundColor = prew;
  34.         }
  35.  
  36.         /// <summary>
  37.         /// Проверка доступности COM объекта Application,
  38.         /// представляющего экземпляр AutoCAD.
  39.         /// </summary>
  40.         /// <param name="app">COM объект Application.</param>
  41.         /// <returns>Возвращается true в случае готовности
  42.         /// объекта Application к работе. В противном случае
  43.         /// возвращается false.</returns>
  44.         ///
  45.         static bool CheckReady(object app)
  46.         {
  47.  
  48.             if (app == null)
  49.                 return false;
  50.  
  51.             dynamic acad = app;
  52.             bool isQuiescent = false;
  53.  
  54.             while (true)
  55.             {
  56.                 try
  57.                 {
  58.                     dynamic state = acad.GetAcadState();
  59.                     isQuiescent = state.IsQuiescent;
  60.                     break;
  61.                 }
  62.                 catch (COMException ex)
  63.                 {
  64.                     uint err = (uint)ex.ErrorCode;
  65.                     switch (err)
  66.                     {
  67.                         case RPC_E_CALL_REJECTED:
  68.                         case RPC_E_RETRY:
  69.                         case RPC_E_SERVERCALL_RETRYLATER:
  70.                         case RPC_S_SERVER_TOO_BUSY:
  71.                         case RPC_E_SERVERFAULT:
  72.                         case HRESULT:
  73.  
  74.                         {
  75.                                 WriteErrorMsg(ex, ConsoleColor.Yellow);
  76.                                 Thread.Sleep(sleep);
  77.                                 break;
  78.                             }
  79.                         default:
  80.                             {
  81.                                 WriteErrorMsg(ex, ConsoleColor.Red);
  82.                                 throw;
  83.                             }
  84.                     }
  85.                 }
  86.                 catch (Exception ex)
  87.                 {
  88.                     WriteErrorMsg(ex, ConsoleColor.Red);
  89.                     throw;
  90.                 }
  91.             }
  92.             return isQuiescent;
  93.         }
  94.  
  95.         /// <summary>
  96.         /// Получить COM объект Application.
  97.         /// </summary>
  98.         /// <param name="func">Лямбда-выражение, возвращающее
  99.         /// искомый COM объект Application.</param>
  100.         /// <returns>Возвращается COM объект Application.
  101.         /// </returns>
  102.         static object GetApp(Func<object> func)
  103.         {
  104.  
  105.             if (func == null)
  106.             {
  107.                 throw new ArgumentNullException(nameof(func));
  108.             }
  109.  
  110.             while (true)
  111.             {
  112.                 try
  113.                 {
  114.                     object obj = func();
  115.                     return obj;
  116.                 }
  117.                 catch (COMException ex)
  118.                 {
  119.                     uint err = (uint)ex.ErrorCode;
  120.                     switch (err)
  121.                     {
  122.                         case RPC_E_CALL_REJECTED:
  123.                         case RPC_E_RETRY:
  124.                         case RPC_E_SERVERCALL_RETRYLATER:
  125.                         case RPC_S_SERVER_TOO_BUSY:
  126.                         case RPC_E_SERVERFAULT:
  127.                         case HRESULT:
  128.                             {
  129.                                 WriteErrorMsg(ex, ConsoleColor.Yellow);
  130.                                 Thread.Sleep(sleep);
  131.                                 break;
  132.                             }
  133.                         default:
  134.                             {
  135.                                 WriteErrorMsg(ex, ConsoleColor.Red);
  136.                                 throw;
  137.                             }
  138.                     }
  139.                 }
  140.                 catch (Exception ex)
  141.                 {
  142.                     WriteErrorMsg(ex, ConsoleColor.Red);
  143.                     throw;
  144.                 }
  145.             }
  146.         }
  147.  
  148.  
  149.         //
  150.         /// <summary>
  151.         /// Метод предназначен для получения COM-объекта или
  152.         /// значения его свойств. Или же для вызова метода COM-
  153.         /// объекта, возвращающего некоторое значение.
  154.         /// </summary>
  155.         /// <param name="app">COM объект Application.</param>
  156.         /// <param name="func">Лямбда-выражение, подлежащее
  157.         /// выполнению.</param>
  158.         /// <returns>Возвращаемый тип Object вызывающая сторона
  159.         /// должна присваивать dynamic-переменной, дабы можно
  160.         /// было полноценно использовать свойства, методы и
  161.         /// события полученного объекта (без рефлексии).
  162.         /// </returns>
  163.         static object CallFunc(object app, Func<object> func)
  164.         {
  165.                 if (app == null)
  166.                 throw new ArgumentNullException(nameof(app));
  167.  
  168.             if (func == null)
  169.                 throw new ArgumentNullException(nameof(func));
  170.  
  171.             while (!CheckReady(app))
  172.             {
  173.                 // ждём, когда приложение будет готово...
  174.             }
  175.  
  176.             object obj = func();
  177.             return obj;
  178.         }
  179.  
  180.         /// <summary>
  181.         /// Метод предназначен для изменения свойств COM-объекта
  182.         /// , или же для вызова метода COM-объекта, ничего не
  183.         /// возвращающего в качестве результата.
  184.         /// </summary>
  185.         /// <param name="app">COM объект Application.</param>
  186.         /// <param name="func">Лямбда-выражение, подлежащее
  187.         /// выполнению.</param>
  188.         static void DoAction(object app, Action func)
  189.         {
  190.  
  191.             if (app == null)
  192.                 throw new ArgumentNullException(nameof(app));
  193.  
  194.             if (func == null)
  195.                 throw new ArgumentNullException(nameof(func));
  196.  
  197.             while (!CheckReady(app))
  198.             {
  199.                 // ждём, когда приложение будет готово...
  200.             }
  201.  
  202.             func();
  203.         }

Я по сути делаю, тоже , что и у автора этой темы. Но выскакивают ошибки.
Я их добавлял в исключения.

Код - C# [Выбрать]
  1.         const uint RPC_E_SERVERFAULT = 0x80010105;
  2.         const uint HRESULT = 0x800706BA;

Сейчас когда заупскаю приложение, просто висит и нчиего не происходит.

Как вызвать окно показанное Вами на скрине?



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

  • Administrator
  • *****
  • Сообщений: 13077
  • Карма: 1687
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Не могу создать com-объект AutoCAD
« Ответ #15 : 23-09-2021, 15:14:52 »
RPC_E_SERVERFAULT
Это ошибка сервера. С ней ничего сделать нельзя.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13077
  • Карма: 1687
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Не могу создать com-объект AutoCAD
« Ответ #16 : 23-09-2021, 15:15:32 »
Как вызвать окно показанное Вами на скрине?
Свойства проекта в Visual Studio:



Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн marsh_one

  • ADN OPEN
  • Сообщений: 14
  • Карма: 0
Re: Не могу создать com-объект AutoCAD
« Ответ #17 : 23-09-2021, 15:39:30 »
RPC_E_SERVERFAULT
Это ошибка сервера. С ней ничего сделать нельзя.

Т.е. а такой подход что использован в коде никак не решит эту проблему?

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

  • Administrator
  • *****
  • Сообщений: 13077
  • Карма: 1687
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Не могу создать com-объект AutoCAD
« Ответ #18 : 23-09-2021, 15:44:19 »
Т.е. а такой подход что использован в коде никак не решит эту проблему?
Проблему с RPC_E_SERVERFAULT кодом решить нельзя. Нужно понять почему эта ошибка возникает. В отличие от остальных ошибок, когда сервер занят, и повторное обращение через какое-то время может исправить ошибку, эта ошибка постоянная. AutoCAD при этом запускается?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн marsh_one

  • ADN OPEN
  • Сообщений: 14
  • Карма: 0
Re: Не могу создать com-объект AutoCAD
« Ответ #19 : 23-09-2021, 15:47:03 »
Нет. Атокад не запускается.
Автокад пытаюсь вызвать так:
Код - C# [Выбрать]
  1.                 Type comAppType = Type.GetTypeFromProgID("AutoCAD.Application");
  2.  
  3.                 dynamic app = GetApp(() => Activator.CreateInstance(comAppType));
  4.  
  5.  
  6.  
  7.                 if (app == null)
  8.                 {
  9.                     WriteLine("Не удалось получить объект Application Press any key for exit...");
  10.                     ReadKey();
  11.                     return;
  12.                 }
  13.  
  14.                 dynamic docs = CallFunc((object)app,() => app.Documents);
  15.                 Открываем существующий документ
  16.                 dynamic doc1 = CallFunc((object)app,() => docs.Open(@"fileName"));
  17.  
  18.                 // по умолчанию Visible установлен в false
  19.                 DoAction((object)app, () => app.Visible = true);
  20.  
  21.                 WriteLine("\nPress any key for dociments close...");
  22.                 ReadKey();

fileName - путь.
Просто форма висит и всё..

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

  • Administrator
  • *****
  • Сообщений: 13077
  • Карма: 1687
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Не могу создать com-объект AutoCAD
« Ответ #20 : 23-09-2021, 15:50:43 »
marsh_one,
Пройдись под отладчиком. RPC_E_SERVERFAULT убери. Разберись создаётся ли app.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн marsh_one

  • ADN OPEN
  • Сообщений: 14
  • Карма: 0
Re: Не могу создать com-объект AutoCAD
« Ответ #21 : 23-09-2021, 16:43:19 »
Удалил.
Код - C# [Выбрать]
  1. const uint RPC_E_SERVERFAULT = 0x80010105;
Форма также висит.
Ничего не изменилось.
Как проверить, что арр содается?

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

  • Administrator
  • *****
  • Сообщений: 13077
  • Карма: 1687
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Не могу создать com-объект AutoCAD
« Ответ #22 : 23-09-2021, 16:54:42 »
Как проверить, что арр содается?
Под отладчиком пошаговое выполнение.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13077
  • Карма: 1687
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Не могу создать com-объект AutoCAD
« Ответ #23 : 23-09-2021, 16:57:00 »
P.S.: Это тоже убери:
Код - C# [Выбрать]
  1. case HRESULT:
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13077
  • Карма: 1687
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Не могу создать com-объект AutoCAD
« Ответ #24 : 23-09-2021, 17:04:33 »
const uint HRESULT = 0x800706BA;
Этот код означает, что RPC-сервер недоступен: http://windowsbulletin.com/ru/rpc-server-is-unavailable-error-code-0x800706ba-fix/
Не очень понятно как это связано с данным случаем. Возможно отключена служба RPC в системе:



Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн marsh_one

  • ADN OPEN
  • Сообщений: 14
  • Карма: 0
Re: Не могу создать com-объект AutoCAD
« Ответ #25 : 23-09-2021, 17:28:01 »


Убрал   
Код - C# [Выбрать]
  1.     case HRESULT:
Форма висит.
ЕСли убрать строку
Код - C# [Выбрать]
  1.                 dynamic doc1 = CallFunc((object)app,() => docs.Open(@"fileName"));
.
ТО могу форму, зажав ЛКМ можно двигать.
Александр, а в отладчике пошагово как реализовать? Шаг с заходом?



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

  • Administrator
  • *****
  • Сообщений: 13077
  • Карма: 1687
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Не могу создать com-объект AutoCAD
« Ответ #26 : 23-09-2021, 17:31:06 »
Александр, а в отладчике пошагово как реализовать? Шаг с заходом?
Конечно. Нужно же понять создался ли AutoCAD как COM-сервер.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн marsh_one

  • ADN OPEN
  • Сообщений: 14
  • Карма: 0
Re: Не могу создать com-объект AutoCAD
« Ответ #27 : 23-09-2021, 17:40:55 »
Запустив "шаг с обходом" где можно посмотреть пошагово?

Оффлайн marsh_one

  • ADN OPEN
  • Сообщений: 14
  • Карма: 0
Re: Не могу создать com-объект AutoCAD
« Ответ #28 : 23-09-2021, 17:43:20 »



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

  • Administrator
  • *****
  • Сообщений: 13077
  • Карма: 1687
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Не могу создать com-объект AutoCAD
« Ответ #29 : 23-09-2021, 18:03:33 »
Поставь точку останова здесь:
Код - C# [Выбрать]
  1. Type comAppType = Type.GetTypeFromProgID("AutoCAD.Application");
После этого выполни пошаговую отладку.
P.S.: Я так понимаю, что тебе нужно заняться изученим возможностей MS Visual Studio.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн marsh_one

  • ADN OPEN
  • Сообщений: 14
  • Карма: 0
Re: Не могу создать com-объект AutoCAD
« Ответ #30 : 27-09-2021, 10:04:22 »
P.S.: Я так понимаю, что тебе нужно заняться изученим возможностей MS Visual Studio.
И не говорите)

Оффлайн marsh_one

  • ADN OPEN
  • Сообщений: 14
  • Карма: 0
Re: Не могу создать com-объект AutoCAD
« Ответ #31 : 27-09-2021, 10:31:55 »
Александр Ривилис, доброе утро.
Вроде с пошаговой разобрался.


Оффлайн marsh_one

  • ADN OPEN
  • Сообщений: 14
  • Карма: 0
Re: Не могу создать com-объект AutoCAD
« Ответ #32 : 27-09-2021, 12:29:01 »
const uint HRESULT = 0x800706BA;
Этот код означает, что RPC-сервер недоступен: http://windowsbulletin.com/ru/rpc-server-is-unavailable-error-code-0x800706ba-fix/
Не очень понятно как это связано с данным случаем. Возможно отключена служба RPC в системе:


Проверил указанные службы. Всё работает.

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

  • Administrator
  • *****
  • Сообщений: 13077
  • Карма: 1687
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Не могу создать com-объект AutoCAD
« Ответ #33 : 27-09-2021, 14:31:46 »
marsh_one,
Ну значит у тебя совсем не запускается AutoCAD через COM/ActiveX. Вполне возможно что у тебя плохо установлен AutoCAD или проблемы с Windows.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн marsh_one

  • ADN OPEN
  • Сообщений: 14
  • Карма: 0
Re: Не могу создать com-объект AutoCAD
« Ответ #34 : 27-09-2021, 15:45:20 »
Корпоративная машина. Антивирь и прочее отключил...Странно.
Попробую попросить установить 2014. Вроде как самый наименее глючный.
Спасибо. Завтра отпишусь.

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

  • Administrator
  • *****
  • Сообщений: 13077
  • Карма: 1687
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Не могу создать com-объект AutoCAD
« Ответ #35 : 27-09-2021, 15:48:22 »
Корпоративная машина.
Причина может именно в этом, если есть ограничение прав.
Попробую попросить установить 2014. Вроде как самый наименее глючный.
Если это Windows 10, то AutoCAD 2014 на ней не поддерживается.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн marsh_one

  • ADN OPEN
  • Сообщений: 14
  • Карма: 0
Re: Не могу создать com-объект AutoCAD
« Ответ #36 : 29-09-2021, 11:37:03 »
Александр Ривилис, Добрый день.
Александр, установил 2014. Всё заработало )
Спасибо.
Но я далее стал по вашему форуму копаться, т.к. задача стоит по нахождению и изменению объектов в документе.
Нашёл следующую тему.
https://adn-cis.org/forum/index.php?topic=10341.0
Вроде в целом всё ясно. Попробовал применить к своей задаче, исключив список.
Ругается на вот этот фрагмент. (см. скрин).




Подскажите с чем может быть связано?

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

  • Administrator
  • *****
  • Сообщений: 13077
  • Карма: 1687
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Не могу создать com-объект AutoCAD
« Ответ #37 : 29-09-2021, 12:01:28 »
Подскажите с чем может быть связано?
Один вопрос - одна тема! Создай новую тему, приведи нормальный кусок кода и тебе попробуют помочь.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн marsh_one

  • ADN OPEN
  • Сообщений: 14
  • Карма: 0
Re: Не могу создать com-объект AutoCAD
« Ответ #38 : 29-09-2021, 12:28:47 »
ок. Понял. Сейчас пока сам покопаю.
Спасибо за помощь.