(classe base SpaceOffsetRulesManager.AecBoundingAdjacencyRule)
Le regole adiacenza di delimitazione definiscono l'offset dei segmenti del profilo di base del vano sulla base del vano adiacente al segmento. Solitamente nei profili offset lordi le regole adiacenza di delimitazione definiscono l'offset per il contorno dal centro dell'oggetto di delimitazione nei muri interni e dall'esterno dell'oggetto di delimitazione nei muri esterni.
Per implementare una regola adiacenza di delimitazione è necessario aggiungere una nuova classe derivata da SpaceOffsetRulesManager.AecBoundingAdjacencyRule. In modo analogo a quanto descritto in precedenza per tutti gli altri tipi di offset, è necessario che la nuova classe implementi l'interfaccia Apply della classe base e venga registrata per i tipi di oggetto per cui verrà richiamata nel costruttore mediante la chiamata del metodo AecSpaceOffsetRuleBase.RegisterType(). Il metodo Apply che è necessario implementare per ogni regola presenta la seguente sintassi in AecBoundingAdjacencyRule:
public abstract bool Apply(Autodesk.AutoCAD.DatabaseServices.ObjectId idSpace, Autodesk.AutoCAD.DatabaseServices.ObjectId idObject, Autodesk.AutoCAD.DatabaseServices.ObjectId idAdjSpace);
Il primo argomento ObjectId rappresenta il vano corrente per il quale viene calcolato l'offset contorno. Il secondo argomento ObjectId rappresenta l'oggetto di delimitazione tra il vano del primo argomento e il vano adiacente. Il terzo argomento ObjectId rappresenta il vano adiacente. Se non è presente alcun vano adiacente, come nel caso dei muri esterni, il valore dell'argomento sarà ObjectId.Null. Nell'esempio seguente è riportata la struttura per la una nuova regola vano denominata BoundingAdjacencyRuleGross:
namespace AecSpaceOffsetStandardSample {public class BoundingAdjacencyRuleGross : AecBoundingAdjacencyRule {}public BoundingAdjacencyRuleGross() { } public override AecSpaceOffsetInfo Apply(ObjectId idSpace, ObjectId idObject, ObjectId idAdjSpace) {}//}
Nell'esempio seguente viene illustrata l'implementazione di una regola adiacenza di delimitazione utilizzata nel progetto di esempio. Tale regola definisce un offset dal centro dell'oggetto di delimitazione tra due vani per i muri interni e un offset dall'esterno del muro in assenza di un vano adiacente.
public class BoundingAdjacencyRuleGross : AecBoundingAdjacencyRule {public BoundingAdjacencyRuleGross() { } public override AecSpaceOffsetInfo Apply(ObjectId idSpace, ObjectId idObject, ObjectId idAdjSpace) {}if (idAdjSpace.IsNull) {}// If there is no adjacent space (exterior wall), keep the 'Opposite' offset return new AecSpaceOffsetInfo(AecSpaceOffsetType.Opposite);} else {// If there is an adjacent space (interior wall), its center return new AecSpaceOffsetInfo(AecSpaceOffsetType.Center);}