Порядок работы с конвертером
Конвертеры предоставляют средства для экспорта и импорта моделей MbModel, MbItem и пользовательских реализаций документов ItModelDocument.
Группа функций, предназначенных для обмена данными через файлы, размещена в файле conv_model_exchange.h и объявлена в пространстве имён c3d:
Функция
MbeConvResType c3d::ImportFromFile( MbModel & model,
const path_string & fileName,
IConvertorProperty3D * prop = nullptr,
IProgressIndicator * indicator = nullptr );
позволяет прочитать файл обменного формата в модель.
Функция
MbeConvResType c3d::ImportFromFile( c3d::ItemSPtr & item,
const path_string & filePath,
IConvertorProperty3D * prop = nullptr,
IProgressIndicator * indicator = nullptr );
позволяет прочитать файл обменного формата в элемент.
Функция
MbeConvResType c3d::ImportFromFile( ItModelDocument & mDoc,
const path_string & filePath,
IConvertorProperty3D * prop = nullptr,
IProgressIndicator * indicator = nullptr );
позволяет прочитать файл обменного формата в модель.
Функция
MbeConvResType c3d::ExportIntoFile( MbModel & model,
const path_string & filePath,
IConvertorProperty3D * prop = nullptr,
IProgressIndicator * indicator = nullptr );
позволяет записать модель в файл обменного формата.
Функция
MbeConvResType c3d::ExportIntoFile( MbItem & item,
const path_string & filePath,
IConvertorProperty3D * prop = nullptr,
IProgressIndicator * indicator = nullptr );
позволяет записать элемент в файл обменного формата.
Функция
MbeConvResType c3d::ExportIntoFile( ItModelDocument & mDoc,
const path_string & filePath,
IConvertorProperty3D * prop = nullptr,
IProgressIndicator * indicator = nullptr );
позволяет записать модельный документ в файл обменного формата.
Аргументами функций являются:
model – экспортируемая или импортируемая геометрическая модель;
item – элемент модели;
mDoc – модельный документ;
fileName (filePath) – полный путь к файлу;
prop – реализация интерфейса свойств конвертера;
indicator – индикатор прогресса.
При импорте обменный формат определяется на основе расширения файла.
Группа функций, реализующих передачу моделей в обменные форматы через оперативную память:
MbeConvResType c3d::ImportFromBuffer( MbModel & model,
const C3DExchangeBuffer & buffer,
MbeModelExchangeFormat modelFormat,
IConvertorProperty3D * prop = nullptr,
IProgressIndicator * indicator = nullptr );
MbeConvResType c3d::ImportFromBuffer( c3d::ItemSPtr & item,
const C3DExchangeBuffer & buffer,
MbeModelExchangeFormat modelFormat,
IConvertorProperty3D * prop = nullptr,
IProgressIndicator * indicator = nullptr );
MbeConvResType c3d::ImportFromBuffer( ItModelDocument & mDoc,
const C3DExchangeBuffer & buffer,
MbeModelExchangeFormat modelFormat,
IConvertorProperty3D * prop = nullptr,
IProgressIndicator * indicator = nullptr );
MbeConvResType c3d::ExportIntoBuffer( MbModel & model,
MbeModelExchangeFormat modelFormat,
C3DExchangeBuffer & buffer,
IConvertorProperty3D * prop = nullptr,
IProgressIndicator * indicator = nullptr );
MbeConvResType c3d::ExportIntoBuffer( MbItem & item,
MbeModelExchangeFormat modelFormat,
C3DExchangeBuffer & buffer,
IConvertorProperty3D * prop = nullptr,
IProgressIndicator * indicator = nullptr );
MbeConvResType c3d::ExportIntoBuffer( ItModelDocument & item,
MbeModelExchangeFormat modelFormat,
C3DExchangeBuffer & buffer,
IConvertorProperty3D * prop = nullptr,
IProgressIndicator * indicator = nullptr );
Аргументами функций являются:
model – экспортируемая или импортируемая геометрическая модель;
item – элемент модели;
mDoc – модельный документ;
modelFormat – формат обменного файла;
buffer – буфер;
data – адрес буфера в памяти;
prop – настройки конвертера;
indicator – индикатор прогресса.
Функции ImportFromFile(), ImportFromBuffer() выполняют импорт геометрических моделей:
– форматов STL, OBJ;
– формата SAT/SAB до 22.0 версии включительно;
– формата IGES версии 5.3;
– формата JT версий 8.0 — 11.x;
– формата Parasolid до версии 25.0 включительно;
– формата STEP с поддерживаемыми прикладными протоколами 203, 214;
– формата VRML версии 2.0.
Функции ExportIntoFile(), ExportInfoBuffer() выполняют экспорт геометрических моделей:
– форматов STL, OBJ;
– формата SAT/SAB до 22.0 версии включительно;
– формата IGES версии 5.3;
– формата JT версии 9.5;
– формата Parasolid до версии 10.0 включительно;
– формата STEP с поддерживаемыми прикладными протоколами 203, 214;
– формата VRML версии 2.0.
Результат FullFilePath() аргумента prop используется для определения формата обменного файла только в том случае, если значение modelFormat равно mxf_autodetect.
Ответственность за удаление буфера, который создаёт и наполняет функция ExportIntoBuffer(), лежит на пользователе. Для освобождения памяти рекомендуется использовать оператор delete[].
Другим способом импорта и экспорта модели является обращение к методам конвертера IConverter3D.
Для начала работы с конвертером необходимо получить его экземпляр. Определённая в глобальной области видимости функция IConverter3D * GetConvertor3D() создает конвертер, который может выполнять импорт и экспорт моделей в любом из поддерживаемых форматов. Функция не имеет параметров. В случае успеха функция возвращает конвертер, в противном случае возвращает нулевой указатель.
Функция объявлена в файле conv_model_exchange.h.
После создания конвертера обмен данными осуществляется путем вызова методов конвертера. Методы конвертера (устаревшие, рекомендуется использовать ImportFromFile(), ImportFromBuffer(), ExportInfoFile(), ExportInfoBuffer()):
MbeConvResType SATRead( IConvertorProperty3D & property,
ItModelDocument & document,
std::iostream * stream,
IProgressIndicator * indicator = 0 ),
MbeConvResType SATWrite( IConvertorProperty3D & property,
ItModelDocument & document,
std::iostream * stream,
IProgressIndicator * indicator = 0 ),
MbeConvResType SATRead( IConvertorProperty3D & property,
ItModelDocument & document,
IProgressIndicator * indicator = 0,
MbRefItem * qeuryStitch = 0 );
MbeConvResType SATWrite( IConvertorProperty3D & property,
ItModelDocument & document,
IProgressIndicator * indicator = 0,
MbRefItem * qeuryStitch = 0 );
MbeConvResType IGSRead( IConvertorProperty3D & property,
ItModelDocument & document,
IProgressIndicator * indicator = 0,
MbRefItem * qeuryStitch = 0 );
MbeConvResType IGSWrite( IConvertorProperty3D & property,
ItModelDocument & document,
IProgressIndicator * indicator = 0,
MbRefItem * qeuryStitch = 0 );
MbeConvResType JTRead( IConvertorProperty3D & property,
ItModelDocument & document,
IProgressIndicator * indicator = 0,
MbRefItem * qeuryStitch = 0 );
MbeConvResType JTWrite( IConvertorProperty3D & property,
ItModelDocument & document,
IProgressIndicator * indicator = 0,
MbRefItem * qeuryStitch = 0 );
MbeConvResType XTRead( IConvertorProperty3D & property,
ItModelDocument & document,
IProgressIndicator * indicator = 0,
MbRefItem * qeuryStitch = 0 );
MbeConvResType XTWrite( IConvertorProperty3D & property,
ItModelDocument & document,
IProgressIndicator * indicator = 0,
MbRefItem * qeuryStitch = 0 );
MbeConvResType STEPRead( IConvertorProperty3D & property,
ItModelDocument & document,
IProgressIndicator * indicator = 0,
MbRefItem * qeuryStitch = 0 );
MbeConvResType STEPWrite( IConvertorProperty3D & property,
ItModelDocument & document,
IProgressIndicator * indicator = 0,
MbRefItem * qeuryStitch = 0 );
MbeConvResType STLRead( IConvertorProperty3D & property,
ItModelDocument & document,
IProgressIndicator * indicator = 0,
MbRefItem * qeuryStitch = 0 );
MbeConvResType STLWrite( IConvertorProperty3D & property,
ItModelDocument & document,
IProgressIndicator * indicator = 0,
MbRefItem * qeuryStitch = 0 );
MbeConvResType VRMLRead( IConvertorProperty3D & property,
ItModelDocument & document,
IProgressIndicator * indicator = 0,
MbRefItem * qeuryStitch = 0 );
MbeConvResType VRMLWrite( IConvertorProperty3D & property,
ItModelDocument & document,
IProgressIndicator * indicator = 0,
MbRefItem * qeuryStitch = 0 );
MbeConvResType OBJRead( IConvertorProperty3D & property,
ItModelDocument & document,
IProgressIndicator * indicator = 0)
выполняют импорт и экспорт модели в форматах SAT, IGES, JT, X_T, STEP, STL, VRML, OBJ (только импорт) соответственно.
Входными параметрами методов являются:
property – свойства конвертера;
stream – поток для получения или записи модели обменного формата;
document – документ, передающий геометрическую модель и другую информацию;
indicator – индикатор хода процесса чтения или записи;
qeuryStitch – запросчик сшивки поверхностей или единиц измерения при импорте (устаревший параметр, не рекомендуется использовать, для управления сшивкой следует пользоваться свойствами конвертера).
В случае успеха методы возвращают cnv_Success или cnv_PartialSuccess, в противном случае возвращается код результата операции из перечисления MbResultType.
По окончании работы полученный экземпляр конвертера необходимо удалить.
Конвертер наследует интерфейс класса IConverter3D, который объявлен в файле conv_model_exchange.h.
В классе IConverter3D определены следующие методы:
Метод
virtual void SetConfigurationSelector( SPtr<IConfigurationSelector> configuration_selector )
устанавливает обработчик для выбора конфигураций. Если обработчик установлен и в импортируемом файле есть более одной конфигурации (исполнения), то в процессе чтения будет вызван установленный обработчик для выбора необходимой конфигурации (см. Импорт конфигураций модели).
Входной параметр configuration_selector – указатель на устанавливаемый обработчик.
Метод
virtual void SetMetadataTransferCallback( SPtr<IConverterMetadataReceiver> metadataTransferCallback )
устанавливает передачу метаданных (см. Импорт метаданных строительных форматов).
Метод
virtual MbeConvResType LoadForeignReader( const c3d::path_string & pluginName, const c3d::optionNameValuePairs_t & pluginSpecificSettings )
загружает плагин получения данных для построения модели. Используется для явного задания используемого плагина для импорта проприетарных форматов, расположенного по указанному пути. Это альтернативный методу c3d::ImportFromFile() метод использования плагинов, когда путь до плагинов явно не задается, предполагая, что плагины лежат в одном каталоге с ядром.
Входные параметры:
pluginName – имя подключаемого файла;
pluginSpecificSettings – специфические для плагина настройки (описание специфичных для плагина настроек следует получить у поставщика компонента).
Метод
virtual MbeConvResType ReleaseForeignReader()
отключает загруженный плагин получения данных для построения модели.
Метод
virtual MbeConvResType ImportForeign( const c3d::path_string & path, ItModelDocument & idoc, IConvertorProperty3D* prop = 0, IProgressIndicator* indicator = 0 )
читает файл с использованием плагина, заданного в LoadForeignReader().
Входные параметры:
path – путь к файлу, который нужно прочитать;
idoc – реализация интерфейса документа;
prop – реализация интерфейса свойств конвертера;
indicator – индикатор хода процесса.