关于在所实施的规则中使用分类

将分类添加到当前数据库中后,可能需要在面积计算标准插件中使用这些分类。您基本能够从借助于现有 AutoCAD Architecture 2022 toolset .NET API 传递给规则的空间来确定分类。但是此过程可能比较复杂,尤其是当您必须使用规则内分类的全局名称来处理分类显示名称的所有本地化工作时。因此,AecSpaceOffsetClassification 类提供了简化此过程的功能。

从空间对象读取全局分类名称

AecSpaceOffsetClassification 有一个方法,可从空间对象获取全局分类名称,从而可将该全局名称与资源字符串表定义的名称进行比较,以确定如何对边界进行偏移。该方法是公共字符串 GetClassificationName(Object Id objId)。下例显示了一个边界相邻规则,该规则使用上述示例表中描述的分类。由于此规则需要能够访问所用标准的 AecSpaceOffsetClassification 对象,因此将通过构造函数传递该标准并将其指定给此规则的一个成员。这表示您必须在所用标准的 InitRules() 实施中使用对当前标准的“this”引用来创建规则。

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