Používání klasifikací v implementaci pravidla

Po přidání klasifikací do aktuální databáze je chcete používat v rámci doplňků plug-in standardu výpočtu plochy. V principu jste schopni určit klasifikaci z prostoru, který je předán do pravidla s existujícím rozhraním API AutoCAD Architecture 2022 toolset .NET. To by však bylo složité, protože je vždy nutné používat v rámci svých pravidel globální název klasifikací, aby bylo možné pracovat se všemi lokalizacemi zobrazovaných názvů klasifikací. Třída AecSpaceOffsetClassification proto poskytuje funkce pro zjednodušení této situace.

Přečtení globálního názvu klasifikace z objektu prostoru

Třída AecSpaceOffsetClassification má metodu pro získání globálního názvu klasifikace z objektu prostoru, aby bylo možné provést porovnání s názvy, které definuje tabulka zdrojových řetězců za účelem rozhodnutí, jak odsadit hranice. Metodou je veřejný řetězec GetClassificationName(Object Id objId). Následující příklad ukazuje pravidlo ohraničující přilehlosti, které používá klasifikace popsané v tabulce výše. Protože pravidlo potřebuje mít možnost přístupu do objektu AecSpaceOffsetClassification standardu, standard se předá prostřednictvím konstruktoru a přiřadí se k členu pravidla. To znamená, že budete muset vytvořit pravidlo v implementaci InitRules() daného standardu s „touto“ referencí do aktuálního standardu.

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