关于边界洞口

(SpaceOffsetRulesManager.AecBoundingOpeningRule 基类)

边界洞口规则可用于定义作为空间边界的墙内洞口(例如门和窗)处的偏移。例如,无法通过只从边界墙偏移轮廓来定义净偏移轮廓。通常,墙也会在门窗处切割。可使用此规则类型在使用面积计算标准计算的偏移轮廓中描述此偏移。

实施边界洞口规则

若要实施边界洞口规则,必须添加一个派生自 SpaceOffsetRulesManager.AecBoundingOpeningRule 的新类。该新类必须实施基类的一个或多个 Apply 接口,并通过调用基本方法 AecSpaceOffsetRuleBase.RegisterType() 来向应在构造函数中调用该类的对象类型自行注册。请注意此规则只能应用于以下类:

为其他对象类型注册此规则不会得到任何结果。该类的每个规则必须实施的 Apply 方法在 AecBoundingOpeningRule 中使用以下语法:

public abstract AecSpaceOffsetOpeningInfo*
Apply(Autodesk.AutoCAD.DatabaseServices.ObjectId idSpace,
Autodesk.AutoCAD.DatabaseServices.ObjectId idAdjSpace,
Autodesk.AutoCAD.DatabaseServices.ObjectId idObject,
Autodesk.AutoCAD.DatabaseServices.ObjectId idOpening);

第一个参数是当前空间的 ObjectId,将为该空间计算边界偏移。第二个参数是相邻空间的 ObjectId。如果没有相邻空间(例如外墙),则该参数的值将为 ObjectId.Null。第三个参数是洞口定位到的对象的 ObjectId,该对象通常是限制空间边界并含有洞口的墙。第四个参数是正在处理的洞口的 ObjectId。下例显示了新洞口规则 BoundingOpeningRuleNet 的框架:

namespace AecSpaceOffsetStandardSample
{
public class BoundingOpeningRuleNet : AecBoundingOpeningRule
{
public BoundingOpeningRuleNet ()
{
RegisterType(typeof(Door));
} public override AecSpaceOffsetInfo* Apply(ObjectId idSpace, ObjectId idAdjSpace, ObjectId idObject, ObjectId idOpening) { }
}
}

样例边界洞口规则 BoundingOpeningRuleNet

下例显示了一个简单边界洞口规则,其中为门定义了偏移。为了确保该规则不会应用于窗,只为门对象进行了注册,使得 AutoCAD Architecture 2022 toolset 不会为任何其他洞口调用该规则。该规则用于样例项目 AecSpaceOffsetStandardSample 中。偏移定义为直到门心板内。

namespace AecSpaceOffsetStandardSample
{
public class BoundingOpeningRuleNet : AecBoundingOpeningRule
{
public BoundingOpeningRuleNet()
{
RegisterType(typeof(Door));
}
public override AecSpaceOffsetOpeningInfo* Apply(ObjectId idSpace, ObjectId idAdjSpace, ObjectId idObject, ObjectId idOpening)
{
return new AecSpaceOffsetOpeningInfo(AecSpaceOffsetOpeningType.PanelAdjacent);
} return new AecSpaceOffsetInfo(AecSpaceOffsetType.NoChange); }
}
}

净边界和净边界图案填充偏移到门中心,但是不会在墙洞口处偏移。