mirror of
https://github.com/Open-Cascade-SAS/OCCT.git
synced 2026-05-10 09:30:48 +08:00
This commit completes the refactoring of geometry evaluator classes, replacing polymorphic Handle-based evaluators with inline template utilities and std::variant-based data storage in adaptor classes. Key changes: 1. Removed GeomEvaluator and Geom2dEvaluator packages: - Deleted GeomEvaluator_Curve, GeomEvaluator_Surface base classes - Deleted GeomEvaluator_OffsetCurve, GeomEvaluator_OffsetSurface - Deleted GeomEvaluator_SurfaceOfExtrusion, GeomEvaluator_SurfaceOfRevolution - Deleted Geom2dEvaluator_Curve, Geom2dEvaluator_OffsetCurve 2. Added private utility headers (.pxx files) with inline template functions: - Geom_OffsetCurveUtils.pxx - offset curve evaluation - Geom_OffsetSurfaceUtils.pxx - offset surface evaluation - Geom_ExtrusionUtils.pxx - surface of extrusion evaluation - Geom_RevolutionUtils.pxx - surface of revolution evaluation - Geom2d_OffsetCurveUtils.pxx - 2D offset curve evaluation 3. Refactored GeomAdaptor_Curve: - Moved BezierData and BSplineData structs inside the class - Added std::variant<monostate, OffsetData, BezierData, BSplineData> for type-specific evaluation data - Removed separate myBSplineCurve and myCurveCache members - Updated all evaluation methods to use variant-based access 4. Refactored GeomAdaptor_Surface: - Changed ExtrusionData and RevolutionData to use Handle(Adaptor3d_Curve) instead of Handle(GeomAdaptor_Curve) for flexibility - Changed RevolutionData to store gp_Ax1 instead of separate AxisLoc/AxisDir - Updated OffsetData to store Handle(Geom_OffsetSurface) for osculating surface queries instead of creating new Geom_OsculatingSurface 5. Updated Geom_OsculatingSurface: - Renamed UOscSurf/VOscSurf methods to UOsculatingSurface/VOsculatingSurface for consistency with Geom_OffsetSurface public API 6. Fixed specialized adaptor classes: - GeomAdaptor_SurfaceOfLinearExtrusion - removed evaluator, uses variant - GeomAdaptor_SurfaceOfRevolution - removed evaluator, uses variant - Geom2dAdaptor_Curve - updated to use variant-based data - Adaptor2d_OffsetCurve - updated to use Geom2d_OffsetCurveUtils 7. Fixed Geom_SurfaceOfRevolution: - Updated utility calls to use gp_Ax1 parameter instead of separate XYZ 8. Added missing includes in dependent files: - Adaptor3d_HSurfaceTool.cxx - added GeomAdaptor_Curve.hxx - GeomAdaptor.cxx - added Adaptor3d_Surface.hxx, GeomAbs_SurfaceType.hxx - Extrema_GenExtPS.cxx - added Adaptor3d_Curve/Surface.hxx, GeomAbs_IsoType.hxx - TopOpeBRepTool_GEOMETRY.cxx - added Geom2dAdaptor_Curve.hxx - BRepAdaptor_Curve2d.cxx - updated ShallowCopy for variant Benefits: - Reduced virtual function call overhead in hot evaluation paths - Better code locality with inline template functions - Simplified class hierarchy without abstract evaluator base classes - More efficient memory layout with variant instead of polymorphic handles - Consistent method naming across related classes
MFC: OCCT Samples (C++|MFC)
Visual C++ programming samples for Windows platform containing illustrating how to use a particular module or functionality, including the following MFC samples:
- Geometry
- Modeling
- ImportExport
- HLR
@figure{samples_mvc.png}
- Contents
The directory samples/mfc/standard contains the following packages and files:
- Numbered packages: 01_Geometry, 02_Modeling, etc. provide projects and sources of samples;
- Files All-vc(number).sln are auxiliary utility projects depending on all other sample projects. When such project is rebuilt, all samples and mfcsample library are also rebuilt.
- Common directory provides common source and header files for samples and dynamic-link library mfcsample.dll.
- Data directory stores data files.
- mfcsample directory contains project for mfcsample.dll library providing basic functionality used by all OCC samples.
- File env.bat is called from msvc.bat.
- Launching Open CASCADE Technology samples:
To run the Open CASCADE Technology samples, use command:
execute run.bat [vc10|vc11|vc12|vc14] [win32|win64] [Release|Debug] [SampleName]
To run the Geometry sample, use command:
execute run.bat vc10 win64 Debug Geometry
- Modifying and rebuilding samples:
You can modify, compile and launch all sample projects in MS Visual C++ at once with command:
execute msvc.bat [vc10|vc11|vc12|vc14] [win32|win64] [Release|Debug]
To run all sample projects in MS Visual C++ at once, use command:
execute msvc.bat vc10 win64 Debug
Note: make sure that your PATH environment variable contains a directory, where msdev.exe is located.