Свойство конвертера IConvertorProperty3D
Свойство конвертера IConvertorProperty3D является одним из параметров методов обмена данными. Поскольку один и тот же интерфейс IConvertorProperty3D используется для управления работой конвертеров всех форматов, то он содержит как методы, общие для всех форматов, так и специфичные для того или иного формата. Кроме того, отличается набор данных, которые управляют работой экспорта и импорта.
Методы, которые вызываются при экспорте в любой формат, отвечают за выдачу ряда сведений о документе в целом, о системе координат, относительно которой геометрическая модель должна быть ориентирована, а также запрашивают, следует ли принудительно трансформировать объекты обменного формата так, чтобы сохранялась их форма и взаимное расположение, но использовались только правые системы координат и масштабный множитель единиц длины, на который при экспорте умножаются все линейные размеры:
bool GetPropertyString( MbeConverterStrings nString, std::string & propertyString );
MbPlacement3D GetOriginLocation();
bool ReplaceLocationsToRight() (для форматов с левыми системами координат);
double LengthUnitsFactor().
Метод
void SetIoPermission( MbeIOPermiss nPermission, bool setF )
позволяет задавать фильтр передаваемых объектов.
Метод, который вызывается при импорте из любого формата и служит для запроса масштабного коэффициента единиц длины в пользовательской модели, на который умножаются все линейные размеры:
double AppLengthUnitsFactor();
Метод, который вызывается при импорте из формата STEP и служит для управления импортом атрибутов вставок:
virtual bool ImportInstanceAttributes() const { return true; }
Метод, который вызывается при импорте из форматов SAT, X_T, X_B, STEP и IGES, а также при импорте проприетарных форматов через плагины, выдает запрет или разрешение на автоматическую сшивку отдельных поверхностей в тела и указывает точность сшивки:
bool EnableAutoStitch( double& stitchPrecision );
При импорте из IGES и SAT вызывается метод, который разрешает или запрещает конвертеру обратиться к запросчику:
bool CanShowMessages();
При экспорте в формат STL вызывается метод, определяющий, будут ли данные предоставляться в текстовом или двоичном виде:
bool IsFileAscii();
При экспорте в STEP вызывается метод, имеющий реализацию по умолчанию и служащий для задания представления текста в элементах аннотации и прикладного протокола STEP, который будет использоваться:
eTextForm GetAnnotationTextRepresentation();
При экспорте в IGES вызывается метод, который определяет будет ли экспортироваться информация о топологии:
bool IsOutOnlySurfaces();
При экспорте в полигональные форматы (STL и VRML) вызываются методы, имеющие реализацию по умолчанию и управляющие параметрами расчёта триангуляции:
MbStepData TesselationParameters();
bool DualSeams();
void DualSeams( bool dSeams );
При экспорте в STEP и SAT вызывается метод, имеющий реализацию по умолчанию и возвращающий версию формата. Для задания версии рекомендуется использовать предопределенные значения.
long int GetFormatVersion();
При экспорте в формат ACIS вызывается метод, имеющий реализацию по умолчанию и управляющий удалением швов из циклов:
virtual bool ExportWithSeamRemoval() const { return false; }
Метод
virtual bool ImportMeshesWithTopology()
импортирует полигональные объекты как объекты с топологической информацией.
Метод
virtual bool RepairInconsistentMesh( MbRepairInconsistentMeshParams & )
включает постобработку сеток.
Геометрическое ядро C3D предоставляет стандартную реализацию интерфейса IConvertorProperty3D.
Класс ConvConvertorProperty3D представляет собой стандартную реализацию свойства конвертера. Свойство наследует интерфейс класса IConvertorProperty3D.
В своих полях, к которым открыт доступ, класс ConvConvertorProperty3D хранит следующую информацию:
fileName – путь к файлу обменного формата (по умолчанию пустая строка);
fileASCII – признак экспорта в текстовый файл STL (по умолчанию true);
formatVersion – версия формата при экспорте (по умолчанию EXPORT_DEFAULT);
exportIGESTopology – флаг экспорта топологии в формат IGES (по умолчанию true);
ioPermission – фильтр объектов по типам (обеспечивает разрешение экспортировать и импортировать объекты любого типа);
propertyStrings – особые сведения о документе (пустой контейнер);
annotTextReprSTEP – представление текста аннотационных элементов (по умолчанию exf_TextOnly);
originLocation – локальная система координат модели;
enableAutostitch – флаг включения автосшивки при импорте модели (по умолчанию true);
autostitchPrecision – точность сшивки граней (по умолчанию 0.3);
tesseleationStepData – параметры триангуляции;
showMessages – управление обращением к запросчику (по умолчанию false);
dualSeams – флаг сохранения совпадающих точек швов (для конвертера STL и VRML);
lengthUnitsFactor – масштабный коэффициент единиц длины при импорте и экспорте;
appUnitsFactor – масштабный коэффициент единиц длины модели пользовательского приложения;
logRecords – контейнер сообщений для пользователя во время импорта/экспорта.
Интерфейс IConvertorProperty3D и класс ConvConvertorProperty3D объявлены в файле conv_exchange_settings.h.
Преобразование кодировок
За преобразование кодировок отвечает интерфейс IC3DCharEncodingTransformer, реализацию которого возвращает метод GetUserCharEncodingTransformer(). Метод имеет штатные реализации:
IC3DCharEncodingTransformerUTF8 - преобразование по правилам utf-8;
IC3DCharEncodingTransformerWindows1251 – преобразование, соответствующее кодировке cp-1251 (кириллица Windows);
C3DCharEncodingTransformerLocale - преобразование по правилам заданной локализации;
IC3DCharEncodingTransformerStep - преобразование по нотации STEP.
Если преобразование явно не задано, то для формата STEP по умолчанию используется преобразование IC3DCharEncodingTransformerStep, а для остальных форматов C3DCharEncodingTransformerLocale.