Aby utworzyć klasę norm pomieszczeń

Trzeba zdefiniować nową klasę w oparciu o klasę AecSpaceOffsetStandard. Klasa ta będzie szkieletem zarządzającym pojedynczymi regułami i punktami wejścia wywoływanymi przez program AutoCAD Architecture 2021 toolset podczas wczytywania i stosowania normy.

  1. Jeśli utworzono nowy projekt, będzie on zawierał jeden plik źródłowy podobny do poniższego:
    using System;
    using System.Collections.Generic;
    using System.Text;
    namespace AecSpaceOffsetStandardSample
    {
    
    public class Class1
    {
    }
    
    }

    Dodaj klasę standardową uzyskaną z klasy abstrakcji Autodesk.Aec.SpaceOffsetRulesManager.AecSpaceOffsetStandard

    Uwaga: Nazwa Autodesk.Aec.SpaceOffsetRulesManager jest dostępna jedynie wtedy, gdy odniesienie do AecSpaceOffsetRuleManager.dll zostało poprawnie skonfigurowane.
  2. Aby uprościć tworzenie standardowego dodatku plug-in do obliczania powierzchni, zaleca się dodanie nazw do wszystkich wymaganych klas. Dodaj następującą linię kodu do pliku źródłowego:
    using Autodesk.Aec.SpaceOffsetRulesManager;
    
  3. Zmień nazwę Class1 na nazwę opisującą normę (na przykład AecSpaceOffsetStandardMyStandard) i uczyń ją pochodną klasy abstrakcji AecSpaceOffsetStandard.
  4. Dodaj do klasy domyślnego konstruktora bez parametrów, który będzie potrzebny w następujących krokach:
    using System;
    using System.Collections.Generic;
    using System.Text;
    using Autodesk.Aec.SpaceOffsetRulesManager;
    namespace AecSpaceOffsetStandardSample
    {
    
    public class AecSpaceOffsetStandardSample : AecSpaceOffsetStandard
    {
    
    public AecSpaceOffsetStandardSample()
    {
    }
    
    }
    }
  5. Po poprawnym skonfigurowaniu klasy w pliku źródłowym można rozpocząć implementowanie niektórych metod, które eksponuje klasa podstawowa AecSpaceOffsetStandard i do których będzie się odwoływać program AutoCAD Architecture 2021 toolset.
  6. Dodaj wywołanie do metody AecSpaceOffsetStandard.SetName (nazwa łańcucha).

    Metoda AecSpaceOffsetStandard.SetName() jest zaimplementowana w klasie podstawowej i nie można jej zastąpić. Musi został wywołana, aby zarejestrować nazwę normy w konstruktorze klasy. Ta nazwa będzie wyświetlana na liście dostępnych norm obliczania powierzchni w programie AutoCAD Architecture 2021 toolset.

  7. Dodaj wywołanie do metody SetName() w konstruktorze klasy.

    W poniższym przykładzie pokazano wywołanie przykładowego projektu AecSpaceOffsetStandardSample, który rejestruje się w programie jako Podstawowa norma obliczania powierzchni.

    public class AecSpaceOffsetStandardSample : AecSpaceOffsetStandard
    {
    
    public AecSpaceOffsetStandardSample ()
    {
    
    SetName("Basic");
    
    }
    }
  8. Po zarejestrowaniu nazwy dodatku zawierającego normę obliczania powierzchni do posiadanej klasy należy dodać nową metodę AecSpaceOffsetStandardSample.InitRules(). Ta metoda zastąpi interfejs abstrakcji AecSpaceOffsetStandard.InitRules(). AutoCAD Architecture 2021 toolset wywołuje ten interfejs w celu rejestrowania poszczególnych implementowanych reguł odsunięcia. Z uwagi na to, że metoda jest abstrakcją, musi być zaimplementowana przez własną klasę standardową. Zobacz poniższy przykład z instrukcjami:
    public class AecSpaceOffsetStandardSample : AecSpaceOffsetStandard
    {
    
    public AecSpaceOffsetStandardSample ()
    {
    
    SetName("Basic");
    
    } protected override void InitRules() {
    // register rules
    
    }
    }
  9. Obiekty reguły normy muszą być zarejestrowane z trzema różnymi opcjami Odsuń obwiednie (netto, powierzchni użytkowej i brutto). Klasa podstawowa AecSpaceOffsetStandard dysponuje 3 zasobnikami na zestawy tych reguł, do których klasa pochodna może dodać nowe instancje reguł. Do tych zasobników można się odwoływać przy użyciu następujących metod:
    • AecSpaceOffsetStandard.NetRules()
    • AecSpaceOffsetStandard.UsableRules()
    • AecSpaceOffsetStandard.GrossRules()

    Każde z wywołań da w wyniku odwołanie do obiektu klasy Autodesk.Aec.SpaceOffsetRulesManager.AecSpaceOffsetRuleCollection, który udostępnia funkcje służące do zarejestrowania różnych typów reguł. Te obiekty są obsługiwane i używane przez program AutoCAD Architecture 2021 toolset. W poniższym przykładzie pokazano, jak zarejestrować reguły z trzema różnymi typami odsunięcia:

    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. (Opcja) Metoda AecSpaceOffsetStandard udostępnia inną wirtualną metodę, którą można zaimplementować w swoim standardzie: AecSpaceOffsetStandard.InitCurrentDatabase(). Nie jest to metoda abstrakcyjna klasy bazowej, dlatego można ją implementować, choć nie jest to konieczne, w przeciwieństwie do metody InitRules(). Norma obliczania powierzchni może jej używać do inicjowania aktualnego rysunku z wykorzystaniem dodatkowych danych wymaganych przez reguły, np. z definicjami klasyfikacji czy stylami stref. Jeśli ta metoda jest zaimplementowana, AutoCAD Architecture 2021 toolset wywołuje ją każdorazowo po przypisaniu tej normy do rysunku.
    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...
    
    }
    }