Trzeba zdefiniować nową klasę w oparciu o klasę AecSpaceOffsetStandard. Klasa ta będzie szkieletem zarządzającym pojedynczymi regułami i punktami wejścia wywoływanymi przez program AutoCAD Architecture 2021 toolset podczas wczytywania i stosowania normy.
using System; using System.Collections.Generic; using System.Text; namespace AecSpaceOffsetStandardSample {public class Class1 { }}
Dodaj klasę standardową uzyskaną z klasy abstrakcji 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() jest zaimplementowana w klasie podstawowej i nie można jej zastąpić. Musi został wywołana, aby zarejestrować nazwę normy w konstruktorze klasy. Ta nazwa będzie wyświetlana na liście dostępnych norm obliczania powierzchni w programie AutoCAD Architecture 2021 toolset.
W poniższym przykładzie pokazano wywołanie przykładowego projektu AecSpaceOffsetStandardSample, który rejestruje się w programie jako Podstawowa norma obliczania powierzchni.
public class AecSpaceOffsetStandardSample : AecSpaceOffsetStandard {public AecSpaceOffsetStandardSample () {}SetName("Basic");}
public class AecSpaceOffsetStandardSample : AecSpaceOffsetStandard {public AecSpaceOffsetStandardSample () {}SetName("Basic");} protected override void InitRules() {// register rules}
Każde z wywołań da w wyniku odwołanie do obiektu klasy Autodesk.Aec.SpaceOffsetRulesManager.AecSpaceOffsetRuleCollection, który udostępnia funkcje służące do zarejestrowania różnych typów reguł. Te obiekty są obsługiwane i używane przez program AutoCAD Architecture 2021 toolset. W poniższym przykładzie pokazano, jak zarejestrować reguły z trzema różnymi typami odsunięcia:
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...}