CAD tip # 13919:
Otázka
Makro pro toto speciální uložení je vhodné definovat jako externí, nebo v šabloně, aby bylo dostupné ve všech dokumentech (modelech). Jeho vyvolání si můžete přiřadit na ikonku v ribbonu (např. "Ulož v prezentačním režimu"), a to pomocí funkcí v bonus aplikaci T4I. Tu pak můžete použít namísto standardního Ulož kdykoliv budete chtít uložit "hezčí" soubor modelu.
Jednodušší verze iLogic makra s dočasným přepnutím schématu před uložením (ve zvoleném schématu - zde "Prezentace" - si můžete předem nastavit požadovanou barvu pozadí - např. bílou), makro přepne na jednobarevné pozadí a bílá je implicitní:
'Save in preset color scheme Sub Main() CurrentColorScheme = ThisApplication.ActiveColorScheme.Name ThisApplication.ColorSchemes.Item("Prezentace").Activate ThisApplication.ColorSchemes.BackgroundType = kOneColorBackgroundType Call ThisApplication.CommandManager.ControlDefinitions.Item("AppFileSaveCmd").Execute ThisApplication.ColorSchemes.Item(CurrentColorScheme).Activate End Sub
Nebo variantní, o něco složitější verze, s vynucenou změnou obrázku na pozadí:
'Save in preset color scheme (bkg) Sub Main() Dim CurrentBackground As String = "" CurrentColorScheme = ThisApplication.ActiveColorScheme.Name ThisApplication.ColorSchemes.Item("Prezentace").Activate If ThisApplication.ColorSchemes.BackgroundType = kImageBackgroundType CurrentBackground = ThisApplication.ActiveColorScheme.ImageFullFileName ThisApplication.ActiveColorScheme.ImageFullFileName = "c:\Users\USERNAME\bkg\FIRMA-8d2d0b3.png" End If Call ThisApplication.CommandManager.ControlDefinitions.Item("AppFileSaveCmd").Execute If CurrentBackground>"" Then ThisApplication.ActiveColorScheme.ImageFullFileName = CurrentBackground End If ThisApplication.ColorSchemes.Item(CurrentColorScheme).Activate End Sub
Alternativní možností je vynutit tuto změnu na jednotnou barvu náhledů pomocí reaktorů, tedy na automatické spouštěče události "Před uložením" a "Po uložení". Vyjdeme z první varianty makra a rozdělíme jej na "White-PreSave" a "White-PostSave":
Obě makra pak vypadají takto:
'White-PreSave event Sub Main() SharedVariable("CurrentColorScheme") = ThisApplication.ActiveColorScheme.Name ThisApplication.ColorSchemes.Item("Prezentace").Activate ThisApplication.ColorSchemes.BackgroundType = kOneColorBackgroundType End Sub 'White-PostSave event Sub Main() If SharedVariable.Exists("CurrentColorScheme") Then ThisApplication.ColorSchemes.Item(SharedVariable("CurrentColorScheme")).Activate End Sub