(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 类的空间规则来完成,该类在 Apply 方法的实施中始终返回 False。可在 AecSpaceOffsetStandard.InitRules() 的标准实施中使用可用偏移来注册该规则的一个实例。
更复杂的空间规则可以定义面积小于特定预定义值的所有空间不使用特定偏移类型。下例显示了属于样例项目而且将使所有空间无效的空间规则。该规则在样例标准内用于禁用可用边界:
namespace AecSpaceOffsetStandardSample {public class NullSpace: AecSpaceRule {}public SpaceRuleNet() { } public override bool Apply(ObjectId idSpace) { return false; }}