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 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 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 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...
}
}