È 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 AutoCAD Architecture 2023 toolset durante il caricamento e l'applicazione dello standard.
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.
using Autodesk.Aec.SpaceOffsetRulesManager;
using System; using System.Collections.Generic; using System.Text; using Autodesk.Aec.SpaceOffsetRulesManager; namespace AecSpaceOffsetStandardSample {public class AecSpaceOffsetStandardSample : AecSpaceOffsetStandard {}public AecSpaceOffsetStandardSample() { }}
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 AutoCAD Architecture 2023 toolset.
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");}
public class AecSpaceOffsetStandardSample : AecSpaceOffsetStandard {public AecSpaceOffsetStandardSample () {}SetName("Basic");} protected override void InitRules() {// register rules}
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 AutoCAD Architecture 2023 toolset. 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());}
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...}