Ограничивающие проемы

(базовый класс 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); }
}
}

Граница в чистоте и чистая штриховка смещены к центру двери и не смещаются к проему в стене