So erstellen Sie eine Raumstandardklasse

Sie müssen eine von AecSpaceOffsetStandard abgeleitete neue Klasse definieren. Diese Klasse bildet den Rahmen, in dem die einzelnen Regeln verwaltet werden, und den Einstiegspunkt, den AutoCAD Architecture 2024-Toolset beim Laden und Anwenden des Standards aufruft.

  1. Wenn Sie ein neues Projekt erstellt haben, enthält das Projekt eine Quelldatei, die der Folgenden ähnelt:
    using System;
    using System.Collections.Generic;
    using System.Text;
    namespace AecSpaceOffsetStandardSample
    {
    
    public class Class1
    {
    }
    
    }

    Fügen Sie die von der abstrakten Basisklasse Autodesk.Aec.SpaceOffsetRulesManager.AecSpaceOffsetStandard abgeleitete Standardklasse hinzu.

    Anmerkung: Der Namespace Autodesk.Aec.SpaceOffsetRulesManager ist nur verfügbar, wenn Sie den Verweis auf AecSpaceOffsetRuleManager.dll richtig eingerichtet haben.
  2. Zur Vereinfachung der Erstellung des Flächenberechnungsstandards-Plug-Ins wird empfohlen, einen Namespace für alle erforderlichen Klassen zu erstellen. Fügen Sie Ihrer Quelldatei folgende Codezeile hinzu:
    using Autodesk.Aec.SpaceOffsetRulesManager;
    
  3. Benennen Sie Class1 in einen Namen um, der Ihren Standard beschreibt (Beispiel: AecSpaceOffsetStandardMyStandard) und machen Sie daraus eine Ableitung der abstrakten Basisklasse AecSpaceOffsetStandard.
  4. Fügen Sie der Klasse einen parameterlosen Standardkonstruktor hinzu, der in den folgenden Schritten benötigt wird:
    using System;
    using System.Collections.Generic;
    using System.Text;
    using Autodesk.Aec.SpaceOffsetRulesManager;
    namespace AecSpaceOffsetStandardSample
    {
    
    public class AecSpaceOffsetStandardSample : AecSpaceOffsetStandard
    {
    
    public AecSpaceOffsetStandardSample()
    {
    }
    
    }
    }
  5. Wenn die neue Klasse richtig in Ihrer Quelldatei erstellt wurde, können Sie mit der Implementierung einiger Methoden beginnen, die die Basisklasse AecSpaceOffsetStandard aufweist und die von AutoCAD Architecture 2024-Toolset aufgerufen werden.
  6. Fügen Sie der Methode AecSpaceOffsetStandard.SetName(string name) einen Aufruf hinzu.

    Die Methode AecSpaceOffsetStandard.SetName() ist in der Basisklasse implementiert und kann nicht überschrieben werden. Sie muss zur Registrierung eines Namens für den Standard im Konstruktor der Klasse aufgerufen werden. Es handelt sich dabei um den Namen, der in der Liste der verfügbaren Flächenberechnungsstandards in AutoCAD Architecture 2024-Toolset angezeigt wird.

  7. Fügen Sie den Aufruf der Methode SetName() dem Konstruktor Ihrer Klasse hinzu.

    Das folgende Beispiel zeigt den Aufruf für das Beispielprojekt AecSpaceOffsetStandardSample, das sich selbst in der Software als Basis-Flächenberechnungsstandard registriert.

    public class AecSpaceOffsetStandardSample : AecSpaceOffsetStandard
    {
    
    public AecSpaceOffsetStandardSample ()
    {
    
    SetName("Basic");
    
    }
    }
  8. Nachdem der Name des neuen Flächenberechnungsstandard-Plug-Ins registriert ist, müssen Sie Ihrer Klasse die neue Methode AecSpaceOffsetStandardSample.InitRules() hinzufügen. Die Methode überschreibt die abstrakte Schnittstelle AecSpaceOffsetStandard.InitRules(). AutoCAD Architecture 2024-Toolset ruft die Schnittstelle auf, um alle Versatzregeln, die Sie implementieren, zu registrieren. Da diese Methode abstrakt ist, muss sie durch Ihre benutzerdefinierte Standardklasse implementiert werden. Im Folgenden finden Sie Beispiele für solche Anweisungen:
    public class AecSpaceOffsetStandardSample : AecSpaceOffsetStandard
    {
    
    public AecSpaceOffsetStandardSample ()
    {
    
    SetName("Basic");
    
    } protected override void InitRules() {
    // register rules
    
    }
    }
  9. Die Regelobjekte des Standards müssen mit den drei Versatzumgrenzungen (Netto-, nutzbarer und Bruttoversatz) registriert werden. Die Basisklasse AecSpaceOffsetStandard verfügt über drei Container für diese Regelsätze, zu denen die abgeleitete Klasse neue Regelinstanzen hinzufügen kann. Diese Container können mit den folgenden Methoden referenziert werden:
    • AecSpaceOffsetStandard.NetRules()
    • AecSpaceOffsetStandard.UsableRules()
    • AecSpaceOffsetStandard.GrossRules()

    Jeder dieser Aufrufe gibt einen Verweis auf ein Objekt der Klasse Autodesk.Aec.SpaceOffsetRulesManager.AecSpaceOffsetRuleCollection zurück, die Funktionen zur Registrierung der verschiedenen Regeltypen aufweist. Diese Objekte werden beibehalten und von AutoCAD Architecture 2024-Toolset verwendet. Folgende Beispiele zeigen, wie Regeln mit den drei Versatztypen registriert werden:

    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. (Optional) AecSpaceOffsetStandard bietet eine andere virtuelle Methode, die Ihr eigener Standard implementieren kann: AecSpaceOffsetStandard.InitCurrentDatabase(). Da dies keine abstrakte Methode der Basisklasse ist, ist die Implementierung anders als bei der Methode InitRules() optional und nicht obligatorisch. Sie kann von einem Flächenberechnungsstandard verwendet werden, um die aktuelle Zeichnung mit den zusätzlichen Daten zu initialisieren, die die Regeln möglicherweise erfordern, beispielsweise Klassifizierungsdefinitionen oder Zonenstile. Wenn sie implementiert wird, ruft AutoCAD Architecture 2024-Toolset diese Implementierung jedes Mal auf, wenn der Standard einer Zeichnung zugewiesen wird.
    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...
    
    }
    }