(SpaceOffsetRulesManager.AecSpaceRule Base Class)
Pravidlo prostoru se aplikuje na celý prostor na rozdíl od všech ostatních typů pravidel, které jsou více specifické. Pravidla prostoru jsou jediným typem pravidel odsazení, který lze registrovat jednou pro každý standard (jednou pro každý typ odsazení – čisté, využitelné a hrubé).
Chcete-li implementovat pravidlo prostoru, musíte přidat novou třídu, která je odvozená ze základní třídy SpaceOffsetRulesManager.AecSpaceRule. Nová třída musí implementovat rozhraní Použít základní třídy. Není nutné volat metodu AecSpaceOffsetRuleBase.RegisterType() základní třídy, protože ta vždy platí pro objekty prostoru. Metoda Použít, kterou musí implementovat každé pravidlo, má pro třídu AecSpaceRule tuto syntaxi:
public abstract bool Apply(Autodesk.AutoCAD.DatabaseServices.ObjectId idSpace);)
Vrácená logická hodnota určuje, zda má prostor platnou hranici odsazení. Pokud je tomu tak, lze ji použít k deaktivaci všech hranic určitého typu odsazení. Následující příklady ukazují rámec pro novou třídu pravidla prostoru:
namespace AecSpaceOffsetStandardSample {public class SpaceRule: AecSpaceRule {}public SpaceRule() { } public override bool Apply(ObjectId idSpace) { // return false to switch boundary off }}
Obvyklý případ použití je ten, kdy standard výpočtu plochy zahrnuje pouze čisté a hrubé odsazení, ale žádné využitelné odsazení. Toho lze dosáhnout implementací pravidla prostoru odvozeného z AecSpaceRule, které vždy vrací hodnotu Ne v implementaci metody Použít. Registrujte jednu instanci daného pravidla do využitelného odsazení v implementaci standardů AecSpaceOffsetStandard.InitRules().
Složitější pravidlo prostoru může definovat, že všechny prostory s plochou menší než je určitá předem definovaná hodnota nepřispívají do určitého typu odsazení. Následující příklad ukazuje pravidlo prostoru, které je součástí vzorového projektu a které učiní všechny prostory neplatnými. Použije se v rámci vzorového standardu k vypnutí využitelné hranice:
namespace AecSpaceOffsetStandardSample {public class NullSpace: AecSpaceRule {}public SpaceRuleNet() { } public override bool Apply(ObjectId idSpace) { return false; }}