경계 객체 규칙 정보

(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
}
}
}

샘플 경계 객체 규칙 BoundingObjectRuleGross

다음 예에서는 샘플 프로젝트의 총 프로파일에 사용되는 경계 객체 규칙 구현을 보여줍니다. 이 규칙은 구조 부재에 의해 경계가 설정된 프로파일에서 모든 세그먼트를 제거합니다. 이는 일반적으로 공간의 기본 프로파일의 경계를 설정하는 경우에도 구조 부재를 고려하지 않는 공간의 총 영역을 정의하는 데 사용합니다.

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 )
{
MemberType memType = member.MemberType;
if ( memType == MemberType.Column )
{
result = false;
}
}
transaction.Commit(); } return result;
}
}

아래 그림은 순 경계(녹색)에는 기둥이 포함되고 총 경계(파란색)에는 기둥이 무시되는 이 규칙에 대한 적용 예를 보여줍니다.