COM API для AcCoreConsole

Автор Тема: COM API для AcCoreConsole  (Прочитано 10563 раз)

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

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
COM API для AcCoreConsole
« : 11-04-2014, 12:00:22 »
Очень плохо, что отсутствует COM API для работы с AcCoreConsole.exe -  это не позволяет использовать утилиту программно в следующих ситуациях:

1. Из внешнего приложения быстро создать объект приложения  AutoCAD, без мелькания GUI и программно выполнить нужную работу.
2. Из внешнего приложения получить объект уже запущенного консольного приложения  AutoCAD и программно выполнить нужную работу.
3. Быстро запускать на выполнение модульные тесты плагинов AutoCAD, написанные при помощи библиотек Gallio (пока приходится пользоваться acad.exe и "три часа" ждать - когда же этот "тормоз" (acad.exe) в очередной раз загрузится).

Если бы GUI-версия AutoCAD запускалась быстро, то отсутствие COM API для AcCoreConsole.exe было бы не так ощутимо. Но поскольку скорость запуска, мягко говоря, ниже плинтуса, то тем острее встаёт обозначенная проблема.

Было бы неплохо поставить в перечень задач реализацию COM API для работы с AcCoreConsole.exe - собственно это и предлагаю.
« Последнее редактирование: 11-04-2014, 12:39:31 от Андрей Бушман »

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: COM API для AcCoreConsole
« Ответ #1 : 11-04-2014, 14:42:25 »
Было бы неплохо поставить в перечень задач реализацию COM API для работы с AcCoreConsole.exe - собственно это и предлагаю.
Пожелание передал.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: COM API для AcCoreConsole
« Ответ #2 : 11-04-2014, 16:10:28 »
Спасибо.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: COM API для AcCoreConsole
« Ответ #3 : 15-04-2014, 15:56:28 »
Получил ответ от ADN DevHelp, что пожелание передано разработчикам, но вероятность появления COM в AcCoreConsole мала, так как это приложение стараются делать кроссплатформенным (Windows/Mac), а на Mac понятия COM/ActiveX нет.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: COM API для AcCoreConsole
« Ответ #4 : 15-04-2014, 16:02:24 »
На MacOS отсутствует и .NET Framework (Mono является дополнительным ПО), однако это не мешает Autodesk во всю использовать WPF при построении графического интерфейса AutoCAD и вряд ли они собираются переползать на кроссплатформенный Qt. Я же не просил реализовывать COM именно для MacOS - понятное дело, что речь о Windows, поскольку тем, кто пишет под эту ОС обозначенный API был бы не лишним. В общем я понял: самостоятельно, через сокеты.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: COM API для AcCoreConsole
« Ответ #5 : 15-04-2014, 16:15:41 »
однако это не мешает Autodesk во всю использовать WPF при построении графического интерфейса AutoCAD и вряд ли они собираются переползать на кроссплатформенный Qt.
Это только в Windows и на уровне интерфейса, а не ядра. А вот AcCoreConsole - это на уровне ядра, т.е. такое, которое на уровне исходников должно работать и в Windows, и в Mac.

Небольшие размышления. Если добавить в Windows-версию функционал, которого не будет под Mac, то это уже будут совсем разные консоли. Понадобится делать сервер под разные разрядности Windows. И по количеству кода добавление COM-сервера увеличит консоль в несколько (если не в десятки) раз и сделает его "тормознутым, как сам AutoCAD".  После этого станет вопрос: "А зачем тогда такая консоль нужна, если можно пользоваться самим AutoCAD без остальных ограничений?".
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
Re: COM API для AcCoreConsole
« Ответ #6 : 15-04-2014, 16:25:49 »
Судя по динамике развития (ее отсутствия) объектной модели автокада - ИХМО врядли - думаю оставят поддержку COM "как есть" - типа неперспективное направление.
з.ы. Андрею по поводу кроплатформености - не очень корректное сравнение - ничто не мешает добавить Mono в общий дистрибутив автокада (оно-же как и сделанно с .Net для виндов) - то есть, оно хоть и дополнительное, но вполне рабочее.

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: COM API для AcCoreConsole
« Ответ #7 : 15-04-2014, 16:26:17 »
Если вместо COM будет какая-то иная реализация (наприме те же sockets, которые присутствуют в любой OS), перекрывающая обозначенные мною выше вопросы, то меня и такая альтернатива вполне устроит. Мне, собственно, важен конечный результат, а как именно его решат реализовать - это уж на откуп разработчиков.

На данный момент мне придётся писать свой плагин, с которым (после его загрузки в accoreconsole) можно будет общаться из внешнего приложения посредством сокетов, передавая команды, которые плагином будут отправляться в консоль (упрощённый вариант взаимодействия). Т.е. действовать в обход отсутствующего COM API.

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: COM API для AcCoreConsole
« Ответ #8 : 15-04-2014, 16:28:05 »
з.ы. Андрею по поводу кроплатформености - не очень корректное сравнение - ничто не мешает добавить Mono в общий дистрибутив (оно-же как и сделанно для виндов) - то есть, оно хоть и дополнительное, но вполне рабочее.
Это я понимаю. В своём тексте имел в виду, что Mono не поставляется "в коробке" с операционкой, а является дополнительным ПО. Я, собственно, всеми руками и ногами "за" Mono.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: COM API для AcCoreConsole
« Ответ #9 : 15-04-2014, 16:28:55 »
На данный момент мне придётся писать свой плагин, с которым, после его загрузки в accoreconsole) можно будет общаться из внешнего приложения посредством сокетов, передавая команды, которые плагином будут отправляться в консоль (упрощённый вариант взаимодействия). Т.е. действовать в обход отсутствующего COM API.
Ну так сделай свой COM-сервер (как .NET-приложение) и управляй через него AutoCAD. :)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: COM API для AcCoreConsole
« Ответ #10 : 15-04-2014, 16:31:20 »
Ну так сделай свой COM-сервер (как .NET-приложение) и управляй через него AutoCAD.
Возможно я вас не верно понимаю... Ну и как я с помощью этого COM сервера смогу управлять accoreconsole (сокеты пока не в счёт...)?

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: COM API для AcCoreConsole
« Ответ #11 : 15-04-2014, 16:36:50 »
Если твоё .NET-приложение является COM-сервером и загружено в AcCoreConsole (или в AutoCAD), то обращаясь извне к нему как к COM-серверу ты можешь управлять AutoCAD в той степени, в которой у тебя развит COM-сервер. Об этом неоднократно писал Зуев Сергей Александрович (ShaggyDoc)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
Re: COM API для AcCoreConsole
« Ответ #12 : 15-04-2014, 16:56:11 »
ты можешь управлять AutoCAD в той степени, в которой у тебя развит COM-сервер
ИХМО "развивать" свой COM сервер под "общие" задачи это утопия (то есть вполне можно, но этим надо "всю жизнь" заниматься - т.к. функционал непрерывно растет). Единственно правильным я вижу настройку интерфейса COM(либо другая технология)->.Net(via Reflection). Я уже писал http://adn-cis.org/forum/index.php?topic=349.msg1028#msg1028 что делал такое на лиспе - но "оно" не похоже на нормальный лисп - а как корове седло - ехать можно, но не красиво и не удобно (из-за разности подхода функционального и императивного программирования) - получилась такая-же халтура как и реализация vla в автолиспе, а сделать нормально - так и не разродился. Но если технологии "родственные" (как в случае с COM), то этой неприятности и не будет как таковой.
з.ы. в любом случае я бы сейчас сильно задумался о настройки интерфейса именно через COM.
з.з.ы. то А. Ривилис - Сергей Александрович по моему "пропагандирует" обратную задачу использовать свой COM сервер "из автокада" - то есть с навешанными "внешними плюшками" для расширения лиспа.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: COM API для AcCoreConsole
« Ответ #13 : 15-04-2014, 17:16:56 »
з.з.ы. то А. Ривилис - Сергей Александрович по моему "пропагандирует" обратную задачу использовать свой COM сервер "из автокада" - то есть с навешанными "внешними плюшками" для расширения лиспа.
Да. Это действительно разные задачи. 
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Josser

  • ADN Club
  • Сообщений: 14
  • Карма: 0
Re: COM API для AcCoreConsole
« Ответ #14 : 15-04-2014, 19:25:46 »
Правильно ли я понял, что в AcCoreConsole можно загрузить .NET плагин? Если так, то почему бы не опереться на WCF?
... пути твои в водах многих, и следы твои не познaются.