概要 - 境界隣接規則

(SpaceOffsetRulesManager.AecBoundingAdjacencyRule 基本クラス)

境界隣接規則は、セグメントに隣接するスペースに基づいて、スペース ベース輪郭のセグメントに対するオフセットを定義します。 グロス オフセット輪郭をよく使用するのは、境界が内壁の境界オブジェクトの中心に向かってオフセットし、外壁の境界オブジェクトの外側に向かってオフセットしなければならないことを、境界隣接規則で定義する場合です。

境界隣接規則の実装

境界隣接規則を実装するには、SpaceOffsetRulesManager.AecBoundingAdjacencyRule から派生した新しいクラスを追加する必要があります。 これまでに説明したすべてのオフセット タイプと同じように、新しいクラスは、この基本クラスの Apply インタフェースを実装する必要があり、基本メソッド AecSpaceOffsetRuleBase.RegisterType() を呼び出すことで、コンストラクタにおいて呼び出される必要のあるオブジェクト タイプに登録する必要があります。 各規則が実装する必要がある Apply メソッドは、AecBoundingAdjacencyRule では次のような形式になります。

public abstract bool Apply(Autodesk.AutoCAD.DatabaseServices.ObjectId idSpace,
Autodesk.AutoCAD.DatabaseServices.ObjectId idObject,
Autodesk.AutoCAD.DatabaseServices.ObjectId idAdjSpace);

1 番目の ObjectId 引数は、オフセット境界を計算する現在のスペースです。 2 番目の ObjectId は、1 番目の引数のスペースと隣接するスペースの間の境界オブジェクトです。 3 番目の引数は、隣接するスペースの ObjectId です。 外壁の場合のように隣接するスペースがない場合には、この引数の値は ObjectId.Null となります。次の例では、BoundingAdjacencyRuleGross という名前の新しいスペース規則に対するフレームを示します。

namespace AecSpaceOffsetStandardSample
{
public class BoundingAdjacencyRuleGross : AecBoundingAdjacencyRule
{
public BoundingAdjacencyRuleGross()
{
}
public override AecSpaceOffsetInfo Apply(ObjectId idSpace, ObjectId idObject, ObjectId idAdjSpace)
{
//
}
}
}

サンプル境界隣接規則 BoundingAdjacencyRuleGross

次の例では、サンプル プロジェクトで使用する境界隣接規則の実装を示します。 内壁の 2 つのスペースに対する境界オブジェクトの中心へのオフセットと、隣接するスペースがない場合の壁の外側へのオフセットを定義しています。

public class BoundingAdjacencyRuleGross : AecBoundingAdjacencyRule
{
public BoundingAdjacencyRuleGross()
{
}
public override AecSpaceOffsetInfo Apply(ObjectId idSpace, ObjectId idObject, ObjectId idAdjSpace)
{
if (idAdjSpace.IsNull)
{
// If there is no adjacent space (exterior wall), keep the 'Opposite' offset
return new AecSpaceOffsetInfo(AecSpaceOffsetType.Opposite);
} else {
// If there is an adjacent space (interior wall), its center
return new AecSpaceOffsetInfo(AecSpaceOffsetType.Center);
}
}
}