Pravidlo hraničního objektu

(SpaceOffsetRulesManager.AecBoundingObjectRule Base Class)

Pravidla hraničního objektu umožňují, aby objekty, které jsou hraniční pro základní profil prostoru, například konstrukční prvky, byly označeny jako nehraniční tak, aby nebyly zpracovány v průběhu vytváření profilu odsazení. Každý standard může pro každý typ odsazení hranice definovat a aplikovat více pravidel hraničního objektu.

Implementace pravidla hraničního objektu

Chcete-li provést implementaci vlastního pravidla hraničního objektu, musíte přidat novou třídu, která je odvozena ze základní třídy SpaceOffsetRulesManager.AecBoundingObjectRule. Nová třída musí implementovat rozhraní základní třídy Použít a registrovat se pro typy objektů, které by měla volat v konstruktoru voláním základní metody AecSpaceOffsetRuleBase.RegisterType(). Metoda Použít tohoto typu pravidla má následující syntaxi:

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

První argument je aktuální prostor, pro který se má vypočítat profil hranice odsazení. Druhý argument idObject je ID objektu, který ohraničuje prostor. V rámci metody Použít lze nyní otevřít prostorový objekt i hraniční objekt a dotazovat se na určité vlastnosti za účelem rozhodnutí, zda by měl tento objekt přispívat do generovaného profilu. Jestliže metoda vrátí hodnotu Ne, hranice objektu se odeberou z profilu odsazení. To znamená, že objekt již nadále nebude zvažován při aplikování pravidel odsazení. Následující příklad ukazuje rámec pro nové pravidlo prostoru nazvané BoundingObjectRuleGross:

namespace AecSpaceOffsetStandardSample
{
public class BoundingObjectRuleBasic: AecBoundingObjectRule
{
public BoundingObjectRuleGross()
{
RegisterType(typeof(kAllTypes));
} public override bool Apply(ObjectId idSpace, ObjectId idObject) {
//return false to mark object as non-contributing
}
}
}

Vzorové pravidlo hraničního objektu BoundingObjectRuleGross

Následující příklad ukazuje implementaci pravidla hraničního objektu použitého pro hrubý profil vzorového projektu. Toto pravidlo odebere všechny segmenty z profilu, které jsou ohraničeny konstrukčním prvkem. Toto je obvyklý případ pro definování hrubé plochy prostoru, kde konstrukční prvky nejsou brány v úvahu ani tehdy, jsou-li ohraničující pro základní profil prostoru.

public class BoundingObjectRuleGross : AecBoundingObjectRule
{
public BoundingObjectRuleGross()
{
RegisterType(typeof(kAllTypes));
} public override bool Apply(ObjectId idSpace, ObjectId idObject) {
bool result=true;
Autodesk.AutoCAD.DatabaseServices.Database db =idObject.Database;
using (Autodesk.AutoCAD.DatabaseServices.Transaction transaction =db.TransactionManager.StartTransaction())
{
Member member = transaction.GetObject(idObject, OpenMode.ForRead) as Member;
if ( member == null )
{
MemberType memType = member.MemberType;
if ( memType == MemberType.Column )
{
result = false;
}
}
transaction.Commit(); } return result;
}
}

Obrázek dole uvádí příklad použití tohoto pravidla, kdy čistá hranice (zelená) zahrnuje sloupky a hrubá hranice (modrá) je ignoruje