AutoCAD Architecture 2011. Руководство пользователя (глава 36-40) - часть 13

 

  Главная      Книги - Разные     AutoCAD Architecture 2011. Руководство пользователя (глава 36-40) (март 2010 года)

 

поиск по сайту            правообладателям  

 

 

 

 

 

 

 

 

 

 

 

содержание      ..     11      12      13      14     ..

 

 

 

AutoCAD Architecture 2011. Руководство пользователя (глава 36-40) - часть 13

 

 

Высота помещения

По стандарту SIS помещение должно иметь высоту не менее 1,9 м и ширину не менее
0,6 м — в противном случае будет считаться, что его измерить невозможно. Стандарт
SIS учёта помещений, поставляемый с этим программным обеспечением,
автоматически используется для проверки высоты каждого помещения, чтобы
убедиться в соблюдении требований по высоте помещения. Если требования не
соблюдены, границы площади в чистоте (NTA) и полезной площади (BRA) смещаются
согласно правилам стандарта SIS.

Правило, касающееся высоты помещения, применяется только к ассоциативным 3D
помещениям произвольной формы. Для выдавленных 3D помещений во всех точках
используется значение высоты, заданное пользователем.

Учет площадей, основанный на стандарте "SIS" | 3465

ПРИМЕЧАНИЕ

Расчет высоты комнат для стандарта SIS появился в AutoCAD

Architecture 2011 впервые. В предыдущих версиях высота комнат автоматически
не рассчитывалась. При открытии в AutoCAD Architecture 2011 чертежа, созданного
в предыдущих версиях программы, границы помещений, рассчитанные по стандарту
SIS, могут измениться.

Площадь в чистоте (NTA)

Следующие правила применяются к формированию границ в чистоте по стандарту
SIS:

Границы в чистоте измеряются по внутренней границе стен.

Если ширина проемов в стене больше или равна 1,5 м, границы в чистоте
смещаются к центру стены.

Если ширина дверей больше или равна 1,5 м, границы в чистоте смещаются
внутрь дверной коробки.

Если ширина проемов в стене меньше 1,5 м, границы в чистоте измеряются по
внутренней границе стен.

3466 | Глава 39   Помещения

Если в качестве границы помещений заданы колонны в соответствии с описанием
в 

Задание свойства "Границы помещений" в стиле объекта

 на стр. 3186 и 

Задание

свойства "Границы помещений" в палитре свойств

 на стр. 3187, площадь колонн

вычитается из площади в чистоте.

Полезная площадь (BRA)

Следующие правила применяются к формированию полезных границ по стандарту
SIS:

Полезные границы помещения смещаются на 0,15 м в стену, если имеются
соседние помещения. Если ширина стены меньше 0.30 м, смещение выполняется
к центру стены. Если соседних помещений нет, полезные границы измеряются
по внутренней границе стен.

Если ширина проемов в стене больше или равна 1,5 м, полезные границы
смещаются к центру стены.

Если ширина дверей больше или равна 1,5 м, полезные границы смещаются
внутрь дверной коробки.

Учет площадей, основанный на стандарте "SIS" | 3467

Если ширина проемов в стене меньше 1,5 м, полезные границы смещаются на
0,15 м внутрь стены.

Если в качестве границы помещений заданы колонны в соответствии с описанием
в 

Задание свойства "Границы помещений" в стиле объекта

 на стр. 3186 и 

Задание

свойства "Границы помещений" в палитре свойств

 на стр. 3187, полезная граница

смещается на 0,15 м внутрь колонн. Остальная площадь колонн вычитается из
полезной площади.
Автономные колонны рассчитываются как внутренние стены. Полезная граница
смещается на 0,15 м внутрь колонн.

3468 | Глава 39   Помещения

Общая площадь

Следующие правила применяются к формированию общих границ по стандарту SIS:

Общие границы измеряются по центру стен, если имеются соседние помещения.
Если соседних помещений нет, общая граница смещается к противоположной
стороне стены.

Если в качестве границы помещений заданы колонны в соответствии с описанием
в 

Задание свойства "Границы помещений" в стиле объекта

 на стр. 3186 и 

Задание

свойства "Границы помещений" в палитре свойств

 на стр. 3187, площадь колонн

не вычитается из общей площади.

Учет площадей, основанный на стандарте "BOMA"

BOMA - это стандарт расчета площади, преимущественно используемый в США.
Стандарт BOMA в AutoCAD Architecture включает подмножество правил BOMA,
описанное в следующих разделах:

В стандарте BOMA помещения классифицируются следующим образом:

Тип помещений

Классификация

Офис

Зона офисных помещений

Магазин

Торговая зона

Лестницы, шахты лифтов, дымоходы, труб-
ные шахты, вертикальные вентиляционные

Основные шахты (MVP)

воздуховоды, атриумы, помещения крытых
портиков над уровнем пола с отделкой,
скважины для освещения и подобные шах-
ты над уровнем пола с отделкой

Учет площадей, основанный на стандарте "BOMA" | 3469

Тип помещений

Классификация

ПРИМЕЧАНИЕ

Не входят вертикальные

шахты, предназначенные для частного ис-
пользования нанимателем, занимающим
зону офисных помещений более чем на
одном этаже.

Умывальные, кладовки дворников, электро-
технические помещения, комнаты телефон-

Зона общего пользования на этаже (FCA)

ной связи, площадки лифтов и общие кори-
доры

Вестибюли, помещения атриумов на уровне
пола с отделкой, зона консьержей или

Зона общего пользования в здании (BCA)

службы безопасности, конференц-залы,
комнаты отдыха или торговые помещения,
помещения для приготовления и приема
пищи, медицинские и фитнес-центры, ком-
наты обработки корреспонденции, пункты
пожарной безопасности, полностью закры-
тые внутренние дворы за пределами наруж-
ных стен, центральная часть здания и зоны
обслуживания, в том числе не имеющие
наружного входа мастерские или аппарат-
ные.

Внешние помещения

Внешние

Внешнее из складских помещений на
уровне улицы

Выходящий на улицу фасад

Правила расчета для объектов AutoCAD

Некоторые объекты AutoCAD, например замкнутые полилинии и прямоугольники,
могут использоваться для формирования помещения, являющегося результатом
вычитания объекта из ассоциативного помещения (см. раздел 

Вычитание помещений

из ассоциативного помещения

 на стр. 3210). Такой метод может использоваться, к

примеру, для построения конструктивных пространств и других элементов, доступ
к которым иными способами получить невозможно. Поскольку поведение объектов
AutoCAD в индивидуальном порядке не задается, к помещениям, построенным

3470 | Глава 39   Помещения

методом вычитания с использованием объектов AutoCAD, применяется поведение,
заданное в стандарте BOMA:

Площадь в чистоте: замкнутая область вычитается из площади в чистоте.

Полезная площадь: замкнутая область не вычитается из полезной площади.

Общая площадь: замкнутая область не вычитается из общей площади.

Площадь в чистоте

Границы в чистоте будут создаваться на внутренней поверхности стены.

Полезная площадь

При расчете внешних стен полезные границы создаются на внутренней поверхности
оконных стекол, если высота окна составляет не менее 50 % от значения высоты
потолка помещения. Полезные границы будут создаваться на внутренней поверхности
стены, если высота окна составляет менее 50 % от значения высоты потолка
помещения.

Полезная площадь (тип помещения
MVP по BOMA)

Граница

Смежные помещения

Измерено от внешней грани стены

Офис, склад, BCA, FCA

Измерено от центровой линии стены

MVP

Учет площадей, основанный на стандарте "BOMA" | 3471

Полезная площадь (тип помещения
FCA по BOMA)

Граница

Смежные помещения

Измерено от внешней грани стены

Офис, склад, BCA

Измерено от центровой линии стены

FCA

Измерено от внутренней грани стены

MVP

Полезная площадь (тип помещения
"Торговая зона" по BOMA)

Граница

Смежные помещения

Измерено от внешней грани стены

Выходящий на улицу фасад

Измерено от центровой линии стены

Офис, склад, BCA

3472 | Глава 39   Помещения

Полезная площадь (тип помещения
"Торговая зона" по BOMA)

Граница

Смежные помещения

Измерено от внутренней грани стены

MVP, FCA

Полезная площадь (тип помещения
"Зона офисных помещений" по BOMA)

Граница

Смежные помещения

Измерено от внутренней грани стены

FCA, MVP

Измерено от центровой линии стены

Офис, склад, BCA

Полезная площадь (классификация
помещений ВСА)

Граница

Смежные помещения

Измерено от внутренней грани стены

FCA, MVP

Измерено от центровой линии стены

Офис, склад, BCA

Учет площадей, основанный на стандарте "BOMA" | 3473

Общая площадь

Общие границы создаются по внешней поверхности стены, если нет соседних
помещений или соседнее помещение выходит на улицу.

Общие границы создаются по осевой линии стены при наличии смежного помещения,
не выходящего на улицу.

Приложение 3: Реализация подключаемого модуля
стандарта расчета площади с AutoCAD Architecture
.NET API

Стандарты расчета площади являются подключаемыми модулями .NET,
реализующими набор правил по определению смещений границ в чистоте, полезных
и общих границ помещений в AutoCAD Architecture 2011. Если подключаемый модуль
загружен, он доступен для применения в чертежах в соответствии с описанием в

Задание в чертеже стандарта расчета площади

 на стр. 3254. К чертежу можно применить

только одни стандарт расчета площади. Если смещения границ помещения заданы
"По стандарту", для создания смещений границ будет использоваться назначенный

3474 | Глава 39   Помещения

чертежу стандарт расчета. Подробную информацию см. в разделе 

Изменение стандарта

расчета площади для существующих помещений

 на стр. 3256.

Границы, создаваемые стандартом расчета площади "Базовый"

API (интерфейс прикладного программирования), используемый для реализации
таких подключаемых модулей, доступен для сторонних разработчиков в составе
AutoCAD Architecture .NET API. В данном документе описано, как реализовать
пользовательский стандарт расчета площади.

Системные требования

Для получения возможности реализации нового подключаемого модуля стандарта
расчета площади в системе необходимо установить AutoCAD Architecture 2011. Также
должна быть установлена среда разработки, необходимая для создания сборок .NET
Framework 2.0, например, Visual Studio 2005, Visual C# 2005, Visual Basic 2005 или the
.NET Framework 2.0 Software Development Kit (SDK).

Реализация стандарта расчета площади

В следующих разделах описан интерфейс .NET API, используемый для реализации
стандарта расчета площади, с использованием примера, поставляемого с AutoCAD
Architecture в виде проекта C# и VB.NET. В документации используется проект C#.

Настройка нового проекта

Прежде всего в среде разработки необходимо создать новый проект. Другой способ:
можно использовать пример проекта 

AecSpaceOffsetStandardSample

.

ПРИМЕЧАНИЕ

Подключаемый модуль стандарта расчета площади реализован в

виде библиотеки классов .NET, а не в виде приложения Windows.

Реализация стандарта расчета площади  | 3475

1

Откройте Microsoft Visual Studio 2005.

2

Выберите в главном меню вкладку New (Создать).

3

Выберите File (Файл)

 ➤ 

Project (Проект).

4

В диалоговом окне New Project (Новый проект) выберите шаблон
библиотеки классов в одном из следующих местоположений:

Visual Basic

 ➤ 

Windows

Visual C#

 ➤ 

Windows

Visual C++

 ➤ 

CLR.

Определение настроек проекта

5

Введите имя нового проекта.

Рекомендуется использовать префикс 

AecAreaCalculationStandard

,

например, чтобы создать примерно такое имя

AecAreaCalculationStandardMyOffsetRules

. Такой способ именования

соответствует именам подключаемых модулей, включенных в AutoCAD
Architecture (например, 

AecAreaCalculationStandardBasic

,

AecAreaCalculationStandardBOMA

 и т.д.). Программа распознает, что

префикс описывает подключаемый модуль стандарта расчета площади
и способна извлечь имя из сборки в целях диагностики.

Перед обработкой убедитесь, что проект библиотеки классов .NET
настроен и можно начинать редактирование исходного кода и файлов
проекта.

Настройка необходимых ссылок сборки

6

Для создания подключаемого модуля стандарта расчета площади
библиотека классов .NET, созданная ранее, должна ссылаться на .NET
API, входящий в состав AutoCAD Architecture. Этот API реализован в
сборке 

AecSpaceOffsetRuleManager.dll

, на которую необходимо

установить ссылку в новом проекте.

Добавление в проект ссылок

7

Если имеется опыт работы с Microsoft Visual Studio, можно добавить
ссылку на сборку в файл 

AecSpaceOffsetRuleManager.dll

 проекта

библиотеки классов, нажав правой кнопкой мыши References (Ссылки)
в Solution Explorer проекта и выбрав Add Reference (Добавить ссылку).

8

Перейдите на страницу Browse в таблице свойств и найдите сборку

AecSpaceOffsetRuleManager.dll

 в папке 

C:\Program Files\AutoCAD

Architecture 2011

 (или в папке, выбранной при установке).

3476 | Глава 39   Помещения

Ссылки на AutoCAD Architecture и AutoCAD .NET API

9

Добавьте ссылки в следующие сборки установки:

acdbmgd.dll

 (AutoCAD .NET API)

aecbasemgd.dll

 (базовые классы AutoCAD Architecture)

aecarchmgd.dll

 (объекты AutoCAD Architecture)

Эти динамические библиотеки DLL находятся в той же папке, что и
сборка 

AecSpaceOffsetRuleManager.dll

.

10

Нажмите правой кнопкой мыши каждую ссылку в иерархической
структуре Solution Explorer в разделе References и выберите Properties.
Убедитесь, что свойство ссылки Copy Local установлено в значение
False для каждой ссылки.

Настройка копирования .dll таким образом, чтобы AutoCAD Architecture мог
сослаться на этот файл

AutoCAD Architecture ищет пользовательские сборки стандарта расчета площади в

C:\Program Files\AutoCAD Architecture 2011\Space Calculation Standards

, или по пути,

который был выбран в процессе установки (см

Использование нового стандарта

 на

стр. 3500). Каждый раз, когда происходит компиляция файла .dll, необходимо
перезапустить AutoCAD Architecture чтобы загрузить и проверить этот файл. Чтобы
настроить копирование .dll в соответствующую папку каждый раз, когда происходит
компиляция, сделайте следующее:

11

Выберите проект в Solution Explorer.

12

Щелкните правой кнопкой мыши и выберите Properties (Свойства).

13

Откройте вкладку Build Events (События сборки)

14

В командной строке для события Post-build (После сборки) введите
следующее:

@if exist $(TargetPath) @copy $(TargetPath) "C:\Program

Files\AutoCAD Architecture 2011\Space Calculation

Standards\"

@if exist $(TargetDir)$(TargetName).pdb @copy

$(TargetDir)$(TargetName).pdb "C:\Program Files\AutoCAD

Architecture 2011\Space Calculation Standards\"

Реализация стандарта расчета площади  | 3477

Создание класса стандартов помещений

Необходимо определить класс, основанный на 

AecSpaceOffsetStandard

. Этот класс

будет основой, управляющей отдельными правилами и точкой входа, к которой
обращается AutoCAD Architecture при загрузке и применении стандарта.

Добавление нового класса, основанного на AecSpaceOffsetStandard

1

Если новый проект создав в соответствии с описанием в 

Настройка

нового проекта

 на стр. 3475, он включает один исходный файл, похожий

на следующий:

using System;

using System.Collections.Generic;

using System.Text;

namespace AecSpaceOffsetStandardSample

{

public class Class1

{

}

}

Добавьте класс стандарта, основанный на абстрактном базовом классе

Autodesk.Aec.SpaceOffsetRulesManager.AecSpaceOffsetStandard

.

ПРИМЕЧАНИЕ

Пространство имен

Autodesk.Aec.SpaceOffsetRulesManager

 доступно только в том случае,

если правильно настроена ссылка на 

AecSpaceOffsetRuleManager.dll

.

Включение пространства имен Autodesk.Aec.SpaceOffsetRulesManager

2

Для упрощения создания подключаемого модуля стандарта расчета
площади рекомендуется ко всем необходимым классам добавить
пространство имен. Добавьте в исходный файл следующую строку кода:

using Autodesk.Aec.SpaceOffsetRulesManager;

3

Переименуйте 

Class1

 в имя, описывающее стандарт (например,

AecSpaceOffsetStandardMyStandard

), и сделайте его производным от

абстрактного базового класса 

AecSpaceOffsetStandard

.

4

Добавьте к классу, необходимому в следующих этапах, конструктор по
умолчанию, не имеющий параметров:

using System;

using System.Collections.Generic;

using System.Text;

using Autodesk.Aec.SpaceOffsetRulesManager;

3478 | Глава 39   Помещения

namespace AecSpaceOffsetStandardSample

{

public class AecSpaceOffsetStandardSample :

AecSpaceOffsetStandard

{

public AecSpaceOffsetStandardSample()

{

}

}

}

Реализация интерфейсов стандарта

5

Если новый класс настроен в исходном файле правильно, можно
приступить к реализации некоторых методов, обрабатываемых базовым
классом 

AecSpaceOffsetStandard

, и которые вызывает AutoCAD

Architecture.

Добавление вызова в метод AecSpaceOffsetStandard.SetName(имя строки)

6

Метод 

AecSpaceOffsetStandard.SetName()

 реализуется в базовом классе,

перезаписать его невозможно. Метод необходимо вызвать для
регистрации имени стандарта в конструкторе класса. Это имя
отображается в списке доступных стандартом расчета площади в
AutoCAD Architecture. Подробную информацию см. в разделе 

Задание

в чертеже стандарта расчета площади

 на стр. 3254.

Добавьте вызов метода 

SetName()

 в конструктор класса.

В следующем примере показан вызов для примера проекта

AecSpaceOffsetStandardSample

, который регистрируется в программе

как стандарт расчета площади "Базовый".

public class AecSpaceOffsetStandardSample :

AecSpaceOffsetStandard

{

public AecSpaceOffsetStandardSample ()

{

SetName("Basic");

}

}

Реализация стандарта расчета площади  | 3479

Добавление метода AecSpaceOffsetStandard.InitRules()

7

После регистрации имени подключаемого модуля стандарта расчета
площади, к классу необходимо добавить новый метод

AecSpaceOffsetStandardSample.InitRules()

. Метод перезаписывает

абстрактный интерфейс 

AecSpaceOffsetStandard.InitRules()

. AutoCAD

Architecture вызывает интерфейс для регистрации отдельных правил
смещения, которые планируется реализовать. Так как метод является
абстрактным, его необходимо реализовать с помощью
пользовательского класса стандартов. Указания см. в следующем
примере:

public class AecSpaceOffsetStandardSample :

AecSpaceOffsetStandard

{

public AecSpaceOffsetStandardSample ()

{

SetName("Basic");

}

protected override void InitRules()

{

// правила регистрации

}

}

Регистрация правил с помощью метода InitRules()

8

Объекты правил стандарта должны регистрироваться с 3 различными
границами смещений (в чистоте, полезная и общая). Базовый класс

AecSpaceOffsetStandard

 содержит 3 контейнера для этих наборов правил,

3480 | Глава 39   Помещения

к которым производный класс может добавить новые экземпляры
правил. На эти контейнеры можно ссылаться с помощью следующих
методов:

AecSpaceOffsetStandard.NetRules()

AecSpaceOffsetStandard.UsableRules()

AecSpaceOffsetStandard.GrossRules()

Информация о создании собственных правил в стандарте приведена в
разделе 

Реализация правил смещения

 на стр. 3483.

Каждый из этих вызовов возвращает ссылку на объект класса

Autodesk.Aec.SpaceOffsetRulesManager.AecSpaceOffsetRuleCollection

,

обрабатывающего функцию регистрации различных типов правил. Эти
объекты сохраняются и используются в AutoCAD Architecture. В
следующем примере показано, как зарегистрировать правила с 3
различными типами смещений:

public class AecSpaceOffsetStandardSample :

AecSpaceOffsetStandard

{

public AecSpaceOffsetStandardSample ()

{

SetName("Basic");

}

protected override void InitRules()

{

// Регистрация правил данного стандарта, чтобы

// их мог вызывать алгоритм расчета смещения

// в соответствии с типом границы

NetRules().AppendBoundingOpeningRule(new

BoundingOpeningRuleNet());

// без полезной границы

UsableRules().SetSpaceRule(new NullSpace());

GrossRules().AppendBoundingObjectRule(new

BoundingObjectRuleGross());

GrossRules().AppendBoundingAdjacencyRule(new

BoundingAdjacencyRuleGross());

}

}

Реализация метода AecSpaceOffsetStandard.InitCurrentDatabase() (дополнительно)

9

Класс 

AecSpaceOffsetStandard

 предоставляет другой виртуальный метод,

который может реализовать собственный стандарт:

Реализация стандарта расчета площади  | 3481

AecSpaceOffsetStandard.InitCurrentDatabase()

. Так как это не абстрактный

метод базового класса, его можно реализовать, но, в отличие от метода

InitRules()

 не в обязательном порядке. Можно воспользоваться

стандартом расчета площади для инициализации текущего чертежа с
дополнительными данными, для которых могут потребоваться эти
правила, - например, определения классификации или стили зоны. Если
метод реализован, AutoCAD Architecture вызывает его при каждого
назначение чертежу стандарта. Использование метода описано в
примере 

Дополнительно: Использование классификаций в стандартах

расчета площади

 на стр. 3501.

public class AecSpaceOffsetStandardSample :

AecSpaceOffsetStandard

{

public AecSpaceOffsetStandardSample ()

{

// задание имени стандарта

SetName("Basic");

}

// должен быть переопределен

protected override void InitRules()

{

}

// может быть переопределен

protected override void InitDatabase(Database* database)

{

// ...инициализация базы данных с определениями

классификации или стилями зон и т.д...

}

}

3482 | Глава 39   Помещения

Справка: класс AecSpaceOffsetStandard

В следующем списке представлены все члены базового класса 

AecSpaceOffsetStandard

:

namespace Autodesk.Aec.SpaceOffsetRulesManager

{

public abstract class AecSpaceOffsetStandard

{

protected internal AecSpaceOffsetStandard();

protected internal void SetName(string str);

protected internal abstract void InitRules();

protected internal AecSpaceOffsetRuleCollection NetRules();

protected internal AecSpaceOffsetRuleCollection UsableRules();

protected internal AecSpaceOffsetRuleCollection GrossRules();

protected internal virtual void InitDatabase(Database*

database);

protected internal virtual bool IsStandardStyle(ObjectId

idStyle);

}

}

Справка: класс AecSpaceOffsetRuleCollection

В следующем списке представлены все члены базового класса

AecSpaceOffsetRuleCollection

:

namespace Autodesk.Aec.SpaceOffsetRulesManager

{

public class AecSpaceOffsetRuleCollection

{

public void

AppendBoundingAdjacencyRule(AecBoundingAdjacencyRule rule);

public void AppendBoundingObjectRule(AecBoundingObjectRule

rule);

public void AppendBoundingOpeningRule(AecBoundingOpeningRule

rule);

public void SetSpaceRule(AecSpaceRule rule);

}

}

Реализация правил смещения

После создания нового класса стандарта необходимо реализовать правила. До сих
пор можно было компилировать код и успешно загружать в AutoCAD Architecture

Реализация правил смещения | 3483

сборку в виде стандарта расчета площади, а затем применять этот стандарт к объектам
помещения в чертеже Но при этом не создавались смещения, потому что еще на
заданы правила.

Имеется 4 различных типа правил смещения, которые можно комбинировать для
определения стандарта расчета площади. Правило может применяться к одному или
нескольким типам смещения (в чистоте, полезное и общее) при реализации метода

AecSpaceOffsetStandard.InitRules()

. Для каждого типа правила имеется базовый класс,

из которого необходимо брать реализацию пользовательского правила. Все эти
базовые классы являются производными одного общего абстрактного базового
класса, поэтому рекомендуется сначала просмотреть этот класс.

Абстрактный базовый класс AecSpaceOffsetBaseRule

Открытый абстрактный базовый класс 

AecSpaceOffsetBaseRule

 является членом

пространства имен 

Autodesk.Aec.SpaceOffsetRulesManager

 и базовым классом для

всех классов правил.

Метод Void AecSpaceOffsetBaseRule.RegisterType(System.Type type)

Базовый класс 

AecSpaceOffsetBaseRule

 реализует единственный метод: 

void

RegisterType(System.Type type)

. Этот метод определяет функцию, необходимую для

всех типов правил. Метод используется для регистрации типов объектов, для которых
AutoCAD Architecture вызывает реализацию определенного правила. В следующих
разделах приведены некоторые примеры использования данного метода. Если
реализация правила должна вызываться для всех типов объектов, для всех них не
требуется вызывать метод 

RegisterType

. Вместо этого можно вызывать метод

RegisterType(Autodesk.Aec.SpaceOffsetRulesManager.kAllTypes)

.

Ссылка на класс AecSpaceOffsetBaseRule

namespace Autodesk.Aec.SpaceOffsetRulesManager

{

public abstract class AecSpaceOffsetBaseRule

{

protected AecSpaceOffsetBaseRule();

protected void RegisterType(Type type);

}

}

3484 | Глава 39   Помещения

Реализация определенных правил смещения

Общим для всех правил является воздействие открытого абстрактного метода 

Apply

,

где возвращаемый тип и аргументы соответствуют типу правила, которое требуется
реализовать каждым новым классом правил. В следующих разделах описан базовый
класс каждого типа правил и показан пример реализации такого правила.

Базовое правило (базовый класс
SpaceOffsetRulesManager.AecSpaceRule)

Правило помещения применяется ко всему помещению в отличие от всех других
типов правил, являющихся более специфичными. Правила помещения являются
единственным типом правил смещения, который можно зарегистрировать для
каждого стандарта (по одному для каждого типа смещения - в чистоте, полезного и
общего).

Реализация правила помещения

Для реализации правила помещения необходимо добавить новый класс, полученный
из базового класса 

SpaceOffsetRulesManager.AecSpaceRule

. Новый класс должен

реализовывать интерфейс 

Apply

базового класса. Нет необходимости вызывать метод

базового класса 

AecSpaceOffsetRuleBase.RegisterType()

, так как он всегда применяется

для помещений. Метод 

Apply

, необходимый всем правилам для реализации, имеет

следующий синтаксис для класса 

AecSpaceRule

:

public abstract bool

Apply(Autodesk.AutoCAD.DatabaseServices.ObjectId idSpace);)

Логическое возвращаемое значение определяет, имеет ли помещение допустимую
границу смещения. При положительном ответе граница метод используется для

Реализация правил смещения | 3485

отключения всех границ определенного типа смещения. В следующем примере
показан фрагмент нового класса правил помещений:

namespace AecSpaceOffsetStandardSample

{

public class SpaceRule: AecSpaceRule

{

public SpaceRule()

{

}

public override bool Apply(ObjectId idSpace)

{

// возвращает false для отключения границ

}

}

}

Пример правила помещений NullSpace

Наиболее часто стандарт расчета площади включает только смещение в чистоте и
общее смещение. Можно реализовать правило помещения на основе класса

AecSpaceRule

, всегда возвращающее False при реализации метода 

Apply

.

Зарегистрируйте один экземпляр этого правила с полезным смещением в реализациях
стандартов 

AecSpaceOffsetStandard.InitRules()

.

Большее сложное правило помещения может определять, что все помещения с
площадью меньше определенного предварительно заданного значения не влияют
на определенный тип смещения. В следующем примере показано правило помещения,
являющееся часть примера проекта, которое делает все помещения недопустимыми.
Правило используется с примером стандарта для отключения полезной границы:

namespace AecSpaceOffsetStandardSample

{

public class NullSpace: AecSpaceRule

{

public SpaceRuleNet()

{

}

public override bool Apply(ObjectId idSpace)

{

return false;

}

}

}

3486 | Глава 39   Помещения

Справка: AecSpaceRule Class

В следующем списке представлены все члены базового класса 

AecSpaceRule

:

namespace Autodesk.Aec.SpaceOffsetRulesManager

{

public abstract class AecSpaceRule : AecSpaceOffsetBaseRule

{

public AecSpaceRule();

public abstract bool Apply(

Autodesk.AutoCAD.DatabaseServices.ObjectId idSpace,

Autodesk.Aec.Modeler.Body body);

}

}

Правило ограничивающего объекта (базовый класс
SpaceOffsetRulesManager.AecBoundingObjectRule)

Правила ограничивающих объектов позволяют отмечать объекты, ограничивающие
базовый профиль помещения, например, несущие элементы, как неограничивающие,
после чего такие объекты можно обрабатывать при создании профиля смещения.
Каждый стандарт может определять и применять для каждого типа смещения границ
несколько правил ограничивающих объектов.

Реализация правила ограничивающего объекта

Для реализации пользовательского правила ограничивающих объектов необходимо
добавить новый класс, полученный из базового класса

SpaceOffsetRulesManager.AecBoundingObjectRule

. Новый класс должен реализовывать

интерфейс 

Apply

базового класса и регистрировать себя для типов объекта,

необходимых конструктору при вызове базового метода

AecSpaceOffsetRuleBase.RegisterType()

. Синтаксис метода 

Apply

 данного типа правила:

public abstract bool

Apply(Autodesk.AutoCAD.DatabaseServices.ObjectId idSpace,

Autodesk.AutoCAD.DatabaseServices.ObjectId idObject);

Первый аргумент представляет собой текущее помещение, для которого
рассчитывается контур границы смещения. Второй аргумент 

idObject

 является

идентификатором объекта, ограничивающего помещение. В методе 

Apply

 объект

помещения, а также ограничивающий объект теперь могут открываться, у них могут
запрашиваться некоторые свойства для определения, следует ли учитывать объект
при создании профиля. Если метод возвращает False, границы объекта удаляются
из профиля смещения. Предполагается, что при применении правил смещения объект

Реализация правил смещения | 3487

учитывается не будет. В следующем примере показан фрагмент кода для нового
правила помещения 

BoundingObjectRuleGross

:

namespace AecSpaceOffsetStandardSample

{

public class BoundingObjectRuleBasic: AecBoundingObjectRule

{

public BoundingObjectRuleGross()

{

RegisterType(typeof(kAllTypes));

}

public override bool Apply(ObjectId idSpace, ObjectId idObject)

{

//возврат false для отметки объекта как неучитываемого

}

}

}

Пример правила ограничивающих объектов BoundingObjectRuleGross

В следующем примере показана реализация правила ограничивающих объектов,
используемое для общего профиля примера проекта. Это правило удаляет все
сегменты из профиля, ограниченного несущим элементом. Часто общая площадь

3488 | Глава 39   Помещения

помещения определяется без учета несущих элементов, даже если эти элементы
ограничивают базовый профиль помещения.

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;

}

}

На рисунке ниже показан пример применения этого правила, где граница в чистоте
(зеленая) включает столбцы, в то время как общая граница (синяя) игнорирует их.

Реализация правил смещения | 3489

Справка: AecBoundingObjectRule Class

В следующем списке представлены все члены базового класса 

AecBoundingObjectRule

:

namespace Autodesk.Aec.SpaceOffsetRulesManager

{

public abstract class AecBoundingObjectRule :

AecSpaceOffsetBaseRule

{

public AecBoundingObjectRule();

public abstract bool Apply(

Autodesk.AutoCAD.DatabaseServices.ObjectId idSpace,

Autodesk.AutoCAD.DatabaseServices.ObjectId idObject);

}

}

Правило ограничивающих смежностей (базовый класс
SpaceOffsetRulesManager.AecBoundingAdjacencyRule)

Правила ограничивающих смежностей определяют смещение сегментов базового
профиля помещения в зависимости от помещений, соседнего с этими сегментами.
Наиболее часто профили общего смещения используются для определения по
правилам ограничивающихся смежностей смещения границ к центру
ограничивающего объекта на внутренних стенах и к наружной поверхности
ограничивающего объекта на наружных стенах.

Реализация правила ограничивающих смежностей

Для реализации правила ограничивающих смежностей необходимо добавить новый
класс, полученный из базового класса

SpaceOffsetRulesManager.AecBoundingAdjacencyRule

. Как и для всех ранее описанных

типов смещения, новый класс должен реализовывать интерфейс 

Apply

 этого базового

класса и регистрировать себя для типов объектов, необходимых конструктору при
вызове базового метода 

AecSpaceOffsetRuleBase.RegisterType()

. Метод 

Apply

 каждого

правила, необходимый для реализации, имеет следующий вид в

AecBoundingAdjacencyRule

:

public abstract bool

Apply(Autodesk.AutoCAD.DatabaseServices.ObjectId idSpace,

Autodesk.AutoCAD.DatabaseServices.ObjectId idObject,

Autodesk.AutoCAD.DatabaseServices.ObjectId idAdjSpace);

Первый аргумент 

ObjectId

 представляет собой текущее помещение, для которого

рассчитывается граница смещения. Второй аргумент 

ObjectId

 является

3490 | Глава 39   Помещения

ограничивающим объектом между помещением из первого аргумента и соседним
помещением. Третий аргумент представляет собой 

ObjectId

 соседнего помещения.

Если смежных помещений нет, как в случае наружных стен, величина аргумента
будет равна

ObjectId.Null

. В следующем примере показан фрагмент кода для нового

правила помещения 

BoundingAdjacencyRuleGross

:

namespace AecSpaceOffsetStandardSample

{

public class BoundingAdjacencyRuleGross :

AecBoundingAdjacencyRule

{

public BoundingAdjacencyRuleGross()

{

}

public override AecSpaceOffsetInfo Apply(ObjectId idSpace,

ObjectId idObject, ObjectId idAdjSpace)

{

//

}

}

}

Пример правила ограничивающих смежностей
BoundingAdjacencyRuleGross

В следующем примере показана реализация правила ограничивающих смежностей,
используемое в примере проекта. Правило определяет смещение к центру

Реализация правил смещения | 3491

ограничивающего объекта для 2 помещений у внутренних стен и смещение к
наружной поверхности стены при отсутствии соседнего помещения.

public class BoundingAdjacencyRuleGross : AecBoundingAdjacencyRule

{

public BoundingAdjacencyRuleGross()

{

}

public override AecSpaceOffsetInfo Apply(ObjectId idSpace,

ObjectId idObject, ObjectId idAdjSpace)

{

if (idAdjSpace.IsNull)

{

// Если соседнего помещения нет (наружная стена), сохраняется

смещение 'Opposite'

return new AecSpaceOffsetInfo(AecSpaceOffsetType.Opposite);

}

else

{

// При наличии соседнего помещения (внутренняя стена), его

центр

return new AecSpaceOffsetInfo(AecSpaceOffsetType.Center);

}

}

}

3492 | Глава 39   Помещения

Справка: AecBoundingAdjacencyRule Class

В следующем списке представлены все члены базового класса

AecBoundingAdjacencyRule

:

namespace Autodesk.Aec.SpaceOffsetRulesManager

{

public abstract class AecBoundingAdjacencyRule :

AecSpaceOffsetBaseRule

{

public AecBoundingAdjacencyRule();

public abstract AecSpaceOffsetInfo Apply(

Autodesk.AutoCAD.DatabaseServices.ObjectId idSpace,

Autodesk.AutoCAD.DatabaseServices.ObjectId idObject,

Autodesk.AutoCAD.DatabaseServices.ObjectId idAdjSpace);

}

}

Ограничивающие проемы (базовый класс
SpaceOffsetRulesManager.AecBoundingOpeningRule)

Правило ограничивающих проемов можно использовать для определения смещения
в проемах стен, ограничивающих помещения, например, дверях и окнах. Например,
профиль смещения границ в чистоте нельзя определить с помощью смещения
профиля только по ограничивающим стенам. Как правило, стена также обрезается
у дверей и окон. Этот тип правила можно использовать для описания стены в профиле
смещения, рассчитанного по стандарту расчета площади.

Реализация правила ограничивающих проемов

Для реализации правила ограничивающих проемов необходимо добавить новый
класс, полученный из базового класса

SpaceOffsetRulesManager.AecBoundingOpeningRule

. Новый класс должен реализовывать

интерфейс 

Apply

базового класса и регистрировать себя для типов объекта,

необходимых конструктору при вызове базового метода

AecSpaceOffsetRuleBase.RegisterType

. Обратите внимание, что это правило может

применяться только к следующим классам:

Проемы

Двери

Окна

Реализация правил смещения | 3493

Оконные и дверные сборки

Регистрация этого правила для других типов объектов не дает никаких результатов.
Метод 

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

В следующем примере показано простое правило ограничивающих проемов, где
определяется смещение для дверей. Чтобы правило не применялось к окнам, оно
регистрируется только для объекта Door, поэтому AutoCAD Architecture не вызывает
его для всех других проемов. Это правило используется в примере проекта

3494 | Глава 39   Помещения

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);

}

}

}

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

Реализация правил смещения | 3495

Справка: AecBoundingOpeningRule Class

В следующем списке представлены все члены базового класса 

AecBoundingOpeningRule

:

namespace Autodesk.Aec.SpaceOffsetRulesManager

{

public abstract class AecBoundingOpeningRule :

AecSpaceOffsetBaseRule

{

public AecBoundingOpeningRule();

public AecSpaceOffsetOpeningInfo* Apply(

Autodesk.AutoCAD.DatabaseServices.ObjectId idSpace,

Autodesk.AutoCAD.DatabaseServices.ObjectId idAdjSpace,

Autodesk.AutoCAD.DatabaseServices.ObjectId idObject,

Autodesk.AutoCAD.DatabaseServices.ObjectId idOpening

);

}

}

Класс AecSpaceOffsetInfo

Класс 

AecSpaceOffsetInfo

 используется для описания смещения как результата

применения правила ограничивающих смежностей. Смещение возвращается при
реализации методов 

Apply

 этого класса, вызываемых AutoCAD Architecture при

расчете смещений границ помещения в соответствии со стандартом, которому
назначено это правило.

Задается смещение с двумя свойствами - тип и значение. Тип определяет, где
смещение должно быть привязано на ограничивающем объекте, например на соседней
грани стены. Значение определяет дополнительное расстояние смещения от этой
привязки, где положительное значение будет увеличиваться в направлении от
рассматриваемого помещения. Например, можно определить смещение, которое
привязано к центру стены, которая затем имеет дополнительное смещение 1 дюйм
относительно противолежащей грани.

3496 | Глава 39   Помещения

 

 

 

 

 

 

 

содержание      ..     11      12      13      14     ..