AecSpaceOffsetStandard から派生する新しいクラスを定義する必要があります。 このクラスは、個々の規則を管理するフレームワークとなり、この標準をロードして適用する際に AutoCAD Architecture 2022 toolset が呼び出すエントリ ポイントとなります。
using System; using System.Collections.Generic; using System.Text; namespace AecSpaceOffsetStandardSample {public class Class1 { }}
抽象基本クラス 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() { }}
AecSpaceOffsetStandard.SetName() メソッドは基本クラスで実装されており、変更することはできません。 このメソッドは、クラスのコンストラクタで標準の名前を登録するために呼び出します。 登録した名前は、AutoCAD Architecture 2022 toolset で利用可能な面積計算標準の一覧に表示されます。
次の例では、サンプル プロジェクト AecSpaceOffsetStandardSample の呼び出しを示します。この中で、Basic 面積計算標準としてそれ自体を登録します。
public class AecSpaceOffsetStandardSample : AecSpaceOffsetStandard {public AecSpaceOffsetStandardSample () {}SetName("Basic");}
public class AecSpaceOffsetStandardSample : AecSpaceOffsetStandard {public AecSpaceOffsetStandardSample () {}SetName("Basic");} protected override void InitRules() {// register rules}
これらのメソッドを呼び出すと、Autodesk.Aec.SpaceOffsetRulesManager.AecSpaceOffsetRuleCollection クラスのオブジェクトへの参照が返されます。各オブジェクトでは、異なる規則タイプを登録するための関数が公開されています。 これらのオブジェクトは、AutoCAD Architecture 2022 toolset によって保持および使用されます。次の例では、3 つのオフセット タイプを使用して規則を登録する方法を示します。
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...}