규칙 구현에서 분류 사용 정보

현재 데이터베이스에 분류를 추가한 다음 영역 계산 표준 플러그인에서 사용할 수 있습니다. 원칙적으로 기존 AutoCAD Architecture toolset .NET API를 사용하여 규칙으로 전달된 공간에서 분류를 결정할 수 있습니다. 하지만 특히 분류 화면표시 이름의 모든 현지화로 작업을 수행할 수 있도록 규칙에서 항상 분류의 전역 이름을 사용해야 하기 때문에 이 작업은 복잡할 수 있습니다. 따라서 AecSpaceOffsetClassification 클래스에서는 이 부분을 단순화할 수 있는 기능을 제공합니다.

공간 객체에서 전역 분류 이름 읽기

AecSpaceOffsetClassification 클래스에는 공간 객체에서 전역 분류 이름을 가져와서 자원 문자열 테이블에 정의되어 있는 이름과 비교하여 경계를 간격띄우기하는 방법을 결정하는 데 사용되는 메서드가 있습니다. 이 메서드는 공용 문자열 GetClassificationName(Object Id objId)입니다. 다음 예에서는 위의 예 테이블에서 설명한 분류를 사용하는 경계 인접 요소 규칙을 보여줍니다. 규칙에서 표준의 AecSpaceOffsetClassification 객체에 액세스할 수 있어야 하기 때문에 표준은 생성자를 통해 전달되어 규칙의 구성원에 할당됩니다. 즉, 현재 표준에 대한 “this” 참조를 사용하여 표준의 InitRules() 구현에서 규칙을 작성해야 합니다.

public class BoundingAdjacencyRuleGross : AecBoundingAdjacencyRule
{
private AecSpaceOffsetStandardISA standard;
public BoundingAdjacencyRuleGross(AecSpaceOffsetStandardISA standardISA)
{
standard = standardISA;
} public override AecSpaceOffsetInfo Apply(ObjectId idSpace, ObjectId idObject, ObjectId idAdjSpace) {
String classificationNameThis = "";
String classificationNameAdjacent = "";
if (!idSpace.IsNull)
{
classificationNameThis = standard.Classification.GetClassificationName(idSpace);
} if (!idAdjSpace.IsNull) {
classificationNameAdjacent = standard.Classification.GetClassificationName(idAdjSpace);
} if (idAdjSpace.IsNull || classificationNameAdjacent =="Exterior") {
return new AecSpaceOffsetInfo(AecSpaceOffsetType.Opposite);
} if (!idAdjSpace.IsNull && classificationNameThis == "Exterior") {
return new AecSpaceOffsetInfo(AecSpaceOffsetType.Adjacent);
} if (classificationNameThis == "Office") {
return new AecSpaceOffsetInfo(AecSpaceOffsetType.Adjacent);
} // for the rest return new AecSpaceOffsetInfo(AecSpaceOffsetType.Center);
}
}