概要 - 規則の実装で分類を使用する

現在のデータベースに分類を追加した後は、面積計算標準プラグイン内でそれを使用します。 原則として、既存の AutoCAD Architecture 2022 toolset .NET API で、規則に渡されるスペースから分類を判別できます。ただし、分類の表示名のすべてのローカライゼーションを処理するには、この方法では複雑な場合があります。規則内で分類のグローバル名を常に使用する必要がある場合は特にそうです。 そのため、この作業を簡単にするための機能が AecSpaceOffsetClassification クラスで提供されています。

スペース オブジェクトからグローバル分類名を読み込む

AecSpaceOffsetClassification クラスには、スペース オブジェクトからグローバル分類名を取得するメソッドがあり、それをリソース文字列テーブルで定義されている名前と比較して、境界をオフセットする方法を決定できます。 このメソッドは、public string GetClassificationName(Object Id objId) です。 次の例では、前に示したテーブルの例で記述されている分類を使用する境界隣接規則を示します。 規則は標準の AecSpaceOffsetClassification オブジェクトにアクセスできる必要があるので、コンストラクタを通して標準を渡し、規則のメンバーに割り当てます。 これは、現在の標準に対する「これ」参照により、標準の InitRules() の実装で規則を作成する必要があることを意味します。

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