Para crear una clase estándar de espacio

Debe definir una clase nueva derivada de AecSpaceOffsetStandard. Esta clase será la estructura que administre las normas individuales y el punto de entrada al que llamará conjunto de herramientas de AutoCAD Architecture 2024 cuando se cargue y aplique la norma.

  1. Si ha creado un proyecto nuevo, el proyecto incluirá un archivo de origen similar al siguiente:
    using System;
    using System.Collections.Generic;
    using System.Text;
    namespace AecSpaceOffsetStandardSample
    {
    
    public class Class1
    {
    }
    
    }

    Agregue la clase estándar derivada de la clase básica abstracta Autodesk.Aec.SpaceOffsetRulesManager.AecSpaceOffsetStandard.

    Nota: El espacio de nombre Autodesk.Aec.SpaceOffsetRulesManager sólo estará disponible si ha configurado correctamente la referencia a AecSpaceOffsetRuleManager.dll.
  2. Para simplificar el proceso de creación del plug-in de norma de cálculo de área, se recomienda agregar un espacio de nombre para todas las clases requeridas. Agregue la línea de código siguiente al archivo de origen:
    using Autodesk.Aec.SpaceOffsetRulesManager;
    
  3. Cambie el nombre de Class1 a un nombre que describa su norma (por ejemplo, AecSpaceOffsetStandardMyStandard) y conviértalo en una derivación de la clase básica abstracta AecSpaceOffsetStandard.
  4. Agregue un constructor predeterminado sin parámetros a la clase, que se necesitará en los pasos siguientes:
    using System;
    using System.Collections.Generic;
    using System.Text;
    using Autodesk.Aec.SpaceOffsetRulesManager;
    namespace AecSpaceOffsetStandardSample
    {
    
    public class AecSpaceOffsetStandardSample : AecSpaceOffsetStandard
    {
    
    public AecSpaceOffsetStandardSample()
    {
    }
    
    }
    }
  5. Si se configura correctamente la nueva clase en el archivo de origen, puede empezar a implementar algunos de los métodos que expone la clase básica AecSpaceOffsetStandard a los que llamará conjunto de herramientas de AutoCAD Architecture 2024.
  6. Añada una llamada al método AecSpaceOffsetStandard.SetName(nombre de cadena).

    El método AecSpaceOffsetStandard.SetName() se implementa en la clase básica y no se puede modificar. Es preciso llamarlo para registrar un nombre para la norma en el constructor de la clase. Se trata del nombre que aparecerá en la lista de normas de cálculo de área disponibles en conjunto de herramientas de AutoCAD Architecture 2024.

  7. Agregue la llamada al método SetName() del constructor de su clase.

    El ejemplo siguiente muestra la llamada del proyecto de ejemplo AecSpaceOffsetStandardSample, que se registra en el software como norma de cálculo de área básica.

    public class AecSpaceOffsetStandardSample : AecSpaceOffsetStandard
    {
    
    public AecSpaceOffsetStandardSample ()
    {
    
    SetName("Basic");
    
    }
    }
  8. Una vez registrado el nombre del plug-in de norma de cálculo de área, debe agregar el nuevo método AecSpaceOffsetStandardSample.InitRules() a la clase. El método modificará la interfaz AecSpaceOffsetStandard.InitRules() abstracta. conjunto de herramientas de AutoCAD Architecture 2024 llamará a esa interfaz para registrar todas las reglas de desfase individuales que vaya a implementar. Dado que se trata de un método abstracto, debe implementarlo la clase estándar personalizada. Para obtener instrucciones al respecto, consulte este ejemplo:
    public class AecSpaceOffsetStandardSample : AecSpaceOffsetStandard
    {
    
    public AecSpaceOffsetStandardSample ()
    {
    
    SetName("Basic");
    
    } protected override void InitRules() {
    // register rules
    
    }
    }
  9. Los objetos de reglas de la norma deben registrarse con los tres contornos de desfase (neto, utilizable y bruto). La clase básica AecSpaceOffsetStandard tiene 3 contenedores para estos conjuntos de reglas, a los que la clase derivada puede agregar nuevos ejemplares de reglas. Se puede hacer referencia a estos contenedores con los métodos siguientes:
    • AecSpaceOffsetStandard.NetRules()
    • AecSpaceOffsetStandard.UsableRules()
    • AecSpaceOffsetStandard.GrossRules()

    Cada una de estas llamadas devuelve una referencia a un objeto de la clase Autodesk.Aec.SpaceOffsetRulesManager.AecSpaceOffsetRuleCollection, que expone las funciones para registrar los distintos tipos de reglas. conjunto de herramientas de AutoCAD Architecture 2024 conserva y utiliza estos objetos. En el ejemplo siguiente se muestra cómo registrar reglas con los 3 tipos de desfase:

    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. (Opcional) AecSpaceOffsetStandard proporciona otro método virtual que puede implementar su propio estándar: AecSpaceOffsetStandard.InitCurrentDatabase(). Puesto que no se trata de un método abstracto de la clase básica, puede implementarse, pero no es obligatorio, a diferencia del método InitRules(). Se puede utilizar con una norma de cálculo de área para iniciar el dibujo actual con datos adicionales que puedan requerir las reglas, como definiciones de clasificación o estilos de zonas. Si se implementa, conjunto de herramientas de AutoCAD Architecture 2024 llamará a esa implementación cada vez que se asigne la norma a un dibujo.
    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...
    
    }
    }