(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.
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}
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 ) {transaction.Commit(); } return result;MemberType memType = member.MemberType; if ( memType == MemberType.Column ) { result = false; }}
Obrázek dole uvádí příklad použití tohoto pravidla, kdy čistá hranice (zelená) zahrnuje sloupky a hrubá hranice (modrá) je ignoruje