Časté dotazy: Makra aplikace Revit

V této části naleznete odpovědi na nejčastější dotazy o makrech aplikace Revit.

Otázka Odpověď

Proč se nadále zobrazuje zpráva, zda „důvěřuji autorům souborů v této složce“ a jak můžu zabránit zobrazování této zprávy?

Tato zpráva pochází z aplikace Visual Studio Code a je součástí programu Workspace Trust společnosti Microsoft, který má zlepšit zabezpečení.

Chcete-li zabránit zobrazování zprávy, postupujte následujícím způsobem:
  1. Spusťte nastavení Manage Workspace Trust (Správa důvěryhodnosti pracovního prostoru) v aplikaci Visual Studio Code..
  2. V dolní části okna klikněte na možnost Add Folder (Přidat složku).
  3. Vyberte následující cestu, které chcete důvěřovat:
    • C:\ProgramData\Autodesk\Revit\Macros\2025\Revit\AppHookup
      Poznámka: Výraz „2025“ označuje rok verze aplikace Revit, se kterou pracujete. Podle potřeby tento údaje změňte.
Čekal jsem, že moje nově vytvořené makro bude uvedeno v kategorizovaném seznamu Správce maker, avšak ono tam není. Proč? Nová makra se ve Správci maker zobrazí až po úspěšném sestavení projektu makra v integrovaném vývojovém prostředí Revit makro (pomocí nabídky Sestavení).
Je při vytváření nového makra nutné přidat jako reference soubory RevitAPI.dll a RevitAPIUI.dll? Ne. Není nutné odkazovat na soubory RevitAPI.dll a RevitAPIUI.dll, protože to již bylo provedeno. Projekt makra Revit používá jako potřebné reference oba soubory.

Viz část Obnovení souborů RevitAPI.dll a RevitAPIUI.dll.

Je nutné upravit soubory Revit.ini? Ne. Makra aplikace Revit se automaticky registrují pro zobrazení ve Správci maker bez jakékoliv další úpravy systému.
V integrovaném vývojovém prostředí Revit makro bylo makro odstraněno odebráním jeho metody v souboru This*.cs nebo This*.vb. Při opětovném otevření kategorizovaného seznamu Správce maker je však název odstraněného makra stále zobrazen. Jak lze tento název vymazat z tohoto seznamu? Správce maker rozpozná odebrání teprve po úspěšném sestavení upraveného projektu.
Co lze zahrnout do spouštěcích a ukončovacích metod Module_Startup a Module_Shutdown?

Metoda Module_Startup je volána při načtení modulu, metoda Module_Shutdown je volána při uvolnění modulu.

U modulů maker na úrovni aplikace je při spuštění aplikace Revit volána metoda Module_Startup a při ukončení aplikace je volána metoda Module_Shutdown.

U modulů maker na úrovni dokumentu je při otevření projektu aplikace Revit volána metoda Module_Startup a při zavření projektového dokumentu je volána metoda Module_Shutdown.

Metody Module Startup a Module_Shutdown budou volány i při opětovném sestavení projektu makra.

Do metod Module_Startup můžete přidat inicializační kód, do metod Module_Shutdown lze přidat určité akce vyčištění. Při spuštění lze například zaregistrovat obslužné rutiny událostí a při vypnutí jejich registraci zrušit (doporučený postup).

Jak a proč se provádí registrace a rušení registrace obsluhy událostí aplikace Revit? Jak bylo zmíněno výše, doporučený způsob, jak toho dosáhnout v integrovaném vývojovém prostředí Revit, je zaregistrovat obsluhy událostí v metodě *_Startup a zrušit jejich registraci v metodě *_Shutdown. Všechna makra budou zaváděna a uvolňována dynamicky. Pokud při ladění makra není registrace obslužné rutiny události správně zrušena, může aplikace Revit volat chybnou metodu (například neplatnou adresu paměti). Ačkoli v této situaci může integrované vývojové prostředí Revit zabránit zhroucení aplikace Revit, jakékoli obslužné rutiny událostí, jejichž registrace není správně zrušena, mohou způsobit provozní potíže během aktuální relace aplikace Revit.
Zobrazuje se dialog, který nejspíše nefunguje správně a způsobuje potíže s aplikací Revit. Nemodální dialogy, operující nad rámec spuštěného zpětného volání API, mohou způsobovat problémy. Doporučujeme předejít možné nestabilitě aplikace Revit tím, že se vyvarujete použití takovýchto zpětných volání.
Chci experimentovat s metodami Startup a Shutdown a obsluhou událostí. Je k dispozici nějaký příklad? Následující ukázkový kód znázorňuje, jak zaregistrovat obslužnou rutinu událostí OnDocumentNewed, která u nového projektu aplikace Revit automaticky vyvolá okno se zprávou. Poznámka: V jedné z ukázek makra v sadě Revit SDK může být znázorněn příklad spuštění a ukončení obslužné rutiny události na úrovni dokumentu. V těchto nejčastějších dotazech jsou uvedeny příklady obslužných rutin událostí na úrovni aplikace.

Ve verzi 2011 lze k veškerým událostem aplikačního rozhraní API získat přístup prostřednictvím integrovaného vývojového prostředí Revit. Události předcházející verzi 2011 byly odstraněny. Následující příklady uvádí nové události.

Příklad v jazyce C# na úrovni aplikace:

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