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

ADN Club => AutoCAD .NET API => Тема начата: dmitrykit от 21-12-2016, 21:16:38

Название: В каких файлах искать .NET библиотеки
Отправлено: dmitrykit от 21-12-2016, 21:16:38
Пишу на PERL. Возможностей OLE нехватает.
впервые вступаю на тропу .NET.
Помогите разобраться в каких .dll что искать.
впервую очередь интересует boundary API.
Название: Re: В каких файлах искать .NET библиотеки
Отправлено: avc от 21-12-2016, 21:23:29
Минимальный комплект:
accoremgd
acdbmgd
acdbmgdbrep - то что вы ищете
acmgd

Еще могут пригодится:
AcCui - настройки Автокада
AcMr
Autodesk.AutoCAD.Interop
Autodesk.AutoCAD.Interop.Common
Название: Re: В каких файлах искать .NET библиотеки
Отправлено: dmitrykit от 21-12-2016, 21:49:18
Благодарю за быстрый ответ. то что искал.

Былбы рад рад небольшому примеру. вроде подключиться к активному окну. и перебрать обьекты.
Название: Re: В каких файлах искать .NET библиотеки
Отправлено: Александр Ривилис от 21-12-2016, 22:32:14
Былбы рад рад небольшому примеру. вроде подключиться к активному окну. и перебрать обьекты.
Что имеется в виду под подключением к активному окну? Используя эти библиотеки вы пишите dll-сборку внутри AutoCAD, а не внешний exe-файл. Во внешнем exe-файле нельзя использовать почти все из перечисленных сборок кроме interop.
Название: Re: В каких файлах искать .NET библиотеки
Отправлено: Максим Маркевич от 22-12-2016, 11:06:55
Былбы рад рад небольшому примеру. вроде подключиться к активному окну. и перебрать обьекты.
Посмотри на хабре (https://habrahabr.ru/users/lostpassword/topics/), у этого паренька есть 6 публикаций, мне кажется, что ты там найдешь небольшие примеры под свои нужды, затронуты почти все базовые темы.
Название: Re: В каких файлах искать .NET библиотеки
Отправлено: dmitrykit от 22-12-2016, 20:09:50
Александр спасибо что прояснили мне некоторые моменты.  interop как я понимаю ничем неотличается от com. И смысла подключать эти библиотеки нет.
Название: Re: В каких файлах искать .NET библиотеки
Отправлено: dmitrykit от 22-12-2016, 20:19:19
как я понимаю чтобы встроиться в пространство автокада мне необходимо получить dll с классом IExtensionApplication
и функциями Initialize и Terminate ? и загрузить через netload. или я чтото недопонимаю?
Название: Re: В каких файлах искать .NET библиотеки
Отправлено: Максим Маркевич от 22-12-2016, 21:22:15
interop как я понимаю ничем неотличается от com. И смысла подключать эти библиотеки нет.
На самом деле, это не так. Некоторые вещи не реализованы или плохо реализованы в .NET, поэтому COM иногда необходим.
как я понимаю чтобы встроиться в пространство автокада мне необходимо получить dll с классом IExtensionApplication
и функциями Initialize и Terminate ? и загрузить через netload. или я чтото недопонимаю?
Initialize и Terminate отвечают за то, что загружается вместе с автокадом, то есть прям в момент его загрузки.
Для того, чтобы "встроиться в пространство автокада" можно еще создать командный метод типа:
Код - C# [Выбрать]
  1. using Autodesk.AutoCAD.ApplicationServices.Core;
  2. using Autodesk.AutoCAD.Runtime;
  3.  
  4. namespace namespaceTest
  5. {
  6.     public class classTest
  7.     {
  8.         [CommandMethod("Vstroika_V_Autocad")]
  9.         public void voidTest()
  10.         {
  11.             // База
  12.             var doc = Application.DocumentManager.MdiActiveDocument;
  13.             if (doc == null)
  14.                 return;
  15.             var db = doc.Database;
  16.             var ed = doc.Editor;
  17.  
  18.             // Получим сообщение о том, встроились ли мы
  19.             ed.WriteMessage("Мы встроились в пространство автокада!");
  20.         }
  21.     }
  22. }
Вот это потом загружаешь через NETLOAD и вызываешь в AutoCAD метод Vstroika_V_Autocad.
И еще парочка ссылок, раз уж ты первую игноришь:
1. Первое приложение для AutoCAD (https://youtu.be/A-QF2fyd2Iw);
2. Здесь можно скачать лабы (http://usa.autodesk.com/adsk/servlet/index?id=1911627&siteID=123112).
Название: Re: В каких файлах искать .NET библиотеки
Отправлено: Александр Ривилис от 22-12-2016, 21:51:41
мне необходимо получить dll с классом IExtensionApplication
и функциями Initialize и Terminate ?
Класс не должен называться IExtensionApplication - он должен реализовывать интерфейс IExtensionApplication, что как раз и означает, что в нём должны быть методы Initialize и Terminate, они должны быть public, не иметь аргументов и ничего не возвращать.
Название: Re: В каких файлах искать .NET библиотеки
Отправлено: avc от 22-12-2016, 23:58:56
и загрузить через netload
Лучше забудь об этом. Пользователь не станет это каждый раз набирать. Пиши сразу нормальный загрузчик под AppAutoLoader - т.е. bundle-папку. Только в таком виде плагин примут в Autodesk AppStore. Теоретически есть еще автозагрузка плагинов через запись реестре.
Название: Re: В каких файлах искать .NET библиотеки
Отправлено: Андрей Бушман от 30-12-2016, 13:23:45
Теоретически есть еще автозагрузка плагинов через запись реестре.
Она не "теоретическая", а самая что ни на есть практическая. BUNDLE-пакеты загружаются в акад именно потому, что по факту, обнаружив их, загрузчик регистрирует их в реестре, а так же добавляет под них кучу путей в Support Files Search Path.
Название: Re: В каких файлах искать .NET библиотеки
Отправлено: Александр Ривилис от 30-12-2016, 16:16:10
BUNDLE-пакеты загружаются в акад именно потому, что по факту, обнаружив их, загрузчик регистрирует их в реестре, а так же добавляет под них кучу путей в Support Files Search Path.
В реестре загрузчик их не регистрирует. Он их обрабатывает по аналогии с обработкой реестра, но реестр не трогает.
Название: Re: В каких файлах искать .NET библиотеки
Отправлено: Андрей Бушман от 30-12-2016, 16:36:19
В реестре загрузчик их не регистрирует. Он их обрабатывает по аналогии с обработкой реестра, но реестр не трогает.
У меня после загрузки BUNDLE регистрационная информация появляется и в реестре... Полез в исходники и увидел, что это мой же код дополнительно и выполняет регистрацию в реестре. :)
Название: Re: В каких файлах искать .NET библиотеки
Отправлено: Александр Ривилис от 30-12-2016, 16:39:07
Полез в исходники и увидел, что это мой же код дополнительно и выполняет регистрацию в реестре. :)
Так ты что ему двойную загрузку устраиваешь? Он дважды конечно не загрузится, но какие-то проблемы возникнуть могут.
Название: Re: В каких файлах искать .NET библиотеки
Отправлено: Андрей Бушман от 30-12-2016, 16:42:40
Так ты что ему двойную загрузку устраиваешь?
В коде забыл разблокировать проверку версии акада, чтобы в реестр записывалось только если акад старее чем 2012.

но какие-то проблемы возникнуть могут.
Я так не думаю.
Название: Re: В каких файлах искать .NET библиотеки
Отправлено: Александр Ривилис от 30-12-2016, 17:01:47
Цитата: Александр Ривилис от 30-12-2016, 15:39:07

    но какие-то проблемы возникнуть могут.

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