Инструменты пользователя

Инструменты сайта


developers:tutorial:modelviewexport

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
developers:tutorial:modelviewexport [2022/12/13 17:07]
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**).
Строка 258: Строка 278:
                 geometry.Meshes["​Fence_Mesh"​] = mesh;                 geometry.Meshes["​Fence_Mesh"​] = mesh;
  
-                // добавляем ​сеть в сводную модель,​+                // добавляем ​3D-модель в сводную модель,​
                 // назначаем ей тип и необходимые свойства                 // назначаем ей тип и необходимые свойства
                 var meshName = map.GenMeshName("​custom_mesh"​);​                 var meshName = map.GenMeshName("​custom_mesh"​);​
developers/tutorial/modelviewexport.1670951231.txt.gz · Последние изменения: 2022/12/13 17:07 — proxor