45803fb2d7
- C3d aggiornamento delle librerie.
828 lines
26 KiB
C
828 lines
26 KiB
C
////////////////////////////////////////////////////////////////////////////////
|
|
/**
|
|
\file
|
|
\brief \ru API для передачи моделей, прочитанных сторонним модулем.
|
|
\en API for models read by 3d party component.\~
|
|
\details \ru Определен интерфейс, который должен реализовать модуль и структуры
|
|
для передачи информации о модели, топологии, геометрии.
|
|
\en Declared API the module has to implement and structures for structure,
|
|
topology and geomentry transmission.\~
|
|
*/
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef __CONV_PUGIN_IMPORT_H
|
|
#define __CONV_PUGIN_IMPORT_H
|
|
|
|
#include <wchar.h>
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Dynamic-link library API
|
|
//
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Имена функций инициализации и завершения работы плагина.
|
|
\en Initialize and release functions of plugin.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
#define C3D_PLUGIN_INIT_SOURCE InitSource
|
|
#define C3D_PLUGIN_C_SET_PLUGIN_OPTION CSetPluginOption
|
|
#define C3D_PLUGIN_W_SET_PLUGIN_OPTION WSetPluginOption
|
|
#define C3D_PLUGIN_RELEASE_SOURCE ReleaseSource
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Имена функций инициализации и завершения работы плагина.
|
|
\en Initialize and release functions of plugin.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
#define C3D_PLUGIN_INIT_SOURCE_NAME "InitSource"
|
|
#define C3D_PLUGIN_C_SET_PLUGIN_OPTION_NAME "CSetPluginOption"
|
|
#define C3D_PLUGIN_W_SET_PLUGIN_OPTION_NAME "WSetPluginOption"
|
|
#define C3D_PLUGIN_RELEASE_SOURCE_NAME "ReleaseSource"
|
|
|
|
|
|
struct ObModelSource;
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Объявление функций инициализации и завершения работы плагина.
|
|
\en Declare initialize and release functions of plugin.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
#ifdef WIN32
|
|
#define C3D_PLUGIN_INIT_EXPORT_DECLARE extern "C" __declspec( dllexport ) ObModelSource* _cdecl C3D_PLUGIN_INIT_SOURCE ( const char*, const char* );
|
|
#define C3D_PLUGIN_C_SET_PLUGIN_OPTION_DECLARE extern "C" __declspec( dllexport ) void _cdecl C3D_PLUGIN_C_SET_PLUGIN_OPTION ( const char*, const char* );
|
|
#define C3D_PLUGIN_W_SET_PLUGIN_OPTION_DECLARE extern "C" __declspec( dllexport ) void _cdecl C3D_PLUGIN_W_SET_PLUGIN_OPTION ( const wchar_t*, const wchar_t* );
|
|
#define C3D_PLUGIN_RELEASE_EXPORT_DECLARE extern "C" __declspec( dllexport ) void _cdecl C3D_PLUGIN_RELEASE_SOURCE ( ObModelSource* );
|
|
#else
|
|
#define C3D_PLUGIN_INIT_EXPORT_DECLARE ObModelSource* C3D_PLUGIN_INIT_SOURCE ( const char*, const char* );
|
|
#define C3D_PLUGIN_C_SET_PLUGIN_OPTION_DECLARE void C3D_PLUGIN_C_SET_PLUGIN_OPTION ( const char*, const char* );
|
|
#define C3D_PLUGIN_W_SET_PLUGIN_OPTION_DECLARE void C3D_PLUGIN_W_SET_PLUGIN_OPTION ( const wchar_t*, const wchar_t* );
|
|
#define C3D_PLUGIN_RELEASE_EXPORT_DECLARE void C3D_PLUGIN_RELEASE_SOURCE ( ObModelSource* );
|
|
#endif // WIN32
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Объявление типа функций инициализации и завершения работы плагина.
|
|
\en Declare types of initialize and release functions of plugin.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
#ifdef WIN32
|
|
typedef ObModelSource* ( _cdecl* C3D_PLUGIN_INIT_SOURCE_CALL ) ( const char*, const char* );
|
|
typedef void ( _cdecl* C3D_PLUGIN_C_SET_OPTION_CALL ) ( const char*, const char* );
|
|
typedef void ( _cdecl* C3D_PLUGIN_W_SET_OPTION_CALL ) ( const wchar_t*, const wchar_t* );
|
|
typedef void ( _cdecl* C3D_PLUGIN_RELEASE_SOURCE_CALL )( ObModelSource* );
|
|
#else
|
|
typedef ObModelSource* ( * C3D_PLUGIN_INIT_SOURCE_CALL ) ( const char*, const char* );
|
|
typedef void ( * C3D_PLUGIN_C_SET_OPTION_CALL ) ( const char*, const char* );
|
|
typedef void ( * C3D_PLUGIN_W_SET_OPTION_CALL ) ( const wchar_t*, const wchar_t* );
|
|
typedef void ( * C3D_PLUGIN_RELEASE_SOURCE_CALL ) ( ObModelSource* );
|
|
#endif // WIN32
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Plugin types
|
|
//
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Объявление булевых значений.
|
|
\en Declare boolean values.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
#define C3D_PLUGIN_BOOL int
|
|
#define C3D_PLUGIN_TRUE 1
|
|
#define C3D_PLUGIN_FALSE 0
|
|
|
|
//#define C3D_SYMBOL_COMPOSITE_TEXT 3
|
|
#define C3D_SYMBOL_TEXT_LINE 0
|
|
//#define C3D_SYMBOL_PRREDEFINED 1
|
|
|
|
#define C3D_SYMBOL_ARC_LENGTH 1
|
|
#define C3D_SYMBOL_CONICAL_TAPER 2
|
|
#define C3D_SYMBOL_COUNTERBORE 3
|
|
#define C3D_SYMBOL_COUNTERSINK 4
|
|
#define C3D_SYMBOL_DEPTH 5
|
|
#define C3D_SYMBOL_DIAMETER 6
|
|
#define C3D_SYMBOL_PLUS_MINUS 7
|
|
#define C3D_SYMBOL_SLOPE 8
|
|
#define C3D_SYMBOL_SPHERICAL_DIAMETER 9
|
|
#define C3D_SYMBOL_SPHERICAL_RADIUS 10
|
|
#define C3D_SYMBOL_SQUARE 11
|
|
#define C3D_SYMBOL_ANGULARITY 12
|
|
#define C3D_SYMBOL_CIRCULAR_RUNOUT 13
|
|
#define C3D_SYMBOL_CIRCULARITY 14
|
|
#define C3D_SYMBOL_CONCENTRICITY 15
|
|
#define C3D_SYMBOL_CYLINDRICITY 16
|
|
#define C3D_SYMBOL_FLATNESS 17
|
|
#define C3D_SYMBOL_PARALLELISM 18
|
|
#define C3D_SYMBOL_PERPENDICULARITY 19
|
|
#define C3D_SYMBOL_POSITION 20
|
|
#define C3D_SYMBOL_LINE_PROFILE 21
|
|
#define C3D_SYMBOL_SURFACE_PROFILE 22
|
|
#define C3D_SYMBOL_STRAIGHTNESS 23
|
|
#define C3D_SYMBOL_SYMMETRY 24
|
|
#define C3D_SYMBOL_TOTAL_RUNOUT 25
|
|
|
|
|
|
#define C3D_CALLOUT_GENERAL 0
|
|
#define C3D_CALLOUT_DIMENSION 1
|
|
#define C3D_CALLOUT_PROJECTION 2
|
|
|
|
|
|
#define C3D_TERMINATOR_EMPTY 0
|
|
#define C3D_TERMINATOR_BLANKED_ARROW 1
|
|
#define C3D_TERMINATOR_BLANKED_BOX 2
|
|
#define C3D_TERMINATOR_BLANKED_DOT 3
|
|
#define C3D_TERMINATOR_DIMENSION_ORIGIN 4
|
|
#define C3D_TERMINATOR_FILLED_ARROW 5
|
|
#define C3D_TERMINATOR_FILLED_BOX 6
|
|
#define C3D_TERMINATOR_FILLED_DOT 7
|
|
#define C3D_TERMINATOR_INTEGRAL_SYMBOL 8
|
|
#define C3D_TERMINATOR_OPEN_ARROW 9
|
|
#define C3D_TERMINATOR_SLASH 10
|
|
#define C3D_TERMINATOR_UNFILLED_ARROW 11
|
|
|
|
|
|
#define C3D_DIMENSION_GENERAL 0
|
|
#define C3D_DIMENSION_LINEAR 1
|
|
#define C3D_DIMENSION_ANGULAR 2
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Curves
|
|
//
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Примитив трехмерного пространства (точка либо вектор).
|
|
\en Spatial primitive (point or vector).\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
struct ObPrimitive3D {
|
|
double x, y, z;
|
|
|
|
ObPrimitive3D()
|
|
: x( 0.0 ), y( 0.0 ), z( 0.0 )
|
|
{}
|
|
};
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Инициализировать примитив
|
|
// ---
|
|
inline void SetObPrimitiveZero( ObPrimitive3D& ob ) {
|
|
ob.x = ob.y = ob.z = 0.0;
|
|
}
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Инициализировать примитив
|
|
// ---
|
|
inline bool IsObPrimitiveZero( const ObPrimitive3D& ob ) {
|
|
return (ob.x == 0.0) && (ob.y == 0.0) && (ob.z == 0.0);
|
|
}
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Локальная система координат в трехмерном пространстве.
|
|
\en Spatial placement.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
struct ObLocation3D {
|
|
ObPrimitive3D origin, axisX, axisY, axisZ;
|
|
|
|
ObLocation3D()
|
|
: origin(), axisX(), axisY(), axisZ()
|
|
{}
|
|
};
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Одномерный диапазон.
|
|
\en One dimensional range.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
struct ObRange1D {
|
|
double start, end;
|
|
|
|
ObRange1D()
|
|
: start( 0.0 ), end( 0.0 )
|
|
{}
|
|
};
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Трехмерный отрезок.
|
|
\en Spatial line segment.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
struct ObSegment3D {
|
|
static const int CurveType = 1;
|
|
ObRange1D domain;
|
|
ObPrimitive3D start, end;
|
|
|
|
ObSegment3D()
|
|
: domain(), start(), end()
|
|
{}
|
|
};
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Трехмерная полилиния.
|
|
\en Spatial polyline.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
struct ObPolyline3D {
|
|
static const int CurveType = 2;
|
|
int pointsArrayId;
|
|
|
|
ObPolyline3D()
|
|
: pointsArrayId( 0 )
|
|
{}
|
|
};
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Трехмерная дуга.
|
|
\en Spatial arc.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
struct ObArc3D {
|
|
static const int CurveType = 3;
|
|
ObLocation3D location;
|
|
double majorAxis, minorAxis;
|
|
ObRange1D domain;
|
|
|
|
ObArc3D()
|
|
: location(), majorAxis( 0.0 ), minorAxis( 0.0 ), domain()
|
|
{}
|
|
};
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Трехмерная парабола.
|
|
\en Spatial parabola.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
struct ObParabola3D {
|
|
static const int CurveType = 4;
|
|
ObLocation3D location;
|
|
double focalLength;
|
|
ObRange1D domain;
|
|
|
|
ObParabola3D()
|
|
: location(), focalLength( 0.0 ), domain()
|
|
{}
|
|
};
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Трехмерная дуга.
|
|
\en Spatial arc.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
struct ObHyperbola3D {
|
|
static const int CurveType = 5;
|
|
ObLocation3D location;
|
|
double majorSemiAxis, minorSemiAxis;
|
|
ObRange1D domain;
|
|
|
|
ObHyperbola3D()
|
|
: location(), majorSemiAxis( 0.0 ), minorSemiAxis( 0.0 ), domain()
|
|
{}
|
|
};
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Трехмерный сплайн.
|
|
\en Spatial spline.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
struct ObSplineCurve3D {
|
|
static const int CurveType = 6;
|
|
int knotsId, vertcisId;
|
|
int degree;
|
|
int closed;
|
|
|
|
ObSplineCurve3D()
|
|
: knotsId( 0 ), vertcisId( 0 ), degree( 0 ), closed( 0 )
|
|
{}
|
|
};
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Трехмерный NURBS.
|
|
\en Spatial NURBS.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
struct ObNURBSCurve3D {
|
|
static const int CurveType = 7;
|
|
int knotsId, vertcisId, weightsId;
|
|
int degree;
|
|
C3D_PLUGIN_BOOL closed;
|
|
ObRange1D domain;
|
|
|
|
ObNURBSCurve3D()
|
|
: knotsId( 0 ), vertcisId( 0 ), weightsId( 0 ), degree( 0 ), closed( 0 ), domain()
|
|
{}
|
|
};
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Трехмерная составная кривая.
|
|
\en Spatial composite curve.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
struct ObCompositeCurve3D {
|
|
static const int CurveType = 8;
|
|
int segmentsArrIndicis;
|
|
|
|
ObCompositeCurve3D()
|
|
: segmentsArrIndicis( 0 )
|
|
{}
|
|
};
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Surfaces
|
|
//
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Плоскость.
|
|
\en Plane.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
struct ObPlane {
|
|
static const int SurfaceType = 1;
|
|
ObLocation3D location;
|
|
ObRange1D uDomain, vDomain;
|
|
|
|
ObPlane()
|
|
: location(), uDomain(), vDomain()
|
|
{}
|
|
};
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Цилиндрическая поверхность.
|
|
\en Cylinder surface.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
struct ObCylinder {
|
|
static const int SurfaceType = 2;
|
|
ObLocation3D location;
|
|
double r, h;
|
|
ObRange1D uDomain, vDomain;
|
|
|
|
ObCylinder()
|
|
: location(), r( 0.0 ), h( 0.0 ), uDomain(), vDomain()
|
|
{}
|
|
};
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Коническая поверхность.
|
|
\en Cone surface.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
struct ObCone {
|
|
static const int SurfaceType = 3;
|
|
ObLocation3D location;
|
|
double r, h, halfAngle;
|
|
ObRange1D uDomain, vDomain;
|
|
|
|
ObCone()
|
|
: location(), r( 0.0 ), h( 0.0 ), halfAngle( 0.0 ), uDomain(), vDomain()
|
|
{}
|
|
};
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Сферическая поверхность.
|
|
\en Sphere surface.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
struct ObSphere {
|
|
static const int SurfaceType = 4;
|
|
ObLocation3D location;
|
|
double r;
|
|
ObRange1D uDomain, vDomain;
|
|
|
|
ObSphere()
|
|
: location(), r( 0.0 ), uDomain(), vDomain()
|
|
{}
|
|
};
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Тороидальная поверхность.
|
|
\en Torus surface.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
struct ObTorus {
|
|
static const int SurfaceType = 5;
|
|
ObLocation3D location;
|
|
double rMin, rMax;
|
|
ObRange1D uDomain, vDomain;
|
|
|
|
ObTorus()
|
|
: location(), rMin( 0.0 ), rMax( 0.0 ), uDomain(), vDomain()
|
|
{}
|
|
};
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Поверхность выдавливания.
|
|
\en Extrusion surface.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
struct ObExtrusion {
|
|
static const int SurfaceType = 6;
|
|
int curve;
|
|
ObPrimitive3D direction;
|
|
|
|
ObExtrusion()
|
|
: curve( 0 ), direction()
|
|
{}
|
|
};
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Поверхность вращения.
|
|
\en Revolution surface.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
struct ObRevolution {
|
|
static const int SurfaceType = 7;
|
|
int curveId;
|
|
ObPrimitive3D axisOrigin, axisDirection;
|
|
ObRange1D vRange;
|
|
|
|
ObRevolution()
|
|
: curveId( 0 ), axisOrigin(), axisDirection(), vRange()
|
|
{}
|
|
};
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Линейчатая поверхность.
|
|
\en Ruled surface.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
struct ObRuled {
|
|
static const int SurfaceType = 8;
|
|
int curve1, curve2;
|
|
|
|
ObRuled()
|
|
: curve1( 0 ), curve2( 0 )
|
|
{}
|
|
};
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Сплайновая поверхность.
|
|
\en Spline surface.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
struct ObSplineSurface {
|
|
static const int SurfaceType = 9;
|
|
int knotsUId, knotsVId, verticisListId;
|
|
int degreeU, degreeV;
|
|
int closedU, closedV;
|
|
|
|
ObSplineSurface()
|
|
: knotsUId( 0 ), knotsVId( 0 ), verticisListId( 0 ), degreeU( 0 ), degreeV( 0 ), closedU( 0 ), closedV( 0 )
|
|
{}
|
|
};
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Сплайновая поверхность.
|
|
\en Spline surface.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
struct ObNURBSSurface {
|
|
static const int SurfaceType = 10;
|
|
int knotsUId, knotsVId, verticisListListId, weightsListListId;
|
|
int degreeU, degreeV;
|
|
C3D_PLUGIN_BOOL closedU, closedV;
|
|
|
|
ObNURBSSurface()
|
|
: knotsUId( 0 ), knotsVId( 0 ), verticisListListId( 0 ), weightsListListId( 0 ), degreeU( 0 ), degreeV( 0 ), closedU( 0 ), closedV( 0 )
|
|
{}
|
|
};
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Смещённая поверхность.
|
|
\en Offset surface.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
struct ObOffsetSurface {
|
|
static const int SurfaceType = 11;
|
|
int baseSurface;
|
|
double offset;
|
|
|
|
ObOffsetSurface()
|
|
: baseSurface( 0 ), offset( 0.0 )
|
|
{}
|
|
};
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Цвет.
|
|
\en Colour.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
struct ObColour {
|
|
double red, green, blue;
|
|
|
|
ObColour()
|
|
: red( 0.0 ), green( 0.0 ), blue( 0.0 )
|
|
{}
|
|
};
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Неопределённый компонент цвета.
|
|
\en Undefined component of colour.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
const double ObUndefinedColourComponent = -1.0;
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Элемент аннотации.
|
|
\en PMI item.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
struct ObPMI {
|
|
ObLocation3D location;
|
|
int visualArray;
|
|
int textBlockIdArray;
|
|
|
|
ObPMI()
|
|
: location(), visualArray( 0 ), textBlockIdArray( 0 )
|
|
{}
|
|
};
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Элемент текста.
|
|
\en Text item.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
struct ObTextBlock {
|
|
double originX, originY;
|
|
double dirX, dirY;
|
|
double extentX, extentY;
|
|
|
|
ObTextBlock()
|
|
: originX( 0.0 ), originY( 0.0 ), dirX( 0.0 ), dirY( 0.0 ), extentX( 0.0 ), extentY( 0.0 )
|
|
{}
|
|
};
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Размер.
|
|
\en Dimension.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
struct ObDimension {
|
|
double value;
|
|
double deviationMin, deviationMax;
|
|
int type;
|
|
int calloutArrId;
|
|
|
|
ObDimension()
|
|
: value( 0.0 ), deviationMin( 0.0 ), deviationMax( 0.0 ), type( 0 ), calloutArrId( 0 )
|
|
{}
|
|
};
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Особая линия.
|
|
\en Special line.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
struct ObPMICallout {
|
|
int type;
|
|
//int geometry;
|
|
ObPrimitive3D head, tail;
|
|
bool isArc;
|
|
ObPrimitive3D center;
|
|
int terminatorHead;
|
|
int terminatorTail;
|
|
|
|
ObPMICallout()
|
|
: type( 0 ), head(), tail(), isArc( false ), center(), terminatorHead( 0 ), terminatorTail( 0 )
|
|
{}
|
|
};
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Model source plugin. Basic interface.
|
|
//
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Источник данных модели.
|
|
\en Model source.\~
|
|
\ingroup Data_Interface
|
|
*/
|
|
// ---
|
|
struct ObModelSource {
|
|
|
|
virtual ~ObModelSource() {};
|
|
|
|
virtual C3D_PLUGIN_BOOL LastOperationSuccess() = 0;
|
|
|
|
// Операции с файлом
|
|
virtual C3D_PLUGIN_BOOL IsPathWCS() = 0;
|
|
virtual C3D_PLUGIN_BOOL Open( const char* ) = 0;
|
|
virtual C3D_PLUGIN_BOOL Open( const wchar_t* ) = 0;
|
|
virtual void Close() = 0;
|
|
|
|
// Значение неопределённого идентификатора.
|
|
virtual int UndefinedId() = 0;
|
|
|
|
// Управление трассировкой событий
|
|
virtual void EnableLog() = 0;
|
|
virtual void DisableLog() = 0;
|
|
|
|
// Контейнеры
|
|
|
|
virtual unsigned int ArrayCount ( int arrayId ) = 0;
|
|
virtual int ArrayIdentifier ( int arrayId, unsigned int index ) = 0;
|
|
virtual double ArrayFloat ( int arrayId, unsigned int index ) = 0;
|
|
virtual ObPrimitive3D ArrayPrimitive ( int arrayId, unsigned int index ) = 0;
|
|
|
|
virtual ObColour ItemColour( int itemId ) = 0;
|
|
|
|
// Модель
|
|
virtual int ModelPart() = 0;
|
|
|
|
virtual unsigned int PartInstanceCount( int partId ) = 0;
|
|
virtual int PartInstance( int partId, unsigned int inst ) = 0;
|
|
|
|
virtual const wchar_t* WPartName( int partId ) = 0;
|
|
virtual const wchar_t* WPartLabel( int partId ) = 0;
|
|
virtual const wchar_t* WPartAuthor( int partId ) = 0;
|
|
virtual const wchar_t* WPartOrganization( int partId ) = 0;
|
|
virtual const wchar_t* WPartDescription( int partId ) = 0;
|
|
|
|
virtual const char* CPartName( int partId ) = 0;
|
|
virtual const char* CPartLabel( int partId ) = 0;
|
|
virtual const char* CPartAuthor( int partId ) = 0;
|
|
virtual const char* CPartOrganization( int partId ) = 0;
|
|
virtual const char* CPartDescription( int partId ) = 0;
|
|
|
|
virtual int InstancePart( int instanceId ) = 0;
|
|
virtual ObLocation3D InstanceLocation( int instanceId ) = 0;
|
|
|
|
virtual unsigned int SolidsCount( int partId ) = 0;
|
|
|
|
// Топология граничного представления
|
|
virtual int Solid( int partId, unsigned int solid ) = 0;
|
|
virtual ObLocation3D SolidLocation( int solidId ) = 0;
|
|
|
|
virtual unsigned int SpaceCurvesCount( int partId ) = 0;
|
|
virtual int SpaceCurve( int partId, unsigned int curve ) = 0;
|
|
|
|
virtual unsigned int ShellsCount( int solidId ) = 0;
|
|
virtual int Shell( int solid, unsigned int shell ) = 0;
|
|
|
|
virtual C3D_PLUGIN_BOOL ShellClosed( int shellId ) = 0;
|
|
virtual unsigned int ShellFacesCount( int shellId ) = 0;
|
|
virtual int ShellFace( int shellId, unsigned int face ) = 0;
|
|
|
|
virtual unsigned int FaceBoundsCount( int faceId ) = 0;
|
|
virtual int FaceBound( int faceId, unsigned int bound ) = 0;
|
|
virtual C3D_PLUGIN_BOOL FaceSurfaceSameOriented( int faceId ) = 0;
|
|
|
|
virtual int BoundType( int boundId ) = 0;
|
|
virtual unsigned int BoundCoedgesCount( int boundId ) = 0;
|
|
virtual int BoundCoedge( int boundId, unsigned int coedge ) = 0;
|
|
|
|
virtual int CoedgeEdge( int coedgeId ) = 0;
|
|
virtual C3D_PLUGIN_BOOL CoedgeEdgeSameOriented( int coedgeId ) = 0;
|
|
|
|
virtual int EdgeStartVertex( int edgeId ) = 0;
|
|
virtual int EdgeEndVertex( int edgeId ) = 0;
|
|
|
|
// Методы получения геометрии
|
|
|
|
virtual int FaceGeometry( int faceId ) = 0;
|
|
virtual int EdgeGeometry( int edgeId ) = 0;
|
|
virtual ObPrimitive3D VertexGeometry( int vertexId ) = 0;
|
|
|
|
// Типы геометрических объектов
|
|
|
|
virtual int SurfaceType( int surfaceId ) = 0;
|
|
virtual int Curve3DType( int curveId ) = 0;
|
|
|
|
// Данные геометрии
|
|
|
|
// Пространственные кривые
|
|
|
|
virtual ObSegment3D LineSegment3D( int curveId ) = 0;
|
|
virtual ObPolyline3D Polyline3D( int curveId ) = 0;
|
|
virtual ObArc3D Arc3D( int curveId ) = 0;
|
|
virtual ObParabola3D Parabola3D( int curveId ) = 0;
|
|
virtual ObHyperbola3D Hyperbola3D( int curveId ) = 0;
|
|
virtual ObSplineCurve3D SplineCurve3D( int curveId ) = 0;
|
|
virtual ObNURBSCurve3D NURBSCurve3D( int curveId ) = 0;
|
|
virtual ObCompositeCurve3D CompositeCurve3D( int curveId ) = 0;
|
|
|
|
virtual unsigned int CompositeCurveSegmentsCount( int curveId ) = 0;
|
|
virtual int CompositeCurveSegment( int curveId, unsigned int index ) = 0;
|
|
virtual C3D_PLUGIN_BOOL CompositeCurveSegmentsSameOriented( int curveId, unsigned int index ) = 0;
|
|
|
|
// Поверхности
|
|
|
|
virtual ObPlane Plane( int surfaceId ) = 0;
|
|
virtual ObCylinder Cylinder( int surfaceId ) = 0;
|
|
virtual ObCone Cone( int surfaceId ) = 0;
|
|
virtual ObSphere Sphere( int surfaceId ) = 0;
|
|
virtual ObTorus Torus( int surfaceId ) = 0;
|
|
virtual ObExtrusion Extrusion( int surfaceId ) = 0;
|
|
virtual ObRevolution Revolution( int surfaceId ) = 0;
|
|
virtual ObRuled Ruled( int surfaceId ) = 0;
|
|
virtual ObSplineSurface SplineSurface( int surfaceId ) = 0;
|
|
virtual ObNURBSSurface NURBSSurface( int surfaceId ) = 0;
|
|
virtual ObOffsetSurface OffsetSurface( int surfaceId ) = 0;
|
|
|
|
virtual unsigned int PartPMICount( int partIdId ) = 0;
|
|
virtual int PartPMI( int partId, unsigned int index ) = 0;
|
|
virtual ObPMI PMI( int pmiId ) = 0;
|
|
|
|
virtual bool IsDimension( int pmiId ) = 0;
|
|
virtual bool Dimension( int pmiId, ObDimension& dim ) = 0;
|
|
|
|
virtual ObPMICallout PMICallout( int calloutId ) = 0;
|
|
|
|
virtual unsigned int PMITextCount( int textId ) = 0;
|
|
virtual int PMIText( int textId, unsigned int index ) = 0;
|
|
|
|
virtual int PMITextType( int textBlockId ) = 0;
|
|
virtual ObTextBlock PMITextLocation( int textBlockId ) = 0;
|
|
virtual int PMITextSymbol( int textBlockId ) = 0;
|
|
virtual const wchar_t* WPMIText( int textId ) = 0;
|
|
virtual const char* CPMIText( int textBlockId ) = 0;
|
|
virtual unsigned int CompositeTextCount( int textId ) = 0;
|
|
virtual int CompositeText( int textId, unsigned int index ) = 0;
|
|
|
|
virtual unsigned int PMICalloutCount( int pmiId ) = 0;
|
|
virtual ObPMICallout PMICallout( int pmiId, unsigned int index ) = 0;
|
|
|
|
};
|
|
|
|
|
|
#endif // __CONV_PUGIN_IMPORT_H
|
|
|