Pour créer une classe de norme d'espace

Vous devez définir une nouvelle classe AecSpaceOffsetStandard. Cette classe permet de gérer les règles individuelles et le point d'entrée auxquels AutoCAD Architecture 2024 toolset fait appel lors du chargement et de l'application de la norme.

  1. Si vous avez créé un projet, il inclut un fichier source comme suit :
    using System;
    using System.Collections.Generic;
    using System.Text;
    namespace AecSpaceOffsetStandardSample
    {
    
    public class Class1
    {
    }
    
    }

    Ajoutez la classe de norme dérivée de la classe de base abstraite Autodesk.Aec.SpaceOffsetRulesManager.AecSpaceOffsetStandard.

    Remarque : L'espace de noms Autodesk.Aec.SpaceOffsetRulesManager est disponible uniquement si vous avez défini la référence à AecSpaceOffsetRuleManager.dll.
  2. Afin de simplifier la création du plug-in de norme de calcul d'aire, il est recommandé d'ajouter un nom d'espaces pour toutes les classes nécessaires. Ajoutez la ligne de code suivante au fichier source :
    using Autodesk.Aec.SpaceOffsetRulesManager;
    
  3. Renommez Class1 en utilisant un nom décrivant la norme (AecSpaceOffsetStandardMyStandard, par exemple) et faites-la dériver de la classe de base abstraite AecSpaceOffsetStandard.
  4. Ajoutez un constructeur par défaut sans paramètre à la classe ; il est nécessaire pour les étapes suivantes :
    using System;
    using System.Collections.Generic;
    using System.Text;
    using Autodesk.Aec.SpaceOffsetRulesManager;
    namespace AecSpaceOffsetStandardSample
    {
    
    public class AecSpaceOffsetStandardSample : AecSpaceOffsetStandard
    {
    
    public AecSpaceOffsetStandardSample()
    {
    }
    
    }
    }
  5. Une fois la nouvelle classe configurée correctement dans le fichier source, vous pouvez commencer à implémenter une partie des méthodes fournies via la classe de base AecSpaceOffsetStandard et appelées par AutoCAD Architecture 2024 toolset.
  6. Ajoutez un appel à la méthode AecSpaceOffsetStandard.SetName(nom de la chaîne).

    La méthode AecSpaceOffsetStandard.SetName() est implémentée dans la classe de base et ne peut pas être supprimée. Elle doit être appelée afin d'enregistrer un nom pour la norme dans le constructeur de la classe. Ce nom s'affiche dans la liste des normes de calcul d'aire disponibles dans AutoCAD Architecture 2024 toolset.

  7. Ajoutez l'appel à la méthode SetName() dans le constructeur de la classe.

    L'exemple suivant illustre l'appel de l'exemple de projet AecSpaceOffsetStandardSample qui s'enregistre dans le programme en tant que norme de calcul d'aire de base.

    public class AecSpaceOffsetStandardSample : AecSpaceOffsetStandard
    {
    
    public AecSpaceOffsetStandardSample ()
    {
    
    SetName("Basic");
    
    }
    }
  8. Après avoir enregistré le nom du plug-in de la norme de calcul d'aire, ajoutez la méthode AecSpaceOffsetStandardSample.InitRules() à la classe. La méthode remplace l'interface AecSpaceOffsetStandard.InitRules() abstraite. AutoCAD Architecture 2024 toolset appelle cette interface afin d'enregistrer chacune des règles de décalage que vous implémentez. Cette méthode étant abstraite, elle doit être implémentée par la classe de norme personnalisée. Pour obtenir des instructions, reportez-vous aux exemples suivants :
    public class AecSpaceOffsetStandardSample : AecSpaceOffsetStandard
    {
    
    public AecSpaceOffsetStandardSample ()
    {
    
    SetName("Basic");
    
    } protected override void InitRules() {
    // register rules
    
    }
    }
  9. Les règles de la norme doivent être enregistrées avec les trois différents contours de décalage (net, utilisable et brut). La classe de base AecSpaceOffsetStandard possède trois conteneurs pour ces jeux de règles, auxquels la classe dérivée peut ajouter de nouvelle instances de règles. Ces conteneurs peuvent être utilisés à l'aide des méthodes suivantes :
    • AecSpaceOffsetStandard.NetRules()
    • AecSpaceOffsetStandard.UsableRules()
    • AecSpaceOffsetStandard.GrossRules()

    Chacun de ces appels renvoie une référence à un objet de la classe Autodesk.Aec.SpaceOffsetRulesManager.AecSpaceOffsetRuleCollection, qui présente les fonctions d'enregistrement des différents types de règles. Ces objets sont gérés et utilisés par AutoCAD Architecture 2024 toolset. Les exemples suivants expliquent comment enregistrer les règles à l'aide de chacun des types de décalages :

    public class AecSpaceOffsetStandardSample : AecSpaceOffsetStandard
    {
    
    public AecSpaceOffsetStandardSample ()
    {
    
    SetName("Basic");
    
    } protected override void InitRules() {
    // Register the rules with this standard, so the
    // offset calculation algorithm can call them
    // for the according boundary type
    NetRules().AppendBoundingOpeningRule(new BoundingOpeningRuleNet());
    // no usable boundary
    UsableRules().SetSpaceRule(new NullSpace());
    GrossRules().AppendBoundingObjectRule(new BoundingObjectRuleGross());
    GrossRules().AppendBoundingAdjacencyRule(new BoundingAdjacencyRuleGross());
    
    }
    }
  10. (Facultatif) AecSpaceOffsetStandard fournit une autre méthode virtuelle qui peut être implémentée par votre propre norme : AecSpaceOffsetStandard.InitCurrentDatabase(). Comme il ne s'agit pas d'une méthode abstraite de la classe de base, son implémentation est facultative, contrairement à la méthode InitRules(). Elle peut servir à une norme de calcul d'aire pour initialiser le dessin actif avec les données complémentaires susceptibles d'être requises par les règles (définitions de classifications ou styles de zones). Si elle est implémentée, AutoCAD Architecture 2024 toolset utilise cette implémentation à chaque affectation de la norme à un dessin.
    public class AecSpaceOffsetStandardSample : AecSpaceOffsetStandard
    {
    
    public AecSpaceOffsetStandardSample ()
    {
    
    // set the name of the standard
    SetName("Basic");
    
    } // must be overriden protected override void InitRules() { } // can be overriden protected override void InitDatabase(Database* database) {
    // ...init database with classification definitions or zone styles, etc...
    
    }
    }