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:
|
| 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");
}