Pravidlo ohraničující přilehlosti

(SpaceOffsetRulesManager.AecBoundingAdjacencyRule Base Class)

Pravidla ohraničující přilehlosti definují odsazení pro segmenty základního profilu prostoru v závislosti na prostoru, který je přilehlý k tomuto segmentu. Obvyklý případ použití pro profily hrubého odsazení je ten, kdy pravidla ohraničující přilehlosti definují, že hranice by měla být odsazena ke středu hraničního objektu na vnitřních stěnách a k vnějšku hraničního objektu na vnějších stěnách.

Implementace pravidla ohraničující přilehlosti

Chcete-li implementovat pravidlo ohraničující přilehlosti, musíte přidat novou třídu, která je odvozena z SpaceOffsetRulesManager.AecBoundingAdjacencyRule. Stejně jako v případě dříve popisovaných typů odsazení musí nová třída implementovat rozhraní Použít této základní třídy a musí se registrovat pro typy objektů, které by se měly volat v konstruktoru voláním základní metody AecSpaceOffsetRuleBase.RegisterType(). Metoda Použít, kterou každé pravidlo potřebuje implementovat, má následující podobu v AecBoundingAdjacencyRule:

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

První argument ObjectId je aktuální prostor, pro který se vypočítat hranice odsazení. Druhý ObjectId je hraniční objekt mezi prostorem z prvního argumentu a přilehlým prostorem. Třetí argument je ObjectId přilehlého prostoru. Pokud není žádný přilehlý prostor, což je případ vnějších stěn, hodnota tohoto argumentu bude ObjectId.Null. Následující příklad ukazuje rámec pro nové pravidlo prostoru nazvané BoundingAdjacencyRuleGross:

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

Vzorové pravidlo ohraničující přilehlosti BoundingAdjacencyRuleGross

Následující příklad ukazuje implementaci pravidla ohraničující přilehlosti, které se používá ve vzorovém projektu. Definuje odsazení do středu hraničního objektu pro 2 prostory na vnitřních stěnách a odsazení na vnější část stěny, pokud neexistuje žádný přilehlý prostor.

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