概要 - 境界開口部規則

(SpaceOffsetRulesManager.AecBoundingOpeningRule 基本クラス)

境界開口部規則を使用すると、ドアや窓のように、スペースを区切っている壁の開口部におけるオフセットを定義できます。 たとえば、ネット オフセット輪郭は、境界の壁だけから輪郭をオフセットすることでは定義できません。 通常、壁はドアや窓でも切断されます。 この規則タイプを使用すると、面積計算標準によって計算されるオフセット輪郭で、このことを記述できます。

境界開口部規則の実装

境界開口部規則を実装するには、SpaceOffsetRulesManager.AecBoundingOpeningRule から派生した新しいクラスを追加する必要があります。 新しいクラスは、基本クラスの Apply インタフェースを実装する必要があり、AecSpaceOffsetRuleBase.RegisterType() 基本クラスを呼び出すことで、コンストラクタにおいて呼び出される必要のあるオブジェクト タイプに登録する必要があります。 この規則は以下のクラスに対してのみ適用できることに注意してください。

他のオブジェクト タイプにこの規則を登録した場合は、何も行われません。 各規則が実装する必要があるこのクラスの Apply メソッドは、AecBoundingOpeningRule では次のような構文になります。

public abstract AecSpaceOffsetOpeningInfo*
Apply(Autodesk.AutoCAD.DatabaseServices.ObjectId idSpace,
Autodesk.AutoCAD.DatabaseServices.ObjectId idAdjSpace,
Autodesk.AutoCAD.DatabaseServices.ObjectId idObject,
Autodesk.AutoCAD.DatabaseServices.ObjectId idOpening);

1 番目の引数は、境界オフセットを計算する現在のスペースの ObjectId です。 2 番目の引数は、隣接するスペースの ObjectId 引数です。外壁の場合のように隣接するスペースがない場合には、この引数の値は ObjectId.Null となります。 3 番目の引数は、開口部が固定されているオブジェクトの ObjectId であり、通常は、スペースを区切り、開口部を所有している壁です。 4 番目のパラメータは、調査の対象になっている開口部の ObjectId です。次の例は、BoundingOpeningRuleNet と呼ばれる新しい開口部規則に対するフレームワークを示します。

namespace AecSpaceOffsetStandardSample
{
public class BoundingOpeningRuleNet : AecBoundingOpeningRule
{
public BoundingOpeningRuleNet ()
{
RegisterType(typeof(Door));
} public override AecSpaceOffsetInfo* Apply(ObjectId idSpace, ObjectId idAdjSpace, ObjectId idObject, ObjectId idOpening) { }
}
}

サンプル境界開口部規則 BoundingOpeningRuleNet

次の例では、ドアに対してオフセットを定義する簡単な境界開口部規則を示します。 規則が窓に対して適用されないようにするため、ドア オブジェクトに対してのみ規則を登録し、AutoCAD Architecture 2022 toolset が他の開口部に対して規則を呼び出さないようにしています。この規則は、サンプル プロジェクト AecSpaceOffsetStandardSample で使用します。このオフセットは、ドア パネルの内部に移動するように定義されています。

namespace AecSpaceOffsetStandardSample
{
public class BoundingOpeningRuleNet : AecBoundingOpeningRule
{
public BoundingOpeningRuleNet()
{
RegisterType(typeof(Door));
}
public override AecSpaceOffsetOpeningInfo* Apply(ObjectId idSpace, ObjectId idAdjSpace, ObjectId idObject, ObjectId idOpening)
{
return new AecSpaceOffsetOpeningInfo(AecSpaceOffsetOpeningType.PanelAdjacent);
} return new AecSpaceOffsetInfo(AecSpaceOffsetType.NoChange); }
}
}

ネット境界とネット ハッチングは、ドアの中心に向かってオフセットされるが、壁の開口部ではオフセットされない