Come creare una classe standard di vano

È possibile definire una nuova classe derivante da AecSpaceOffsetStandard. Questa classe rappresenta il framework di gestione delle singole regole e il punto di ingresso richiamato da Set di strumenti AutoCAD Architecture 2024 durante il caricamento e l'applicazione dello standard.

  1. Se è stato creato un nuovo progetto, il progetto includerà un file di origine simile al seguente:
    using System;
    using System.Collections.Generic;
    using System.Text;
    namespace AecSpaceOffsetStandardSample
    {
    
    public class Class1
    {
    }
    
    }

    Aggiungere la classe standard derivata dalla classe base abstract Autodesk.Aec.SpaceOffsetRulesManager.AecSpaceOffsetStandard.

    Nota: Lo spazio dei nomi Autodesk.Aec.SpaceOffsetRulesManager è disponibile solo se il riferimento è stato impostato correttamente su AecSpaceOffsetRuleManager.dll.
  2. Per facilitare la creazione del plug-in di standard di calcolo area, è consigliabile aggiungere uno spazio dei nomi per tutte le classi necessarie. Aggiungere la seguente riga di codice nel file di origine:
    using Autodesk.Aec.SpaceOffsetRulesManager;
    
  3. Sostituire Class1 con un nome descrittivo per lo standard (ad esempio AecSpaceOffsetStandardMyStandard) facendolo derivare dalla classe base abstract AecSpaceOffsetStandard.
  4. Aggiungere un costruttore di default senza parametri alla classe, che sarà necessario nei passaggi seguenti:
    using System;
    using System.Collections.Generic;
    using System.Text;
    using Autodesk.Aec.SpaceOffsetRulesManager;
    namespace AecSpaceOffsetStandardSample
    {
    
    public class AecSpaceOffsetStandardSample : AecSpaceOffsetStandard
    {
    
    public AecSpaceOffsetStandardSample()
    {
    }
    
    }
    }
  5. Una volta impostata correttamente la nuova classe nel file di origine, è possibile iniziare ad implementare alcuni dei metodi esposti dalla classe base AecSpaceOffsetStandard e richiamati da Set di strumenti AutoCAD Architecture 2024.
  6. Aggiungere una chiamata al metodo AecSpaceOffsetStandard.SetName(nome stringa).

    Il metodo AecSpaceOffsetStandard.SetName() è implementato nella classe base e non può essere sottoposto ad override. È necessario richiamarlo al fine di registrare un nome per lo standard nel costruttore della classe. Si tratta del nome che verrà visualizzato nell'elenco degli standard di calcolo area disponibili in Set di strumenti AutoCAD Architecture 2024.

  7. Aggiungere la chiamata al metodo SetName() nel costruttore della classe.

    Nell'esempio seguente è riportato il codice per aprire il progetto di esempio AecSpaceOffsetStandardSample registrato nel software come standard di calcolo area di base.

    public class AecSpaceOffsetStandardSample : AecSpaceOffsetStandard
    {
    
    public AecSpaceOffsetStandardSample ()
    {
    
    SetName("Basic");
    
    }
    }
  8. Dopo la registrazione del nome del plug-in di standard di calcolo area, è necessario aggiungere il nuovo metodo AecSpaceOffsetStandardSample.InitRules()) alla classe. Il metodo eseguirà l'override dell'interfaccia AecSpaceOffsetStandard.InitRules() abstract. Set di strumenti AutoCAD Architecture 2024 richiama l'interfaccia per registrare tutte le singole regole di offset che verranno implementate. Dal momento che il metodo è abstract, è necessario implementarlo mediante la classe di standard personalizzati. Per istruzioni, vedere l'esempio seguente:
    public class AecSpaceOffsetStandardSample : AecSpaceOffsetStandard
    {
    
    public AecSpaceOffsetStandardSample ()
    {
    
    SetName("Basic");
    
    } protected override void InitRules() {
    // register rules
    
    }
    }
  9. È necessario registrare un oggetto regola dello standard per ognuno dei tre offset contorno (netto, utilizzabile e lordo). La classe base AecSpaceOffsetStandard presenta tre contenitori per i gruppi di regole, a cui la classe derivata può aggiungere le nuove istanze di regole. È possibile creare riferimenti a questi tre contenitori nei seguenti modi:
    • AecSpaceOffsetStandard.NetRules()
    • AecSpaceOffsetStandard.UsableRules()
    • AecSpaceOffsetStandard.GrossRules()

    Ogni chiamata restituirà un riferimento ad un oggetto della classe Autodesk.Aec.SpaceOffsetRulesManager.AecSpaceOffsetRuleCollection, che espone funzioni per la registrazione dei diversi tipi di regole. Questi oggetti vengono gestiti e utilizzati da Set di strumenti AutoCAD Architecture 2024. Nell'esempio seguente viene indicato come registrare regole per i tre tipi di offset:

    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. (Facoltativo) AecSpaceOffsetStandard rappresenta un altro metodo virtuale implementabile per lo standard: AecSpaceOffsetStandard.InitCurrentDatabase(). Dal momento che non si tratta di un metodo abstract della classe base, può essere implementato ma, a differenza del metodo InitRules(), non è obbligatorio. Può essere utilizzato da uno standard di calcolo area per inizializzare il disegno corrente con dati aggiuntivi eventualmente richiesti dalle regole, ad esempio definizioni classificazione o stili zona. Se implementato, viene richiamato da Set di strumenti AutoCAD Architecture 2024 ogni volta che lo standard è assegnato ad un disegno.
    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...
    
    }
    }