Informazioni sulle regole adiacenza di delimitazione

(classe base SpaceOffsetRulesManager.AecBoundingAdjacencyRule)

Le regole adiacenza di delimitazione definiscono l'offset dei segmenti del profilo di base del vano sulla base del vano adiacente al segmento. Solitamente nei profili offset lordi le regole adiacenza di delimitazione definiscono l'offset per il contorno dal centro dell'oggetto di delimitazione nei muri interni e dall'esterno dell'oggetto di delimitazione nei muri esterni.

Implementazione di una regola adiacenza di delimitazione

Per implementare una regola adiacenza di delimitazione è necessario aggiungere una nuova classe derivata da SpaceOffsetRulesManager.AecBoundingAdjacencyRule. In modo analogo a quanto descritto in precedenza per tutti gli altri tipi di offset, è necessario che la nuova classe implementi l'interfaccia Apply della classe base e venga registrata per i tipi di oggetto per cui verrà richiamata nel costruttore mediante la chiamata del metodo AecSpaceOffsetRuleBase.RegisterType(). Il metodo Apply che è necessario implementare per ogni regola presenta la seguente sintassi in AecBoundingAdjacencyRule:

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

Il primo argomento ObjectId rappresenta il vano corrente per il quale viene calcolato l'offset contorno. Il secondo argomento ObjectId rappresenta l'oggetto di delimitazione tra il vano del primo argomento e il vano adiacente. Il terzo argomento ObjectId rappresenta il vano adiacente. Se non è presente alcun vano adiacente, come nel caso dei muri esterni, il valore dell'argomento sarà ObjectId.Null. Nell'esempio seguente è riportata la struttura per la una nuova regola vano denominata BoundingAdjacencyRuleGross:

namespace AecSpaceOffsetStandardSample
{
public class BoundingAdjacencyRuleGross : AecBoundingAdjacencyRule
{
public BoundingAdjacencyRuleGross()
{
}
public override AecSpaceOffsetInfo Apply(ObjectId idSpace, ObjectId idObject, ObjectId idAdjSpace)
{
//
}
}
}

Esempio di regola adiacenza di delimitazione BoundingAdjacencyRuleGross

Nell'esempio seguente viene illustrata l'implementazione di una regola adiacenza di delimitazione utilizzata nel progetto di esempio. Tale regola definisce un offset dal centro dell'oggetto di delimitazione tra due vani per i muri interni e un offset dall'esterno del muro in assenza di un vano adiacente.

public class BoundingAdjacencyRuleGross : AecBoundingAdjacencyRule
{
public BoundingAdjacencyRuleGross()
{
}
public override AecSpaceOffsetInfo Apply(ObjectId idSpace, ObjectId idObject, ObjectId idAdjSpace)
{
if (idAdjSpace.IsNull)
{
// If there is no adjacent space (exterior wall), keep the 'Opposite' offset
return new AecSpaceOffsetInfo(AecSpaceOffsetType.Opposite);
} else {
// If there is an adjacent space (interior wall), its center
return new AecSpaceOffsetInfo(AecSpaceOffsetType.Center);
}
}
}