С# и AutoCAD. Схема взаимодействия.

Автор Тема: С# и AutoCAD. Схема взаимодействия.  (Прочитано 3101 раз)

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

Оффлайн LucaАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 114
  • Карма: 0
Здравствуйте, Уважаемые форумчане.
Начну несколько отвлеченно - с аналогии C# и Java (просто с Java всегда C# сравнивают, а с Java я хоть как-то знаком).
В Java всё просто (касательно тог, о чем пойдет речь дальше):
1. Создаем файл any_class.java
Код - Javascript [Выбрать]
  1. public class any_class{
  2.     public static void main (Strings[]  args){ // собственно точка входа в программу
  3.        // собственно код
  4.     }
  5.     public static int any_method (){ модификаторы и типы аргументов, естественно могут быть разные
  6.       // код метода
  7.     }
  8.    
  9. }
2. выполняем
> javac any_class.java3. получаем any_class.class. пишем
java any_classмог, конечно, что-нибудь немного напутать, на память, но суть такова.
Причем здесь java? - спросите Вы.
C# очень часто сравнивают именно с Java и значит аналогия уместна.
Теперь вопрос именно по C# и AutoCAD (можно, конечно, пытаться читать официальную документацию, но там, в документации не всё так гладко):
Можно аналогично расписать шаги для C# и AutoCAD?
Насколько я понял, конструкция namespace x { } - необязатльна (по аналогии с С++). Может это надо МЫ для организации проекта - не уверен...
1. Пишем класс
Код - C# [Выбрать]
  1. using Autodesk.AutoCAD.Runtime;
  2. // using Autodesk.AutoCAD.ApplicationServices; - это не нужно, я так понял
  3. using Autodesk.AutoCAD.ApplicationServices.Core; // в этом пространстве находится Application->Document->...  по-сути, вся иерархия объектов
  4. using Autodesk.AutoCAD.DatabaseServices;
  5. public class myclass {
  6.     public static void main () {} // в случае с автокадом оно надо?
  7.     [CommandMethod("ListEntities")] // это, я так понял, команда, которая будет использоваться в командной строке автокада
  8.     public static void ListEntities(){
  9.         // тут, собственно, код метода ListEntities
  10.     }
  11.     [CommandMethod("ListEntities_2")] // а вот так можно делать? можно несколько команд в одном классе или одна команда [CommandMethod("xxx")] - один класс (файл)?
  12.     public static void ListEntities(){
  13.         // тут, собственно, код метода ListEntities_2
  14.     }
  15. }
2. как-то это компилируем
???3. получаем файл ... какого-то расширения (что мы в C# должны получить? .exe, .dll ...)
4. командой NETLOAD грузим то, что получилось в консоли автокада и получаем возможность выполнить команду
ListEntitiesа может и
ListEntities_2
Правильно я себе всё это домыслил или нет?
пункты 2, 3  относятся к VS и C#
« Последнее редактирование: 03-11-2019, 15:06:53 от Александр Ривилис »

Отмечено как Решение Luca 03-11-2019, 12:18:09

Оффлайн LucaАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 114
  • Карма: 0
Re: С# и AutoCAD. Схема взаимодействия.
« Ответ #1 : 03-11-2019, 12:07:36 »
Всё, сам ответил на все свои вопросы ))
2. Сборка->Собрать решение
3. the_name_of_solution.dll ( всё-таки .dll)
4. NETLOAD и грузим dll.  Можно использовать несколько команд.

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: С# и AutoCAD. Схема взаимодействия.
« Ответ #2 : 03-11-2019, 15:07:54 »
Luca,
Ознакомься с правилом форматирования кода на нашем форуме (у меня в подписи) и соблюдай его!
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение