A propos de l'utilisation des classifications dans le cadre de l'implémentation de la règle

Les classifications ajoutées à la base de données active peuvent être utilisées dans les plug-ins de norme de calcul d'aire. En principe, vous pouvez déterminer la classification à partir d'un espace transmis à une règle à l'aide de l'API .NET d'AutoCAD Architecture 2024 toolset. Cependant, une telle méthode peut s'avérer complexe, car le nom global des classifications doit toujours être utilisé dans les règles, afin d'afficher les noms localisés des classifications. La classe AecSpaceOffsetClassification fournit des fonctionnalités qui permettent de simplifier cette procédure.

Lecture du nom de classification global d'un objet d'espace

Une méthode de la classe AecSpaceOffsetClassification permet d'obtenir le nom de classification global d'un objet d'espace afin de le comparer aux noms définis par la table de chaînes ressource et de déterminer la méthode de décalage des contours. Cette méthode est la chaîne publique GetClassificationName(Object Id objId). L'exemple suivant illustre une règle d'adjacence de contour qui utilise les classifications décrites dans l'exemple ci-dessus. La règle doit pouvoir accéder à l'objet AecSpaceOffsetClassification de la norme. La norme est donc transmise via le constructeur et assignée à un membre de la règle. Ainsi, vous devez créer la règle en implémentant la méthode InitRules() de la norme avec une référence "this" (ceci) à la norme actuelle.

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