Często zadawane pytania: makra w programie Revit

Ten rozdział zawiera odpowiedzi na często zadawane pytania dotyczące makr w programie Revit.

Pytanie Odpowiedź

Dlaczego nadal jest wyświetlany komunikat „Czy ufasz autorom plików w tym folderze?” i jak można wyłączyć wyświetlanie tego komunikatu?

Ten komunikat pochodzi z platformy VSCode i jest częścią programu Microsoft Workspace Trust, który służy do poprawy bezpieczeństwa.

Aby wyłączyć wyświetlanie tego komunikatu:
  1. Uruchom ustawienie „Zarządzaj zaufaniem obszaru roboczego” platformy VSCode.
  2. W dolnej części okna kliknij przycisk „Dodaj folder”.
  3. Wybierz następującą ścieżkę jako zaufaną:
    • C:\ProgramData\Autodesk\Revit\Macros\2025\Revit\AppHookup
      Uwaga: W tej ścieżce „2025” oznacza rocznik programu Revit, którego używasz. Zmień tę wartość odpowiednio do potrzeb.
Dlaczego utworzone makro nie jest wyświetlane na liście kategorii Menedżera makr. Dlaczego? Zanim nowe makra zostaną wyświetlone w Menedżerze makr, należy prawidłowo zbudować projekt makra w środowisku Revit makro IDE (przy użyciu menu Zbuduj).
Czy podczas tworzenia makra pliki RevitAPI.dll i RevitAPIUI.dll należy dodawać jako odniesienia? Nie. Nie trzeba tworzyć odniesień do plików RevitAPI.dll i RevitAPIUI, ponieważ ta czynność została już wcześniej wykonana przez program. Projekt makra Revit używa obu elementów jako wymaganych odniesień.

Zobacz temat Przywracanie plików RevitAPI.dll i RevitAPIUI.dll.

Czy należy edytować pliki Revit.ini? Nie. Makra w programie Revit są automatycznie rejestrowane i wyświetlane w Menedżerze makr bez dalszej modyfikacji w systemie.
Makro w środowisku Revit makro IDE zostało usunięte poprzez usunięcie jego metody w pliku This*.cs lub This*.vb. Jednak nazwa usuniętego makra wciąż pojawia się po otwarciu listy kategorii Menedżera makr. W jaki sposób usunąć tą nazwę z listy? Aby makro zostało uznane za usunięte w Menedżerze makr, należy najpierw prawidłowo zbudować edytowany projekt.
Co powinny zawierać metody uruchomienia i zamknięcia: Module_Startup i Module_Shutdown?

Metoda Module_Startup jest wywoływana podczas wczytywania modułu, a metoda Module_Shutdown jest wywoływana podczas jego usuwania.

Dla modułów makr poziomu aplikacji metoda Module_Startup jest wywoływana podczas uruchamiania programu Revit, a metoda Module_Shutdown zostaje wywołana podczas zamykania programu Revit.

Dla modułów makr poziomu dokumentu metoda Module_Startup jest wywoływana podczas otwierania projektu programu Revit, a metoda Module_Shutdown zostaje wywołana podczas zamykania projektu programu Revit.

Metody Module_Startup i Module_Shutdown są również wywoływane, gdy projekt makra jest przebudowywany.

Można dodać kod inicjalizacji w metodach Module_Startup oraz wykonać czynności czyszczenia w metodach Module_Shutdown. Można na przykład zarejestrować program do obsługi zdarzeń przy uruchamianiu i wyrejestrować go przy zamykaniu (jest to zalecany sposób).

W jaki sposób i dlaczego należy rejestrować i wyrejestrowywać program do obsługi zdarzeń Revit? Jak wspomniano wcześniej, w środowisku Revit IDE zaleca się zarejestrowanie programów do obsługi zdarzeń w metodzie *_Startup i wyrejestrowywanie ich w metodzie *_Shutdown. Dzięki temu wszystkie makra będą dynamicznie wczytywane i usuwane. Jeśli program do obsługi zdarzeń nie jest prawidłowo wyrejestrowany, wówczas podczas debugowania makra, w programie Revit może wystąpić odwołanie do nieprawidłowej metody (np. złego adresu pamięci). Pomimo że mechanizmy środowiska Revit IDE mogą w takim przypadku zapobiec awarii programu Revit, to wszelkie programy do obsługi zdarzeń, które nie zostały prawidłowo wyrejestrowane, mogą spowodować problemy z działaniem programu podczas bieżącej sesji programu Revit.
Istnieje okno, które nie działa prawidłowo i powoduje błędy w programie Revit. Niemodalne okna dialogowe działające poza zakresem uruchomionego wywołania interfejsu API mogą powodować problemy. Zaleca się unikanie takich wywołań, aby zapobiec niestabilności programu Revit.
Gdzie można znaleźć przykłady ćwiczeń dotyczących metody uruchomienia i zamknięcia. oraz programu do obsługi zdarzeń? W poniższym przykładowym kodzie przedstawiono sposób rejestrowania programu obsługi zdarzeń OnDocumentNewed automatycznie generującego okno komunikatu po utworzeniu nowego projektu programu Revit. Uwaga: jeden z przykładowych kodów makr znajdujących się w narzędziach Revit SDK zawiera przykład uruchamiania i zamykania programu do obsługi zdarzeń w makrze na poziomie dokumentu. W poniższej odpowiedzi jest przedstawiony przykład programu obsługi zdarzeń w makrze poziomu aplikacji:

Uwaga: w środowisku Revit IDE można uzyskać dostęp do wszystkich zdarzeń interfejsu API w wersji 2011. Zdarzenia wcześniejsze niż dla wersji 2011 zostały usunięte. Poniższe przykłady przedstawiają nowe zdarzenia.

Przykład kodu makra poziomu aplikacji w języku C#:

private void Module_Startup(object sender, EventArgs e)
{
   this.Application.DocumentOpened
      += new EventHandler<Autodesk.Revit.DB.Events.DocumentOpenedEventArgs>(Application_DocumentOpened);
}

private void Module_Shutdown(object sender, EventArgs e)
{
   this.Application.DocumentOpened
      -= new EventHandler<Autodesk.Revit.DB.Events.DocumentOpenedEventArgs>(Application_DocumentOpened); 
}

void Application_DocumentOpened(object sender, Autodesk.Revit.DB.Events.DocumentOpenedEventArgs e)
{ 
   System.Windows.Forms.MessageBox.Show("message here");
}