(classe de base SpaceOffsetRulesManager.AecBoundingAdjacencyRule)
Les règles d'adjacence de contour définissent un décalage pour les segments du profil de base d'espace en fonction des espaces adjacents à ces segments. Les règles d'adjacence de contour définissent généralement le contour comme devant être décalé vers le centre de l'objet de contour au niveau des murs intérieurs et vers l'extérieur de l'objet de contour au niveau des murs extérieurs.
Pour implémenter une règle d'adjacence de contour, ajoutez une classe dérivée de la classe de base SpaceOffsetRulesManager.AecBoundingAdjacencyRule. Comme pour les types de décalages décrits précédemment, la nouvelle classe doit implémenter l'interface Apply de cette classe de base et s'enregistrer dans le constructeur pour les types d'objets auxquels elle est applicable, via l'appel de la méthode de base AecSpaceOffsetRuleBase.RegisterType(). La méthode Apply, que chaque règle doit implémenter, possède la syntaxe suivante pour la classe AecBoundingAdjacencyRule :
public abstract bool Apply(Autodesk.AutoCAD.DatabaseServices.ObjectId idSpace, Autodesk.AutoCAD.DatabaseServices.ObjectId idObject, Autodesk.AutoCAD.DatabaseServices.ObjectId idAdjSpace);
Le premier argument ObjectId correspond à l'espace actif, pour lequel le contour de décalage doit être calculé. Le second argument ObjectId correspond à l'objet de contour entre l'espace du premier argument et l'espace adjacent. Le troisième argument ObjectId correspond à l'espace adjacent. En cas d'absence d'espace adjacent, comme pour les murs extérieurs, la valeur de cet argument est ObjectId.Null. L'exemple suivant illustre le cadre d'une nouvelle classe de règle d'espace appelée BoundingAdjacencyRuleGross :
namespace AecSpaceOffsetStandardSample {public class BoundingAdjacencyRuleGross : AecBoundingAdjacencyRule {}public BoundingAdjacencyRuleGross() { } public override AecSpaceOffsetInfo Apply(ObjectId idSpace, ObjectId idObject, ObjectId idAdjSpace) {}//}
L'exemple suivant illustre l'implémentation d'une règle d'adjacence de contour utilisée dans l'exemple de projet. Deux décalages sont définis, l'un vers le centre de l'objet de contour de deux espaces situés dans les murs intérieurs, l'autre vers l'extérieur du mur en cas d'absence d'espace adjacent.
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);}