Acerca de la regla de contigüidad de delimitación

(Clase base SpaceOffsetRulesManager.AecBoundingAdjacencyRule)

Las reglas de contigüidad de delimitación definen un desfase para los segmentos del perfil base de espacio según el espacio adyacente a este segmento. Un caso de uso común para perfiles de desfase bruto es cuando las reglas de contigüidad de delimitación definen que el contorno debe desfasarse hacia el centro del objeto delimitador en muros interiores y hacia el exterior del objeto delimitador en muros exteriores.

Implementación de una regla de contigüidad de delimitación

Para implementar una regla de contigüidad de delimitación, es necesario añadir una nueva clase derivada de SpaceOffsetRulesManager.AecBoundingAdjacencyRule. Del mismo modo que todos los tipos de desfase descritos anteriormente, la nueva clase debe implementar la interfaz Apply de esta clase base y registrarse para los tipos de objetos para los que debe llamarse en el constructor llamando al método base AecSpaceOffsetRuleBase.RegisterType(). El método Apply que cada regla debe implementar tiene la siguiente forma en AecBoundingAdjacencyRule:

public abstract bool Apply(Autodesk.AutoCAD.DatabaseServices.ObjectId idSpace,
Autodesk.AutoCAD.DatabaseServices.ObjectId idObject,
Autodesk.AutoCAD.DatabaseServices.ObjectId idAdjSpace);

El primer argumento ObjectId es el espacio actual para el que se calculará el contorno de desfase. El segundo ObjectId es el objeto de contorno entre el espacio del primer argumento y el espacio adyacente. El tercer argumento es el ObjectId del espacio adyacente. Cuando no hay espacio adyacente, como es el caso de los muros exteriores, el valor de este argumento es ObjectId.Null. El siguiente ejemplo muestra el código de una regla de espacio nueva llamada BoundingAdjacencyRuleGross:

namespace AecSpaceOffsetStandardSample
{
public class BoundingAdjacencyRuleGross : AecBoundingAdjacencyRule
{
public BoundingAdjacencyRuleGross()
{
}
public override AecSpaceOffsetInfo Apply(ObjectId idSpace, ObjectId idObject, ObjectId idAdjSpace)
{
//
}
}
}

Sample Bounding Adjacency Rule BoundingAdjacencyRuleGross

El siguiente ejemplo muestra la implementación de una regla de adyacencia de contorno que se utiliza en el proyecto de ejemplo. Define un desfase del centro del objeto de contorno de 2 espacios en los muros interiores y un desfase de la parte exterior del muro si no hay espacio adyacente.

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);
}
}
}