(klasa bazowa SpaceOffsetRulesManager.AecSpaceRule)
Reguła pomieszczenia ma zastosowanie w odniesieniu do całego pomieszczenia w przeciwieństwie do pozostałych typów reguł, które są bardziej specyficzne. Reguły pomieszczeń są jedynym typem reguł przemieszczenia, które można zarejestrować tylko raz w każdej normie (raz dla każdego przesunięcia typu netto, do wykorzystania i brutto).
W celu zaimplementowania reguły pomieszczenia trzeba dodać nową klasę, uzyskaną z klasy bazowej SpaceOffsetRulesManager.AecSpaceRule. W nowej klasie musi być zaimplementowany interfejs Apply klasy podstawowej. Nie musi się ona odwoływać do metody AecSpaceOffsetRuleBase.RegisterType() klasy podstawowej, ponieważ zawsze dotyczy obiektów pomieszczeń. Metoda Apply, którą każda reguła musi zaimplementować, ma następująca składnię w klasie AecSpaceRule:
public abstract bool Apply(Autodesk.AutoCAD.DatabaseServices.ObjectId idSpace);)
Wartość wynikowa typu Boolean określa, czy pomieszczenie ma prawidłową obwiednię odsunięcia. Jeśli tak, można je wykorzystać do dezaktywacji wszystkich obwiedni określonego typu odsunięcia. W poniższym przykładzie pokazano składnię nowej klasy reguły dotyczącej pomieszczenia:
namespace AecSpaceOffsetStandardSample {public class SpaceRule: AecSpaceRule {}public SpaceRule() { } public override bool Apply(ObjectId idSpace) { // return false to switch boundary off }}
Przypadkiem powszechnego użycia jest obliczanie powierzchni z uwzględnieniem tylko odsunięć netto i brutto, bez brania pod uwagę wartości do wykorzystania. Można to osiągnąć, implementując regułę pomieszczenia pochodzącą od AecSpaceRule, która w implementacji metody Apply zawsze daje w wyniku wartość Fałsz. W implementacji standardów reguły AecSpaceOffsetStandard.InitRules() należy zarejestrować jedną instancję tej reguły z odsunięciem o wartości do wykorzystania.
Bardziej złożona reguła pomieszczenia może ustalać, że wszystkie pomieszczenia o powierzchni mniejszej od pewnej ustalonej wartości nie należą do określonego typu odsunięcia. W poniższym przykładzie pokazano regułę pomieszczenia, która jest częścią przykładowego projektu i która uzna wszystkie pomieszczenia za nieprawidłowe. Została użyta w przykładowym standardzie w celu wyłączenia obwiedni powierzchni użytkowej.
namespace AecSpaceOffsetStandardSample {public class NullSpace: AecSpaceRule {}public SpaceRuleNet() { } public override bool Apply(ObjectId idSpace) { return false; }}