Raumregel

(Basisklasse SpaceOffsetRulesManager.AecSpaceRule)

Eine Raumregel wird auf den gesamten Raum angewendet. Alle anderen Regeltypen beziehen sich auf einen spezifischen Aspekt des Raums. Raumregeln sind der einzige Versatzregeltyp, der nur einmal für jeden Standard registriert werden kann (einmal pro Versatztyp: Netto-, nutzbarer und Bruttoversatz).

Implementieren einer Raumregel

Um eine Raumregel zu implementieren, müssen Sie eine neue Klasse hinzufügen, die aus der Basisklasse SpaceOffsetRulesManager.AecSpaceRule abgeleitet ist. Die neue Klasse muss die SchnittstelleApply der Basisklasse implementieren. Sie braucht die Methode AecSpaceOffsetRuleBase.RegisterType() der Basisklasse nicht aufzurufen, da sie immer für Raumobjekte gilt. Die Apply-Methode, die von jeder Regel implementiert werden muss, hat folgende Syntax für die Klasse AecSpaceRule:

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

Der boolesche Rückgabewert zeigt, ob der Raum eine gültige Versatzumgrenzung hat. Ist dies der Fall, kann er zur Deaktivierung aller Umgrenzungen eines bestimmten Versatztyps verwendet werden. Das folgende Beispiel zeigt den Rahmen für eine neue Raumregelklasse:

namespace AecSpaceOffsetStandardSample
{
public class SpaceRule: AecSpaceRule
{
public SpaceRule()
{
}
public override bool Apply(ObjectId idSpace)
{
// return false to switch boundary off
}
}
}

Beispiel für Raumregel NullSpace

Ein häufiges Verwendungsbeispiel ist, dass ein Flächenkalkulationsstandard nur Netto- und Bruttoversätze und keine nutzbaren Versätze einschließt. Das können Sie erreichen, indem Sie eine von AecSpaceRule abgeleitete Raumregel implementieren, die bei der Implementierung der Apply-Methode stets False zurückgibt. Registrieren Sie eine Instanz dieser Regel mit dem nutzbaren Versatz in der Standard-Implementierung von AecSpaceOffsetStandard.InitRules().

Eine komplexere Raumregel kann festlegen, dass alle Räume mit einer Fläche unter einem bestimmten Wert nicht zu einem bestimmten Versatztyp beitragen. Das folgende Beispiel zeigt die Raumregel, die Teil des Beispielprojekts ist und durch die alle Räume annulliert werden. Sie wird im Beispielstandard zur Deaktivierung der nutzbaren Umgrenzung verwendet:

namespace AecSpaceOffsetStandardSample
{
public class NullSpace: AecSpaceRule
{
public SpaceRuleNet()
{
}
public override bool Apply(ObjectId idSpace)
{
return false;
}
}
}