Мне нужно передать модель из Revit в Navisworks Manage определенным образом. Не так, как по-умолчанию, по уровням 0.000, +3.000, +6.000 и т.д., а иначе. Поискал варианты решения, остановился на том, что можно попробовать экспортировать модель из Revit в формате IFC, а уже потом IFC открыть в Navisworks.
Порылся в Интернете. Нашел вот такие ссылки:
https://github.com/whztt07/RevitIFChttps://github.com/whztt07/RevitCustomIFCexporterОсобенно заинтересовала первая. Судя по всему, этот проект использовался для экспорта из rvt в ifc до 2015 версии Revit включительно. Позже перекочевал в Revit.
Порывшись в API Revit обнаружил классы IFC*.
Пытаюсь с их помощью создать файл ifc с хотя бы одним примитивом или какой-другой информацией. Написал следующий код:
IFCFileModelOptions ifcModelOptions = new IFCFileModelOptions();
ifcModelOptions.SchemaFile = "C:\\Program Files\\Autodesk\\Revit 2018\\EDM\\IFC2X3_TC1.exp";
ifcModelOptions.SchemaName = "IFC2x3";
IFCFile ifcFile = IFCFile.Create(ifcModelOptions);
using (IFCTransaction transaction = new IFCTransaction(ifcFile))
{
string name = IFCEntityType.IfcOrganization.ToString();//cnt = 0
IFCAnyHandle hnd = ifcFile.CreateInstance(name);
hnd.SetAttribute("Name", IFCData.CreateString("Roga&Copyta"));
hnd.SetAttribute("Description", IFCData.CreateString("Some information"));
int cnt = ifcFile.GetInstanceCount(name, true);//cnt = 1
transaction.Commit();
}
IFCFileWriteOptions ifcWriteOptions = new IFCFileWriteOptions();
ifcWriteOptions.FileFormat = IFCFileFormat.Ifc;
ifcWriteOptions.FileName = "D:\\Export.ifc";
ifcFile.Write(ifcWriteOptions);
После выполнения кода получаю два файла: Export.ifc и Export.ifc.log.
Export.ifc
ISO-10303-21;
HEADER;
/******************************************************************************************
* STEP Physical File produced by: The EXPRESS Data Manager Version 5.02.0100.07 : 28 Aug 2013
* Module: EDMstepFileFactory/EDMstandAlone
* Creation date: Fri Sep 14 15:10:12 2018
* Host: WS2163-5
* Database: C:\Users\Shchetinin_AN\AppData\Local\Temp\{D460C585-697B-45D8-905C-75E88FB2833A}\ifc
* Database version: 5507
* Database creation date: Fri Sep 14 15:09:04 2018
* Schema: IFC2X3
* Model: DataRepository.ifc
* Model creation date: Fri Sep 14 15:09:04 2018
* Header model: DataRepository.ifc_HeaderModel
* Header model creation date: Fri Sep 14 15:09:04 2018
* EDMuser: sdai-user
* EDMgroup: sdai-group
* License ID and type: 5605 : Permanent license. Expiry date:
* EDMstepFileFactory options: 020000
******************************************************************************************/
Export.ifc.log
/******************************************************************************************
* WriteStepFile diagnostics.
* Date: Fri Sep 14 15:10:12 2018
* Produced by: The EXPRESS Data Manager Version 5.02.0100.07 : 28 Aug 2013
* Module: EDMstepFileFactory/EDMstandAlone
* Host: WS2163-5
* Database: C:\Users\Shchetinin_AN\AppData\Local\Temp\{D460C585-697B-45D8-905C-75E88FB2833A}\ifc
* Database version: 5507
* Database creation date: Fri Sep 14 15:09:04 2018
* Model: DataRepository.ifc
* Model creation date: Fri Sep 14 15:09:04 2018
* Header model: DataRepository.ifc_HeaderModel
* Header model creation date: Fri Sep 14 15:09:04 2018
* Step file: Export.ifc
* EDMuser: sdai-user
* EDMgroup: sdai-group
* License ID and type: 5605 : Permanent license. Expiry date:
* EDMstepFileFactory options: 020000
******************************************************************************************/
------------------------------------------------------------------------------------------------
Operation terminated with error: Illegal STEP header model.
Errors...........: 0
Warnings.........: 0
------------------------------------------------------------------------------------------------
Во-первых, в Export.ifc нет ничего похожего на то, что я пытался записать в коде.
Во-вторых, упоминается какая-то ошибка: Illegal STEP header model. Не понимаю, имеет ли она какое-то значение?
Подскажите, что я делаю не так, что в ifc файл ничего не записывается?
В принципе, посредством Revit API возможно заполнить ifc файл так, как мне нужно, или придется обратиться к проекту
https://github.com/whztt07/RevitIFC? Может быть у кого-нибудь имеется пример создания ifc файла средствами Revit API?
Заранее спасибо!