//////////////////////////////////////////////////////////////////////////////// /** \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 //////////////////////////////////////////////////////////////////////////////// // // Dynamic-link library API // //////////////////////////////////////////////////////////////////////////////// //------------------------------------------------------------------------------ /** \brief \ru Путь, по которому расположен интегратор для интеграционного пакета со сторонним модулем. \en Path where integration kit for external module is located.\~ \details \ru Путь должен содержать завершающий. \en Path where integration kit for external module is located.\~ \ingroup Data_Interface */ // --- #ifdef _UNICODE #define C3D_PATH_TO_PLUGIN L"C3D_PATH_TO_PLUGIN" #else #define C3D_PATH_TO_PLUGIN "C3D_PATH_TO_PLUGIN" #endif //------------------------------------------------------------------------------ /** \brief \ru Актуальная версия API плагина. \en Current API version of the plugin.\~ \ingroup Data_Interface */ // --- #define CURRENT_API_VERSION_MAJOR "2" //------------------------------------------------------------------------------ /** \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_W_SET_MODEL_CONFIGURATION_SELECT WSetModelConfigurationSelect #define C3D_PLUGIN_RELEASE_SOURCE ReleaseSource #define C3D_PLUGIN_MAJOR_API_VERSION MajorAPIVersion //------------------------------------------------------------------------------ /** \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_W_SET_MODEL_CONFIGURATION_SELECT_NAME "WSetModelConfigurationSelect" #define C3D_PLUGIN_RELEASE_SOURCE_NAME "ReleaseSource" #define C3D_PLUGIN_MAJOR_API_VERSION_NAME "MajorAPIVersion" struct ObModelSource; struct IWSelectConfigurationCallback; //------------------------------------------------------------------------------ /** \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_W_SET_MODEL_CONFIGURATION_SELECT_DECLARE extern "C" __declspec( dllexport ) void _cdecl C3D_PLUGIN_W_SET_MODEL_CONFIGURATION_SELECT ( IWSelectConfigurationCallback* ); #define C3D_PLUGIN_RELEASE_EXPORT_DECLARE extern "C" __declspec( dllexport ) void _cdecl C3D_PLUGIN_RELEASE_SOURCE ( ObModelSource* ); #define C3D_PLUGIN_MAJOR_API_VERSION_DECLARE extern "C" __declspec( dllexport ) const char* _cdecl C3D_PLUGIN_MAJOR_API_VERSION (); #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_W_SET_MODEL_CONFIGURATION_SELECT_DECLARE void C3D_PLUGIN_W_SET_MODEL_CONFIGURATION_SELECT ( IWSelectConfigurationCallback* ); #define C3D_PLUGIN_RELEASE_EXPORT_DECLARE void C3D_PLUGIN_RELEASE_SOURCE ( ObModelSource* ); #define C3D_PLUGIN_MAJOR_API_VERSION_DECLARE const char* C3D_PLUGIN_MAJOR_API_VERSION (); #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_W_SET_MODEL_CONFIGURATION_SELECT_CALL ) ( IWSelectConfigurationCallback* ); typedef void ( _cdecl* C3D_PLUGIN_RELEASE_SOURCE_CALL )( ObModelSource* ); typedef const char* ( _cdecl* C3D_PLUGIN_MAJOR_API_VERSION_CALL ) ( ); #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_W_SET_MODEL_CONFIGURATION_SELECT_CALL ) ( IWSelectConfigurationCallback* ); typedef void ( * C3D_PLUGIN_RELEASE_SOURCE_CALL ) ( ObModelSource* ); typedef const char* ( * C3D_PLUGIN_MAJOR_API_VERSION_CALL ) ( ); #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 2 #define C3D_SYMBOL_PRREDEFINED 1 #define C3D_SYMBOL_ARC_LENGTH "C3D_SYMBOL_ARC_LENGTH" #define C3D_SYMBOL_CONICAL_TAPER "C3D_SYMBOL_CONICAL_TAPER" #define C3D_SYMBOL_COUNTERBORE "C3D_SYMBOL_COUNTERBORE" #define C3D_SYMBOL_COUNTERSINK "C3D_SYMBOL_COUNTERSINK" #define C3D_SYMBOL_DEPTH "C3D_SYMBOL_DEPTH" #define C3D_SYMBOL_DIAMETER "C3D_SYMBOL_DIAMETER" #define C3D_SYMBOL_PLUS_MINUS "C3D_SYMBOL_PLUS_MINUS" #define C3D_SYMBOL_SLOPE "C3D_SYMBOL_SLOPE" #define C3D_SYMBOL_SPHERICAL_DIAMETER "C3D_SYMBOL_SPHERICAL_DIAMETER" #define C3D_SYMBOL_SPHERICAL_RADIUS "C3D_SYMBOL_SPHERICAL_RADIUS" #define C3D_SYMBOL_SQUARE "C3D_SYMBOL_SQUARE" #define C3D_SYMBOL_ANGULARITY "C3D_SYMBOL_ANGULARITY" #define C3D_SYMBOL_CIRCULAR_RUNOUT "C3D_SYMBOL_CIRCULAR_RUNOUT" #define C3D_SYMBOL_CIRCULARITY "C3D_SYMBOL_CIRCULARITY" #define C3D_SYMBOL_CONCENTRICITY "C3D_SYMBOL_CONCENTRICITY" #define C3D_SYMBOL_CYLINDRICITY "C3D_SYMBOL_CYLINDRICITY" #define C3D_SYMBOL_FLATNESS "C3D_SYMBOL_FLATNESS" #define C3D_SYMBOL_PARALLELISM "C3D_SYMBOL_PARALLELISM" #define C3D_SYMBOL_PERPENDICULARITY "C3D_SYMBOL_PERPENDICULARITY" #define C3D_SYMBOL_POSITION "C3D_SYMBOL_POSITION" #define C3D_SYMBOL_LINE_PROFILE "C3D_SYMBOL_LINE_PROFILE" #define C3D_SYMBOL_SURFACE_PROFILE "C3D_SYMBOL_SURFACE_PROFILE" #define C3D_SYMBOL_STRAIGHTNESS "C3D_SYMBOL_STRAIGHTNESS" #define C3D_SYMBOL_SYMMETRY "C3D_SYMBOL_SYMMETRY" #define C3D_SYMBOL_TOTAL_RUNOUT "C3D_SYMBOL_TOTAL_RUNOUT" #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 C3D_PLUGIN_BOOL IsDimension( int pmiId ) = 0; virtual ObDimension Dimension( int pmiId ) = 0; virtual ObPMICallout PMICallout( int calloutId ) = 0; virtual int PMITextType( int textBlockId ) = 0; virtual ObTextBlock PMITextLocation( int textBlockId ) = 0; virtual const char* 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; virtual double LengthUnitsFactor() = 0; }; struct IWSelectConfigurationCallback { virtual void AddConfiguration( const wchar_t* ) = 0; virtual void SetActiveConfiguration( int ) = 0; virtual int SelectConfiguration() const = 0; }; #endif // __CONV_PUGIN_IMPORT_H