Files
Extern/C3d/Include/conv_plugin_import.h
T
Dario Sassi 45803fb2d7 Extern :
- C3d aggiornamento delle librerie.
2020-12-24 11:59:30 +00:00

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