kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #34999
Re: [PATCH] Allow OpenCASCADE standard edition
Hi Nick-
I finally found a moment to figure out Docker and get this up and running
in your build configuration.
Please take a look when you have a chance and let me know if you have any
issues with this patch.
Best-
Seth
2018-02-10 7:12 GMT-08:00 Seth Hillbrand <seth.hillbrand@xxxxxxxxx>:
> Nick was having an unknown issue but I haven't heard back from him on
> whether the issue was resolved by doing a clean cmake. If it isn't then
> I'll need to address that.
>
> Nick did you have a chance to test that?
>
> -S
>
> 2018-02-10 6:18 GMT-08:00 Wayne Stambaugh <stambaughw@xxxxxxxxx>:
>
>> Seth,
>>
>> What is the current status of this patch? I would like to get it merged
>> before rc1 so the package devs can test it.
>>
>> Cheers,
>>
>> Wayne
>>
>> On 01/30/2018 02:12 PM, Seth Hillbrand wrote:
>> > Nick-
>> >
>> > Thanks for the test. I'm attaching revised patch that allows multiple
>> > OpenCASCADE installations on a single machine.
>> >
>> > I've tested with a few different OpenCASCADE versions down to 6.8 with
>> > no issues installed alongside OCE 0.17. You can choose which you want
>> > to link by using either "-DKICAD_USE_OCE" or "-DKICAD_USE_OCC". If both
>> > are specified, "-DKICAD_USE_OCC" will override.
>> >
>> > I corrected the cmake message display to be less doubled and correctly
>> > show the library location.
>> >
>> > I've also added the OCC version and type to the about window version
>> info.
>> >
>> > The "Based on" line was taken from
>> > (https://github.com/FreeCAD/FreeCAD/blob/master/src/FCConfig.h) when
>> > trying to determine how FreeCAD likes to refer to themselves. The
>> > actual FindOpenCascade.cmake file did not have a copyright header
>> > attached but falls under the license from
>> > (https://github.com/FreeCAD/FreeCAD/blob/master/COPYING). I note that
>> I
>> > had it written as "FreeCAD CADx development system". I've corrected
>> > this to read "FreeCAD CAx development system".
>> >
>> > I'm not sure to what the "CheckSymbolExists" line is referring. I don't
>> > see it on my machine.
>> >
>> > -Seth
>> >
>> > 2018-01-29 14:30 GMT-08:00 Nick Østergaard <oe.nick@xxxxxxxxx
>> > <mailto:oe.nick@xxxxxxxxx>>:
>> >
>> > Hi Seth,
>> >
>> > I just took the patch for a testrun and will state some comments
>> below.
>> >
>> > This looks a bit strange:
>> >
>> > -- Boost version: 1.66.0
>> > -- -- OpenCASCADE Community Edition has been found.
>> > -- -- Found OCE/OpenCASCADE version: 6.8.0
>> > -- -- OCE/OpenCASCADE include directory:
>> > /opt/oce/lib/oce-0.17/../../include/oce
>> > -- -- OCE/OpenCASCADE shared libraries directory:
>> > -- Check for installed Python Interpreter -- found
>> >
>> > The messages are with double -- and the shared libs.
>> >
>> > But an improvement with your patch over what is currently in kicad
>> > is that it found OCE on my system without explicitly specifind
>> > OCE_DIR. But how do I make it use OCCT when I also have OCE
>> installed?
>> >
>> > What does CADx mean in that header?
>> >
>> > What is this about?
>> > -- Looking for
>> > /home/amazingdude/kicad-source-mirror/build_seths_occt_
>> patch_occt/CMakeFiles/CMakeTmp/CheckSymbolExists.cxx
>> > -- Looking for
>> > /home/amazingdude/kicad-source-mirror/build_seths_occt_
>> patch_occt/CMakeFiles/CMakeTmp/CheckSymbolExists.cxx
>> > - not found
>> >
>> > I tried to test it with removing oce and just have occt installed
>> > and got something like this:
>> > -- Found OCC: /opt/opencascade/inc (found version "6.9.1")
>> > -- -- Found OCE/OpenCASCADE version: 6.9.1
>> > -- -- OCE/OpenCASCADE include directory: /opt/opencascade/inc
>> > -- -- OCE/OpenCASCADE shared libraries directory:
>> /opt/opencascade/lib
>> >
>> > It did not build against community/opencascade 6.9.1-7. I got the
>> > following error in a clean build dir.
>> >
>> > $ make kicad2step -j1
>> > [ 0%] Linking CXX executable kicad2step
>> > /usr/bin/ld: cannot find -lTKMesh
>> > /usr/bin/ld: cannot find -lTKernel
>> > /usr/bin/ld: cannot find -lTKG2d
>> > /usr/bin/ld: cannot find -lTKG3d
>> > /usr/bin/ld: cannot find -lTKMath
>> > /usr/bin/ld: cannot find -lTKIGES
>> > /usr/bin/ld: cannot find -lTKSTL
>> > /usr/bin/ld: cannot find -lTKXSBase
>> > /usr/bin/ld: cannot find -lTKBin
>> > /usr/bin/ld: cannot find -lTKBO
>> > /usr/bin/ld: cannot find -lTKCDF
>> > /usr/bin/ld: cannot find -lTKBRep
>> > /usr/bin/ld: cannot find -lTKTopAlgo
>> > /usr/bin/ld: cannot find -lTKGeomAlgo
>> > /usr/bin/ld: cannot find -lTKGeomBase
>> > /usr/bin/ld: cannot find -lTKPrim
>> > /usr/bin/ld: cannot find -lTKSTEP
>> > /usr/bin/ld: cannot find -lTKSTEPBase
>> > /usr/bin/ld: cannot find -lTKSTEPAttr
>> > /usr/bin/ld: cannot find -lTKFeat
>> > /usr/bin/ld: cannot find -lTKCAF
>> > /usr/bin/ld: cannot find -lTKXCAF
>> > /usr/bin/ld: cannot find -lTKLCAF
>> > /usr/bin/ld: cannot find -lTKXDESTEP
>> > /usr/bin/ld: cannot find -lTKXDEIGES
>> > collect2: error: ld returned 1 exit status
>> > make[3]: ***
>> > [utils/kicad2step/CMakeFiles/kicad2step.dir/build.make:355:
>> > utils/kicad2step/kicad2step] Error 1
>> > make[2]: *** [CMakeFiles/Makefile2:3007:
>> > utils/kicad2step/CMakeFiles/kicad2step.dir/all] Error 2
>> > make[1]: *** [CMakeFiles/Makefile2:3019:
>> > utils/kicad2step/CMakeFiles/kicad2step.dir/rule] Error 2
>> > make: *** [Makefile:979: kicad2step] Error 2
>> >
>> > But those libs do existm, searched for the last one;
>> > $ yaourt -Ql opencascade | grep TKXDEIGES
>> > opencascade /opt/opencascade/lib/libTKXDEIGES.so
>> > opencascade /opt/opencascade/lib/libTKXDEIGES.so.0
>> > opencascade /opt/opencascade/lib/libTKXDEIGES.so.0.0.0
>> >
>> > I got these variables set in the CMakeCache
>> >
>> > cat CMakeCache.txt | grep "OCE\|OCC"
>> > KICAD_USE_OCE:BOOL=ON
>> > OCC_INCLUDE_DIR:PATH=/opt/opencascade/inc
>> > OCC_LIBRARY:FILEPATH=/opt/opencascade/lib/libTKernel.so
>> > //The directory containing a CMake configuration file for OCE.
>> > OCE_DIR:PATH=OCE_DIR-NOTFOUND
>> > //Details about finding OCC
>> > FIND_PACKAGE_MESSAGE_DETAILS_OCC:INTERNAL=[/opt/opencascade
>> /inc][v6.9.1()]
>> >
>> > This is tested on archlinux.
>> >
>> > 2018-01-29 19:54 GMT+01:00 Seth Hillbrand <seth.hillbrand@xxxxxxxxx
>> > <mailto:seth.hillbrand@xxxxxxxxx>>:
>> >
>> > Hi All-
>> >
>> > Currently, the build requires the opencascade community
>> > edition. For various reasons, I need to have the current
>> > non-community edition of OpenCASCADE installed on my work
>> machine.
>> >
>> > The attached patch allows compiling KiCad with either the
>> > OpenCASCADE community edition or standard edition.
>> >
>> > I've tested on a homebrew-based Mac install as well as Linux but
>> > haven't verified MSW, if someone would be willing to test it
>> > there, that would be great! The basic search routines are
>> > lightly modified from FreeCAD's logic and keep their LGPL
>> > copyright on the CMake file.
>> >
>> > -Seth
>> >
>> >
>> > _______________________________________________
>> > Mailing list: https://launchpad.net/~kicad-developers
>> > <https://launchpad.net/~kicad-developers>
>> > Post to : kicad-developers@xxxxxxxxxxxxxxxxxxx
>> > <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
>> > Unsubscribe : https://launchpad.net/~kicad-developers
>> > <https://launchpad.net/~kicad-developers>
>> > More help : https://help.launchpad.net/ListHelp
>> > <https://help.launchpad.net/ListHelp>
>> >
>> >
>> >
>> >
>> >
>> > _______________________________________________
>> > Mailing list: https://launchpad.net/~kicad-developers
>> > Post to : kicad-developers@xxxxxxxxxxxxxxxxxxx
>> > Unsubscribe : https://launchpad.net/~kicad-developers
>> > More help : https://help.launchpad.net/ListHelp
>> >
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~kicad-developers
>> Post to : kicad-developers@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~kicad-developers
>> More help : https://help.launchpad.net/ListHelp
>>
>
>
From 191f255a723eeff501a8e7e0463cc61e326dc1ad Mon Sep 17 00:00:00 2001
From: Seth Hillbrand <hillbrand@xxxxxxxxxxx>
Date: Thu, 25 Jan 2018 16:38:29 -0800
Subject: [PATCH] Allow Kicad to use OpenCascade
Adds the option of using OpenCascade not just the community edition.
---
CMakeLists.txt | 29 +++-
CMakeModules/FindOpenCASCADE.cmake | 248 +++++++++++++++++++++++++++++++++++
common/dialog_about/dialog_about.cpp | 18 +++
plugins/3d/oce/CMakeLists.txt | 4 +-
plugins/3d/oce/loadmodel.cpp | 2 -
utils/kicad2step/CMakeLists.txt | 4 +-
utils/kicad2step/pcb/oce_utils.cpp | 4 +
7 files changed, 298 insertions(+), 11 deletions(-)
create mode 100644 CMakeModules/FindOpenCASCADE.cmake
diff --git a/CMakeLists.txt b/CMakeLists.txt
index afc11a7fe..9849d8f61 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -76,9 +76,13 @@ option( KICAD_SCRIPTING_ACTION_MENU
)
option( KICAD_USE_OCE
- "Build tools and plugins related to OpenCascade Community Edition (default OFF)"
+ "Build tools and plugins related to OpenCascade Community Edition (default ON)"
ON )
+option( KICAD_USE_OCC
+ "Build tools and plugins related to OpenCascade Technology (overrides KICAD_USE_OCE, default OFF)"
+ OFF )
+
option( KICAD_INSTALL_DEMOS
"Install kicad demos and examples (default ON)"
ON )
@@ -327,6 +331,11 @@ if( KICAD_USE_OCE )
add_definitions( -DKICAD_USE_OCE )
endif()
+if( KICAD_USE_OCC )
+ add_definitions( -DKICAD_USE_OCC )
+ remove_definitions( -DKICAD_USE_OCE )
+endif()
+
if( KICAD_USE_CUSTOM_PADS )
add_definitions( -DKICAD_USE_CUSTOM_PADS )
endif()
@@ -577,10 +586,20 @@ if( KICAD_SPICE )
endif()
# Find OpenCascade Community Edition, required for STEP plugin and tools
-if( KICAD_USE_OCE )
- set( LIBS_OCE TKBinXCAF TKPCAF TKSTEP TKXDESTEP TKIGES TKXDEIGES )
-
- find_package( OCE 0.16 REQUIRED ${LIBS_OCE} )
+if( KICAD_USE_OCE OR KICAD_USE_OCC )
+ find_package(OpenCASCADE)
+ if( NOT OCC_FOUND )
+ MESSAGE( FATAL_ERROR "================================================================\n"
+ "Neither OpenCASCADE Community Edition nor OpenCASCADE was found!\n"
+ "================================================================\n")
+ endif()
+ if( OCC_VERSION_STRING VERSION_LESS 6.8.0 )
+ MESSAGE( FATAL_ERROR "================================================================\n"
+ "OpenCASCADE version ${OCC_VERSION_STRING} was found.\n"
+ " KiCad requires a minimum version of 6.8.0\n"
+ "================================================================\n")
+ endif()
+ include_directories( SYSTEM ${OCC_INCLUDE_DIR} )
endif()
# Assist with header file searching optimization:
diff --git a/CMakeModules/FindOpenCASCADE.cmake b/CMakeModules/FindOpenCASCADE.cmake
new file mode 100644
index 000000000..0dbff0346
--- /dev/null
+++ b/CMakeModules/FindOpenCASCADE.cmake
@@ -0,0 +1,248 @@
+# Try to find OCE / OCC
+# Once done this will define
+#
+# OCC_FOUND - system has OCC - OpenCASCADE
+# OCC_INCLUDE_DIR - where the OCC include directory can be found
+# OCC_LIBRARY_DIR - where the OCC library directory can be found
+# OCC_LIBRARIES - Link this to use OCC
+
+############################################################################
+#
+# Modifications Copyright (C) 2018 Seth Hillbrand
+#
+# Based on FindOpenCasCade.cmake by the FreeCAD CAx development team
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+# Set the needed libraries
+set( OCC_LIBS
+ PTKernel
+ TKBinL
+ TKBin
+ TKBinTObj
+ TKBinXCAF
+ TKBool
+ TKBO
+ TKBRep
+ TKCAF
+ TKCDF
+ TKernel
+ TKFeat
+ TKFillet
+ TKG2d
+ TKG3d
+ TKGeomAlgo
+ TKGeomBase
+ TKHLR
+ TKIGES
+ TKLCAF
+ TKMath
+ TKMesh
+ TKMeshVS
+ TKNIS
+ TKOffset
+ TKOpenGl
+ TKPCAF
+ TKPLCAF
+ TKPrim
+ TKPShape
+ TKService
+ TKShapeSchema
+ TKShHealing
+ TKStdLSchema
+ TKStdSchema
+ TKSTEP209
+ TKSTEPAttr
+ TKSTEPBase
+ TKSTEP
+ TKSTL
+ TKTObj
+ TKTopAlgo
+ TKV3d
+ TKVoxel
+ TKVRML
+ TKXCAFSchema
+ TKXCAF
+ TKXDEIGES
+ TKXDESTEP
+ TKXMesh
+ TKXmlL
+ TKXml
+ TKXmlTObj
+ TKXmlXCAF
+ TKXSBase
+)
+
+set( OCE_LIBS TKBinXCAF TKPCAF TKSTEP TKXDESTEP TKIGES TKXDEIGES )
+
+# First try to find OpenCASCADE Community Edition
+if(NOT DEFINED OCE_INCLUDE_DIR)
+ # Check for OSX needs to come first because UNIX evaluates to true on OSX
+ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+ if(DEFINED HOMEBREW_PREFIX)
+ find_package(OCE 0.16 QUIET COMPONENTS ${OCE_LIBS}
+ HINTS
+ ${OCC_LIBRARY_DIR}
+ ${HOMEBREW_PREFIX}/Cellar/oce/*
+ )
+ elseif(DEFINED MACPORTS_PREFIX)
+ find_package(OCE 0.16 QUIET COMPONENTS ${OCE_LIBS}
+ HINTS
+ ${OCC_LIBRARY_DIR}
+ ${MACPORTS_PREFIX}/Library/Frameworks
+ )
+ endif()
+ else()
+ find_package(OCE 0.16 QUIET COMPONENTS ${OCE_LIBS}
+ HINTS
+ ${OCC_LIBRARY_DIR}
+ /usr
+ /usr/local
+ /opt
+ /opt/oce
+ PATH_SUFFIXES lib
+ )
+ endif()
+endif()
+
+if(OCE_FOUND AND NOT KICAD_USE_OCC)
+ set(OCC_TYPE "OpenCASCADE Community Edition")
+ set(OCC_INCLUDE_DIR ${OCE_INCLUDE_DIRS})
+ FIND_LIBRARY(OCC_LIBRARY TKernel
+ HINTS
+ ${OCC_LIBRARY_DIR}
+ /usr
+ /usr/local
+ /opt
+ /opt/oce
+ PATH_SUFFIXES lib
+ )
+else(OCE_FOUND AND NOT KICAD_USE_OCC) #look for OpenCASCADE
+ set(OCC_TYPE "OpenCASCADE Standard Edition")
+ if(WIN32)
+ if(CYGWIN OR MINGW)
+ FIND_PATH(OCC_INCLUDE_DIR Standard_Version.hxx
+ /usr/include/opencascade
+ /usr/local/include/opencascade
+ /opt/opencascade/include
+ /opt/opencascade/inc
+ )
+ FIND_LIBRARY(OCC_LIBRARY TKernel
+ HINTS
+ ${OCC_LIBRARY_DIR}
+ /usr/lib
+ /usr/local/lib
+ /opt/opencascade/lib
+ )
+ else(CYGWIN OR MINGW)
+ FIND_PATH(OCC_INCLUDE_DIR Standard_Version.hxx
+ "[HKEY_LOCAL_MACHINE\\SOFTWARE\\SIM\\OCC\\2;Installation Path]/include"
+ )
+ FIND_LIBRARY(OCC_LIBRARY TKernel
+ "[HKEY_LOCAL_MACHINE\\SOFTWARE\\SIM\\OCC\\2;Installation Path]/lib"
+ )
+ endif(CYGWIN OR MINGW)
+ else(WIN32)
+ FIND_PATH(OCC_INCLUDE_DIR Standard_Version.hxx
+ /usr/include/opencascade
+ /usr/local/include/opencascade
+ /opt/opencascade/include
+ /opt/opencascade/inc
+ )
+ FIND_LIBRARY(OCC_LIBRARY TKernel
+ HINTS
+ ${OCC_LIBRARY_DIR}
+ /usr
+ /usr/local
+ /opt/opencascade
+ /opt/opencascade/lin64/gcc
+ PATH_SUFFIXES lib
+ )
+ endif(WIN32)
+endif(OCE_FOUND AND NOT KICAD_USE_OCC)
+
+if(OCC_LIBRARY)
+ GET_FILENAME_COMPONENT(OCC_LIBRARY_DIR ${OCC_LIBRARY} PATH)
+ IF(NOT OCC_INCLUDE_DIR)
+ FIND_PATH(OCC_INCLUDE_DIR Standard_Version.hxx
+ ${OCC_LIBRARY_DIR}/../inc
+ )
+ ENDIF()
+ message( "from ${OCC_LIBRARY} I found ${OCC_LIBRARY_DIR}" )
+else(OCC_LIBRARY)
+ message( "" )
+ message( "*** OpenCascade library missing ***" )
+ message( "Verify your OpenCascade installation or pass CMake" )
+ message( " the library directory as '-DOCC_LIBRARY_DIR=<path>'" )
+ message( "" )
+ message( FATAL_ERROR "" )
+endif(OCC_LIBRARY)
+
+if(OCC_INCLUDE_DIR AND NOT ${OCC_INCLUDE_DIR} STREQUAL "OCC_INCLUDE_DIR-NOTFOUND")
+ file(STRINGS ${OCC_INCLUDE_DIR}/Standard_Version.hxx OCC_MAJOR
+ REGEX "#define OCC_VERSION_MAJOR.*"
+ )
+ string(REGEX MATCH "[0-9]+" OCC_MAJOR ${OCC_MAJOR})
+ file(STRINGS ${OCC_INCLUDE_DIR}/Standard_Version.hxx OCC_MINOR
+ REGEX "#define OCC_VERSION_MINOR.*"
+ )
+ string(REGEX MATCH "[0-9]+" OCC_MINOR ${OCC_MINOR})
+ file(STRINGS ${OCC_INCLUDE_DIR}/Standard_Version.hxx OCC_MAINT
+ REGEX "#define OCC_VERSION_MAINTENANCE.*"
+ )
+ string(REGEX MATCH "[0-9]+" OCC_MAINT ${OCC_MAINT})
+
+ set(OCC_VERSION_STRING "${OCC_MAJOR}.${OCC_MINOR}.${OCC_MAINT}")
+else(OCC_INCLUDE_DIR AND NOT ${OCC_INCLUDE_DIR} STREQUAL "OCC_INCLUDE_DIR-NOTFOUND")
+ message( "" )
+ message( "*** OpenCascade header files missing ***" )
+ message( "Verify your OpenCascade installation or pass CMake" )
+ message( " the header directory as '-DOCC_INCLUDE_DIR=<path>'" )
+ message( "" )
+ message( FATAL_ERROR "" )
+endif(OCC_INCLUDE_DIR AND NOT ${OCC_INCLUDE_DIR} STREQUAL "OCC_INCLUDE_DIR-NOTFOUND")
+
+# handle the QUIETLY and REQUIRED arguments and set OCC_FOUND to TRUE if
+# all listed variables are TRUE
+include(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(OCC REQUIRED_VARS OCC_INCLUDE_DIR VERSION_VAR OCC_VERSION_STRING)
+
+if(OCC_FOUND)
+ foreach(lib IN LISTS OCC_LIBS)
+
+#Use the specified library location if given
+ find_library(OCC_TEMP_LIB ${lib} HINTS ${OCC_LIBRARY_DIR} NO_DEFAULT_PATH)
+ if(${OCC_TEMP_LIB} STREQUAL "OCC_TEMP_LIB-NOTFOUND")
+ message( "" )
+ message( "*** OpenCascade library missing ***" )
+ message( "Could not find a library for ${lib} at ${OCC_LIBRARY_DIR}" )
+ message( "Verify your OpenCascade installation or pass CMake" )
+ message( " the library directory as '-DOCC_LIBRARY_DIR=<path>'" )
+ message( "" )
+ message( FATAL_ERROR "" )
+ else(${OCC_TEMP_LIB} STREQUAL "OCC_TEMP_LIB-NOTFOUND")
+ list(APPEND OCC_LIBRARIES ${OCC_TEMP_LIB})
+ endif(${OCC_TEMP_LIB} STREQUAL "OCC_TEMP_LIB-NOTFOUND")
+
+ unset(OCC_TEMP_LIB CACHE)
+ endforeach(lib)
+
+ #Convert path names to absolute for cleaner display
+ get_filename_component(OCC_INCLUDE_DIR "${OCC_INCLUDE_DIR}" ABSOLUTE)
+ get_filename_component(OCC_LIBRARY_DIR "${OCC_LIBRARY_DIR}" ABSOLUTE)
+ message(STATUS "Found ${OCC_TYPE} version: ${OCC_VERSION_STRING}")
+ message(STATUS " ++ ${OCC_TYPE} include directory: ${OCC_INCLUDE_DIR}")
+ message(STATUS " ++ ${OCC_TYPE} shared libraries directory: ${OCC_LIBRARY_DIR}")
+endif(OCC_FOUND)
diff --git a/common/dialog_about/dialog_about.cpp b/common/dialog_about/dialog_about.cpp
index 3ab6e8875..00f4b9e55 100644
--- a/common/dialog_about/dialog_about.cpp
+++ b/common/dialog_about/dialog_about.cpp
@@ -35,6 +35,9 @@
extern std::string GetKicadCurlVersion();
extern std::string GetCurlLibVersion();
#endif
+#if defined( KICAD_USE_OCC ) | defined( KICAD_USE_OCE )
+#include <Standard_Version.hxx>
+#endif
#include <boost/version.hpp>
#include <wx/clipbrd.h>
@@ -473,6 +476,14 @@ void DIALOG_ABOUT::buildVersionInfoData( wxString& aMsg, bool aFormatHtml )
<< ( BOOST_VERSION / 100 % 1000 ) << wxT( "." )
<< ( BOOST_VERSION % 100 ) << eol;
+#ifdef KICAD_USE_OCC
+ aMsg << indent4 << "OpenCASCADE Technology: " << OCC_VERSION_COMPLETE << eol;
+#endif
+
+#ifdef KICAD_USE_OCE
+ aMsg << indent4 << "OpenCASCADE Community Edition: " << OCC_VERSION_COMPLETE << eol;
+#endif
+
#ifdef BUILD_GITHUB_PLUGIN
aMsg << indent4 << "Curl: " << GetCurlLibVersion() << eol;
#endif
@@ -557,6 +568,13 @@ void DIALOG_ABOUT::buildVersionInfoData( wxString& aMsg, bool aFormatHtml )
aMsg << OFF;
#endif
+ aMsg << indent4 << "KICAD_USE_OCC=";
+#ifdef KICAD_USE_OCC
+ aMsg << ON;
+#else
+ aMsg << OFF;
+#endif
+
aMsg << indent4 << "KICAD_SPICE=";
#ifdef KICAD_SPICE
aMsg << ON;
diff --git a/plugins/3d/oce/CMakeLists.txt b/plugins/3d/oce/CMakeLists.txt
index 6c6163118..1c6df742d 100644
--- a/plugins/3d/oce/CMakeLists.txt
+++ b/plugins/3d/oce/CMakeLists.txt
@@ -13,7 +13,7 @@
#
include_directories( SYSTEM
- ${OCE_INCLUDE_DIRS}
+ ${OCC_INCLUDE_DIR}
)
add_library( s3d_plugin_oce MODULE
@@ -21,7 +21,7 @@ add_library( s3d_plugin_oce MODULE
loadmodel.cpp
)
-target_link_libraries( s3d_plugin_oce kicad_3dsg ${LIBS_OCE} ${wxWidgets_LIBRARIES} )
+target_link_libraries( s3d_plugin_oce kicad_3dsg ${OCC_LIBRARIES} ${wxWidgets_LIBRARIES} )
if( APPLE )
# puts library into the main kicad.app bundle in build tree
diff --git a/plugins/3d/oce/loadmodel.cpp b/plugins/3d/oce/loadmodel.cpp
index 9d581f363..5ae69dc74 100644
--- a/plugins/3d/oce/loadmodel.cpp
+++ b/plugins/3d/oce/loadmodel.cpp
@@ -40,7 +40,6 @@
#include <TopoDS_Shape.hxx>
#include <Quantity_Color.hxx>
#include <XCAFApp_Application.hxx>
-#include <Handle_XCAFApp_Application.hxx>
#include <AIS_Shape.hxx>
@@ -53,7 +52,6 @@
#include <XCAFDoc_DocumentTool.hxx>
#include <XCAFDoc_ColorTool.hxx>
-#include <Handle_XCAFDoc_ColorTool.hxx>
#include <XCAFDoc_ShapeTool.hxx>
#include <BRep_Tool.hxx>
diff --git a/utils/kicad2step/CMakeLists.txt b/utils/kicad2step/CMakeLists.txt
index a60153f42..53186213a 100644
--- a/utils/kicad2step/CMakeLists.txt
+++ b/utils/kicad2step/CMakeLists.txt
@@ -5,7 +5,7 @@ include_directories( BEFORE
)
include_directories( SYSTEM
- ${OCE_INCLUDE_DIRS}
+ ${OCC_INCLUDE_DIR}
)
set( K2S_FILES
@@ -28,7 +28,7 @@ endif( MINGW )
add_executable( kicad2step ${K2S_FILES} )
-target_link_libraries( kicad2step ${wxWidgets_LIBRARIES} ${LIBS_OCE} )
+target_link_libraries( kicad2step ${wxWidgets_LIBRARIES} ${OCC_LIBRARIES} )
if( APPLE )
# puts binaries into the *.app bundle while linking
diff --git a/utils/kicad2step/pcb/oce_utils.cpp b/utils/kicad2step/pcb/oce_utils.cpp
index dccd5c681..334a5736d 100644
--- a/utils/kicad2step/pcb/oce_utils.cpp
+++ b/utils/kicad2step/pcb/oce_utils.cpp
@@ -43,6 +43,7 @@
#include <STEPCAFControl_Reader.hxx>
#include <STEPCAFControl_Writer.hxx>
#include <APIHeaderSection_MakeHeader.hxx>
+#include <Standard_Version.hxx>
#include <TCollection_ExtendedString.hxx>
#include <TDataStd_Name.hxx>
#include <TDF_LabelSequence.hxx>
@@ -779,6 +780,9 @@ bool PCBMODEL::CreatePCB()
topex.Next();
}
+#if ( defined OCC_VERSION_HEX ) && ( OCC_VERSION_HEX > 0x070101 )
+ m_assy->UpdateAssemblies();
+#endif
return true;
}
--
2.11.0
Follow ups
References