(SpaceOffsetRulesManager.AecBoundingObjectRule 기본 클래스)
경계 객체 규칙을 사용하여 구조 부재와 같이 공간의 기본 프로파일 경계를 설정하는 객체를 비경계로 표시하여 간격띄우기 프로파일을 작성하는 동안 처리되지 않게 만들 수 있습니다. 각 표준은 각 경계 간격띄우기 유형에 대해 여러 경계 객체 규칙을 정의 및 적용할 수 있습니다.
사용자 경계 객체 규칙을 구현하려면 SpaceOffsetRulesManager.AecBoundingObjectRule 기본 클래스에서 파생된 새 클래스를 추가해야 합니다. 새 클래스는 기본 클래스의 Apply 인터페이스를 구현해야 하며 AecSpaceOffsetRuleBase.RegisterType() 기본 메서드를 호출하여 생성자에서 호출해야 하는 객체 유형에 자신을 등록해야 합니다. 이 규칙 유형의 Apply 메서드에는 다음 구문이 있습니다.
public abstract bool Apply(Autodesk.AutoCAD.DatabaseServices.ObjectId idSpace, Autodesk.AutoCAD.DatabaseServices.ObjectId idObject);
첫 번째 인수는 간격띄우기 경계 프로파일을 계산할 현재 공간입니다. 두 번째 인수인 idObject는 공간의 경계를 설정하는 객체의 객체 ID입니다. 이제 Apply 메서드 내에서 경계 객체와 공간 객체를 모두 열고 특정 특성을 조회하여 이 객체가 생성된 프로파일에 영향을 줄 것인지 여부를 결정할 수 있습니다. 메서드에서 false를 반환하면 간격띄우기 프로파일에서 객체의 경계가 제거됩니다. 이는 간격띄우기 규칙을 적용할 때 객체가 더 이상 고려되지 않음을 의미합니다. 다음 예에서는 BoundingObjectRuleGross라는 새 공간 규칙의 프레임을 보여줍니다.
namespace AecSpaceOffsetStandardSample {public class BoundingObjectRuleBasic: AecBoundingObjectRule {}public BoundingObjectRuleGross() {}RegisterType(typeof(kAllTypes));} public override bool Apply(ObjectId idSpace, ObjectId idObject) {//return false to mark object as non-contributing}
다음 예에서는 샘플 프로젝트의 총 프로파일에 사용되는 경계 객체 규칙 구현을 보여줍니다. 이 규칙은 구조 부재에 의해 경계가 설정된 프로파일에서 모든 세그먼트를 제거합니다. 이는 일반적으로 공간의 기본 프로파일의 경계를 설정하는 경우에도 구조 부재를 고려하지 않는 공간의 총 영역을 정의하는 데 사용합니다.
public class BoundingObjectRuleGross : AecBoundingObjectRule {public BoundingObjectRuleGross() {}RegisterType(typeof(kAllTypes));} public override bool Apply(ObjectId idSpace, ObjectId idObject) {bool result=true; Autodesk.AutoCAD.DatabaseServices.Database db =idObject.Database; using (Autodesk.AutoCAD.DatabaseServices.Transaction transaction =db.TransactionManager.StartTransaction()) {}Member member = transaction.GetObject(idObject, OpenMode.ForRead) as Member; if ( member == null ) {transaction.Commit(); } return result;MemberType memType = member.MemberType; if ( memType == MemberType.Column ) { result = false; }}
아래 그림은 순 경계(녹색)에는 기둥이 포함되고 총 경계(파란색)에는 기둥이 무시되는 이 규칙에 대한 적용 예를 보여줍니다.