(базовый класс SpaceOffsetRulesManager.AecSpaceRule)
Правило пространства применяется ко всему пространству в отличие от всех других типов правил, являющихся более специфичными. Правила пространства являются единственным типом правил смещения, который можно зарегистрировать для каждого стандарта (по одному для каждого типа смещения - в чистоте, полезного и общего).
Для реализации правила пространства необходимо добавить новый класс, полученный из базового класса SpaceOffsetRulesManager.AecSpaceRule. Новый класс должен реализовывать интерфейс Applyбазового класса. Нет необходимости вызывать метод базового класса AecSpaceOffsetRuleBase.RegisterType(), так как он всегда применяется для пространств. Метод Apply, необходимый всем правилам для реализации, имеет следующий синтаксис для класса AecSpaceRule:
public abstract bool Apply(Autodesk.AutoCAD.DatabaseServices.ObjectId idSpace);)
Логическое возвращаемое значение определяет, имеет ли пространство допустимую границу смещения. При положительном ответе граница метод используется для отключения всех границ определенного типа смещения. В следующем примере показан фрагмент нового класса правил пространств:
namespace AecSpaceOffsetStandardSample {public class SpaceRule: AecSpaceRule {}public SpaceRule() { } public override bool Apply(ObjectId idSpace) { // return false to switch boundary off }}
Наиболее часто стандарт расчета площади включает только смещение в чистоте и общее смещение. Можно реализовать правило пространства на основе класса AecSpaceRule, всегда возвращающее False при реализации метода Apply. Зарегистрируйте один экземпляр этого правила с полезным смещением в реализациях стандартов AecSpaceOffsetStandard.InitRules().
Большее сложное правило пространства может определять, что все пространства с площадью меньше определенного предварительно заданного значения не влияют на определенный тип смещения. В следующем примере показано правило пространства, являющееся часть примера проекта, которое делает все пространства недопустимыми. Правило используется с примером стандарта для отключения полезной границы:
namespace AecSpaceOffsetStandardSample {public class NullSpace: AecSpaceRule {}public SpaceRuleNet() { } public override bool Apply(ObjectId idSpace) { return false; }}