Revit не находит класс

Автор Тема: Revit не находит класс  (Прочитано 5006 раз)

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

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

  • ADN OPEN
  • **
  • Сообщений: 62
  • Карма: 3
  • Skype: ant_nkh
Revit не находит класс
« : 04-06-2017, 14:02:29 »
Подскажите, пожалуйста, что не так.
Сообщение об ошибке
При инициализации надстройки "helloworld" произошел сбой, так как в сборке надстройки не найден класс "helloworld".
Значение FullClassName указывает точку входа, в которой из Revit выполняется вызов приложения-надстройки. Для запуска надстройки средствами Revit необходимо , чтобы для этого класса был реализован интерфейс ”Autodesk.Revit.UI.IExternalCommand".

Код - vb.net [Выбрать]
  1. Imports Autodesk.Revit.UI
  2. Imports Autodesk.Revit.Attributes
  3.  
  4. <Transaction(TransactionMode.Manual)>
  5. Public Class helloworld
  6.     Implements IExternalCommand
  7.     Public Function Execute(ByVal commandData As ExternalCommandData,
  8.                             ByRef message As String,
  9.                             ByVal elements As Autodesk.Revit.DB.ElementSet) _
  10.     As Result Implements IExternalCommand.Execute
  11.  
  12.         TaskDialog.Show("My Dialog Title", "Hello World!")
  13.         Return Result.Succeeded
  14.     End Function
  15. End Class
  16.  


Visual Studio 2015
Revit 2015
« Последнее редактирование: 04-06-2017, 16:20:32 от Александр Ривилис »

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Revit не находит класс
« Ответ #1 : 04-06-2017, 17:01:26 »
На всякий случай уточняю про правило форматирования кода для нашего форума (ссылка у меня в подписи).
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Revit не находит класс
« Ответ #2 : 05-06-2017, 06:51:59 »
annt, выложите сюда файл манифеста с описанием надстройки.

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

  • ADN OPEN
  • **
  • Сообщений: 62
  • Карма: 3
  • Skype: ant_nkh
Re: Revit не находит класс
« Ответ #3 : 05-06-2017, 10:34:37 »
Код - XML [Выбрать]
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RevitAddIns>
  3. <AddIn Type="Command">
  4. <Assembly>E:\temp\helloworld\helloworld\bin\Debug\helloworld.dll</Assembly>
  5. <FullClassName>helloworld</FullClassName>
  6. <Text>helloworld</Text>  
  7. <AddInId>502fe383-2648-4e98-adf8-5e6047f9dc55</AddInId>
  8. <VendorId>ADSK</VendorId>
  9. <VisibilityMode>AlwaysVisible</VisibilityMode>
  10. </AddIn>
  11. </RevitAddIns>

А что значит с описанием надстройки?

« Последнее редактирование: 05-06-2017, 10:35:54 от Александр Ривилис »

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Revit не находит класс
« Ответ #4 : 05-06-2017, 11:21:19 »
А что значит с описанием надстройки?
ну я и имел ввиду файл манифеста, где описывается инициализация надстройки. :)

Есть подозрение что это связано с особенностями VB.NET. Я вижу, что класс объявлен за пределами namespace. FullClassName должно включать в себя и имя namespace. Возможно в VB.NET есть какой-то namespace по-умолчанию.
Я бы начал с того, что явно задал namespace в коде и в манифесте.

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

  • ADN OPEN
  • **
  • Сообщений: 62
  • Карма: 3
  • Skype: ant_nkh
Re: Revit не находит класс
« Ответ #5 : 05-06-2017, 12:23:24 »
Как-то так?
Код - XML [Выбрать]
  1. <Namespace>helloworld</Namespace>

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Revit не находит класс
« Ответ #6 : 05-06-2017, 12:40:20 »
неа, как то так.
Код - vb.net [Выбрать]
  1. Imports Autodesk.Revit.UI
  2. Imports Autodesk.Revit.Attributes
  3.  
  4. Namespace ADNCIS
  5.  
  6. <Transaction(TransactionMode.Manual)>
  7. Public Class helloworld
  8.     Implements IExternalCommand
  9.     Public Function Execute(ByVal commandData As ExternalCommandData,
  10.                             ByRef message As String,
  11.                             ByVal elements As Autodesk.Revit.DB.ElementSet) _
  12.     As Result Implements IExternalCommand.Execute
  13.  
  14.         TaskDialog.Show("My Dialog Title", "Hello World!")
  15.         Return Result.Succeeded
  16.     End Function
  17. End Class
  18. End Namespace
  19.  


А в манифесте -
Код - XML [Выбрать]
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RevitAddIns>
  3. <AddIn Type="Command">
  4. <Assembly>E:\temp\helloworld\helloworld\bin\Debug\helloworld.dll</Assembly>
  5. <FullClassName>ADNCIS.helloworld</FullClassName>
  6. <Text>helloworld</Text>  
  7. <AddInId>502fe383-2648-4e98-adf8-5e6047f9dc55</AddInId>
  8. <VendorId>ADSK</VendorId>
  9. <VisibilityMode>AlwaysVisible</VisibilityMode>
  10. </AddIn>
  11. </RevitAddIns>
  12.  

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

  • ADN OPEN
  • **
  • Сообщений: 62
  • Карма: 3
  • Skype: ant_nkh
Re: Revit не находит класс
« Ответ #7 : 05-06-2017, 12:58:29 »
Достаточно только в манифесте указать
Код - XML [Выбрать]
  1. <FullClassName>helloworld.helloworld</FullClassName>
В самом коде не надо явно указывать namespace.
Спасибо.

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Revit не находит класс
« Ответ #8 : 05-06-2017, 13:46:37 »
Достаточно только в манифесте указать
Я о чем и говорил, что это особенности VB.NET. Похоже где то на уровне выше объявлен namespace и явно не виден в коде.
У вас проект называется helloworld? Я отменил ваш ответ как Решение, по двум причинам:
1) У вас класс и namespace называется одинакового. Можно легко подумать, что в файле манифеста в полном имени файла надо всегда указывать НазваниеКласса.НазваниеКласса. Хотя полное имя класса включает в себя именно namespace.ClassName.
2) Ответ на вопрос дал я. А именно, что в свойство FullClassName должно включать в себя и имя namespace. У вас оно не было задано.

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

  • ADN OPEN
  • **
  • Сообщений: 62
  • Карма: 3
  • Skype: ant_nkh
Re: Revit не находит класс
« Ответ #9 : 05-06-2017, 14:37:37 »
Namespace задан в свойствах проекта, раздел Приложение - Корневое пространство имен.
Класс и проект названы одинаково т.к. это просто проба пера, конечно надо по-разному.
Да, ответ дали Вы, спасибо еще раз.

Оффлайн nikolay_tjm

  • ADN OPEN
  • Сообщений: 9
  • Карма: -8
Re: Revit не находит класс
« Ответ #10 : 29-10-2018, 17:53:02 »
На всякий случай уточняю про правило форматирования кода для нашего форума (ссылка у меня в подписи).

какой то админ тут возбужденный - пристает ко всем со своими поправками - тут некогда что либо читать - нужно иногда получить помощи и чем быстрее тем лучше - а тут еще читайте поправки.. вы не так оформили... вы вообще что то сделали тут ...

первый раз такой форум вижу - что бы толком люди мало помогают - а выставляют тебя идиотом - с ходу!

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Revit не находит класс
« Ответ #11 : 29-10-2018, 18:06:29 »
nikolay_tjm
Первое предупреждение. Второго не будет. Будет бан. Действия администрации не обсуждаются.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Revit не находит класс
« Ответ #12 : 29-10-2018, 19:05:42 »
какой то админ тут возбужденный - пристает ко всем со своими поправками - тут некогда что либо читать - нужно иногда получить помощи и чем быстрее тем лучше - а тут еще читайте поправки.. вы не так оформили... вы вообще что то сделали тут ...
А вы думаете, что тем, кто может Вам чем-то помочь, хочется читать неоформленный код и пытаться в нём разобраться?!  :o