Acerca del uso de clasificaciones en la implementación de reglas

Tras haber agregado clasificaciones a la base de datos actual, puede utilizarlas en plug-ins de normas de cálculo de área. En principio, puede determinar la clasificación a partir de un espacio que se transfiere a una regla con la API .NET de conjunto de herramientas de AutoCAD Architecture 2024. No obstante, este procedimiento resulta complejo, especialmente porque siempre debe utilizar el nombre global de las clasificaciones en las reglas, para que funcionen con todas las localizaciones del nombre de visualización de las clasificaciones. La clase AecSpaceOffsetClassification proporciona las funciones necesarias para simplificar este procedimiento.

Lectura del nombre de clasificación global a partir de un objeto de espacio

La clase AecSpaceOffsetClassification cuenta con un método para obtener el nombre de clasificación global a partir de un objeto de espacio, de modo que puede compararse con los nombres que define la tabla de cadenas del recurso para decidir el modo en que se van a desfasar los contornos. El método es la cadena pública GetClassificationName(Object Id objId). El ejemplo siguiente muestra una regla de adyacencia de delimitación que utiliza las clasificaciones descritas en la tabla de ejemplo de más arriba. Dado que la regla necesita poder acceder al objeto AecSpaceOffsetClassification de la norma, ésta se transfiere a través del constructor y se asigna a un miembro de la regla. Esto significa que deberá crear la regla en la implementación InitRules() de la norma con una referencia a la norma actual.

public class BoundingAdjacencyRuleGross : AecBoundingAdjacencyRule
{
private AecSpaceOffsetStandardISA standard;
public BoundingAdjacencyRuleGross(AecSpaceOffsetStandardISA standardISA)
{
standard = standardISA;
} public override AecSpaceOffsetInfo Apply(ObjectId idSpace, ObjectId idObject, ObjectId idAdjSpace) {
String classificationNameThis = "";
String classificationNameAdjacent = "";
if (!idSpace.IsNull)
{
classificationNameThis = standard.Classification.GetClassificationName(idSpace);
} if (!idAdjSpace.IsNull) {
classificationNameAdjacent = standard.Classification.GetClassificationName(idAdjSpace);
} if (idAdjSpace.IsNull || classificationNameAdjacent =="Exterior") {
return new AecSpaceOffsetInfo(AecSpaceOffsetType.Opposite);
} if (!idAdjSpace.IsNull && classificationNameThis == "Exterior") {
return new AecSpaceOffsetInfo(AecSpaceOffsetType.Adjacent);
} if (classificationNameThis == "Office") {
return new AecSpaceOffsetInfo(AecSpaceOffsetType.Adjacent);
} // for the rest return new AecSpaceOffsetInfo(AecSpaceOffsetType.Center);
}
}