Vytvoření třídy standardu prostoru

Je nutné definovat novou třídu odvozenou z AecSpaceOffsetStandard. Tato třída bude rámcem spravujícím jednotlivá pravidla a vstupním bodem, který aplikace AutoCAD Architecture 2022 toolset volá při zavádění a používání standardu.

  1. Jestliže jste vytvořili nový projekt, bude obsahovat jeden zdrojový soubor podobný tomuto:
    using System;
    using System.Collections.Generic;
    using System.Text;
    namespace AecSpaceOffsetStandardSample
    {
    
    public class Class1
    {
    }
    
    }

    Přidejte svou třídu standardu odvozenou z abstraktní základní třídy Autodesk.Aec.SpaceOffsetRulesManager.AecSpaceOffsetStandard.

    Poznámka: Názvový prostor Autodesk.Aec.SpaceOffsetRulesManager je k dispozici, pouze pokud máte správně nastavenou referenci do AecSpaceOffsetRuleManager.dll.
  2. Aby se vytvoření doplňku plug-in standardu výpočtu plochy zjednodušilo, doporučuje se přidat názvový prostor pro všechny požadované třídy. Přidejte do svého zdrojového souboru následující řádek kódu:
    using Autodesk.Aec.SpaceOffsetRulesManager;
    
  3. Přejmenujte Class1 na název popisující váš standard (například AecSpaceOffsetStandardMyStandard) a vytvořte z ní derivát abstraktní základní třídy AecSpaceOffsetStandard.
  4. Přidejte do třídy bezparametrický výchozí konstruktor, který bude potřeba v dalších krocích:
    using System;
    using System.Collections.Generic;
    using System.Text;
    using Autodesk.Aec.SpaceOffsetRulesManager;
    namespace AecSpaceOffsetStandardSample
    {
    
    public class AecSpaceOffsetStandardSample : AecSpaceOffsetStandard
    {
    
    public AecSpaceOffsetStandardSample()
    {
    }
    
    }
    }
  5. Pokud je ve zdrojovém souboru správně nastavena nová třída, můžete začít s implementací některých metod, které základní třída AecSpaceOffsetStandard poskytuje a které bude aplikace AutoCAD Architecture 2022 toolset volat.
  6. Přidejte volání do metody AecSpaceOffsetStandard.SetName(název řetězce).

    Metoda AecSpaceOffsetStandard.SetName() je implementována v základní třídě a nelze ji přepsat. Je třeba ji zavolat za účelem registrace názvu pro standard v konstruktoru třídy. Jedná se o název, který se zobrazí v seznamu dostupných standardů výpočtu plochy v aplikaci AutoCAD Architecture 2022 toolset.

  7. Přidejte volání do metody SetName() v konstruktoru své třídy.

    Následující příklad ukazuje volání pro vzorový projekt AecSpaceOffsetStandardSample, který se registruje v softwaru jako základní standard výpočtu plochy.

    public class AecSpaceOffsetStandardSample : AecSpaceOffsetStandard
    {
    
    public AecSpaceOffsetStandardSample ()
    {
    
    SetName("Basic");
    
    }
    }
  8. Po registraci názvu doplňku plug-in standardu výpočtu plochy je nutné do své třídy přidat novou metodu AecSpaceOffsetStandardSample.InitRules(). Tato metoda přepíše abstraktní rozhraní AecSpaceOffsetStandard.InitRules(). Aplikace AutoCAD Architecture 2022 toolset bude volat dané rozhraní za účelem registrace všech jednotlivých pravidel odsazení, která budete implementovat. Protože je tato metoda abstraktní, musí se implementovat podle třídy vlastního standardu. Pokyny najdete v následujícím příkladu
    public class AecSpaceOffsetStandardSample : AecSpaceOffsetStandard
    {
    
    public AecSpaceOffsetStandardSample ()
    {
    
    SetName("Basic");
    
    } protected override void InitRules() {
    // register rules
    
    }
    }
  9. Objekty pravidla standardu se musí registrovat se 3 různými hranicemi odsazení (čistá, využitelná a hrubá). Základní třída AecSpaceOffsetStandard má 3 kontejnery pro tyto sady pravidel, kam může odvozená třída přidávat instance nového pravidla. Na tyto kontejnery je možné odkazovat pomocí těchto metod:
    • AecSpaceOffsetStandard.NetRules()
    • AecSpaceOffsetStandard.UsableRules()
    • AecSpaceOffsetStandard.GrossRules()

    Každé z volání vrátí referenci do objektu třídy Autodesk.Aec.SpaceOffsetRulesManager.AecSpaceOffsetRuleCollection, která vystaví funkce za účelem registrace různých typů pravidel. Tyto objekty spravuje a používá aplikace AutoCAD Architecture 2022 toolset. Následující příklad ukazuje, jak registrovat pravidla se 3 různými typy odsazení:

    public class AecSpaceOffsetStandardSample : AecSpaceOffsetStandard
    {
    
    public AecSpaceOffsetStandardSample ()
    {
    
    SetName("Basic");
    
    } protected override void InitRules() {
    // Register the rules with this standard, so the
    // offset calculation algorithm can call them
    // for the according boundary type
    NetRules().AppendBoundingOpeningRule(new BoundingOpeningRuleNet());
    // no usable boundary
    UsableRules().SetSpaceRule(new NullSpace());
    GrossRules().AppendBoundingObjectRule(new BoundingObjectRuleGross());
    GrossRules().AppendBoundingAdjacencyRule(new BoundingAdjacencyRuleGross());
    
    }
    }
  10. (Volitelné) AecSpaceOffsetStandard poskytuje jinou virtuální metodu, kterou může implementovat váš vlastní standard: AecSpaceOffsetStandard.InitCurrentDatabase(). Protože nejde o abstraktní metodu základní třídy, je možné ji implementovat, není to však povinné na rozdíl od metody InitRules(). Standard výpočtu plochy ji může použít pro inicializaci aktuálního výkresu s dodatečnými daty, která mohou pravidla vyžadovat, například definice klasifikací nebo styly zón. V případě úspěšné implementace bude aplikace AutoCAD Architecture 2022 toolset tuto implementaci volat při každém přiřazení standardu k výkresu.
    public class AecSpaceOffsetStandardSample : AecSpaceOffsetStandard
    {
    
    public AecSpaceOffsetStandardSample ()
    {
    
    // set the name of the standard
    SetName("Basic");
    
    } // must be overriden protected override void InitRules() { } // can be overriden protected override void InitDatabase(Database* database) {
    // ...init database with classification definitions or zone styles, etc...
    
    }
    }