Otwory ograniczające

(klasa bazowa SpaceOffsetRulesManager.AecBoundingOpeningRule)

Reguła otworu ograniczającego może zostać użyta w celu zdefiniowania odsunięcia przy otworze w ścianach, które ograniczają pomieszczenie, takich jak drzwi i okna. Na przykład profil odsunięcia netto nie może być zdefiniowany przez odsunięcie profilu tylko od ścian ograniczających. Zazwyczaj ściana jest przecinana w miejscu wstawienia drzwi i okien. Taki typ reguły może zostać użyty w celu opisania profilu odsunięcia obliczonego przez standard obliczania powierzchni.

Implementowanie reguły otworu ograniczającego

Aby zaimplementować regułę otworu ograniczającego, trzeba dodać nową klasę uzyskaną z reguły SpaceOffsetRulesManager.AecBoundingOpeningRule. W nowej klasie musi być zaimplementowany co najmniej jeden interfejs Apply klasy bazowej. Klasa musi się również zarejestrować w konstruktorze dla typów obiektów, dla których będzie wywoływana, przez wywołanie metody bazowej AecSpaceOffsetRuleBase.RegisterType. Należy zauważyć, że ta reguła może być zastosowana do następujących klas:

Zarejestrowanie tej reguły dla innych typów obiektów nie będzie miało żadnego skutku. Metoda Apply tej klasy, którą każda reguła musi implementować, ma w regule AecBoundingOpeningRule następującą składnię:

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

Pierwszym argumentem jest identyfikator ObjectId bieżącego pomieszczenia, dla którego ma być obliczone odsunięcie obwiedni. Drugim argumentem jest identyfikator ObjectId przylegającego pomieszczenia. Gdy nie ma sąsiedniego pomieszczenia, czyli np. w przypadku ściany zewnętrznej, argument przybiera wartość ObjectId.Null. Trzecim argumentem jest identyfikator ObjectId obiektu, do którego jest zakotwiczony otwór. Zwykle jest to ściana ograniczająca pomieszczenie i posiadająca otwór. Czwartym parametrem jest identyfikator ObjectId analizowanego otworu. W przykładzie poniżej pokazano składnię nowej reguły dotyczącej otworu o nazwie BoundingOpeningRuleNet:

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

Przykład reguły otworu ograniczającego BoundingOpeningRuleNet

W poniższym przykładzie pokazano prostą regułę otworu ograniczającego, w której odsunięcie zostało zdefiniowanie dla drzwi. Aby mieć pewność, że reguła nie będzie stosowana do okien, jest ona zarejestrowana tylko dla obiektu Drzwi, dlatego program AutoCAD Architecture nie będzie jej wywoływać dla innych otworów. Ta zasada jest używana w projekcie przykładowym AecSpaceOffsetStandardSample. Odsunięcie będzie skierowane do wewnątrz panelu drzwi.

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

Obwiednia netto i kreskowanie netto są odsunięte w stronę środka drzwi, ale nie są odsunięte przy otwarciu w ścianie.