Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
developers:tutorial:modelviewexport [2022/12/13 17:09] proxor [Создание команды добавления объектов в сводную ИМ] |
developers:tutorial:modelviewexport [2023/01/10 11:12] proxor [Экспорт объектов в сводную ИМ] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== Экспорт чертежа и объектов информационной модели ====== | ====== Экспорт чертежа и объектов информационной модели ====== | ||
- | Программный комплекс Топоматик Робур предоставляет пользователю возможность экспортировать плоские чертежи, а также генерировать сводную информационную модель (ИМ). В этом примере мы сформируем примитивы на основе данных нашей модели и поместим их в экспортируемый плоский чертёж. Также мы сформируем объекты на основе данных нашей модели и поместим их в экспортируемую сводную ИМ. | + | Программный комплекс Топоматик Робур предоставляет пользователю возможность управления формированием чертежей плана и сводной модели. Для этого необходимо реализовать поддержку бродкастов: |
+ | - "generate_planchet" - для формирования чертежа плана | ||
+ | - "generate_visualization_map" - для формирования сводной модели | ||
+ | В этом примере мы сформируем примитивы на основе данных нашей модели и поместим их в экспортируемый плоский чертёж. Также мы сформируем объекты на основе данных нашей модели и поместим их в экспортируемую сводную ИМ. | ||
==== Подготовка модуля ==== | ==== Подготовка модуля ==== | ||
Строка 20: | Строка 23: | ||
==== Экспорт элементов модели в плоский чертёж ==== | ==== Экспорт элементов модели в плоский чертёж ==== | ||
Для экспорта элементов пользовательской модели в плоский чертёж необходимы следующий действия: | Для экспорта элементов пользовательской модели в плоский чертёж необходимы следующий действия: | ||
- | - Создание команды добавления примитивов на чертёж | + | - Создать команду для добавления примитивов на чертёж |
- | - Подписаться на бродкаст "generate_planchet" в plugin-файле с помощью команды из пункта 1 | + | - Зарегистрировать вызов команды через бродкаст «generate_planchet» в plugin-файле |
==== Создание команды добавления примитивов на чертёж ==== | ==== Создание команды добавления примитивов на чертёж ==== | ||
Команда должна вызвать метод принимающий в качестве аргумента объект типа **GeneratePlanchetEventArgs**. | Команда должна вызвать метод принимающий в качестве аргумента объект типа **GeneratePlanchetEventArgs**. | ||
Строка 127: | Строка 129: | ||
==== Экспорт объектов в сводную ИМ ==== | ==== Экспорт объектов в сводную ИМ ==== | ||
Для экспорта объектов пользовательской модели в сводную ИМ необходимы следующий действия: | Для экспорта объектов пользовательской модели в сводную ИМ необходимы следующий действия: | ||
- | - Создание команды добавления объектов в сводную ИМ | + | - Создать команду для добавления объектов в сводную ИМ |
- | - Подписаться на бродкаст "generate_visualization_map" в plugin-файле с помощью команды из пункта 1 | + | - Зарегистрировать вызов команды через бродкаст «generate_visualization_map» в plugin-файле |
==== Создание команды добавления объектов в сводную ИМ ==== | ==== Создание команды добавления объектов в сводную ИМ ==== | ||
Команда должна вызвать метод принимающий в качестве аргумента объект типа **CreateVisualizationEventArgs**. | Команда должна вызвать метод принимающий в качестве аргумента объект типа **CreateVisualizationEventArgs**. | ||
- | Наша модель содержит в себе линейные объекты. В качестве примера для отображения на сводной модели примем, что линейный объект нашей модели это забор (**Fence**) с фиксированной высотой 3 метра. | + | Свойство **CreateVisualizationEventArgs.Layer** возвращает текущий экспортируемый слой типа **CadViewLayer**. По свойству Layer можно определить, какая именно модель в данный момент экспортируется. |
- | + | ||
- | Свойство **CreateVisualizationEventArgs.Layer** возвращает текущий экспортируемый слой типа **CadViewLayer**. С помощью этого свойства убедимся, что слой является слоем нашей модели. | + | |
Свойство **CreateVisualizationEventArgs.Map** возвращает сводную ИМ типа **VisualizationMap**, в которую следует добавить необходимые объекты. | Свойство **CreateVisualizationEventArgs.Map** возвращает сводную ИМ типа **VisualizationMap**, в которую следует добавить необходимые объекты. | ||
- | Объекты ИМ объединяются в группы (**VisualizationGroup**). Группы так же являются объектами ИМ и могут содержать в себе другие группы. Новая группа создаётся методом **VisualizationMap.BeginGroup()**. После этого в блоке **try** в группу добавляются необходимые объекты и в блоке **finally** группа закрывается методом **VisualizationGroup.EndGroup()**. | + | Объекты ИМ объединяются в группы (**VisualizationGroup**). Каждая группа - это узел в дереве сводной модели. Текущую группу можно получить через свойство **VisualizationMap.Group**, и при необходимости переопределить её свойства через метод **VisualizationGroup.ApplayOverridedProperties()** или тип. Группы так же могут содержать в себе другие группы. Новая группа создаётся методом **VisualizationMap.BeginGroup()** и становится текущей. Метод **VisualizationGroup.EndGroup()** заканчивает работу с текущей группой и возвращает группу уровнем выше. |
+ | |||
+ | <note>Связку **BeginGroup() => EndGroup()** следует использовать в сочетании с блоком **try/finally**. | ||
+ | <code csharp> | ||
+ | # args - аргументы типа CreateVisualizationEventArgs | ||
+ | VisualizationMap map = args.Map; | ||
+ | map.BeginGroup("GroupName", false); | ||
+ | try | ||
+ | { | ||
+ | VisualizationGroup group = map.Group; | ||
+ | # пользовательские действия | ||
+ | } | ||
+ | finally | ||
+ | { | ||
+ | map.BeginGroup("GroupName", false); | ||
+ | } | ||
+ | </code> | ||
+ | </note> | ||
+ | |||
+ | Для добавления моделей в сводную ИМ используется метод **VisualizationMap.AddMesh()**, а для размещения добавленной модели в пространстве метод **VisualizationMap.AddInsertion()**. | ||
=== Добавление объекта в сводную модель === | === Добавление объекта в сводную модель === | ||
+ | |||
+ | Наша модель содержит в себе линейные объекты. В качестве примера для отображения на сводной модели примем, что линейный объект нашей модели это забор (**Fence**) с фиксированной высотой 3 метра. | ||
Для каждого участка забора создадим полигональную сеть (**MeshGeometry3D**). | Для каждого участка забора создадим полигональную сеть (**MeshGeometry3D**). |