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.
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.
using Autodesk.Aec.SpaceOffsetRulesManager;
using System; using System.Collections.Generic; using System.Text; using Autodesk.Aec.SpaceOffsetRulesManager; namespace AecSpaceOffsetStandardSample {public class AecSpaceOffsetStandardSample : AecSpaceOffsetStandard {}public AecSpaceOffsetStandardSample() { }}
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.
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");}
public class AecSpaceOffsetStandardSample : AecSpaceOffsetStandard {public AecSpaceOffsetStandardSample () {}SetName("Basic");} protected override void InitRules() {// register rules}
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());}
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...}