O hraničních otvorech

(SpaceOffsetRulesManager.AecBoundingOpeningRule Base Class)

Pravidlo hraničního otvoru slouží k definování odsazení v otvorech ve stěnách, které ohraničují prostor, například dveře a okna. Příklad: čisté odsazení profilu nelze definovat odsazením profilu pouze z hraničních stěn. Obvykle je i stěna vyříznuta ve dveřích a oknech. Tento typ pravidla slouží k popisu této situace v profilu odsazení podle standardu výpočtu plochy.

Implementace pravidla hraničního otvoru

Chcete-li implementovat pravidlo hraničního otvoru, je nutné přidat novou třídu, která je odvozena z SpaceOffsetRulesManager.AecBoundingOpeningRule. Nová třída musí implementovat jedno nebo více rozhraní základní třídy Použít a registrovat se pro typy objektů, které by se měly volat v konstruktoru voláním základní metody AecSpaceOffsetRuleBase.RegisterType. Všimněte si, že toto pravidlo lze aplikovat pouze na následující třídy:

Registrace tohoto pravidla pro jiné typy objektů nebude dávat žádné výsledky. Metoda Použít dané třídy, kterou musí každé pravidlo implementovat, má následující syntaxi 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);

První argument ObjectId je aktuální prostor, pro který se má vypočítat hranice odsazení. Druhý 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. Třetí argument je ObjectId objektu, kam je ukotven otvor, což je obvykle stěna, která ohraničuje prostor a je vlastníkem otvoru. Čtvrtý parametr je ObjectId zkoumaného. Následující příklad ukazuje rámec pro nové pravidlo otvoru nazvané BoundingOpeningRuleNet:

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

Vzorové pravidlo hraničního otvoru BoundingOpeningRuleNet

Následující příklad ukazuje pravidlo jednoduchého hraničního otvoru, kde je definováno odsazení pro dveře. Aby bylo jisté, že se pravidlo nebude aplikovat na okna, registruje se pouze pro objekt Dveře, aby je aplikace AutoCAD Architecture 2022 toolset nevolala pro žádné jiné otvory. Toto pravidlo je použito ve vzorovém projektu AecSpaceOffsetStandardSample. Odsazení je definováno tak, aby směřovalo dovnitř dveřního panelu.

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

Čistá hranice a čisté šrafování jsou odsazeny do středu dveří, nejsou však odsazeny v otvoru stěny.