Nejčastější dotazy týkající se maker aplikace Revit

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

Otázka Odpověď
Č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. Pokud tyto reference v integrovaném vývojovém prostředí odstraníte, dojde k selhání maker:

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.
Jaké jsou rozdíly mezi makry na úrovni aplikace a makry na úrovni dokumentu? Makra na úrovni aplikace lze spouštět ve všech otevřených projektech aplikace Revit v rámci jedné instance aplikace Revit. Projekty maker na úrovni dokumentu jsou uloženy v souboru RVT. Mohou být načteny z aktuálního aktivního dokumentu a spuštěny na tomto dokumentu.
Jak lze získat přístup k objektu Application nebo jeho ekvivalentu externalCommandData? Ke všem makrům na úrovni aplikace je přidružen objekt UIApplication. V makrech na úrovni aplikace vrací ukazatel klíčového slova Application v jazyce C# a VB.NET objekt Application rozhraní API.

V makrech na úrovni dokumentu vrací klíčové slovo Document objekt Document rozhraní API. Chcete-li k objektu UIApplication získat přístup z makra na úrovni dokumentu, použijte this.Application.

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 otevření projektu aplikace Revit volána metoda Module_Startup a při zavření projektového dokumentu je volána metoda Module_Shutdown.

U modulů maker na úrovni dokumentu 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.

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é mazací úkony. 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 obsluhu 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);
} void Application_DocumentOpened(object sender, Autodesk.Revit.DB.Events.DocumentOpenedEventArgs e){
System.Windows.Forms.MessageBox.Show("message here");
} private void Module_Shutdown(object sender, EventArgs e){ this.Application.DocumentOpened -= new EventHandler<Autodesk.Revit.DB.Events.DocumentOpenedEventArgs>(Application_DocumentOpened);}
}

Příklad v jazyce VB.NET na úrovni aplikace:

Private
Sub Module_Startup(ByVal sender As Object, ByVal e As System.EventArgs)
Handles Me.Startup
AddHandler Me.OnDocumentNewed,
AddressOf Me.ThisApplication_OnDocumentNewed
End SubPrivate Sub Module_Shutdown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shutdown
RemoveHandler Me.OnDocumentNewed,
AddressOf Me.ThisApplication_OnDocumentNewed
End SubPrivate Sub ThisApplication_OnDocumentNewed(ByVal document As Autodesk.Revit.Document)
System.Windows.Forms.MessageBox.Show("VB.NET
Application event OnDocumentNewed")
End Sub