OpenCamLib (OCL) est une bibliothèque open source visant à fournir des algorithmes de fabrication assistée par ordinateur (FAO). FreeCAD utilise OCL dans les opérations expérimentales de Surface et autres fonctionnalités expérimentales.
Github : https://github.com/aewallin/opencamlib
Site web : http://www.anderswallin.net/CAM/
Remarque : à partir de la version 0.19 de FreeCAD, OCL devrait être inclus avec tous les packages de distribution Windows.
Pour installer OCL sur Windows, suivez ces instructions.
Le dépôt est ici et contient des instructions d'installation de base.
Avant de commencer l'installation ou pendant le processus d'installation, vous constaterez probablement que vous devez installer des packages supplémentaires :
Par exemple :
sudo apt install cmake
sudo apt install libboost-program-options-dev
# Optional, for documentation:
sudo apt-get install doxygen
sudo apt-get install texlive-full
Remarque: "libboost-program-options-dev" peut être remplacé par "libboost-all-dev".
Si vous avez des difficultés, examinez attentivement tous les messages d'erreur que vous obtenez pendant les phases de cmake et de make, car vous devrez peut-être installer des paquets supplémentaires.
import sys
sys.path.append('/usr/opencamlib/')
import ocl
Identifiez la version de cmake que vous avez installée avec cmake --version
Pour cmake >= 3.12, ajoutez ces drapeaux :
cmake -DBUILD_PY_LIB=ON -DUSE_PY_3=ON -DCMAKE_BUILD_TYPE=Release ../src -Wno-dev
Pour cmake < 3.12 (comme dans Ubuntu 18.04 qui a la 3.10), vous devez d'abord modifier src/pythonlib/pythonlib.cmake
et appliquer ce patch:
Index: opencamlib-2019.07/src/pythonlib/pythonlib.cmake =================================================================== --- opencamlib-2019.07.orig/src/pythonlib/pythonlib.cmake +++ opencamlib-2019.07/src/pythonlib/pythonlib.cmake @@ -48,13 +48,13 @@ if(${CMAKE_VERSION} VERSION_LESS "3.12.0 message("Python not found") endif() execute_process( - COMMAND ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(0,0,\"/usr/local\")" + COMMAND ${PYTHON_EXECUTABLE} -c "import site; print(site.getsitepackages()[-1])" OUTPUT_VARIABLE PYTHON_SITE_PACKAGES OUTPUT_STRIP_TRAILING_WHITESPACE ) # on Ubuntu 11.10 this outputs: /usr/local/lib/python2.7/dist-packages execute_process( - COMMAND ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(plat_specific=1,standard_lib=0,prefix=\"/usr/local\")" + COMMAND ${PYTHON_EXECUTABLE} -c "import site; print(site.getsitepackages()[-1])" OUTPUT_VARIABLE PYTHON_ARCH_PACKAGES OUTPUT_STRIP_TRAILING_WHITESPACE )
Ensuite, pour que Python 3 soit détecté correctement, vous devrez ajouter 2 autres drapeaux à la ligne cmake :
cmake -DBUILD_PY_LIB=ON -DUSE_PY_3=ON -DPYTHON_EXECUTABLE="$(which python3)" -DPYTHON_VERSION_SUFFIX=3 -DCMAKE_BUILD_TYPE=Release ../src -Wno-dev
Voir le forum FreeCAD sur Re: Comment activer openCamLib après l'avoir compilé et quelques posts suivants.
git clone https://github.com/aewallin/opencamlib
cd opencamlib
mkdir build
cd build
cmake -DBUILD_PY_LIB=ON -DUSE_PY_3=ON -DCMAKE_BUILD_TYPE=Release .. -Wno-dev
make -j4
make install
Pour tester la compilation, entrez ce qui suit dans la console Python :
import area
import ocl
dir(ocl)
La valeur de retour doit être :
['AdaptivePathDropCutter', 'AdaptivePathDropCutter_base', 'AdaptiveWaterline', 'AdaptiveWaterline_base', 'Arc', 'ArcSpanType', 'BallConeCutter', 'BallCutter', 'BatchDropCutter', 'BatchDropCutter_base', 'BatchPushCutter', 'BatchPushCutter_base', 'Bbox', 'BullConeCutter', 'BullCutter', 'CCPoint', 'CCType', 'CLPoint', 'CompBallCutter', 'CompCylCutter', 'ConeConeCutter', 'ConeCutter', 'CutterLocationSurface', 'CylConeCutter', 'CylCutter', 'Ellipse', 'EllipsePosition', 'Fiber', 'Fiber_base', 'Interval', 'Line', 'LineCLFilter', 'LineCLFilter_base', 'LineSpanType', 'MillingCutter', 'Path', 'PathDropCutter', 'PathDropCutter_base', 'Path_base', 'Point', 'STLReader', 'STLSurf', 'STLSurf_base', 'SpanType', 'Triangle', 'Triangle_base', 'Waterline', 'Waterline_base', 'WeaveVertexType', 'ZigZag', 'ZigZag_base', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'eps', 'epsD', 'epsF', 'version']
En cas d'erreur, la valeur de retour sera :
['__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__']
Pour cmake, l'option Release est très importante, lorsque vous utilisez Debug area et ocl vont entrer en collision et l'une ou l'autre des bibliothèques ne sera pas chargée (en fonction de ce qui a été chargé en premier).
Si vous rencontrez des difficultés, vous pouvez trouver de l'aide supplémentaire sur ces messages du forum :
Merci au Dr. Anders Wallin d'avoir fourni OCL au public.