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

ADN Club => Revit API => Тема начата: Anatoly от 04-06-2017, 14:02:29

Название: Revit не находит класс
Отправлено: Anatoly от 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
Название: Re: Revit не находит класс
Отправлено: Александр Ривилис от 04-06-2017, 17:01:26
На всякий случай уточняю про правило форматирования кода для нашего форума (ссылка у меня в подписи).
Название: Re: Revit не находит класс
Отправлено: Виктор Чекалин от 05-06-2017, 06:51:59
annt, выложите сюда файл манифеста с описанием надстройки.
Название: Re: Revit не находит класс
Отправлено: Anatoly от 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>

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

Название: Re: Revit не находит класс
Отправлено: Виктор Чекалин от 05-06-2017, 11:21:19
А что значит с описанием надстройки?
ну я и имел ввиду файл манифеста, где описывается инициализация надстройки. :)

Есть подозрение что это связано с особенностями VB.NET. Я вижу, что класс объявлен за пределами namespace. FullClassName должно включать в себя и имя namespace. Возможно в VB.NET есть какой-то namespace по-умолчанию.
Я бы начал с того, что явно задал namespace в коде и в манифесте.
Название: Re: Revit не находит класс
Отправлено: Anatoly от 05-06-2017, 12:23:24
Как-то так?
Код - XML [Выбрать]
  1. <Namespace>helloworld</Namespace>
Название: Re: Revit не находит класс
Отправлено: Виктор Чекалин от 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.  
Название: Re: Revit не находит класс
Отправлено: Anatoly от 05-06-2017, 12:58:29
Достаточно только в манифесте указать
Код - XML [Выбрать]
  1. <FullClassName>helloworld.helloworld</FullClassName>
В самом коде не надо явно указывать namespace.
Спасибо.
Название: Re: Revit не находит класс
Отправлено: Виктор Чекалин от 05-06-2017, 13:46:37
Достаточно только в манифесте указать
Я о чем и говорил, что это особенности VB.NET. Похоже где то на уровне выше объявлен namespace и явно не виден в коде.
У вас проект называется helloworld? Я отменил ваш ответ как Решение, по двум причинам:
1) У вас класс и namespace называется одинакового. Можно легко подумать, что в файле манифеста в полном имени файла надо всегда указывать НазваниеКласса.НазваниеКласса. Хотя полное имя класса включает в себя именно namespace.ClassName.
2) Ответ на вопрос дал я. А именно, что в свойство FullClassName должно включать в себя и имя namespace. У вас оно не было задано.
Название: Re: Revit не находит класс
Отправлено: Anatoly от 05-06-2017, 14:37:37
Namespace задан в свойствах проекта, раздел Приложение - Корневое пространство имен.
Класс и проект названы одинаково т.к. это просто проба пера, конечно надо по-разному.
Да, ответ дали Вы, спасибо еще раз.
Название: Re: Revit не находит класс
Отправлено: nikolay_tjm от 29-10-2018, 17:53:02
На всякий случай уточняю про правило форматирования кода для нашего форума (ссылка у меня в подписи).

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

первый раз такой форум вижу - что бы толком люди мало помогают - а выставляют тебя идиотом - с ходу!
Название: Re: Revit не находит класс
Отправлено: Александр Ривилис от 29-10-2018, 18:06:29
nikolay_tjm
Первое предупреждение. Второго не будет. Будет бан. Действия администрации не обсуждаются.
Название: Re: Revit не находит класс
Отправлено: Александр Пекшев aka Modis от 29-10-2018, 19:05:42
какой то админ тут возбужденный - пристает ко всем со своими поправками - тут некогда что либо читать - нужно иногда получить помощи и чем быстрее тем лучше - а тут еще читайте поправки.. вы не так оформили... вы вообще что то сделали тут ...
А вы думаете, что тем, кто может Вам чем-то помочь, хочется читать неоформленный код и пытаться в нём разобраться?!  :o