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

ADN Club => AutoCAD .NET API => Тема начата: Atomohod от 07-05-2018, 20:42:59

Название: autocad видит команды только наполовину
Отправлено: Atomohod от 07-05-2018, 20:42:59
Здравствуйте!
Прошу помощи. Есть файл проекта *.csproj, в нем два класса *.cs, в первом я пишу команды для работы с линиями, во втором для работы с блоками. Cобираю библиотеку *.dll и загружаю в автокад, команды из первого класса видны внутри автокада, ни одна команда из второго не видна. В чем причина? Я не понимаю. Неужели нужно писать для автокада проекты только из одного класса?

Матчасть:
Autocad 2015, Visual Studio 2017 Ent.
Название: Re: autocad видит команды только наполовину
Отправлено: Александр Ривилис от 07-05-2018, 20:55:49
Atomohod,
Приветствую на форуме!
В коде есть что-то типа такого:
Код - C# [Выбрать]
  1. [assembly: CommandClass(typeof(NameSpace.ClassName))]
?
Название: Re: autocad видит команды только наполовину
Отправлено: Atomohod от 07-05-2018, 21:42:28
Нет, такую директиву я не добавлял, но и без нее собиралось и работало без ошибок, в документации к API я ее не встречал как обязательную.
Название: Re: autocad видит команды только наполовину
Отправлено: Александр Ривилис от 07-05-2018, 21:45:04
Причин может быть несколько. Проще всего будет если ты выложишь весь проект в архиве.
Название: Re: autocad видит команды только наполовину
Отправлено: Atomohod от 07-05-2018, 22:25:45

Выкладываю- файл не прикрепляется, пишет ошибку размера, хотя у меня меньше 10 мб в zip архиве.
Причин может быть несколько. Проще всего будет если ты выложишь весь проект в архиве.
Название: Re: autocad видит команды только наполовину
Отправлено: Александр Ривилис от 07-05-2018, 22:28:41
Выкладываю- файл не прикрепляется, пишет ошибку размера, хотя у меня меньше 10 мб в zip архиве.
У тебя в архиве похоже куча мусора.
Название: Re: autocad видит команды только наполовину
Отправлено: Atomohod от 07-05-2018, 22:31:49
Какие конкретно файлы проекта нужно выложить *.cs, *.csproj, *.sln?
Название: Re: autocad видит команды только наполовину
Отправлено: Александр Ривилис от 07-05-2018, 22:36:42
Проверь у себя:

(https://farm1.staticflickr.com/823/40151890220_9574c57cfb_o.png)

Тестовый проект приложил.


Название: Re: autocad видит команды только наполовину
Отправлено: Александр Ривилис от 07-05-2018, 22:37:36
Какие конкретно файлы проекта нужно выложить *.cs, *.csproj, *.sln?
Те, которых достаточно для компиляции проекта.
Название: Re: autocad видит команды только наполовину
Отправлено: Atomohod от 07-05-2018, 22:53:57
Почистил архив
Название: Re: autocad видит команды только наполовину
Отправлено: Atomohod от 07-05-2018, 22:55:16
Проверь у себя:



Тестовый проект приложил.

проект собрал, запустил-команды видны.
Название: Re: autocad видит команды только наполовину
Отправлено: Александр Ривилис от 07-05-2018, 22:57:27
Первое, что увидел у тебя, это что класс PositionHandler не имеет атрибута public. Этого достаточно, чтобы AutoCAD его не видел.
Название: Re: autocad видит команды только наполовину
Отправлено: Александр Ривилис от 07-05-2018, 22:58:58
проект собрал, запустил-команды видны.
Что и требовалось доказать. Сделай у себя по образцу и подобию.
Название: Re: autocad видит команды только наполовину
Отправлено: Atomohod от 07-05-2018, 23:11:38
Спасибо, попробую переписать. Но вопрос все же остался- какие модификаторы доступа можно применять в автокаде? Считается, что public нарушает инкапсуляцию и вообще крайне не приветствуется в коде. Или я не так это понимаю?
Название: Re: autocad видит команды только наполовину
Отправлено: Александр Ривилис от 07-05-2018, 23:15:53
Но вопрос все же остался- какие модификаторы доступа можно применять в автокаде?
Можно применять любые, но класс, содержащий командные методы, должен быть public. И методы, которые реализуют команды, тоже должны быть public.