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 호출을 보여 줍니다.
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에서 유지 및 사용됩니다. 다음 예에서는 세 가지 간격띄우기 유형을 사용하여 규칙을 등록하는 방법을 보여줍니다.
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...}