Compare commits
53 Commits
CR29713
...
CR0_720_Fi
Author | SHA1 | Date | |
---|---|---|---|
|
2ab2295cec | ||
|
84dd587638 | ||
|
28c0c6b155 | ||
|
47b0f294be | ||
|
7d6be4672b | ||
|
b453701e1f | ||
|
c23d6ec61f | ||
|
b05ff75a60 | ||
|
e49dc1e054 | ||
|
abca9f3eb8 | ||
|
68556f75f9 | ||
|
3d607bc062 | ||
|
365585ddfb | ||
|
c89ab82e4c | ||
|
cc964ef4d3 | ||
|
cb127824b2 | ||
|
fbebf6078c | ||
|
762fa70875 | ||
|
4dd6fb9a80 | ||
|
70608ec03d | ||
|
0842e31d95 | ||
|
51204152b9 | ||
|
d517575214 | ||
|
99d9eb3933 | ||
|
a3430df1d4 | ||
|
9f9ac0fb5a | ||
|
e0fd0b8797 | ||
|
09aae06737 | ||
|
eea07c2f60 | ||
|
9cee51b43b | ||
|
760a94d050 | ||
|
a8375ceaf0 | ||
|
55374b512e | ||
|
52a5d7a61d | ||
|
77676f1b6d | ||
|
515991ffef | ||
|
3d5d9d2b5e | ||
|
51e75dba6c | ||
|
b008680dc0 | ||
|
2b5ced28c3 | ||
|
1c4b27600f | ||
|
214171ff60 | ||
|
22f9125e1e | ||
|
1a196a871d | ||
|
5eba99e74b | ||
|
1560ac5528 | ||
|
4b46072ae9 | ||
|
eed77ff55c | ||
|
118e720920 | ||
|
80f77ed256 | ||
|
8f87d4a954 | ||
|
eeccb2515d | ||
|
b1ee6d0e4b |
2
.gitignore
vendored
@@ -35,8 +35,6 @@ Release
|
||||
*.suo
|
||||
*.sdf
|
||||
*.opensdf
|
||||
*.VC.db
|
||||
*.VC.opendb
|
||||
*.ipch
|
||||
*.aps
|
||||
|
||||
|
119
CMakeLists.txt
@@ -32,6 +32,7 @@ if ("${BUILD_LIBRARY_TYPE}" STREQUAL "Shared")
|
||||
endif()
|
||||
else()
|
||||
unset (BUILD_SHARED_LIBS)
|
||||
message (STATUS "Info: Only 3rdparty's header files are used for building of static OCCT libraries")
|
||||
unset (BUILD_SHARED_LIBRARY_NAME_POSTFIX)
|
||||
endif()
|
||||
|
||||
@@ -343,9 +344,8 @@ set (BUILD_ADDITIONAL_TOOLKITS "" CACHE STRING "${BUILD_ADDITIONAL_TOOLKITS_DESC
|
||||
separate_arguments (BUILD_ADDITIONAL_TOOLKITS)
|
||||
|
||||
if (MSVC)
|
||||
set (BUILD_SAMPLES_MFC OFF CACHE BOOL "${BUILD_SAMPLES_MFC_DESCR}")
|
||||
set (BUILD_MODULE_MfcSamples OFF CACHE BOOL "${BUILD_MODULE_MfcSamples_DESCR}")
|
||||
endif()
|
||||
set (BUILD_SAMPLES_QT OFF CACHE BOOL "${BUILD_SAMPLES_QT_DESCR}")
|
||||
|
||||
set (BUILD_Inspector OFF CACHE BOOL "${BUILD_Inspector_DESCR}")
|
||||
|
||||
@@ -381,7 +381,7 @@ endif()
|
||||
# include the patched or original list of modules
|
||||
# list <MODULENAME>_TOOLKITS is created foreach module and contains its toolkits
|
||||
# list <OCCT_MODULES> will contain all modules
|
||||
OCCT_MODULES_AND_TOOLKITS (MODULES "TOOLKITS" OCCT_MODULES)
|
||||
OCCT_MODULES_AND_TOOLKITS (OCCT_MODULES)
|
||||
|
||||
foreach (OCCT_MODULE ${OCCT_MODULES})
|
||||
BUILD_MODULE (${OCCT_MODULE})
|
||||
@@ -583,7 +583,7 @@ else()
|
||||
endif()
|
||||
|
||||
# OpenGL ES 2.0
|
||||
if (CAN_USE_GLES2)
|
||||
if (WIN32 AND CAN_USE_GLES2)
|
||||
if ("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore")
|
||||
set (USE_GLES2 ON)
|
||||
else()
|
||||
@@ -702,10 +702,11 @@ else()
|
||||
OCCT_CHECK_AND_UNSET ("3RDPARTY_FLEX_EXECUTABLE")
|
||||
endif()
|
||||
|
||||
# check all 3rdparty include paths
|
||||
string (REGEX REPLACE ";" " " 3RDPARTY_NOT_INCLUDED "${3RDPARTY_NOT_INCLUDED}")
|
||||
|
||||
# check all 3rdparty paths
|
||||
if (3RDPARTY_NOT_INCLUDED)
|
||||
message (FATAL_ERROR "Could not find headers of used third-party products: ${3RDPARTY_NOT_INCLUDED}" )
|
||||
message (FATAL_ERROR "NOT FOUND: ${3RDPARTY_NOT_INCLUDED}" )
|
||||
endif()
|
||||
|
||||
if (3RDPARTY_INCLUDE_DIRS)
|
||||
@@ -718,28 +719,13 @@ endif()
|
||||
# include <cmake binary folder>/inc
|
||||
include_directories (${CMAKE_BINARY_DIR}/${INSTALL_DIR_INCLUDE})
|
||||
|
||||
# check all 3rdparty library paths
|
||||
string (REGEX REPLACE ";" " " 3RDPARTY_NO_LIBS "${3RDPARTY_NO_LIBS}")
|
||||
if (3RDPARTY_NO_LIBS)
|
||||
if (BUILD_SHARED_LIBS)
|
||||
message (SEND_ERROR "Could not find libraries of used third-party products: ${3RDPARTY_NO_LIBS}" )
|
||||
else()
|
||||
message (WARNING "Could not find libraries of used third-party products: ${3RDPARTY_NO_LIBS}" )
|
||||
endif()
|
||||
endif()
|
||||
if (3RDPARTY_LIBRARY_DIRS)
|
||||
if (3RDPARTY_LIBRARY_DIRS AND BUILD_SHARED_LIBS)
|
||||
list (REMOVE_DUPLICATES 3RDPARTY_LIBRARY_DIRS)
|
||||
string (REGEX REPLACE ";" "\n\t" 3RDPARTY_LIBRARY_DIRS_WITH_ENDS "${3RDPARTY_LIBRARY_DIRS}")
|
||||
message (STATUS "Info: The directories of 3rdparty libraries: \n\t${3RDPARTY_LIBRARY_DIRS_WITH_ENDS}")
|
||||
link_directories (${3RDPARTY_LIBRARY_DIRS})
|
||||
endif()
|
||||
|
||||
# report not found 3rdparty dll paths
|
||||
string (REGEX REPLACE ";" " " 3RDPARTY_NO_DLLS "${3RDPARTY_NO_DLLS}")
|
||||
if (3RDPARTY_NO_DLLS)
|
||||
message (WARNING "Could not find DLLs of used third-party products: ${3RDPARTY_NO_DLLS}" )
|
||||
endif()
|
||||
|
||||
# build directories
|
||||
if (SINGLE_GENERATOR)
|
||||
set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/lib${BIN_LETTER}")
|
||||
@@ -789,33 +775,30 @@ else()
|
||||
set (SCRIPT_EXT sh)
|
||||
endif()
|
||||
|
||||
if (BUILD_Inspector OR BUILD_SAMPLES_QT)
|
||||
# check qt 3rdparty path
|
||||
add_definitions (-DHAVE_QT)
|
||||
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/qt")
|
||||
message (STATUS "Info: Qt is used by OCCT")
|
||||
else()
|
||||
OCCT_CHECK_AND_UNSET_GROUP ("3RDPARTY_QT")
|
||||
OCCT_CHECK_AND_UNSET_GROUP ("3RDPARTY_TQTMALLOC")
|
||||
OCCT_CHECK_AND_UNSET ("INSTALL_QT")
|
||||
endif()
|
||||
|
||||
# OCCT tools
|
||||
# include the patched or original list of tools
|
||||
# list <TOOLNAME>_TOOLKITS is created foreach tool and contains its toolkits
|
||||
# list <OCCT_TOOLS> will contain all tools
|
||||
if (BUILD_Inspector)
|
||||
add_definitions (-DHAVE_Inspector)
|
||||
|
||||
OCCT_MODULES_AND_TOOLKITS (TOOLS "TOOL_TOOLKITS" OCCT_TOOLS)
|
||||
if (NOT BUILD_Inspector)
|
||||
OCCT_CHECK_AND_UNSET_GROUP ("3RDPARTY_QT")
|
||||
OCCT_CHECK_AND_UNSET_GROUP ("3RDPARTY_TQTMALLOC")
|
||||
OCCT_CHECK_AND_UNSET ("INSTALL_QT")
|
||||
else()
|
||||
OCCT_TOOLS_AND_TOOLKITS (OCCT_TOOLS)
|
||||
foreach (OCCT_TOOL ${OCCT_TOOLS})
|
||||
list (APPEND BUILD_TOOL_TOOLKITS ${${OCCT_TOOL}_TOOL_TOOLKITS})
|
||||
endforeach()
|
||||
|
||||
# collect all the headers to <binary dir>/inc/inspector folder
|
||||
# collect all the headers to <binary dir>/inc folder
|
||||
string(TIMESTAMP CURRENT_TIME "%H:%M:%S")
|
||||
message (STATUS "\nInfo: \(${CURRENT_TIME}\) Start collecting all OCCT tool header files into ${CMAKE_BINARY_DIR}/inc/inspector ...")
|
||||
message (STATUS "\nInfo: \(${CURRENT_TIME}\) Start collecting all OCCT tool header files into ${CMAKE_BINARY_DIR}/tools/inc ...")
|
||||
COLLECT_AND_INSTALL_OCCT_HEADER_FILES ("${CMAKE_BINARY_DIR}" "${BUILD_TOOL_TOOLKITS}" "${CMAKE_SOURCE_DIR}/tools" "${INSTALL_DIR_INCLUDE}/inspector")
|
||||
|
||||
|
||||
# check qt 3rdparty path
|
||||
add_definitions (-DHAVE_QT)
|
||||
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/qt")
|
||||
message (STATUS "Info: Qt is used by OCCT")
|
||||
endif()
|
||||
|
||||
# OCCT samples
|
||||
@@ -913,9 +896,9 @@ OCCT_CONFIGURE_AND_INSTALL ("adm/templates/custom.install.${SCRIPT_EXT}.in" "${S
|
||||
# write current custom.bat/sh (for build directory)
|
||||
OCCT_CONFIGURE ("adm/templates/custom.build.${SCRIPT_EXT}.in" "${SUB_CUSTOM_NAME}")
|
||||
|
||||
if (BUILD_SAMPLES_MFC OR BUILD_SAMPLES_QT)
|
||||
OCCT_INSTALL_FILE_OR_DIR ("adm/templates/sample.${SCRIPT_EXT}" "${INSTALL_DIR_SCRIPT}")
|
||||
OCCT_COPY_FILE_OR_DIR ("adm/templates/sample.${SCRIPT_EXT}" "${CMAKE_BINARY_DIR}")
|
||||
if (BUILD_MODULE_MfcSamples)
|
||||
OCCT_INSTALL_FILE_OR_DIR ("adm/templates/sample.bat" "${INSTALL_DIR_SCRIPT}")
|
||||
OCCT_COPY_FILE_OR_DIR ("adm/templates/sample.bat" "${CMAKE_BINARY_DIR}")
|
||||
endif()
|
||||
|
||||
# env script for draw in building environment
|
||||
@@ -941,15 +924,6 @@ foreach(RESOURCE ${RESOURCES})
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if (BUILD_SAMPLES_QT)
|
||||
FILE_TO_LIST ("adm/SAMPLES_RESOURCES" SAMPLES_RESOURCES)
|
||||
foreach(RESOURCE ${SAMPLES_RESOURCES})
|
||||
OCCT_INSTALL_FILE_OR_DIR ("samples/${RESOURCE}" "${INSTALL_DIR_RESOURCE}/samples")
|
||||
#message("Copy Sample resources: samples/${RESOURCE} into ${INSTALL_DIR_RESOURCE}/samples")
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
|
||||
# patch installed DrawDefault file if BUILD_SHARED_LIBRARY_NAME_POSTFIX is changed
|
||||
if (NOT "${BUILD_SHARED_LIBRARY_NAME_POSTFIX}" STREQUAL "")
|
||||
OCCT_UPDATE_DRAW_DEFAULT_FILE()
|
||||
@@ -994,11 +968,9 @@ endif()
|
||||
|
||||
message (STATUS "Info: \(${CURRENT_TIME}\) OCCT toolkits processed")
|
||||
# samples do not support patch usage
|
||||
if (BUILD_SAMPLES_MFC OR BUILD_SAMPLES_QT)
|
||||
if (BUILD_MODULE_MfcSamples)
|
||||
set (OCCT_ROOT ${CMAKE_SOURCE_DIR})
|
||||
endif()
|
||||
|
||||
if (BUILD_SAMPLES_MFC)
|
||||
set (MFC_STANDARD_SAMPLES_DIR ${OCCT_ROOT}/samples/mfc/standard)
|
||||
set (COMMON_WINMAIN_FILE ${MFC_STANDARD_SAMPLES_DIR}/Common/Winmain.cpp)
|
||||
|
||||
@@ -1017,33 +989,6 @@ if (BUILD_SAMPLES_MFC)
|
||||
message (STATUS "Info: \(${CURRENT_TIME}\) MFC Sample projects added")
|
||||
endif()
|
||||
|
||||
OCCT_MODULES_AND_TOOLKITS (SAMPLES "SAMPLES_TOOLKITS" OCCT_SAMPLES)
|
||||
|
||||
if (BUILD_Inspector OR BUILD_SAMPLES_QT)
|
||||
if (BUILD_SAMPLES_QT)
|
||||
if (NOT Qt5_FOUND OR "${Qt5Gui_EGL_INCLUDE_DIRS}" STREQUAL "" OR NOT WIN32)
|
||||
list (REMOVE_ITEM qt_SAMPLES_TOOLKITS AndroidQt)
|
||||
message (STATUS "Info: AndroidQt sample excluded due to OS is not Windows or Qt is configured without ANGLE")
|
||||
endif()
|
||||
else()
|
||||
list (REMOVE_ITEM OCCT_SAMPLES qt)
|
||||
message (STATUS "Info: qt samples excluded due to BUILD_SAMPLES_QT is disabled")
|
||||
endif()
|
||||
|
||||
foreach (OCCT_SAMPLE ${OCCT_SAMPLES})
|
||||
list (APPEND BUILD_SAMPLE_TOOLKITS ${${OCCT_SAMPLE}_SAMPLES_TOOLKITS})
|
||||
|
||||
# collect all the headers to <binary dir>/inc/samples folder
|
||||
string(TIMESTAMP CURRENT_TIME "%H:%M:%S")
|
||||
message (STATUS "Info: \(${CURRENT_TIME}\) ${OCCT_SAMPLE} Sample projects added")
|
||||
|
||||
# include patched toolkit projects or original ones
|
||||
foreach (BUILD_SAMPLE_TOOLKIT ${${OCCT_SAMPLE}_SAMPLES_TOOLKITS})
|
||||
OCCT_ADD_SUBDIRECTORY ("samples/${OCCT_SAMPLE}/${BUILD_SAMPLE_TOOLKIT}")
|
||||
endforeach()
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
if (BUILD_MODULE_UwpSample)
|
||||
add_subdirectory(samples/xaml)
|
||||
endif()
|
||||
@@ -1058,9 +1003,13 @@ if (BUILD_TOOL_TOOLKITS)
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_WRITE WORLD_EXECUTE)
|
||||
endif()
|
||||
|
||||
set (OpenCASCADE_BINARY_DIR "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
|
||||
set (BUILD_SAMPLE_TOOLKITS TInspectorEXE)
|
||||
foreach (BUILD_SAMPLE_TOOL_TOOLKIT ${BUILD_SAMPLE_TOOLKITS})
|
||||
OCCT_ADD_SUBDIRECTORY ("samples/tools/${BUILD_SAMPLE_TOOL_TOOLKIT}")
|
||||
endforeach()
|
||||
|
||||
# patch TInspectorEXE
|
||||
OCCT_CONFIGURE ("adm/templates/TInspectorEXE.vcxproj.user.in" "${CMAKE_BINARY_DIR}/tools/TInspectorEXE/TInspectorEXE.vcxproj.user")
|
||||
OCCT_CONFIGURE ("adm/templates/TInspectorEXE.vcxproj.user.in" "${CMAKE_BINARY_DIR}/samples/tools/TInspectorEXE/TInspectorEXE.vcxproj.user")
|
||||
endif()
|
||||
|
||||
# Prepare variables for configuration of OpenCASCADE cmake config file
|
||||
@@ -1146,6 +1095,10 @@ if (APPLE)
|
||||
set (SET_OpenCASCADE_WITH_GLX "set (OpenCASCADE_WITH_GLX ${USE_GLX})")
|
||||
endif()
|
||||
|
||||
if (NOT SINGLE_GENERATOR)
|
||||
OCCT_INSERT_CODE_FOR_TARGET()
|
||||
endif()
|
||||
|
||||
# Configure and install cmake config file
|
||||
configure_file("${CMAKE_SOURCE_DIR}/adm/templates/OpenCASCADEConfig.cmake.in" "OpenCASCADEConfig.cmake" @ONLY)
|
||||
install(FILES "${CMAKE_BINARY_DIR}/OpenCASCADEConfig.cmake" DESTINATION "${INSTALL_DIR_CMAKE}")
|
||||
|
@@ -1 +0,0 @@
|
||||
qt AndroidQt FuncDemo IESample Tutorial
|
@@ -1,2 +0,0 @@
|
||||
qt/Common/res/
|
||||
qt/Tutorial/res/
|
@@ -1,4 +1,4 @@
|
||||
TModelingData TKShapeView
|
||||
TVisualization TKView TKVInspector
|
||||
TApplicationFramework TKTreeModel TKTInspectorAPI TKDFBrowser
|
||||
TTool TKTInspector TKToolsDraw TInspectorEXE
|
||||
TTool TKTInspector TKToolsDraw
|
@@ -117,7 +117,7 @@ macro (THIRDPARTY_PRODUCT PRODUCT_NAME HEADER_NAME LIBRARY_CSF_NAME LIBRARY_NAME
|
||||
|
||||
foreach (LIBRARY_NAME ${${LIBRARY_CSF_NAME}})
|
||||
string (REPLACE "." "" LIBRARY_NAME_SUFFIX "${LIBRARY_NAME}")
|
||||
# if (BUILD_SHARED_LIBS)
|
||||
if (BUILD_SHARED_LIBS)
|
||||
# library
|
||||
if (NOT 3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX} OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX}}")
|
||||
set (CMAKE_FIND_LIBRARY_SUFFIXES .lib .so .dylib .a)
|
||||
@@ -167,7 +167,7 @@ macro (THIRDPARTY_PRODUCT PRODUCT_NAME HEADER_NAME LIBRARY_CSF_NAME LIBRARY_NAME
|
||||
if (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX} AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}}")
|
||||
list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX}}")
|
||||
else()
|
||||
list (APPEND 3RDPARTY_NO_LIBS 3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX})
|
||||
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_${LIBRARY_NAME_SUFFIX})
|
||||
|
||||
set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX} "" CACHE FILEPATH "The path to ${PRODUCT_NAME} library \"${LIBRARY_NAME}\"" FORCE)
|
||||
endif()
|
||||
@@ -213,7 +213,7 @@ macro (THIRDPARTY_PRODUCT PRODUCT_NAME HEADER_NAME LIBRARY_CSF_NAME LIBRARY_NAME
|
||||
if (3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX} OR EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}}")
|
||||
list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX}}")
|
||||
else()
|
||||
list (APPEND 3RDPARTY_NO_DLLS 3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX})
|
||||
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_${PRODUCT_NAME}_DLL_DIR_${LIBRARY_NAME_SUFFIX})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -311,7 +311,7 @@ macro (THIRDPARTY_PRODUCT PRODUCT_NAME HEADER_NAME LIBRARY_CSF_NAME LIBRARY_NAME
|
||||
endif()
|
||||
|
||||
mark_as_advanced (3RDPARTY_${PRODUCT_NAME}_LIBRARY_${LIBRARY_NAME_SUFFIX} 3RDPARTY_${PRODUCT_NAME}_DLL_${LIBRARY_NAME_SUFFIX})
|
||||
# endif()
|
||||
endif()
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
|
@@ -140,7 +140,7 @@ foreach (LIBRARY_NAME ${CSF_FFmpeg})
|
||||
if (3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}}")
|
||||
list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}}")
|
||||
else()
|
||||
list (APPEND 3RDPARTY_NO_LIBS 3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME})
|
||||
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME})
|
||||
|
||||
set (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} "" CACHE FILEPATH "The path to FFmpeg library (${LIBRARY_NAME})" FORCE)
|
||||
endif()
|
||||
@@ -167,7 +167,7 @@ foreach (LIBRARY_NAME ${CSF_FFmpeg})
|
||||
if (3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} OR EXISTS "${3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}}")
|
||||
list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}}")
|
||||
else()
|
||||
list (APPEND 3RDPARTY_NO_DLLS 3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME})
|
||||
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
@@ -218,7 +218,7 @@ else()
|
||||
endif()
|
||||
|
||||
# freetype library
|
||||
#if (BUILD_SHARED_LIBS)
|
||||
if (BUILD_SHARED_LIBS)
|
||||
if (NOT 3RDPARTY_FREETYPE_LIBRARY OR NOT EXISTS "${3RDPARTY_FREETYPE_LIBRARY}")
|
||||
set (CMAKE_FIND_LIBRARY_SUFFIXES .lib .so .dylib .a)
|
||||
|
||||
@@ -253,7 +253,7 @@ endif()
|
||||
if (3RDPARTY_FREETYPE_LIBRARY_DIR AND EXISTS "${3RDPARTY_FREETYPE_LIBRARY_DIR}")
|
||||
list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_FREETYPE_LIBRARY_DIR}")
|
||||
else()
|
||||
list (APPEND 3RDPARTY_NO_LIBS 3RDPARTY_FREETYPE_LIBRARY_DIR)
|
||||
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FREETYPE_LIBRARY_DIR)
|
||||
|
||||
set (3RDPARTY_FREETYPE_LIBRARY "" CACHE FILEPATH "The path to freetype library" FORCE)
|
||||
endif()
|
||||
@@ -290,7 +290,7 @@ endif()
|
||||
if (3RDPARTY_FREETYPE_DLL_DIR OR EXISTS "${3RDPARTY_FREETYPE_DLL_DIR}")
|
||||
list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_FREETYPE_DLL_DIR}")
|
||||
else()
|
||||
list (APPEND 3RDPARTY_NO_DLLS 3RDPARTY_FREETYPE_DLL_DIR)
|
||||
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FREETYPE_DLL_DIR)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -345,7 +345,7 @@ endif()
|
||||
set (USED_3RDPARTY_FREETYPE_DIR ${3RDPARTY_FREETYPE_LIBRARY_DIR})
|
||||
endif()
|
||||
endif()
|
||||
#endif()
|
||||
endif()
|
||||
|
||||
# unset all redundant variables
|
||||
OCCT_CHECK_AND_UNSET(FREETYPE_INCLUDE_DIR_ft2build)
|
||||
|
@@ -73,20 +73,19 @@ if (WIN32)
|
||||
set (CSF_user32 "user32.lib")
|
||||
set (CSF_wsock32 "wsock32.lib")
|
||||
set (CSF_psapi "Psapi.lib")
|
||||
set (CSF_d3d9 "D3D9.lib")
|
||||
if ("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore" OR USE_GLES2)
|
||||
set (CSF_OpenGlLibs "libEGL libGLESv2")
|
||||
else()
|
||||
set (CSF_OpenGlLibs "opengl32.lib")
|
||||
endif()
|
||||
|
||||
else()
|
||||
else()
|
||||
|
||||
if (APPLE)
|
||||
set (CSF_objc "objc")
|
||||
|
||||
# frameworks
|
||||
find_library (Appkit_LIB NAMES AppKit)
|
||||
find_library (Appkit_LIB NAMES Appkit)
|
||||
set (CSF_Appkit ${Appkit_LIB})
|
||||
|
||||
find_library (IOKit_LIB NAMES IOKit)
|
||||
@@ -110,12 +109,9 @@ if (WIN32)
|
||||
set (CSF_OpenGlLibs "EGL GLESv2")
|
||||
elseif (UNIX)
|
||||
set (CSF_ThreadLibs "pthread rt stdc++")
|
||||
if (USE_GLES2)
|
||||
set (CSF_OpenGlLibs "EGL GLESv2")
|
||||
else()
|
||||
set (CSF_OpenGlLibs "GL")
|
||||
endif()
|
||||
set (CSF_OpenGlLibs "GL")
|
||||
set (CSF_XwLibs "X11 Xext Xmu Xi")
|
||||
set (CSF_dl "dl")
|
||||
set (CSF_fontconfig "fontconfig")
|
||||
endif()
|
||||
endif()
|
||||
|
@@ -16,15 +16,16 @@ if (MSVC)
|
||||
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /fp:precise")
|
||||
endif()
|
||||
|
||||
# add SSE2 option for old MSVC compilers (VS 2005 - 2010, 32 bit only)
|
||||
# set compiler short name and choose SSE2 option for appropriate MSVC compilers
|
||||
# ONLY for 32-bit
|
||||
if (NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
if (MSVC AND ((MSVC_VERSION EQUAL 1400) OR (MSVC_VERSION EQUAL 1500) OR (MSVC_VERSION EQUAL 1600)))
|
||||
if (MSVC80 OR MSVC90 OR MSVC10)
|
||||
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:SSE2")
|
||||
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /arch:SSE2")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (MSVC)
|
||||
if (WIN32)
|
||||
add_definitions (-D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE)
|
||||
else()
|
||||
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fexceptions -fPIC")
|
||||
@@ -81,7 +82,7 @@ if (IS_DEBUG_C)
|
||||
string (REGEX REPLACE "-DDEBUG" "" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
|
||||
endif()
|
||||
# enable parallel compilation on MSVC 9 and above
|
||||
if (MSVC AND (MSVC_VERSION GREATER 1400))
|
||||
if (MSVC AND NOT MSVC70 AND NOT MSVC80)
|
||||
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
|
||||
endif()
|
||||
|
||||
|
@@ -60,27 +60,25 @@ endmacro()
|
||||
# COMPILER variable
|
||||
macro (OCCT_MAKE_COMPILER_SHORT_NAME)
|
||||
if (MSVC)
|
||||
if ((MSVC_VERSION EQUAL 1300) OR (MSVC_VERSION EQUAL 1310))
|
||||
if (MSVC70)
|
||||
set (COMPILER vc7)
|
||||
elseif (MSVC_VERSION EQUAL 1400)
|
||||
elseif (MSVC80)
|
||||
set (COMPILER vc8)
|
||||
elseif (MSVC_VERSION EQUAL 1500)
|
||||
elseif (MSVC90)
|
||||
set (COMPILER vc9)
|
||||
elseif (MSVC_VERSION EQUAL 1600)
|
||||
elseif (MSVC10)
|
||||
set (COMPILER vc10)
|
||||
elseif (MSVC_VERSION EQUAL 1700)
|
||||
elseif (MSVC11)
|
||||
set (COMPILER vc11)
|
||||
elseif (MSVC_VERSION EQUAL 1800)
|
||||
elseif (MSVC12)
|
||||
set (COMPILER vc12)
|
||||
elseif (MSVC_VERSION EQUAL 1900)
|
||||
elseif (MSVC14)
|
||||
set (COMPILER vc14)
|
||||
elseif ((MSVC_VERSION GREATER 1900) AND (MSVC_VERSION LESS 2000))
|
||||
elseif (MSVC15)
|
||||
# Since Visual Studio 15 (2017), its version diverged from version of
|
||||
# compiler which is 14.1; as that compiler uses the same run-time as 14.0,
|
||||
# we keep its id as "vc14" to be compatibille
|
||||
set (COMPILER vc14)
|
||||
else()
|
||||
message (FATAL_ERROR "Unrecognized MSVC_VERSION")
|
||||
endif()
|
||||
elseif (DEFINED CMAKE_COMPILER_IS_GNUCC)
|
||||
set (COMPILER gcc)
|
||||
@@ -502,11 +500,11 @@ function (OCCT_TOOLKIT_FULL_DEP TOOLKIT_NAME TOOLKIT_FULL_DEPS)
|
||||
set (${TOOLKIT_FULL_DEPS} ${LOCAL_TOOLKIT_FULL_DEPS} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
# Function to get list of modules/toolkits/samples from file adm/${FILE_NAME}.
|
||||
# Function to get list of modules and toolkits from file adm/MODULES.
|
||||
# Creates list <$MODULE_LIST> to store list of MODULES and
|
||||
# <NAME_OF_MODULE>_TOOLKITS foreach module to store its toolkits, where "TOOLKITS" is defined by TOOLKITS_NAME_SUFFIX.
|
||||
function (OCCT_MODULES_AND_TOOLKITS FILE_NAME TOOLKITS_NAME_SUFFIX MODULE_LIST)
|
||||
FILE_TO_LIST ("adm/${FILE_NAME}" FILE_CONTENT)
|
||||
# <NAME_OF_MODULE>_TOOLKITS foreach module to store its toolkits.
|
||||
function (OCCT_MODULES_AND_TOOLKITS MODULE_LIST)
|
||||
FILE_TO_LIST ("adm/MODULES" FILE_CONTENT)
|
||||
|
||||
foreach (CONTENT_LINE ${FILE_CONTENT})
|
||||
string (REPLACE " " ";" CONTENT_LINE ${CONTENT_LINE})
|
||||
@@ -514,12 +512,30 @@ function (OCCT_MODULES_AND_TOOLKITS FILE_NAME TOOLKITS_NAME_SUFFIX MODULE_LIST)
|
||||
list (REMOVE_AT CONTENT_LINE 0)
|
||||
list (APPEND ${MODULE_LIST} ${MODULE_NAME})
|
||||
# (!) REMOVE THE LINE BELOW (implicit variables)
|
||||
set (${MODULE_NAME}_${TOOLKITS_NAME_SUFFIX} ${CONTENT_LINE} PARENT_SCOPE)
|
||||
set (${MODULE_NAME}_TOOLKITS ${CONTENT_LINE} PARENT_SCOPE)
|
||||
endforeach()
|
||||
|
||||
set (${MODULE_LIST} ${${MODULE_LIST}} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
# Function to get list of tools and toolkits from file adm/TOOLS.
|
||||
# Creates list <$TOOL_LIST> to store list of TOOLS and
|
||||
# <NAME_OF_TOOL>_TOOLKITS foreach tool to store its toolkits.
|
||||
function (OCCT_TOOLS_AND_TOOLKITS TOOL_LIST)
|
||||
FILE_TO_LIST ("adm/TOOLS" FILE_CONTENT)
|
||||
|
||||
foreach (CONTENT_LINE ${FILE_CONTENT})
|
||||
string (REPLACE " " ";" CONTENT_LINE ${CONTENT_LINE})
|
||||
list (GET CONTENT_LINE 0 TOOL_NAME)
|
||||
list (REMOVE_AT CONTENT_LINE 0)
|
||||
list (APPEND ${TOOL_LIST} ${TOOL_NAME})
|
||||
# (!) REMOVE THE LINE BELOW (implicit variables)
|
||||
set (${TOOL_NAME}_TOOL_TOOLKITS ${CONTENT_LINE} PARENT_SCOPE)
|
||||
endforeach()
|
||||
|
||||
set (${TOOL_LIST} ${${TOOL_LIST}} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
# Returns OCC version string from file Standard_Version.hxx (if available)
|
||||
function (OCC_VERSION OCC_VERSION_MAJOR OCC_VERSION_MINOR OCC_VERSION_MAINTENANCE OCC_VERSION_DEVELOPMENT OCC_VERSION_STRING_EXT)
|
||||
|
||||
@@ -585,7 +601,7 @@ endmacro()
|
||||
# prior to version 3.3 not supporting per-configuration install paths
|
||||
# for install target files (see https://cmake.org/Bug/view.php?id=14317)
|
||||
macro (OCCT_UPDATE_TARGET_FILE)
|
||||
if (WIN32)
|
||||
if (NOT SINGLE_GENERATOR)
|
||||
OCCT_INSERT_CODE_FOR_TARGET ()
|
||||
endif()
|
||||
|
||||
|
@@ -68,7 +68,6 @@ FILE_TO_LIST ("adm/RESOURCES" RESOURCES)
|
||||
foreach (CurrentResource ${RESOURCES})
|
||||
get_filename_component (CurrentResource_FileName "${CurrentResource}" NAME)
|
||||
if ("${CurrentResource_FileName}" STREQUAL TObj.msg OR
|
||||
"${CurrentResource_FileName}" STREQUAL BOPAlgo.msg OR
|
||||
"${CurrentResource_FileName}" STREQUAL Units.dat OR
|
||||
"${CurrentResource}" STREQUAL XSMessage OR
|
||||
"${CurrentResource}" STREQUAL SHMessage OR
|
||||
|
@@ -1,69 +1,28 @@
|
||||
# script for each OCCT toolkit
|
||||
|
||||
# filling some variables by default values(src) or using custom(tools, samples)
|
||||
set (RELATIVE_SOURCES_DIR "${RELATIVE_DIR}")
|
||||
if ("${RELATIVE_SOURCES_DIR}" STREQUAL "")
|
||||
#if it is not defined, use default directory
|
||||
set (RELATIVE_SOURCES_DIR "src")
|
||||
endif()
|
||||
|
||||
set (OCC_MODULES_LIST "${MODULES_LIST}")
|
||||
if ("${OCC_MODULES_LIST}" STREQUAL "")
|
||||
set (OCC_MODULES_LIST ${OCCT_MODULES})
|
||||
endif()
|
||||
|
||||
set (OCC_TARGET_FOLDER "${TARGET_FOLDER}")
|
||||
if ("${OCC_TARGET_FOLDER}" STREQUAL "")
|
||||
set (OCC_TARGET_FOLDER "Modules")
|
||||
endif()
|
||||
|
||||
set (OCCT_TOOLKITS_NAME_SUFFIX "${TOOLKITS_NAME_SUFFIX}")
|
||||
if ("${OCCT_TOOLKITS_NAME_SUFFIX}" STREQUAL "")
|
||||
set (OCCT_TOOLKITS_NAME_SUFFIX "TOOLKITS")
|
||||
endif()
|
||||
|
||||
# parce PACKAGES file
|
||||
FILE_TO_LIST ("${RELATIVE_SOURCES_DIR}/${PROJECT_NAME}/PACKAGES" USED_PACKAGES)
|
||||
if ("${USED_PACKAGES}" STREQUAL "")
|
||||
set (USED_PACKAGES ${PROJECT_NAME})
|
||||
if ("${PROJECT_NAME}" STREQUAL DRAWEXE)
|
||||
set (USED_PACKAGES DRAWEXE)
|
||||
else()
|
||||
FILE_TO_LIST ("src/${PROJECT_NAME}/PACKAGES" USED_PACKAGES)
|
||||
endif()
|
||||
|
||||
if (USE_QT)
|
||||
# Qt dependencies
|
||||
OCCT_INCLUDE_CMAKE_FILE (adm/cmake/qt_macro)
|
||||
FIND_QT_PACKAGE(PROJECT_LIBRARIES_DEBUG PROJECT_LIBRARIES_RELEASE PROJECT_INCLUDES)
|
||||
include_directories("${PROJECT_INCLUDES}")
|
||||
endif(USE_QT)
|
||||
|
||||
set (PRECOMPILED_DEFS)
|
||||
|
||||
if (NOT BUILD_SHARED_LIBS)
|
||||
list (APPEND PRECOMPILED_DEFS "-DOCCT_NO_PLUGINS")
|
||||
if (WIN32)
|
||||
list (APPEND PRECOMPILED_DEFS "-DOCCT_STATIC_BUILD")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Get all used packages from toolkit
|
||||
UNSET(RESOURCE_FILES)
|
||||
foreach (OCCT_PACKAGE ${USED_PACKAGES})
|
||||
|
||||
#remove part after "/" in the OCCT_PACKAGE variable if exists
|
||||
string (FIND "${OCCT_PACKAGE}" "/" _index)
|
||||
if (_index GREATER -1)
|
||||
math (EXPR _index "${_index}")
|
||||
string (SUBSTRING "${OCCT_PACKAGE}" 0 ${_index} OCCT_PACKAGE_NAME)
|
||||
else()
|
||||
set (OCCT_PACKAGE_NAME "${OCCT_PACKAGE}")
|
||||
endif()
|
||||
|
||||
|
||||
# TKService contains platform-dependent packages: Xw and WNT
|
||||
if ((WIN32 AND "${OCCT_PACKAGE}" STREQUAL "Xw") OR (NOT WIN32 AND "${OCCT_PACKAGE}" STREQUAL "WNT"))
|
||||
# do nothing
|
||||
else()
|
||||
|
||||
if (WIN32)
|
||||
list (APPEND PRECOMPILED_DEFS "-D__${OCCT_PACKAGE_NAME}_DLL")
|
||||
list (APPEND PRECOMPILED_DEFS "-D__${OCCT_PACKAGE}_DLL")
|
||||
endif()
|
||||
|
||||
set (SOURCE_FILES)
|
||||
@@ -73,11 +32,11 @@ foreach (OCCT_PACKAGE ${USED_PACKAGES})
|
||||
if (${BUILD_YACCLEX})
|
||||
|
||||
# flex files
|
||||
OCCT_ORIGIN_AND_PATCHED_FILES ("${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}" "*[.]lex" SOURCE_FILES_FLEX)
|
||||
OCCT_ORIGIN_AND_PATCHED_FILES ("src/${OCCT_PACKAGE}" "*[.]lex" SOURCE_FILES_FLEX)
|
||||
list (LENGTH SOURCE_FILES_FLEX SOURCE_FILES_FLEX_LEN)
|
||||
|
||||
# bison files
|
||||
OCCT_ORIGIN_AND_PATCHED_FILES ("${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}" "*[.]yacc" SOURCE_FILES_BISON)
|
||||
OCCT_ORIGIN_AND_PATCHED_FILES ("src/${OCCT_PACKAGE}" "*[.]yacc" SOURCE_FILES_BISON)
|
||||
list (LENGTH SOURCE_FILES_BISON SOURCE_FILES_BISON_LEN)
|
||||
|
||||
if (${SOURCE_FILES_FLEX_LEN} EQUAL ${SOURCE_FILES_BISON_LEN} AND NOT ${SOURCE_FILES_FLEX_LEN} EQUAL 0)
|
||||
@@ -99,8 +58,8 @@ foreach (OCCT_PACKAGE ${USED_PACKAGES})
|
||||
if (EXISTS "${CURRENT_FLEX_FILE}" AND EXISTS "${CURRENT_BISON_FILE}" AND ${ARE_FILES_EQUAL})
|
||||
set (BISON_OUTPUT_FILE ${CURRENT_BISON_FILE_NAME}.tab.c)
|
||||
set (FLEX_OUTPUT_FILE lex.${CURRENT_FLEX_FILE_NAME}.c)
|
||||
BISON_TARGET (Parser_${CURRENT_BISON_FILE_NAME} ${CURRENT_BISON_FILE} ${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${BISON_OUTPUT_FILE} COMPILE_FLAGS "-p ${CURRENT_BISON_FILE_NAME}")
|
||||
FLEX_TARGET (Scanner_${CURRENT_FLEX_FILE_NAME} ${CURRENT_FLEX_FILE} ${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${FLEX_OUTPUT_FILE} COMPILE_FLAGS "-P${CURRENT_FLEX_FILE_NAME}")
|
||||
BISON_TARGET (Parser_${CURRENT_BISON_FILE_NAME} ${CURRENT_BISON_FILE} ${CMAKE_SOURCE_DIR}/src/${OCCT_PACKAGE}/${BISON_OUTPUT_FILE} COMPILE_FLAGS "-p ${CURRENT_BISON_FILE_NAME}")
|
||||
FLEX_TARGET (Scanner_${CURRENT_FLEX_FILE_NAME} ${CURRENT_FLEX_FILE} ${CMAKE_SOURCE_DIR}/src/${OCCT_PACKAGE}/${FLEX_OUTPUT_FILE} COMPILE_FLAGS "-P${CURRENT_FLEX_FILE_NAME}")
|
||||
ADD_FLEX_BISON_DEPENDENCY (Scanner_${CURRENT_FLEX_FILE_NAME} Parser_${CURRENT_BISON_FILE_NAME})
|
||||
|
||||
list (APPEND SOURCE_FILES ${BISON_OUTPUT_FILE} ${FLEX_OUTPUT_FILE})
|
||||
@@ -110,23 +69,23 @@ foreach (OCCT_PACKAGE ${USED_PACKAGES})
|
||||
endif()
|
||||
|
||||
# header files
|
||||
if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES")
|
||||
file (STRINGS "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" HEADER_FILES_M REGEX ".+[.]h")
|
||||
file (STRINGS "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" HEADER_FILES_LXX REGEX ".+[.]lxx")
|
||||
file (STRINGS "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" HEADER_FILES_GXX REGEX ".+[.]gxx")
|
||||
if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/src/${OCCT_PACKAGE}/FILES")
|
||||
file (STRINGS "${BUILD_PATCH}/src/${OCCT_PACKAGE}/FILES" HEADER_FILES_M REGEX ".+[.]h")
|
||||
file (STRINGS "${BUILD_PATCH}/src/${OCCT_PACKAGE}/FILES" HEADER_FILES_LXX REGEX ".+[.]lxx")
|
||||
file (STRINGS "${BUILD_PATCH}/src/${OCCT_PACKAGE}/FILES" HEADER_FILES_GXX REGEX ".+[.]gxx")
|
||||
|
||||
file (STRINGS "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" SOURCE_FILES_C REGEX ".+[.]c")
|
||||
file (STRINGS "${BUILD_PATCH}/src/${OCCT_PACKAGE}/FILES" SOURCE_FILES_C REGEX ".+[.]c")
|
||||
if(APPLE)
|
||||
file (STRINGS "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" SOURCE_FILES_M REGEX ".+[.]mm")
|
||||
file (STRINGS "${BUILD_PATCH}/src/${OCCT_PACKAGE}/FILES" SOURCE_FILES_M REGEX ".+[.]mm")
|
||||
endif()
|
||||
else()
|
||||
file (STRINGS "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" HEADER_FILES_M REGEX ".+[.]h")
|
||||
file (STRINGS "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" HEADER_FILES_LXX REGEX ".+[.]lxx")
|
||||
file (STRINGS "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" HEADER_FILES_GXX REGEX ".+[.]gxx")
|
||||
file (STRINGS "${CMAKE_SOURCE_DIR}/src/${OCCT_PACKAGE}/FILES" HEADER_FILES_M REGEX ".+[.]h")
|
||||
file (STRINGS "${CMAKE_SOURCE_DIR}/src/${OCCT_PACKAGE}/FILES" HEADER_FILES_LXX REGEX ".+[.]lxx")
|
||||
file (STRINGS "${CMAKE_SOURCE_DIR}/src/${OCCT_PACKAGE}/FILES" HEADER_FILES_GXX REGEX ".+[.]gxx")
|
||||
|
||||
file (STRINGS "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" SOURCE_FILES_C REGEX ".+[.]c")
|
||||
file (STRINGS "${CMAKE_SOURCE_DIR}/src/${OCCT_PACKAGE}/FILES" SOURCE_FILES_C REGEX ".+[.]c")
|
||||
if(APPLE)
|
||||
file (STRINGS "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" SOURCE_FILES_M REGEX ".+[.]mm")
|
||||
file (STRINGS "${CMAKE_SOURCE_DIR}/src/${OCCT_PACKAGE}/FILES" SOURCE_FILES_M REGEX ".+[.]mm")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -137,36 +96,26 @@ foreach (OCCT_PACKAGE ${USED_PACKAGES})
|
||||
endif()
|
||||
|
||||
foreach(HEADER_FILE ${HEADER_FILES})
|
||||
if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${HEADER_FILE}")
|
||||
message (STATUS "Info: consider patched file: ${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${HEADER_FILE}")
|
||||
list (APPEND USED_INCFILES "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${HEADER_FILE}")
|
||||
SOURCE_GROUP ("Header Files\\${OCCT_PACKAGE_NAME}" FILES "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${HEADER_FILE}")
|
||||
if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/src/${OCCT_PACKAGE}/${HEADER_FILE}")
|
||||
message (STATUS "Info: consider patched file: ${BUILD_PATCH}/src/${OCCT_PACKAGE}/${HEADER_FILE}")
|
||||
list (APPEND USED_INCFILES "${BUILD_PATCH}/src/${OCCT_PACKAGE}/${HEADER_FILE}")
|
||||
SOURCE_GROUP ("Header Files\\${OCCT_PACKAGE}" FILES "${BUILD_PATCH}/src/${OCCT_PACKAGE}/${HEADER_FILE}")
|
||||
else()
|
||||
list (APPEND USED_INCFILES "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${HEADER_FILE}")
|
||||
SOURCE_GROUP ("Header Files\\${OCCT_PACKAGE_NAME}" FILES "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${HEADER_FILE}")
|
||||
list (APPEND USED_INCFILES "${CMAKE_SOURCE_DIR}/src/${OCCT_PACKAGE}/${HEADER_FILE}")
|
||||
SOURCE_GROUP ("Header Files\\${OCCT_PACKAGE}" FILES "${CMAKE_SOURCE_DIR}/src/${OCCT_PACKAGE}/${HEADER_FILE}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
foreach(SOURCE_FILE ${SOURCE_FILES})
|
||||
if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${SOURCE_FILE}")
|
||||
message (STATUS "Info: consider patched file: ${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${SOURCE_FILE}")
|
||||
list (APPEND USED_SRCFILES "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${SOURCE_FILE}")
|
||||
SOURCE_GROUP ("Source Files\\${OCCT_PACKAGE_NAME}" FILES "${BUILD_PATCH}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${SOURCE_FILE}")
|
||||
if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/src/${OCCT_PACKAGE}/${SOURCE_FILE}")
|
||||
message (STATUS "Info: consider patched file: ${BUILD_PATCH}/src/${OCCT_PACKAGE}/${SOURCE_FILE}")
|
||||
list (APPEND USED_SRCFILES "${BUILD_PATCH}/src/${OCCT_PACKAGE}/${SOURCE_FILE}")
|
||||
SOURCE_GROUP ("Source Files\\${OCCT_PACKAGE}" FILES "${BUILD_PATCH}/src/${OCCT_PACKAGE}/${SOURCE_FILE}")
|
||||
else()
|
||||
list (APPEND USED_SRCFILES "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${SOURCE_FILE}")
|
||||
SOURCE_GROUP ("Source Files\\${OCCT_PACKAGE_NAME}" FILES "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${SOURCE_FILE}")
|
||||
list (APPEND USED_SRCFILES "${CMAKE_SOURCE_DIR}/src/${OCCT_PACKAGE}/${SOURCE_FILE}")
|
||||
SOURCE_GROUP ("Source Files\\${OCCT_PACKAGE}" FILES "${CMAKE_SOURCE_DIR}/src/${OCCT_PACKAGE}/${SOURCE_FILE}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if (USE_QT)
|
||||
FIND_AND_INSTALL_QT_RESOURCES (${OCCT_PACKAGE} RESOURCE_FILES)
|
||||
#message("Qt Resource files are: ${QT_RESOURCE_FILES} in ${OCCT_PACKAGE}")
|
||||
endif(USE_QT)
|
||||
|
||||
#message("Resource files are: ${RESOURCE_FILES} in ${OCCT_PACKAGE}")
|
||||
foreach(RESOURCE_FILE ${RESOURCE_FILES})
|
||||
SOURCE_GROUP ("Resource Files\\${OCCT_PACKAGE_NAME}" FILES "${RESOURCE_FILE}")
|
||||
endforeach()
|
||||
endif()
|
||||
endforeach()
|
||||
string (REGEX REPLACE ";" " " PRECOMPILED_DEFS "${PRECOMPILED_DEFS}")
|
||||
@@ -183,30 +132,24 @@ if (MSVC)
|
||||
endif()
|
||||
|
||||
set (CURRENT_MODULE)
|
||||
foreach (OCCT_MODULE ${OCC_MODULES_LIST})
|
||||
list (FIND ${OCCT_MODULE}_${OCCT_TOOLKITS_NAME_SUFFIX} ${PROJECT_NAME} CURRENT_PROJECT_IS_BUILT)
|
||||
|
||||
foreach (OCCT_MODULE ${OCCT_MODULES})
|
||||
list (FIND ${OCCT_MODULE}_TOOLKITS ${PROJECT_NAME} CURRENT_PROJECT_IS_BUILT)
|
||||
if (NOT ${CURRENT_PROJECT_IS_BUILT} EQUAL -1)
|
||||
set (CURRENT_MODULE ${OCCT_MODULE})
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if (WIN32)
|
||||
if (NOT SINGLE_GENERATOR)
|
||||
OCCT_INSERT_CODE_FOR_TARGET ()
|
||||
endif()
|
||||
|
||||
if (USE_QT)
|
||||
FIND_AND_WRAP_MOC_FILES("${USED_INCFILES}" "${PROJECT_NAME}_MOC_FILES")
|
||||
#message("MOC files: ${${PROJECT_NAME}_MOC_FILES}")
|
||||
endif (USE_QT)
|
||||
|
||||
if (EXECUTABLE_PROJECT)
|
||||
add_executable (${PROJECT_NAME} ${USED_SRCFILES} ${USED_INCFILES} ${USED_RCFILE} ${RESOURCE_FILES} ${${PROJECT_NAME}_MOC_FILES})
|
||||
if ("${PROJECT_NAME}" STREQUAL "DRAWEXE")
|
||||
add_executable (${PROJECT_NAME} ${USED_SRCFILES} ${USED_INCFILES} ${USED_RCFILE})
|
||||
|
||||
install (TARGETS ${PROJECT_NAME}
|
||||
DESTINATION "${INSTALL_DIR_BIN}\${OCCT_INSTALL_BIN_LETTER}")
|
||||
else()
|
||||
add_library (${PROJECT_NAME} ${USED_SRCFILES} ${USED_INCFILES} ${USED_RCFILE} ${RESOURCE_FILES} ${${PROJECT_NAME}_MOC_FILES})
|
||||
add_library (${PROJECT_NAME} ${USED_SRCFILES} ${USED_INCFILES} ${USED_RCFILE})
|
||||
|
||||
if (MSVC)
|
||||
install (FILES ${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bin\${OCCT_INSTALL_BIN_LETTER}/${PROJECT_NAME}.pdb
|
||||
@@ -235,7 +178,7 @@ else()
|
||||
endif()
|
||||
|
||||
if (CURRENT_MODULE)
|
||||
set_target_properties (${PROJECT_NAME} PROPERTIES FOLDER "${OCC_TARGET_FOLDER}/${CURRENT_MODULE}")
|
||||
set_target_properties (${PROJECT_NAME} PROPERTIES FOLDER "Modules/${CURRENT_MODULE}")
|
||||
set_target_properties (${PROJECT_NAME} PROPERTIES MODULE "${CURRENT_MODULE}")
|
||||
if (APPLE)
|
||||
if (NOT "${INSTALL_NAME_DIR}" STREQUAL "")
|
||||
@@ -261,7 +204,7 @@ set (USED_TOOLKITS_BY_CURRENT_PROJECT)
|
||||
set (USED_EXTERNAL_LIBS_BY_CURRENT_PROJECT)
|
||||
|
||||
# parce EXTERNLIB file
|
||||
FILE_TO_LIST ("${RELATIVE_SOURCES_DIR}/${PROJECT_NAME}/EXTERNLIB" USED_EXTERNLIB_AND_TOOLKITS)
|
||||
FILE_TO_LIST ("src/${PROJECT_NAME}/EXTERNLIB" USED_EXTERNLIB_AND_TOOLKITS)
|
||||
foreach (USED_ITEM ${USED_EXTERNLIB_AND_TOOLKITS})
|
||||
string (REGEX MATCH "^ *#" COMMENT_FOUND ${USED_ITEM})
|
||||
if (NOT COMMENT_FOUND)
|
||||
@@ -338,34 +281,15 @@ if("${VTK_RENDERING_BACKEND}" STREQUAL "OpenGL2")
|
||||
list (REMOVE_ITEM USED_TOOLKITS_BY_CURRENT_PROJECT ${VTK_EXCLUDE_LIBRARY})
|
||||
if (${VTK_EXCLUDE_LIBRARY} STREQUAL vtkRenderingOpenGL)
|
||||
list (APPEND USED_TOOLKITS_BY_CURRENT_PROJECT vtkRenderingOpenGL2)
|
||||
if(VTK_MAJOR_VERSION GREATER 6)
|
||||
list (APPEND USED_TOOLKITS_BY_CURRENT_PROJECT vtkRenderingGL2PSOpenGL2)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
else()
|
||||
if(VTK_MAJOR_VERSION EQUAL 6 AND VTK_MINOR_VERSION GREATER 2 OR VTK_MAJOR_VERSION GREATER 6)
|
||||
list (FIND USED_TOOLKITS_BY_CURRENT_PROJECT "vtkRenderingFreeTypeOpenGL" IS_VTK_RENDER_FREETYPE_FOUND)
|
||||
if (NOT ${IS_VTK_RENDER_FREETYPE_FOUND} EQUAL -1)
|
||||
list (REMOVE_ITEM USED_TOOLKITS_BY_CURRENT_PROJECT "vtkRenderingFreeTypeOpenGL")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (BUILD_SHARED_LIBS)
|
||||
target_link_libraries (${PROJECT_NAME} ${USED_TOOLKITS_BY_CURRENT_PROJECT} ${USED_EXTERNAL_LIBS_BY_CURRENT_PROJECT})
|
||||
endif()
|
||||
|
||||
if (USE_QT)
|
||||
foreach (PROJECT_LIBRARY_DEBUG ${PROJECT_LIBRARIES_DEBUG})
|
||||
target_link_libraries (${PROJECT_NAME} debug ${PROJECT_LIBRARY_DEBUG})
|
||||
endforeach()
|
||||
foreach (PROJECT_LIBRARY_RELEASE ${PROJECT_LIBRARIES_RELEASE})
|
||||
target_link_libraries (${PROJECT_NAME} optimized ${PROJECT_LIBRARY_RELEASE})
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
# suppress deprecation warnings inside OCCT itself for old gcc versions with unavailable Standard_DISABLE_DEPRECATION_WARNINGS
|
||||
if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
|
||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.6.0)
|
||||
|
@@ -1,18 +0,0 @@
|
||||
if ("${TARGET_FOLDER}" STREQUAL "")
|
||||
set (EXECUTABLE_PROJECT ON)
|
||||
set (USE_QT ON)
|
||||
|
||||
set (RELATIVE_DIR "samples/qt")
|
||||
set (MODULES_LIST ${OCCT_SAMPLES})
|
||||
set (TARGET_FOLDER "Samples")
|
||||
set (TOOLKITS_NAME_SUFFIX "SAMPLES_TOOLKITS")
|
||||
|
||||
include_directories("${CMAKE_BINARY_DIR}/${INSTALL_DIR_INCLUDE}/${RELATIVE_DIR}")
|
||||
else()
|
||||
unset (USE_QT)
|
||||
unset (RELATIVE_DIR)
|
||||
unset (EXECUTABLE_PROJECT)
|
||||
unset (MODULES_LIST)
|
||||
unset (TARGET_FOLDER)
|
||||
unset (TOOLKITS_NAME_SUFFIX)
|
||||
endif("${TARGET_FOLDER}" STREQUAL "")
|
@@ -1,13 +0,0 @@
|
||||
if ("${TARGET_FOLDER}" STREQUAL "")
|
||||
set (USE_QT ON)
|
||||
set (RELATIVE_DIR "tools")
|
||||
set (MODULES_LIST ${OCCT_TOOLS})
|
||||
set (TARGET_FOLDER "Tools")
|
||||
set (TOOLKITS_NAME_SUFFIX "TOOL_TOOLKITS")
|
||||
else()
|
||||
unset (USE_QT)
|
||||
unset (RELATIVE_DIR)
|
||||
unset (MODULES_LIST)
|
||||
unset (TARGET_FOLDER)
|
||||
unset (TOOLKITS_NAME_SUFFIX)
|
||||
endif("${TARGET_FOLDER}" STREQUAL "")
|
301
adm/cmake/occt_toolkit_tool.cmake
Normal file
@@ -0,0 +1,301 @@
|
||||
# script for each OCCT tool toolkit
|
||||
|
||||
# Qt dependencies
|
||||
OCCT_INCLUDE_CMAKE_FILE (adm/cmake/qt_macro)
|
||||
|
||||
FIND_QT_PACKAGE(PROJECT_LIBRARIES_DEBUG PROJECT_LIBRARIES_RELEASE PROJECT_INCLUDES)
|
||||
include_directories("${PROJECT_INCLUDES}"
|
||||
"${CMAKE_BINARY_DIR}/${INSTALL_DIR_INCLUDE}/tools")
|
||||
|
||||
FILE_TO_LIST ("tools/${PROJECT_NAME}/PACKAGES" USED_PACKAGES)
|
||||
# parce PACKAGES file
|
||||
|
||||
if ("${PROJECT_NAME}" STREQUAL TInspectorEXE)
|
||||
set (USED_PACKAGES ${PROJECT_NAME})
|
||||
set (PACKAGE_PREFIX_DIR "samples/tools")
|
||||
include_directories("${PROJECT_INCLUDES}"
|
||||
"${CMAKE_SOURCE_DIR}/${PACKAGE_PREFIX_DIR}/${PROJECT_NAME}")
|
||||
else()
|
||||
FILE_TO_LIST ("tools/${PROJECT_NAME}/PACKAGES" USED_PACKAGES)
|
||||
set (PACKAGE_PREFIX_DIR "tools")
|
||||
endif()
|
||||
|
||||
|
||||
SET (RCC_FILES)
|
||||
foreach (OCCT_PACKAGE ${USED_PACKAGES})
|
||||
file (STRINGS "${CMAKE_SOURCE_DIR}/${PACKAGE_PREFIX_DIR}/${OCCT_PACKAGE}/FILES" SOURCE_FILES_C REGEX ".+[.]c")
|
||||
|
||||
#message("Sources are ${SOURCE_FILES_C}")
|
||||
FIND_AND_WRAP_MOC_FILES("${SOURCE_FILES_C}")
|
||||
|
||||
#message("Dir is ${CMAKE_SOURCE_DIR}/${PACKAGE_PREFIX_DIR}/${OCCT_PACKAGE}/${OCCT_PACKAGE}.qrc")
|
||||
FIND_AND_WRAP_RESOURCE_FILE("${CMAKE_SOURCE_DIR}/${PACKAGE_PREFIX_DIR}/${OCCT_PACKAGE}/${OCCT_PACKAGE}.qrc" RCC_FILES)
|
||||
endforeach()
|
||||
#message("RCC_FILES for ${PROJECT_NAME} are ${RCC_FILES}")
|
||||
|
||||
set (PRECOMPILED_DEFS)
|
||||
|
||||
if (NOT BUILD_SHARED_LIBS)
|
||||
list (APPEND PRECOMPILED_DEFS "-DOCCT_NO_PLUGINS")
|
||||
endif()
|
||||
|
||||
# Get all used packages from toolkit
|
||||
foreach (OCCT_PACKAGE ${USED_PACKAGES})
|
||||
|
||||
ADD_DEFINITIONS(-D${OCCT_PACKAGE}_EXPORTS)
|
||||
|
||||
# TKService contains platform-dependent packages: Xw and WNT
|
||||
if ((WIN32 AND "${OCCT_PACKAGE}" STREQUAL "Xw") OR (NOT WIN32 AND "${OCCT_PACKAGE}" STREQUAL "WNT"))
|
||||
# do nothing
|
||||
else()
|
||||
|
||||
if (WIN32)
|
||||
list (APPEND PRECOMPILED_DEFS "-D__${OCCT_PACKAGE}_DLL")
|
||||
endif()
|
||||
|
||||
set (SOURCE_FILES)
|
||||
set (HEADER_FILES)
|
||||
|
||||
# Generate Flex and Bison files
|
||||
if (${BUILD_YACCLEX})
|
||||
|
||||
# flex files
|
||||
OCCT_ORIGIN_AND_PATCHED_FILES ("tools/${OCCT_PACKAGE}" "*[.]lex" SOURCE_FILES_FLEX)
|
||||
list (LENGTH SOURCE_FILES_FLEX SOURCE_FILES_FLEX_LEN)
|
||||
|
||||
# bison files
|
||||
OCCT_ORIGIN_AND_PATCHED_FILES ("tools/${OCCT_PACKAGE}" "*[.]yacc" SOURCE_FILES_BISON)
|
||||
list (LENGTH SOURCE_FILES_BISON SOURCE_FILES_BISON_LEN)
|
||||
|
||||
if (${SOURCE_FILES_FLEX_LEN} EQUAL ${SOURCE_FILES_BISON_LEN} AND NOT ${SOURCE_FILES_FLEX_LEN} EQUAL 0)
|
||||
|
||||
list (SORT SOURCE_FILES_FLEX)
|
||||
list (SORT SOURCE_FILES_BISON)
|
||||
|
||||
math (EXPR SOURCE_FILES_FLEX_LEN "${SOURCE_FILES_FLEX_LEN} - 1")
|
||||
foreach (FLEX_FILE_INDEX RANGE ${SOURCE_FILES_FLEX_LEN})
|
||||
|
||||
list (GET SOURCE_FILES_FLEX ${FLEX_FILE_INDEX} CURRENT_FLEX_FILE)
|
||||
get_filename_component (CURRENT_FLEX_FILE_NAME ${CURRENT_FLEX_FILE} NAME_WE)
|
||||
|
||||
list (GET SOURCE_FILES_BISON ${FLEX_FILE_INDEX} CURRENT_BISON_FILE)
|
||||
get_filename_component (CURRENT_BISON_FILE_NAME ${CURRENT_BISON_FILE} NAME_WE)
|
||||
|
||||
string (COMPARE EQUAL ${CURRENT_FLEX_FILE_NAME} ${CURRENT_BISON_FILE_NAME} ARE_FILES_EQUAL)
|
||||
|
||||
if (EXISTS "${CURRENT_FLEX_FILE}" AND EXISTS "${CURRENT_BISON_FILE}" AND ${ARE_FILES_EQUAL})
|
||||
set (BISON_OUTPUT_FILE ${CURRENT_BISON_FILE_NAME}.tab.c)
|
||||
set (FLEX_OUTPUT_FILE lex.${CURRENT_FLEX_FILE_NAME}.c)
|
||||
BISON_TARGET (Parser_${CURRENT_BISON_FILE_NAME} ${CURRENT_BISON_FILE} ${CMAKE_SOURCE_DIR}/tools/${OCCT_PACKAGE}/${BISON_OUTPUT_FILE} COMPILE_FLAGS "-p ${CURRENT_BISON_FILE_NAME}")
|
||||
FLEX_TARGET (Scanner_${CURRENT_FLEX_FILE_NAME} ${CURRENT_FLEX_FILE} ${CMAKE_SOURCE_DIR}/tools/${OCCT_PACKAGE}/${FLEX_OUTPUT_FILE} COMPILE_FLAGS "-P${CURRENT_FLEX_FILE_NAME}")
|
||||
ADD_FLEX_BISON_DEPENDENCY (Scanner_${CURRENT_FLEX_FILE_NAME} Parser_${CURRENT_BISON_FILE_NAME})
|
||||
|
||||
list (APPEND SOURCE_FILES ${BISON_OUTPUT_FILE} ${FLEX_OUTPUT_FILE})
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# header files
|
||||
if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/tools/${OCCT_PACKAGE}/FILES")
|
||||
file (STRINGS "${BUILD_PATCH}/tools/${OCCT_PACKAGE}/FILES" HEADER_FILES_M REGEX ".+[.]h")
|
||||
file (STRINGS "${BUILD_PATCH}/tools/${OCCT_PACKAGE}/FILES" HEADER_FILES_LXX REGEX ".+[.]lxx")
|
||||
file (STRINGS "${BUILD_PATCH}/tools/${OCCT_PACKAGE}/FILES" HEADER_FILES_GXX REGEX ".+[.]gxx")
|
||||
|
||||
file (STRINGS "${BUILD_PATCH}/tools/${OCCT_PACKAGE}/FILES" SOURCE_FILES_C REGEX ".+[.]c")
|
||||
if(APPLE)
|
||||
file (STRINGS "${BUILD_PATCH}/tools/${OCCT_PACKAGE}/FILES" SOURCE_FILES_M REGEX ".+[.]mm")
|
||||
endif()
|
||||
else()
|
||||
file (STRINGS "${CMAKE_SOURCE_DIR}/${PACKAGE_PREFIX_DIR}/${OCCT_PACKAGE}/FILES" HEADER_FILES_M REGEX ".+[.]h")
|
||||
file (STRINGS "${CMAKE_SOURCE_DIR}/${PACKAGE_PREFIX_DIR}/${OCCT_PACKAGE}/FILES" HEADER_FILES_LXX REGEX ".+[.]lxx")
|
||||
file (STRINGS "${CMAKE_SOURCE_DIR}/${PACKAGE_PREFIX_DIR}/${OCCT_PACKAGE}/FILES" HEADER_FILES_GXX REGEX ".+[.]gxx")
|
||||
|
||||
file (STRINGS "${CMAKE_SOURCE_DIR}/${PACKAGE_PREFIX_DIR}/${OCCT_PACKAGE}/FILES" SOURCE_FILES_C REGEX ".+[.]c")
|
||||
if(APPLE)
|
||||
file (STRINGS "${CMAKE_SOURCE_DIR}/${PACKAGE_PREFIX_DIR}/${OCCT_PACKAGE}/FILES" SOURCE_FILES_M REGEX ".+[.]mm")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
|
||||
list (APPEND HEADER_FILES ${HEADER_FILES_M} ${HEADER_FILES_LXX} ${SOURCE_FILES_GXX})
|
||||
list (APPEND SOURCE_FILES ${SOURCE_FILES_C})
|
||||
if(APPLE)
|
||||
list (APPEND SOURCE_FILES ${SOURCE_FILES_M})
|
||||
endif()
|
||||
|
||||
foreach(HEADER_FILE ${HEADER_FILES})
|
||||
if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/tools/${OCCT_PACKAGE}/${HEADER_FILE}")
|
||||
message (STATUS "Info: consider patched file: ${BUILD_PATCH}/tools/${OCCT_PACKAGE}/${HEADER_FILE}")
|
||||
list (APPEND USED_INCFILES "${BUILD_PATCH}/tools/${OCCT_PACKAGE}/${HEADER_FILE}")
|
||||
SOURCE_GROUP ("Header Files\\${OCCT_PACKAGE}" FILES "${BUILD_PATCH}/tools/${OCCT_PACKAGE}/${HEADER_FILE}")
|
||||
else()
|
||||
list (APPEND USED_INCFILES "${CMAKE_SOURCE_DIR}/${PACKAGE_PREFIX_DIR}/${OCCT_PACKAGE}/${HEADER_FILE}")
|
||||
SOURCE_GROUP ("Header Files\\${OCCT_PACKAGE}" FILES "${CMAKE_SOURCE_DIR}/${PACKAGE_PREFIX_DIR}/${OCCT_PACKAGE}/${HEADER_FILE}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
|
||||
foreach(SOURCE_FILE ${SOURCE_FILES})
|
||||
if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/tools/${OCCT_PACKAGE}/${SOURCE_FILE}")
|
||||
message (STATUS "Info: consider patched file: ${BUILD_PATCH}/tools/${OCCT_PACKAGE}/${SOURCE_FILE}")
|
||||
list (APPEND USED_SRCFILES "${BUILD_PATCH}/tools/${OCCT_PACKAGE}/${SOURCE_FILE}")
|
||||
SOURCE_GROUP ("Source Files\\${OCCT_PACKAGE}" FILES "${BUILD_PATCH}/tools/${OCCT_PACKAGE}/${SOURCE_FILE}")
|
||||
else()
|
||||
list (APPEND USED_SRCFILES "${CMAKE_SOURCE_DIR}/${PACKAGE_PREFIX_DIR}/${OCCT_PACKAGE}/${SOURCE_FILE}")
|
||||
SOURCE_GROUP ("Source Files\\${OCCT_PACKAGE}" FILES "${CMAKE_SOURCE_DIR}/${PACKAGE_PREFIX_DIR}/${OCCT_PACKAGE}/${SOURCE_FILE}")
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
endforeach()
|
||||
string (REGEX REPLACE ";" " " PRECOMPILED_DEFS "${PRECOMPILED_DEFS}")
|
||||
|
||||
set (USED_RCFILE "")
|
||||
if (MSVC)
|
||||
set (USED_RCFILE "${CMAKE_BINARY_DIR}/resources/${PROJECT_NAME}.rc")
|
||||
|
||||
if (APPLY_OCCT_PATCH_DIR AND EXISTS "${APPLY_OCCT_PATCH_DIR}/adm/templates/occt_toolkit.rc.in")
|
||||
configure_file("${APPLY_OCCT_PATCH_DIR}/adm/templates/occt_toolkit.rc.in" "${USED_RCFILE}" @ONLY)
|
||||
else()
|
||||
configure_file("${CMAKE_SOURCE_DIR}/adm/templates/occt_toolkit.rc.in" "${USED_RCFILE}" @ONLY)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set (CURRENT_MODULE)
|
||||
foreach (OCCT_MODULE ${OCCT_TOOLS})
|
||||
list (FIND ${OCCT_MODULE}_TOOL_TOOLKITS ${PROJECT_NAME} CURRENT_PROJECT_IS_BUILT)
|
||||
if (NOT ${CURRENT_PROJECT_IS_BUILT} EQUAL -1)
|
||||
set (CURRENT_MODULE ${OCCT_MODULE})
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if (NOT SINGLE_GENERATOR)
|
||||
OCCT_INSERT_CODE_FOR_TARGET ()
|
||||
endif()
|
||||
|
||||
if ("${PROJECT_NAME}" STREQUAL TInspectorEXE)
|
||||
add_executable (${PROJECT_NAME} ${USED_SRCFILES} ${USED_INCFILES} ${USED_RCFILE} ${RCC_FILES})
|
||||
|
||||
install (TARGETS ${PROJECT_NAME}
|
||||
DESTINATION "${INSTALL_DIR_BIN}\${OCCT_INSTALL_BIN_LETTER}")
|
||||
else()
|
||||
add_library (${PROJECT_NAME} ${USED_SRCFILES} ${USED_INCFILES} ${USED_RCFILE} ${RCC_FILES})
|
||||
|
||||
if (MSVC)
|
||||
install (FILES ${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bin\${OCCT_INSTALL_BIN_LETTER}/${PROJECT_NAME}.pdb
|
||||
CONFIGURATIONS Debug RelWithDebInfo
|
||||
DESTINATION "${INSTALL_DIR_BIN}\${OCCT_INSTALL_BIN_LETTER}")
|
||||
endif()
|
||||
|
||||
if (BUILD_SHARED_LIBS AND NOT "${BUILD_SHARED_LIBRARY_NAME_POSTFIX}" STREQUAL "")
|
||||
set (CMAKE_SHARED_LIBRARY_SUFFIX_DEFAULT ${CMAKE_SHARED_LIBRARY_SUFFIX})
|
||||
set (CMAKE_SHARED_LIBRARY_SUFFIX "${BUILD_SHARED_LIBRARY_NAME_POSTFIX}${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
||||
endif()
|
||||
|
||||
install (TARGETS ${PROJECT_NAME}
|
||||
EXPORT OpenCASCADE${CURRENT_MODULE}Targets
|
||||
RUNTIME DESTINATION "${INSTALL_DIR_BIN}\${OCCT_INSTALL_BIN_LETTER}"
|
||||
ARCHIVE DESTINATION "${INSTALL_DIR_LIB}\${OCCT_INSTALL_BIN_LETTER}"
|
||||
LIBRARY DESTINATION "${INSTALL_DIR_LIB}\${OCCT_INSTALL_BIN_LETTER}")
|
||||
|
||||
|
||||
if (NOT WIN32)
|
||||
if (BUILD_SHARED_LIBS AND NOT "${BUILD_SHARED_LIBRARY_NAME_POSTFIX}" STREQUAL "")
|
||||
set (LINK_NAME "${INSTALL_DIR}/${INSTALL_DIR_LIB}\${OCCT_INSTALL_BIN_LETTER}/lib${PROJECT_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX_DEFAULT}/tools")
|
||||
set (LIBRARY_NAME "${INSTALL_DIR}/${INSTALL_DIR_LIB}\${OCCT_INSTALL_BIN_LETTER}/lib${PROJECT_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}/tools")
|
||||
OCCT_CREATE_SYMLINK_TO_FILE (${LIBRARY_NAME} ${LINK_NAME})
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (CURRENT_MODULE)
|
||||
set_target_properties (${PROJECT_NAME} PROPERTIES FOLDER "Tools/${CURRENT_MODULE}")
|
||||
set_target_properties (${PROJECT_NAME} PROPERTIES MODULE "${CURRENT_MODULE}")
|
||||
if (APPLE)
|
||||
if (NOT "${INSTALL_NAME_DIR}" STREQUAL "")
|
||||
set_target_properties (${PROJECT_NAME} PROPERTIES BUILD_WITH_INSTALL_RPATH 1 INSTALL_NAME_DIR "${INSTALL_NAME_DIR}")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
get_property (OCC_VERSION_MAJOR GLOBAL PROPERTY OCC_VERSION_MAJOR)
|
||||
get_property (OCC_VERSION_MINOR GLOBAL PROPERTY OCC_VERSION_MINOR)
|
||||
get_property (OCC_VERSION_MAINTENANCE GLOBAL PROPERTY OCC_VERSION_MAINTENANCE)
|
||||
|
||||
if (ANDROID)
|
||||
# do not append version to the filename
|
||||
set_target_properties (${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "${PRECOMPILED_DEFS}")
|
||||
else()
|
||||
set_target_properties (${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "${PRECOMPILED_DEFS}"
|
||||
SOVERSION "${OCC_VERSION_MAJOR}"
|
||||
VERSION "${OCC_VERSION_MAJOR}.${OCC_VERSION_MINOR}.${OCC_VERSION_MAINTENANCE}")
|
||||
endif()
|
||||
|
||||
set (USED_TOOLKITS_BY_CURRENT_PROJECT)
|
||||
set (USED_EXTERNAL_LIBS_BY_CURRENT_PROJECT)
|
||||
|
||||
# parce EXTERNLIB file
|
||||
FILE_TO_LIST ("${PACKAGE_PREFIX_DIR}/${PROJECT_NAME}/EXTERNLIB" USED_EXTERNLIB_AND_TOOLKITS)
|
||||
foreach (USED_ITEM ${USED_EXTERNLIB_AND_TOOLKITS})
|
||||
string (REGEX MATCH "^ *#" COMMENT_FOUND ${USED_ITEM})
|
||||
if (NOT COMMENT_FOUND)
|
||||
string (REGEX MATCH "^TK" TK_FOUND ${USED_ITEM})
|
||||
string (REGEX MATCH "^vtk" VTK_FOUND ${USED_ITEM})
|
||||
|
||||
if (NOT "${TK_FOUND}" STREQUAL "" OR NOT "${VTK_FOUND}" STREQUAL "")
|
||||
list (APPEND USED_TOOLKITS_BY_CURRENT_PROJECT ${USED_ITEM})
|
||||
if (NOT "${VTK_FOUND}" STREQUAL "" AND BUILD_SHARED_LIBS AND INSTALL_VTK AND COMMAND OCCT_INSTALL_VTK)
|
||||
OCCT_INSTALL_VTK(${USED_ITEM})
|
||||
endif()
|
||||
else()
|
||||
string (REGEX MATCH "^CSF_" CSF_FOUND ${USED_ITEM})
|
||||
if ("${CSF_FOUND}" STREQUAL "")
|
||||
message (STATUS "Info: ${USED_ITEM} from ${PROJECT_NAME} skipped due to it is empty")
|
||||
else() # get CSF_ value
|
||||
set (CURRENT_CSF ${${USED_ITEM}})
|
||||
if (NOT "x${CURRENT_CSF}" STREQUAL "x")
|
||||
# prepare a list from a string with whitespaces
|
||||
separate_arguments (CURRENT_CSF)
|
||||
list (APPEND USED_EXTERNAL_LIBS_BY_CURRENT_PROJECT ${CURRENT_CSF})
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if (APPLE)
|
||||
list (FIND USED_EXTERNAL_LIBS_BY_CURRENT_PROJECT X11 IS_X11_FOUND)
|
||||
if (NOT ${IS_X11_FOUND} EQUAL -1)
|
||||
find_package (X11 COMPONENTS X11 Xext Xmu Xi)
|
||||
if (NOT X11_FOUND)
|
||||
message (STATUS "Warning: X11 is not found. It's required to install The XQuartz project: http://www.xquartz.org")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Update list of used VTK libraries if OpenGL2 Rendering BackEnd is used.
|
||||
# Add VTK_OPENGL2_BACKEND definition.
|
||||
if("${VTK_RENDERING_BACKEND}" STREQUAL "OpenGL2")
|
||||
add_definitions(-DVTK_OPENGL2_BACKEND)
|
||||
foreach (VTK_EXCLUDE_LIBRARY vtkRenderingOpenGL vtkRenderingFreeTypeOpenGL)
|
||||
list (FIND USED_TOOLKITS_BY_CURRENT_PROJECT "${VTK_EXCLUDE_LIBRARY}" IS_VTK_OPENGL_FOUND)
|
||||
if (NOT ${IS_VTK_OPENGL_FOUND} EQUAL -1)
|
||||
list (REMOVE_ITEM USED_TOOLKITS_BY_CURRENT_PROJECT ${VTK_EXCLUDE_LIBRARY})
|
||||
if (${VTK_EXCLUDE_LIBRARY} STREQUAL vtkRenderingOpenGL)
|
||||
list (APPEND USED_TOOLKITS_BY_CURRENT_PROJECT vtkRenderingOpenGL2)
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
if (BUILD_SHARED_LIBS)
|
||||
target_link_libraries (${PROJECT_NAME} ${USED_TOOLKITS_BY_CURRENT_PROJECT} ${USED_EXTERNAL_LIBS_BY_CURRENT_PROJECT})
|
||||
endif()
|
||||
|
||||
# Set Qt dependencies
|
||||
target_link_libraries(${PROJECT_NAME} "${PROJECT_LIBRARIES}")
|
||||
|
||||
target_link_libraries(${PROJECT_NAME} debug "${PROJECT_LIBRARIES_DEBUG}")
|
||||
target_link_libraries(${PROJECT_NAME} optimized "${PROJECT_LIBRARIES_RELEASE}")
|
||||
|
@@ -7,8 +7,8 @@ THIRDPARTY_PRODUCT("QT" "" "CSF_QtCore" "d")
|
||||
list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_QT_DIR}/bin")
|
||||
|
||||
list (REMOVE_ITEM 3RDPARTY_NOT_INCLUDED "3RDPARTY_QT_INCLUDE_DIR")
|
||||
list (REMOVE_ITEM 3RDPARTY_NO_LIBS "3RDPARTY_QT_LIBRARY_DIR")
|
||||
list (REMOVE_ITEM 3RDPARTY_NO_DLLS "3RDPARTY_QT_DLL_DIR")
|
||||
list (REMOVE_ITEM 3RDPARTY_NOT_INCLUDED "3RDPARTY_QT_LIBRARY_DIR")
|
||||
list (REMOVE_ITEM 3RDPARTY_NOT_INCLUDED "3RDPARTY_QT_DLL_DIR")
|
||||
|
||||
UNSET (${3RDPARTY_QT_DLL} CACHE)
|
||||
UNSET (${3RDPARTY_QT_DLL_DIR} CACHE)
|
||||
@@ -18,19 +18,3 @@ UNSET (${3RDPARTY_QT_LIBRARY_DIR} CACHE)
|
||||
|
||||
set (USED_3RDPARTY_QT_DIR "${3RDPARTY_QT_DIR}")
|
||||
message (STATUS "Info: Qt is used from folder: ${3RDPARTY_QT_DIR}")
|
||||
|
||||
# Now set CMAKE_PREFIX_PATH to point to local Qt installation.
|
||||
# Without this setting find_package() will not work
|
||||
set(CMAKE_PREFIX_PATH ${3RDPARTY_QT_DIR})
|
||||
|
||||
# Now we can apply standard CMake finder for Qt5. We do this mostly
|
||||
# to have qt5_wrap_cpp() function available and Qt5_FOUND variable filled
|
||||
find_package(Qt5 QUIET COMPONENTS Widgets Quick Xml PATHS ${3RDPARTY_QT_DIR} NO_DEFAULT_PATH)
|
||||
if (NOT ${Qt5_FOUND})
|
||||
# Now we can apply standard CMake finder for Qt. We do this mostly
|
||||
# to have qt4_wrap_cpp() function available
|
||||
find_package(Qt4)
|
||||
#message (STATUS "Qt4 cmake configuration")
|
||||
else()
|
||||
#message (STATUS "Qt5 cmake configuration")
|
||||
endif()
|
||||
|
@@ -6,50 +6,51 @@ macro (FIND_QT_PACKAGE PROJECT_LIBRARIES_DEBUG PROJECT_LIBRARIES_RELEASE PROJECT
|
||||
message (FATAL_ERROR "Empty Qt dir")
|
||||
endif()
|
||||
|
||||
# Now set CMAKE_PREFIX_PATH to point to local Qt installation.
|
||||
# Without this setting find_package() will not work
|
||||
set(CMAKE_PREFIX_PATH ${3RDPARTY_QT_DIR})
|
||||
|
||||
# Now we can apply standard CMake finder for Qt5. We do this mostly
|
||||
# to have qt5_wrap_cpp() function available
|
||||
find_package(Qt5 QUIET COMPONENTS Widgets PATHS ${3RDPARTY_QT_DIR} NO_DEFAULT_PATH)
|
||||
if (${Qt5_FOUND})
|
||||
#message (STATUS "Qt5 cmake configuration")
|
||||
|
||||
set(PROJECT_INCLUDES "${Qt5Widgets_INCLUDE_DIRS}" "${Qt5Quick_INCLUDE_DIRS}" "${Qt5Xml_INCLUDE_DIRS}")
|
||||
set(PROJECT_LIBRARIES_DEBUG "${Qt5Widgets_LIBRARIES}" "${Qt5Quick_LIBRARIES}" "${Qt5Xml_LIBRARIES}")
|
||||
set(PROJECT_LIBRARIES_RELEASE "${Qt5Widgets_LIBRARIES}" "${Qt5Quick_LIBRARIES}" "${Qt5Xml_LIBRARIES}")
|
||||
|
||||
# processing *.ts files to generate *.qm
|
||||
find_package(Qt5LinguistTools)
|
||||
get_target_property(QT_LRELEASE_EXECUTABLE Qt5::lrelease LOCATION)
|
||||
mark_as_advanced(QT_LRELEASE_EXECUTABLE)
|
||||
|
||||
GET_FILENAME_COMPONENT(QT_BINARY_DIR ${QT_LRELEASE_EXECUTABLE} DIRECTORY)
|
||||
MARK_AS_ADVANCED(QT_BINARY_DIR)
|
||||
set(PROJECT_INCLUDES "${Qt5Widgets_INCLUDE_DIRS}")
|
||||
set(PROJECT_LIBRARIES_DEBUG "${Qt5Widgets_LIBRARIES}")
|
||||
set(PROJECT_LIBRARIES_RELEASE "${Qt5Widgets_LIBRARIES}")
|
||||
else()
|
||||
# Now we can apply standard CMake finder for Qt. We do this mostly
|
||||
# to have qt4_wrap_cpp() function available
|
||||
find_package(Qt4)
|
||||
|
||||
#message (STATUS "Qt4 cmake configuration")
|
||||
set(PROJECT_INCLUDES ${QT_INCLUDES})
|
||||
if (WIN32)
|
||||
set(PROJECT_LIBRARIES_DEBUG "${3RDPARTY_QT_DIR}/lib/QtCored4.lib;${3RDPARTY_QT_DIR}/lib/QtGuid4.lib;${3RDPARTY_QT_DIR}/lib/QtXmld4.lib")
|
||||
set(PROJECT_LIBRARIES_RELEASE "${3RDPARTY_QT_DIR}/lib/QtCore4.lib;${3RDPARTY_QT_DIR}/lib/QtGui4.lib;${3RDPARTY_QT_DIR}/lib/QtXml4.lib")
|
||||
set(PROJECT_LIBRARIES_DEBUG "${3RDPARTY_QT_DIR}/lib/QtCored4.lib;${3RDPARTY_QT_DIR}/lib/QtGuid4.lib")
|
||||
set(PROJECT_LIBRARIES_RELEASE "${3RDPARTY_QT_DIR}/lib/QtCore4.lib;${3RDPARTY_QT_DIR}/lib/QtGui4.lib")
|
||||
else()
|
||||
set(PROJECT_LIBRARIES_DEBUG "${3RDPARTY_QT_DIR}/lib/libQtCore.so;${3RDPARTY_QT_DIR}/lib/libQtGui.so;${3RDPARTY_QT_DIR}/lib/libQtXml.so")
|
||||
set(PROJECT_LIBRARIES_RELEASE "${3RDPARTY_QT_DIR}/lib/libQtCore.so;${3RDPARTY_QT_DIR}/lib/libQtGui.so;${3RDPARTY_QT_DIR}/lib/libQtXml.so")
|
||||
set(PROJECT_LIBRARIES_DEBUG "${3RDPARTY_QT_DIR}/lib/libQtCore.so;${3RDPARTY_QT_DIR}/lib/libQtGui.so")
|
||||
set(PROJECT_LIBRARIES_RELEASE "${3RDPARTY_QT_DIR}/lib/libQtCore.so;${3RDPARTY_QT_DIR}/lib/libQtGui.so")
|
||||
endif(WIN32)
|
||||
find_program(QT_LRELEASE_EXECUTABLE lrelease)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
|
||||
macro (FIND_AND_WRAP_MOC_FILES HEADER_FILES GENERATED_MOC_FILES)
|
||||
set (GENERATED_MOC_FILES "")
|
||||
foreach (FILE ${HEADER_FILES})
|
||||
# processing only files where Q_OBJECT exists
|
||||
file(STRINGS "${FILE}" LINES REGEX "Q_OBJECT")
|
||||
if(LINES)
|
||||
unset (MOC_FILE)
|
||||
if (${Qt5_FOUND})
|
||||
qt5_wrap_cpp(MOC_FILE ${FILE})
|
||||
else()
|
||||
qt4_wrap_cpp(MOC_FILE ${FILE})
|
||||
endif()
|
||||
#message (STATUS "... Info: next MOC file ${MOC_FILE}")
|
||||
list(APPEND ${GENERATED_MOC_FILES} ${MOC_FILE})
|
||||
endif(LINES)
|
||||
macro (FIND_AND_WRAP_MOC_FILES SOURCE_FILES)
|
||||
|
||||
SET(CMAKE_AUTOMOC ON)
|
||||
|
||||
foreach (FILE ${SOURCE_FILES})
|
||||
set (src_files ${src_files} ${FILE})
|
||||
unset (MOC_FILE)
|
||||
if (${Qt5_FOUND})
|
||||
qt5_wrap_cpp(MOC_FILE ${FILE})
|
||||
else()
|
||||
qt4_wrap_cpp(MOC_FILE ${FILE})
|
||||
endif()
|
||||
#message (STATUS "... Info: next MOC file ${MOC_FILE}")
|
||||
|
||||
endforeach (FILE)
|
||||
|
||||
endmacro()
|
||||
@@ -67,51 +68,3 @@ macro (FIND_AND_WRAP_RESOURCE_FILE RESOURCE_FILE_NAME RCC_FILES)
|
||||
endif()
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro (FIND_AND_WRAP_TS_FILE RESOURCE_FILE_NAME TARGET_FOLDER QM_FILES)
|
||||
if(EXISTS "${RESOURCE_FILE_NAME}")
|
||||
if (${Qt5_FOUND})
|
||||
qt5_add_translation(QM_FILES "${RESOURCE_FILE_NAME}")
|
||||
else()
|
||||
qt4_add_translation(QM_FILES "${RESOURCE_FILE_NAME}")
|
||||
endif()
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro (FIND_AND_INSTALL_QT_RESOURCES OCCT_PACKAGE RESOURCE_FILES)
|
||||
file (STRINGS "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" TS_FILES REGEX ".+[.]ts")
|
||||
file (STRINGS "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES" QRC_FILES REGEX ".+[.]qrc")
|
||||
|
||||
string (FIND "${OCCT_PACKAGE}" "/" _index)
|
||||
if (_index GREATER -1)
|
||||
math (EXPR _index "${_index}")
|
||||
string (SUBSTRING "${OCCT_PACKAGE}" 0 ${_index} OCCT_PACKAGE_NAME)
|
||||
else()
|
||||
set (OCCT_PACKAGE_NAME "${OCCT_PACKAGE}")
|
||||
endif(_index GREATER -1)
|
||||
|
||||
#message("QRC files are: ${QRC_FILES} in ${OCCT_PACKAGE}")
|
||||
foreach (QRC_FILE ${QRC_FILES})
|
||||
set (QRC_FILE_RELATIVE "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${QRC_FILE}")
|
||||
if (EXISTS ${QRC_FILE_RELATIVE})
|
||||
FIND_AND_WRAP_RESOURCE_FILE(${QRC_FILE_RELATIVE} RCC_FILES)
|
||||
list (APPEND ${RESOURCE_FILES} "${RCC_FILES}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
#message("TS files are: ${TS_FILES} in ${OCCT_PACKAGE}")
|
||||
foreach (TS_FILE ${TS_FILES})
|
||||
set (TS_FILE_RELATIVE "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${TS_FILE}")
|
||||
FIND_AND_WRAP_TS_FILE(${TS_FILE_RELATIVE} "${TARGET_FOLDER}/${CURRENT_MODULE}" QM_FILES)
|
||||
if (EXISTS ${TS_FILE_RELATIVE})
|
||||
list (APPEND ${RESOURCE_FILES} "${TS_FILE_RELATIVE}")
|
||||
list (APPEND ${RESOURCE_FILES} "${QM_FILES}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
foreach (QM_FILE ${QM_FILES})
|
||||
INSTALL(FILES ${QM_FILE} DESTINATION "${INSTALL_DIR_RESOURCE}/samples")
|
||||
#message("install *.qm files (${QM_FILE}) to: ${INSTALL_DIR_RESOURCE}/samples")
|
||||
endforeach (QM_FILE ${QM_FILES})
|
||||
endmacro()
|
||||
|
||||
|
@@ -173,7 +173,7 @@ macro (TBB_PRODUCT_SEARCH PRODUCT_LIBRARY_NAME)
|
||||
if (3RDPARTY_${upper_PRODUCT_LIBRARY_NAME}_LIBRARY_DIR AND EXISTS "${3RDPARTY_${upper_PRODUCT_LIBRARY_NAME}_LIBRARY_DIR}")
|
||||
list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_${upper_PRODUCT_LIBRARY_NAME}_LIBRARY_DIR}")
|
||||
else()
|
||||
list (APPEND 3RDPARTY_NO_LIBS 3RDPARTY_${upper_PRODUCT_LIBRARY_NAME}_LIBRARY_DIR)
|
||||
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_${upper_PRODUCT_LIBRARY_NAME}_LIBRARY_DIR)
|
||||
|
||||
set (3RDPARTY_${upper_PRODUCT_LIBRARY_NAME}_LIBRARY "" CACHE FILEPATH "The path to ${upper_PRODUCT_LIBRARY_NAME} library" FORCE)
|
||||
endif()
|
||||
@@ -226,7 +226,7 @@ macro (TBB_PRODUCT_SEARCH PRODUCT_LIBRARY_NAME)
|
||||
if (3RDPARTY_${upper_PRODUCT_LIBRARY_NAME}_DLL_DIR OR EXISTS "${3RDPARTY_${upper_PRODUCT_LIBRARY_NAME}_DLL_DIR}")
|
||||
list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_${upper_PRODUCT_LIBRARY_NAME}_DLL_DIR}")
|
||||
else()
|
||||
list (APPEND 3RDPARTY_NO_DLLS 3RDPARTY_${upper_PRODUCT_LIBRARY_NAME}_DLL_DIR)
|
||||
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_${upper_PRODUCT_LIBRARY_NAME}_DLL_DIR)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -275,7 +275,7 @@ macro (TBB_PRODUCT_SEARCH PRODUCT_LIBRARY_NAME)
|
||||
mark_as_advanced (3RDPARTY_${upper_PRODUCT_LIBRARY_NAME}_LIBRARY 3RDPARTY_${upper_PRODUCT_LIBRARY_NAME}_DLL)
|
||||
endmacro()
|
||||
|
||||
#if (BUILD_SHARED_LIBS)
|
||||
if (BUILD_SHARED_LIBS)
|
||||
separate_arguments (CSF_TBB)
|
||||
foreach (LIB IN LISTS CSF_TBB)
|
||||
TBB_PRODUCT_SEARCH (${LIB})
|
||||
@@ -291,4 +291,4 @@ endmacro()
|
||||
set (USED_3RDPARTY_TBB_DIR ${3RDPARTY_TBB_LIBRARY_DIR})
|
||||
endif()
|
||||
endif()
|
||||
#endif()
|
||||
endif()
|
@@ -184,14 +184,14 @@ if (BUILD_SHARED_LIBS)
|
||||
if (3RDPARTY_TCL_LIBRARY AND EXISTS "${3RDPARTY_TCL_LIBRARY}")
|
||||
list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_TCL_LIBRARY_DIR}")
|
||||
else()
|
||||
list (APPEND 3RDPARTY_NO_LIBS 3RDPARTY_TCL_LIBRARY_DIR)
|
||||
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TCL_LIBRARY_DIR)
|
||||
endif()
|
||||
|
||||
if (WIN32)
|
||||
if (3RDPARTY_TCL_DLL OR EXISTS "${3RDPARTY_TCL_DLL}")
|
||||
list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_TCL_DLL_DIR}")
|
||||
else()
|
||||
list (APPEND 3RDPARTY_NO_DLLS 3RDPARTY_TCL_DLL_DIR)
|
||||
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TCL_DLL_DIR)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
@@ -190,14 +190,14 @@ if (BUILD_SHARED_LIBS)
|
||||
if (3RDPARTY_TK_LIBRARY AND EXISTS "${3RDPARTY_TK_LIBRARY}")
|
||||
list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_TK_LIBRARY_DIR}")
|
||||
else()
|
||||
list (APPEND 3RDPARTY_NO_LIBS 3RDPARTY_TK_LIBRARY_DIR)
|
||||
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TK_LIBRARY_DIR)
|
||||
endif()
|
||||
|
||||
if (WIN32)
|
||||
if (3RDPARTY_TK_DLL OR EXISTS "${3RDPARTY_TK_DLL}")
|
||||
list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_TK_DLL_DIR}")
|
||||
else()
|
||||
list (APPEND 3RDPARTY_NO_DLLS 3RDPARTY_TK_DLL_DIR)
|
||||
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TK_DLL_DIR)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
@@ -117,16 +117,11 @@ want to build some particular libraries (toolkits) only, then you may uncheck
|
||||
all modules in the corresponding BUILD_MODUE_* options and provide the list of
|
||||
necessary libraries here. Of course, all dependencies will be resolved automatically")
|
||||
|
||||
set (BUILD_SAMPLES_MFC_DESCR
|
||||
set (BUILD_MODULE_MfcSamples_DESCR
|
||||
"Indicates whether OCCT MFC samples should be built together with OCCT.
|
||||
These samples show some possibilities of using OCCT and they can be executed
|
||||
with script samples.bat from the installation directory (INSTALL_DIR)")
|
||||
|
||||
set (BUILD_SAMPLES_QT_DESCR
|
||||
"Indicates whether OCCT Qt samples should be built together with OCCT.
|
||||
These samples show some possibilities of using OCCT and they can be executed
|
||||
with script samples.bat from the installation directory (INSTALL_DIR)")
|
||||
|
||||
set (BUILD_Inspector_DESCR
|
||||
"Indicates whether OCCT inspector should be built together with OCCT.
|
||||
This inspector provides functionality to interactively inspect low-level content
|
||||
|
@@ -31,7 +31,7 @@ if (NOT DEFINED 3RDPARTY_VTK_INCLUDE_DIR)
|
||||
set (3RDPARTY_VTK_INCLUDE_DIR "" CACHE PATH "The directory containing headers of VTK")
|
||||
endif()
|
||||
|
||||
#if (BUILD_SHARED_LIBS)
|
||||
if (BUILD_SHARED_LIBS)
|
||||
# vtk library directory
|
||||
if (NOT DEFINED 3RDPARTY_VTK_LIBRARY_DIR)
|
||||
set (3RDPARTY_VTK_LIBRARY_DIR "" CACHE PATH "The directory containing VTK libraries")
|
||||
@@ -41,7 +41,7 @@ endif()
|
||||
if (WIN32 AND NOT DEFINED 3RDPARTY_VTK_DLL_DIR)
|
||||
set (3RDPARTY_VTK_DLL_DIR "" CACHE PATH "The directory containing VTK shared libraries")
|
||||
endif()
|
||||
#endif()
|
||||
endif()
|
||||
|
||||
# check 3RDPARTY_VTK_ paths for consistency with specified 3RDPARTY_VTK_DIR
|
||||
if (3RDPARTY_VTK_DIR AND EXISTS "${3RDPARTY_VTK_DIR}")
|
||||
@@ -75,10 +75,10 @@ if (VTK_FOUND)
|
||||
|
||||
set (3RDPARTY_VTK_INCLUDE_DIRS)
|
||||
|
||||
# if (BUILD_SHARED_LIBS)
|
||||
if (BUILD_SHARED_LIBS)
|
||||
set (3RDPARTY_VTK_LIBRARY_DIRS)
|
||||
set (3RDPARTY_VTK_DLL_DIRS)
|
||||
# endif()
|
||||
endif()
|
||||
|
||||
foreach (VTK_LIBRARY ${VTK_LIBRARIES})
|
||||
string (REGEX MATCH "^vtk" IS_VTK_LIBRARY ${VTK_LIBRARY})
|
||||
@@ -168,7 +168,7 @@ if (VTK_FOUND)
|
||||
set (3RDPARTY_VTK_INCLUDE_DIR "${3RDPARTY_VTK_INCLUDE_DIR}" CACHE PATH "The directory containing headers of VTK" FORCE)
|
||||
endif()
|
||||
|
||||
# if (BUILD_SHARED_LIBS)
|
||||
if (BUILD_SHARED_LIBS)
|
||||
if (3RDPARTY_VTK_LIBRARY_DIRS)
|
||||
list (REMOVE_DUPLICATES 3RDPARTY_VTK_LIBRARY_DIRS)
|
||||
list (APPEND 3RDPARTY_LIBRARY_DIRS ${3RDPARTY_VTK_LIBRARY_DIRS})
|
||||
@@ -186,7 +186,7 @@ if (VTK_FOUND)
|
||||
set (3RDPARTY_VTK_DLL_DIR "${3RDPARTY_VTK_DLL_DIR}" CACHE PATH "The directory containing VTK shared libraries" FORCE)
|
||||
endif()
|
||||
endif()
|
||||
# endif()
|
||||
endif()
|
||||
|
||||
if (3RDPARTY_VTK_INCLUDE_DIR AND EXISTS "${3RDPARTY_VTK_INCLUDE_DIR}")
|
||||
list (APPEND 3RDPARTY_INCLUDE_DIRS ${3RDPARTY_VTK_INCLUDE_DIR})
|
||||
@@ -198,14 +198,14 @@ if (BUILD_SHARED_LIBS)
|
||||
if (3RDPARTY_VTK_LIBRARY_DIR AND EXISTS "${3RDPARTY_VTK_LIBRARY_DIR}")
|
||||
list (APPEND 3RDPARTY_LIBRARY_DIRS ${3RDPARTY_VTK_LIBRARY_DIR})
|
||||
else()
|
||||
list (APPEND 3RDPARTY_NO_LIBS 3RDPARTY_VTK_LIBRARY_DIR)
|
||||
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_VTK_LIBRARY_DIR)
|
||||
endif()
|
||||
|
||||
if (WIN32)
|
||||
if (3RDPARTY_VTK_DLL_DIR OR EXISTS "${3RDPARTY_VTK_DLL_DIR}")
|
||||
list (APPEND 3RDPARTY_DLL_DIRS ${3RDPARTY_VTK_DLL_DIR})
|
||||
else()
|
||||
list (APPEND 3RDPARTY_NO_DLLS 3RDPARTY_VTK_DLL_DIR)
|
||||
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_VTK_DLL_DIR)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
@@ -142,6 +142,9 @@ proc wokdep:gui:UpdateList {} {
|
||||
if { "$::HAVE_GL2PS" == "true" } {
|
||||
lappend anIncErrs "Error: gl2ps can not be used with OpenGL ES"
|
||||
}
|
||||
if { "$::HAVE_D3D" == "true" } {
|
||||
lappend anIncErrs "Error: Direct3D can not be used with OpenGL ES"
|
||||
}
|
||||
wokdep:SearchEGL anIncErrs anLib32Errs anLib64Errs anBin32Errs anBin64Errs
|
||||
wokdep:SearchGLES anIncErrs anLib32Errs anLib64Errs anBin32Errs anBin64Errs
|
||||
}
|
||||
|
@@ -655,8 +655,6 @@ proc OCCDoc_Main {docType {docfiles {}} {modules {}} generatorMode verboseMode s
|
||||
|
||||
# Generates Doxygen configuration file for Overview documentation
|
||||
proc OCCDoc_MakeDoxyfile {docType outDir tagFileDir {doxyFileName} {generatorMode ""} {DocFilesList {}} {ModulesList {}} verboseMode searchMode hhcPath mathjaxLocation graphvizPath productsPath} {
|
||||
global module_dependency
|
||||
|
||||
set inputDir [OCCDoc_GetDoxDir [OCCDoc_GetProdRootDir]]
|
||||
|
||||
set TEMPLATES_DIR [OCCDoc_GetDoxDir]/resources
|
||||
@@ -727,16 +725,6 @@ proc OCCDoc_MakeDoxyfile {docType outDir tagFileDir {doxyFileName} {generatorMod
|
||||
set name OCCT
|
||||
}
|
||||
|
||||
OCCDoc_LoadData "${productsPath}"
|
||||
|
||||
# Add all dependencies of modules to the graph
|
||||
set additional_modules {}
|
||||
foreach module $modules {
|
||||
set additional_modules [list {*}$additional_modules {*}$module_dependency($module)]
|
||||
}
|
||||
set modules [list {*}$modules {*}$additional_modules]
|
||||
set modules [lsort -unique $modules]
|
||||
|
||||
# Get list of header files in the specified modules
|
||||
set filelist {}
|
||||
foreach module $modules {
|
||||
|
@@ -1366,7 +1366,7 @@ proc osutils:csfList { theOS theCsfLibsMap theCsfFrmsMap } {
|
||||
set aLibsMap(CSF_dl) "dl"
|
||||
if { "$theOS" == "mac" } {
|
||||
set aLibsMap(CSF_objc) "objc"
|
||||
set aFrmsMap(CSF_Appkit) "AppKit"
|
||||
set aFrmsMap(CSF_Appkit) "Appkit"
|
||||
set aFrmsMap(CSF_IOKit) "IOKit"
|
||||
set aFrmsMap(CSF_OpenGlLibs) "OpenGL"
|
||||
set aFrmsMap(CSF_TclLibs) "Tcl"
|
||||
@@ -1375,6 +1375,7 @@ proc osutils:csfList { theOS theCsfLibsMap theCsfFrmsMap } {
|
||||
set aLibsMap(CSF_TclTkLibs) ""
|
||||
set aLibsMap(CSF_QT) "QtCore QtGui"
|
||||
} else {
|
||||
set aLibsMap(CSF_fontconfig) "fontconfig"
|
||||
if { "$theOS" == "qnx" } {
|
||||
# CSF_ThreadLibs - pthread API is part of libc on QNX
|
||||
set aLibsMap(CSF_OpenGlLibs) "EGL GLESv2"
|
||||
@@ -1727,7 +1728,7 @@ proc osutils:vcproj { theVcVer isUWP theOutDir theToolKit theGuidsMap } {
|
||||
regsub -all -- {__TKDEP__} $theProjTmpl $aUsedLibs theProjTmpl
|
||||
|
||||
set anIncPaths "..\\..\\..\\inc"
|
||||
# set aTKDefines ""
|
||||
set aTKDefines ""
|
||||
set aFilesSection ""
|
||||
set aVcFilesX(units) ""
|
||||
set listloc [osutils:tk:units $theToolKit]
|
||||
@@ -1794,13 +1795,13 @@ proc osutils:vcproj { theVcVer isUWP theOutDir theToolKit theGuidsMap } {
|
||||
}
|
||||
|
||||
# macros
|
||||
# append aTKDefines ";__${xlo}_DLL"
|
||||
append aTKDefines ";__${xlo}_DLL"
|
||||
# common includes
|
||||
# append anIncPaths ";..\\..\\..\\src\\${xlo}"
|
||||
}
|
||||
|
||||
regsub -all -- {__TKINC__} $theProjTmpl $anIncPaths theProjTmpl
|
||||
# regsub -all -- {__TKDEFS__} $theProjTmpl $aTKDefines theProjTmpl
|
||||
regsub -all -- {__TKDEFS__} $theProjTmpl $aTKDefines theProjTmpl
|
||||
regsub -all -- {__FILES__} $theProjTmpl $aFilesSection theProjTmpl
|
||||
|
||||
# write file
|
||||
@@ -1947,10 +1948,10 @@ proc osutils:vcprojx { theVcVer isUWP theOutDir theToolKit theGuidsMap } {
|
||||
puts "Warning : in vcproj there are than one occurences for [file tail $f]"
|
||||
}
|
||||
#puts "$aProjTmpl $aFilesSection"
|
||||
# set aTKDefines ";__${theToolKit}_DLL"
|
||||
set aTKDefines ";__${theToolKit}_DLL"
|
||||
set anIncPaths "..\\..\\..\\inc"
|
||||
regsub -all -- {__TKINC__} $aProjTmpl $anIncPaths aProjTmpl
|
||||
# regsub -all -- {__TKDEFS__} $aProjTmpl $aTKDefines aProjTmpl
|
||||
regsub -all -- {__TKDEFS__} $aProjTmpl $aTKDefines aProjTmpl
|
||||
regsub -all -- {__FILES__} $aProjTmpl $aFilesSection aProjTmpl
|
||||
regsub -all -- {__CONF__} $aProjTmpl Application aProjTmpl
|
||||
|
||||
@@ -2162,9 +2163,9 @@ proc osutils:cbptk { theCmpl theOutDir theToolKit thePlatform} {
|
||||
}
|
||||
|
||||
# macros for correct DLL exports
|
||||
# if { $thePlatform == "wnt" || $thePlatform == "uwp" } {
|
||||
# lappend aTKDefines "__${xlo}_DLL"
|
||||
# }
|
||||
if { $thePlatform == "wnt" || $thePlatform == "uwp" } {
|
||||
lappend aTKDefines "__${xlo}_DLL"
|
||||
}
|
||||
}
|
||||
|
||||
return [osutils:cbp $theCmpl $theOutDir $theToolKit $thePlatform $aTKSrcFiles $aUsedLibs $aFrameworks $anIncPaths $aTKDefines]
|
||||
@@ -2281,9 +2282,9 @@ proc osutils:cbpx { theCmpl theOutDir theToolKit thePlatform } {
|
||||
}
|
||||
|
||||
# macros for correct DLL exports
|
||||
# if { $thePlatform == "wnt" || $thePlatform == "uwp" } {
|
||||
# lappend aTKDefines "__${theToolKit}_DLL"
|
||||
# }
|
||||
if { $thePlatform == "wnt" || $thePlatform == "uwp" } {
|
||||
lappend aTKDefines "__${theToolKit}_DLL"
|
||||
}
|
||||
|
||||
# common include paths
|
||||
lappend anIncPaths "../../../inc"
|
||||
|
@@ -4,7 +4,7 @@
|
||||
<LocalDebuggerEnvironment>CASROOT=@CMAKE_SOURCE_DIR@
|
||||
CSF_OCCTDataPath=@CMAKE_SOURCE_DIR@/data
|
||||
QTDIR=@3RDPARTY_QT_DIR@
|
||||
PATH=@3RDPARTY_DLL_DIRS_FOR_PATH@;@OpenCASCADE_BINARY_DIR@;%PATH%
|
||||
PATH=@3RDPARTY_DLL_DIRS_FOR_PATH@;%PATH%
|
||||
</LocalDebuggerEnvironment>
|
||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||
<LocalDebuggerWorkingDirectory>@CMAKE_BINARY_DIR@</LocalDebuggerWorkingDirectory>
|
||||
@@ -13,7 +13,7 @@ PATH=@3RDPARTY_DLL_DIRS_FOR_PATH@;@OpenCASCADE_BINARY_DIR@;%PATH%
|
||||
<LocalDebuggerEnvironment>CASROOT=@CMAKE_SOURCE_DIR@
|
||||
CSF_OCCTDataPath=@CMAKE_SOURCE_DIR@/data
|
||||
QTDIR=@3RDPARTY_QT_DIR@
|
||||
PATH=@3RDPARTY_DLL_DIRS_FOR_PATH@;@OpenCASCADE_BINARY_DIR@i;%PATH%
|
||||
PATH=@3RDPARTY_DLL_DIRS_FOR_PATH@;%PATH%
|
||||
</LocalDebuggerEnvironment>
|
||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||
<LocalDebuggerWorkingDirectory>@CMAKE_BINARY_DIR@</LocalDebuggerWorkingDirectory>
|
||||
@@ -22,7 +22,7 @@ PATH=@3RDPARTY_DLL_DIRS_FOR_PATH@;@OpenCASCADE_BINARY_DIR@i;%PATH%
|
||||
<LocalDebuggerEnvironment>CASROOT=@CMAKE_SOURCE_DIR@
|
||||
CSF_OCCTDataPath=@CMAKE_SOURCE_DIR@/data
|
||||
QTDIR=@3RDPARTY_QT_DIR@
|
||||
PATH=@3RDPARTY_DLL_DIRS_FOR_PATH@;@OpenCASCADE_BINARY_DIR@d;%PATH%
|
||||
PATH=@3RDPARTY_DLL_DIRS_FOR_PATH@;%PATH%
|
||||
</LocalDebuggerEnvironment>
|
||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||
<LocalDebuggerWorkingDirectory>@CMAKE_BINARY_DIR@</LocalDebuggerWorkingDirectory>
|
||||
|
@@ -82,8 +82,6 @@ set "VisualStudioExpressName=VCExpress"
|
||||
|
||||
if not "%DevEnvDir%" == "" (
|
||||
rem If DevEnvDir is already defined (e.g. in custom.bat), use that value
|
||||
) else if /I "%VCFMT%" == "vc9" (
|
||||
set "DevEnvDir=%VS90COMNTOOLS%..\IDE"
|
||||
) else if /I "%VCFMT%" == "vc10" (
|
||||
set "DevEnvDir=%VS100COMNTOOLS%..\IDE"
|
||||
) else if /I "%VCFMT%" == "vc11" (
|
||||
@@ -103,22 +101,12 @@ if not "%DevEnvDir%" == "" (
|
||||
) else if /I "%VCFMT%" == "gcc" (
|
||||
rem MinGW
|
||||
) else (
|
||||
echo Error: first argument ^(%VCVER%^) should specify supported version of Visual C++,
|
||||
echo one of:
|
||||
echo vc9 = VS 2008 ^(SP1^)
|
||||
echo vc10 = VS 2010 ^(SP3^)
|
||||
echo vc11 = VS 2012 ^(SP3^)
|
||||
echo vc12 = VS 2013 ^(SP3^)
|
||||
echo vc14 = VS 2015
|
||||
echo vc141 = VS 2017
|
||||
echo Error: wrong VS identifier
|
||||
exit /B
|
||||
)
|
||||
|
||||
rem ----- Parsing vcvarsall for qt samples and define PlatformToolset -----
|
||||
if /I "%VCFMT%" == "vc9" (
|
||||
set "VCVARS=%VS90COMNTOOLS%..\..\VC\vcvarsall.bat"
|
||||
set "VCPlatformToolSet=v90"
|
||||
) else if /I "%VCFMT%" == "vc10" (
|
||||
if /I "%VCFMT%" == "vc10" (
|
||||
set "VCVARS=%VS100COMNTOOLS%..\..\VC\vcvarsall.bat"
|
||||
set "VCPlatformToolSet=v100"
|
||||
) else if /I "%VCFMT%" == "vc11" (
|
||||
@@ -138,8 +126,9 @@ if /I "%VCFMT%" == "vc9" (
|
||||
) else if /I "%VCFMT%" == "gcc" (
|
||||
rem MinGW
|
||||
) else (
|
||||
echo Error: wrong VS identifier
|
||||
exit /B
|
||||
echo Error: first argument ^(%VCVER%^) should specify supported version of Visual C++,
|
||||
echo one of: vc10 ^(VS 2010 SP3^), vc11 ^(VS 2012 SP3^), vc12 ^(VS 2013^) or vc14 ^(VS 2015^)
|
||||
exit
|
||||
)
|
||||
|
||||
set "CSF_OPT_LIB32D=%CSF_OPT_LIB32%"
|
||||
|
@@ -52,8 +52,6 @@ set "VisualStudioExpressName=VCExpress"
|
||||
|
||||
if not "%DevEnvDir%" == "" (
|
||||
rem If DevEnvDir is already defined (e.g. in custom.bat), use that value
|
||||
) else if /I "%VCFMT%" == "vc9" (
|
||||
set "DevEnvDir=%VS90COMNTOOLS%..\IDE"
|
||||
) else if /I "%VCFMT%" == "vc10" (
|
||||
set "DevEnvDir=%VS100COMNTOOLS%..\IDE"
|
||||
) else if /I "%VCFMT%" == "vc11" (
|
||||
@@ -78,10 +76,7 @@ if not "%DevEnvDir%" == "" (
|
||||
)
|
||||
|
||||
rem ----- Parsing vcvarsall for qt samples and define PlatformToolset -----
|
||||
if /I "%VCFMT%" == "vc9" (
|
||||
set "VCVARS=%VS90COMNTOOLS%..\..\VC\vcvarsall.bat"
|
||||
set "VCPlatformToolSet=v90"
|
||||
) else if /I "%VCFMT%" == "vc10" (
|
||||
if /I "%VCFMT%" == "vc10" (
|
||||
set "VCVARS=%VS100COMNTOOLS%..\..\VC\vcvarsall.bat"
|
||||
set "VCPlatformToolSet=v100"
|
||||
) else if /I "%VCFMT%" == "vc11" (
|
||||
|
@@ -16,16 +16,11 @@ if ["%1"] == [""] (
|
||||
echo HLR
|
||||
echo Animation
|
||||
echo Convert
|
||||
echo AndroidQt
|
||||
echo FuncDemo
|
||||
echo IESample
|
||||
echo Tutorial
|
||||
PAUSE
|
||||
exit /B
|
||||
)
|
||||
|
||||
call "%~dp0env.bat" %2 %3 %4
|
||||
if not ["%QTDIR%"] == [""] if exist "%QTDIR%\qml" if ["%QML2_IMPORT_PATH%"] == [""] set "QML2_IMPORT_PATH=%QTDIR%/qml"
|
||||
set "EXE_PATH=%CSF_OCCTBinPath%/%1.exe"
|
||||
|
||||
if not exist "%EXE_PATH%" (
|
||||
|
@@ -1,35 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ "$1" == "" ]; then
|
||||
echo Launch selected sample as follows:
|
||||
echo sample.sh SampleName d
|
||||
echo or to use last sample build configuration:
|
||||
echo sample.sh SampleName
|
||||
echo available samples:
|
||||
echo FuncDemo
|
||||
echo IESample
|
||||
echo Tutorial
|
||||
fi
|
||||
|
||||
|
||||
aCurrentPath="$PWD"
|
||||
aScriptPath=${BASH_SOURCE%/*}; if [ -d "${aScriptPath}" ]; then cd "$aScriptPath"; fi; aScriptPath="$PWD";
|
||||
|
||||
source "${aScriptPath}/env.sh" "$2"
|
||||
|
||||
if test "${QTDIR}" == ""; then
|
||||
if [ -d "$QTDIR%\qml" ];
|
||||
then export QML2_IMPORT_PATH="$QTDIR\qml";
|
||||
fi
|
||||
fi
|
||||
|
||||
export "EXE_PATH=$CSF_OCCTBinPath/$1"
|
||||
|
||||
if [ ! -f "$EXE_PATH" ]; then
|
||||
echo "Executable \"$EXE_PATH\" not found."
|
||||
echo "Probably you didn't compile the application."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd ${aCurrentPath}
|
||||
"$EXE_PATH"
|
@@ -90,7 +90,7 @@
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<PreprocessorDefinitions>NDEBUG;No_Exception;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES);%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>NDEBUG;No_Exception;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)__TKDEFS__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
@@ -107,7 +107,7 @@
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories>..\..\..\inc;$(CSF_OPT_INC);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>NDEBUG;No_Exception;$(CSF_DEFINES);%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>NDEBUG;No_Exception;$(CSF_DEFINES)__TKDEFS__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>__TKDEP__;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
@@ -138,7 +138,7 @@
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<PreprocessorDefinitions>_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES);%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)__TKDEFS__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<AssemblerListingLocation>.\..\..\..\win32\__VCVER__\objd\__TKNAM__/</AssemblerListingLocation>
|
||||
@@ -156,7 +156,7 @@
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories>..\..\..\inc;$(CSF_OPT_INC);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_DEBUG;$(CSF_DEFINES);%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_DEBUG;$(CSF_DEFINES)__TKDEFS__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>__TKDEP__;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
@@ -186,7 +186,7 @@
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<PreprocessorDefinitions>NDEBUG;No_Exception;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES);%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>NDEBUG;No_Exception;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)__TKDEFS__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
@@ -203,7 +203,7 @@
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories>..\..\..\inc;$(CSF_OPT_INC);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>NDEBUG;No_Exception;$(CSF_DEFINES);%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>NDEBUG;No_Exception;$(CSF_DEFINES)__TKDEFS__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>__TKDEP__;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
@@ -234,7 +234,7 @@
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<PreprocessorDefinitions>_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES);%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)__TKDEFS__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<AssemblerListingLocation>.\..\..\..\win64\__VCVER__\objd\__TKNAM__/</AssemblerListingLocation>
|
||||
@@ -252,7 +252,7 @@
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories>..\..\..\inc;$(CSF_OPT_INC);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_DEBUG;$(CSF_DEFINES);%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_DEBUG;$(CSF_DEFINES)__TKDEFS__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>__TKDEP__;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
|
@@ -85,7 +85,7 @@
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<PreprocessorDefinitions>NDEBUG;No_Exception;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES);%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>NDEBUG;No_Exception;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)__TKDEFS__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
@@ -100,7 +100,7 @@
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories>..\..\..\inc;$(CSF_OPT_INC);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>NDEBUG;No_Exception;$(CSF_DEFINES);%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>NDEBUG;No_Exception;$(CSF_DEFINES)__TKDEFS__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>__TKDEP__;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
@@ -130,7 +130,7 @@
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<PreprocessorDefinitions>_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES);%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)__TKDEFS__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<AssemblerListingLocation>.\..\..\..\win32\__VCVER__\objd\__XQTNAM__/</AssemblerListingLocation>
|
||||
@@ -146,7 +146,7 @@
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories>..\..\..\inc;$(CSF_OPT_INC);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_DEBUG;$(CSF_DEFINES);%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_DEBUG;$(CSF_DEFINES)__TKDEFS__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>__TKDEP__;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
@@ -175,7 +175,7 @@
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<PreprocessorDefinitions>NDEBUG;No_Exception;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES);%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>NDEBUG;No_Exception;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)__TKDEFS__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
@@ -190,7 +190,7 @@
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories>..\..\..\inc;$(CSF_OPT_INC);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>NDEBUG;No_Exception;$(CSF_DEFINES);%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>NDEBUG;No_Exception;$(CSF_DEFINES)__TKDEFS__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>__TKDEP__;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
@@ -219,7 +219,7 @@
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<PreprocessorDefinitions>_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES);%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)__TKDEFS__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<AssemblerListingLocation>.\..\..\..\win64\__VCVER__\objd\__XQTNAM__/</AssemblerListingLocation>
|
||||
@@ -235,7 +235,7 @@
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories>..\..\..\inc;$(CSF_OPT_INC);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_DEBUG;$(CSF_DEFINES);%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_DEBUG;$(CSF_DEFINES)__TKDEFS__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>__TKDEP__;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
|
@@ -22,7 +22,7 @@
|
||||
AdditionalIncludeDirectories="__TKINC__;$(CSF_OPT_INC)"
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;$(CSF_DEFINES)__TKDEFS__"
|
||||
StringPooling="TRUE"
|
||||
RuntimeLibrary="2"
|
||||
EnableFunctionLevelLinking="TRUE"
|
||||
@@ -62,7 +62,7 @@
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
AdditionalIncludeDirectories="..\..\..\inc;$(CSF_OPT_INC)"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;$(CSF_DEFINES)__TKDEFS__"
|
||||
Culture="1036"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
@@ -89,7 +89,7 @@
|
||||
AdditionalIncludeDirectories="__TKINC__;$(CSF_OPT_INC)"
|
||||
Optimization="0"
|
||||
InlineFunctionExpansion="1"
|
||||
PreprocessorDefinitions="_DEBUG;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="_DEBUG;$(CSF_DEFINES)__TKDEFS__"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
PrecompiledHeaderFile=".\..\..\..\win32\vc7\objd\__TKNAM__\__TKNAM__.pch"
|
||||
@@ -131,7 +131,7 @@
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
AdditionalIncludeDirectories="..\..\..\inc;$(CSF_OPT_INC)"
|
||||
PreprocessorDefinitions="_DEBUG;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="_DEBUG;$(CSF_DEFINES)__TKDEFS__"
|
||||
Culture="1036"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
|
@@ -22,7 +22,7 @@
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="__TKINC__;$(CSF_OPT_INC)"
|
||||
Optimization="0"
|
||||
PreprocessorDefinitions="_DEBUG;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="_DEBUG;$(CSF_DEFINES)__TKDEFS__"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
AssemblerListingLocation=".\..\..\..\win32\vc7\objd\__XQTNAM__/"
|
||||
@@ -61,7 +61,7 @@
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
AdditionalIncludeDirectories="..\..\..\inc;$(CSF_OPT_INC)"
|
||||
PreprocessorDefinitions="_DEBUG;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="_DEBUG;$(CSF_DEFINES)__TKDEFS__"
|
||||
Culture="1033"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
@@ -86,7 +86,7 @@
|
||||
AdditionalIncludeDirectories="__TKINC__;$(CSF_OPT_INC)"
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;$(CSF_DEFINES)__TKDEFS__"
|
||||
StringPooling="TRUE"
|
||||
RuntimeLibrary="2"
|
||||
EnableFunctionLevelLinking="TRUE"
|
||||
@@ -124,7 +124,7 @@
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
AdditionalIncludeDirectories="..\..\..\inc;$(CSF_OPT_INC)"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;$(CSF_DEFINES)__TKDEFS__"
|
||||
Culture="1033"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
|
@@ -50,7 +50,7 @@
|
||||
AdditionalIncludeDirectories="__TKINC__;$(CSF_OPT_INC)"
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)__TKDEFS__"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="2"
|
||||
RuntimeLibrary="2"
|
||||
@@ -70,7 +70,7 @@
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
AdditionalIncludeDirectories="..\..\..\inc;$(CSF_OPT_INC)"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;$(CSF_DEFINES)__TKDEFS__"
|
||||
Culture="1036"
|
||||
/>
|
||||
<Tool
|
||||
@@ -148,7 +148,7 @@
|
||||
AdditionalIncludeDirectories="__TKINC__;$(CSF_OPT_INC)"
|
||||
Optimization="0"
|
||||
InlineFunctionExpansion="1"
|
||||
PreprocessorDefinitions="_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)__TKDEFS__"
|
||||
ExceptionHandling="2"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
@@ -170,7 +170,7 @@
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
AdditionalIncludeDirectories="..\..\..\inc;$(CSF_OPT_INC)"
|
||||
PreprocessorDefinitions="_DEBUG;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="_DEBUG;$(CSF_DEFINES)__TKDEFS__"
|
||||
Culture="1036"
|
||||
/>
|
||||
<Tool
|
||||
@@ -249,7 +249,7 @@
|
||||
AdditionalIncludeDirectories="__TKINC__;$(CSF_OPT_INC)"
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)__TKDEFS__"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="2"
|
||||
RuntimeLibrary="2"
|
||||
@@ -268,7 +268,7 @@
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
AdditionalIncludeDirectories="..\..\..\inc;$(CSF_OPT_INC)"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;$(CSF_DEFINES)__TKDEFS__"
|
||||
Culture="1036"
|
||||
/>
|
||||
<Tool
|
||||
@@ -347,7 +347,7 @@
|
||||
AdditionalIncludeDirectories="__TKINC__;$(CSF_OPT_INC)"
|
||||
Optimization="0"
|
||||
InlineFunctionExpansion="1"
|
||||
PreprocessorDefinitions="_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)__TKDEFS__"
|
||||
ExceptionHandling="2"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
@@ -368,7 +368,7 @@
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
AdditionalIncludeDirectories="..\..\..\inc;$(CSF_OPT_INC)"
|
||||
PreprocessorDefinitions="_DEBUG;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="_DEBUG;$(CSF_DEFINES)__TKDEFS__"
|
||||
Culture="1036"
|
||||
/>
|
||||
<Tool
|
||||
|
@@ -49,7 +49,7 @@
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="__TKINC__;$(CSF_OPT_INC)"
|
||||
Optimization="0"
|
||||
PreprocessorDefinitions="_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES);"
|
||||
PreprocessorDefinitions="_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)__TKDEFS__;"
|
||||
ExceptionHandling="2"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
@@ -68,7 +68,7 @@
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
AdditionalIncludeDirectories="..\..\..\inc;$(CSF_OPT_INC)"
|
||||
PreprocessorDefinitions="_DEBUG;$(CSF_DEFINES);"
|
||||
PreprocessorDefinitions="_DEBUG;$(CSF_DEFINES)__TKDEFS__;"
|
||||
Culture="1033"
|
||||
/>
|
||||
<Tool
|
||||
@@ -145,7 +145,7 @@
|
||||
AdditionalIncludeDirectories="__TKINC__;$(CSF_OPT_INC)"
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES);"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)__TKDEFS__;"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="2"
|
||||
RuntimeLibrary="2"
|
||||
@@ -164,7 +164,7 @@
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
AdditionalIncludeDirectories="..\..\..\inc;$(CSF_OPT_INC)"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;$(CSF_DEFINES);"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;$(CSF_DEFINES)__TKDEFS__;"
|
||||
Culture="1033"
|
||||
/>
|
||||
<Tool
|
||||
@@ -240,7 +240,7 @@
|
||||
AdditionalOptions="/favor:blend"
|
||||
AdditionalIncludeDirectories="__TKINC__;$(CSF_OPT_INC)"
|
||||
Optimization="0"
|
||||
PreprocessorDefinitions="_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)__TKDEFS__"
|
||||
ExceptionHandling="2"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
@@ -258,7 +258,7 @@
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
AdditionalIncludeDirectories="..\..\..\inc;$(CSF_OPT_INC)"
|
||||
PreprocessorDefinitions="_DEBUG;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="_DEBUG;$(CSF_DEFINES)__TKDEFS__"
|
||||
Culture="1033"
|
||||
/>
|
||||
<Tool
|
||||
@@ -337,7 +337,7 @@
|
||||
AdditionalIncludeDirectories="__TKINC__;$(CSF_OPT_INC)"
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)__TKDEFS__"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="2"
|
||||
RuntimeLibrary="2"
|
||||
@@ -355,7 +355,7 @@
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
AdditionalIncludeDirectories="..\..\..\inc;$(CSF_OPT_INC)"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;$(CSF_DEFINES)__TKDEFS__"
|
||||
Culture="1033"
|
||||
/>
|
||||
<Tool
|
||||
|
@@ -24,7 +24,6 @@
|
||||
ConfigurationType="2"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
@@ -53,7 +52,7 @@
|
||||
AdditionalIncludeDirectories="__TKINC__;$(CSF_OPT_INC)"
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)__TKDEFS__"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="2"
|
||||
RuntimeLibrary="2"
|
||||
@@ -73,7 +72,7 @@
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
AdditionalIncludeDirectories="..\..\..\inc;$(CSF_OPT_INC)"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;$(CSF_DEFINES)__TKDEFS__"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
@@ -121,7 +120,7 @@
|
||||
ConfigurationType="2"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||
CharacterSet="1"
|
||||
ManagedExtensions="0"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
@@ -150,7 +149,7 @@
|
||||
AdditionalIncludeDirectories="__TKINC__;$(CSF_OPT_INC)"
|
||||
Optimization="0"
|
||||
InlineFunctionExpansion="1"
|
||||
PreprocessorDefinitions="_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)__TKDEFS__"
|
||||
ExceptionHandling="2"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
@@ -172,7 +171,7 @@
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
AdditionalIncludeDirectories="..\..\..\inc;$(CSF_OPT_INC)"
|
||||
PreprocessorDefinitions="_DEBUG;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="_DEBUG;$(CSF_DEFINES)__TKDEFS__"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
@@ -219,7 +218,6 @@
|
||||
ConfigurationType="2"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
@@ -248,7 +246,7 @@
|
||||
AdditionalIncludeDirectories="__TKINC__;$(CSF_OPT_INC)"
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)__TKDEFS__"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="2"
|
||||
RuntimeLibrary="2"
|
||||
@@ -267,7 +265,7 @@
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
AdditionalIncludeDirectories="..\..\..\inc;$(CSF_OPT_INC)"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;$(CSF_DEFINES)__TKDEFS__"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
@@ -313,7 +311,7 @@
|
||||
ConfigurationType="2"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||
CharacterSet="1"
|
||||
ManagedExtensions="0"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
@@ -342,7 +340,7 @@
|
||||
AdditionalIncludeDirectories="__TKINC__;$(CSF_OPT_INC)"
|
||||
Optimization="0"
|
||||
InlineFunctionExpansion="1"
|
||||
PreprocessorDefinitions="_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)__TKDEFS__"
|
||||
ExceptionHandling="2"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
@@ -363,7 +361,7 @@
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
AdditionalIncludeDirectories="..\..\..\inc;$(CSF_OPT_INC)"
|
||||
PreprocessorDefinitions="_DEBUG;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="_DEBUG;$(CSF_DEFINES)__TKDEFS__"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
|
@@ -52,7 +52,7 @@
|
||||
AdditionalIncludeDirectories="__TKINC__;$(CSF_OPT_INC)"
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)__TKDEFS__"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="2"
|
||||
RuntimeLibrary="2"
|
||||
@@ -71,7 +71,7 @@
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
AdditionalIncludeDirectories="..\..\..\inc;$(CSF_OPT_INC)"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;$(CSF_DEFINES)__TKDEFS__"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
@@ -143,7 +143,7 @@
|
||||
AdditionalOptions="-MP"
|
||||
AdditionalIncludeDirectories="__TKINC__;$(CSF_OPT_INC)"
|
||||
Optimization="0"
|
||||
PreprocessorDefinitions="_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)__TKDEFS__"
|
||||
ExceptionHandling="2"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
@@ -162,7 +162,7 @@
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
AdditionalIncludeDirectories="..\..\..\inc;$(CSF_OPT_INC)"
|
||||
PreprocessorDefinitions="_DEBUG;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="_DEBUG;$(CSF_DEFINES)__TKDEFS__"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
@@ -236,7 +236,7 @@
|
||||
AdditionalIncludeDirectories="__TKINC__;$(CSF_OPT_INC)"
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)__TKDEFS__"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="2"
|
||||
RuntimeLibrary="2"
|
||||
@@ -254,7 +254,7 @@
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
AdditionalIncludeDirectories="..\..\..\inc;$(CSF_OPT_INC)"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="NDEBUG;No_Exception;$(CSF_DEFINES)__TKDEFS__"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
@@ -327,7 +327,7 @@
|
||||
AdditionalOptions="-MP -favor:blend"
|
||||
AdditionalIncludeDirectories="__TKINC__;$(CSF_OPT_INC)"
|
||||
Optimization="0"
|
||||
PreprocessorDefinitions="_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;$(CSF_DEFINES)__TKDEFS__"
|
||||
ExceptionHandling="2"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
@@ -345,7 +345,7 @@
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
AdditionalIncludeDirectories="..\..\..\inc;$(CSF_OPT_INC)"
|
||||
PreprocessorDefinitions="_DEBUG;$(CSF_DEFINES)"
|
||||
PreprocessorDefinitions="_DEBUG;$(CSF_DEFINES)__TKDEFS__"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
|
@@ -1,75 +1,8 @@
|
||||
[rename]
|
||||
Adaptor3d_OffsetCurve Adaptor2d_OffsetCurve
|
||||
BRepExtrema_OverlappedSubShapes BRepExtrema_MapOfIntegerPackedMapOfInteger
|
||||
ShapeConstruct_CompBezierCurves2dToBSplineCurve2d Convert_CompBezierCurves2dToBSplineCurve2d
|
||||
ShapeConstruct_CompBezierCurves2dToBSplineCurve Convert_CompBezierCurves2dToBSplineCurve
|
||||
Image_PixMap::Img Image_Format_
|
||||
V3d_TypeOfShadingModel Graphic3d_TypeOfShadingModel
|
||||
Graphic3d_TOSM_NONE Graphic3d_TOSM_UNLIT
|
||||
V3d_COLOR Graphic3d_TOSM_UNLIT
|
||||
V3d_FLAT Graphic3d_TOSM_FACET
|
||||
V3d_GOURAUD Graphic3d_TOSM_VERTEX
|
||||
V3d_PHONG Graphic3d_TOSM_FRAGMENT
|
||||
V3d_TypeOfLight Graphic3d_TypeOfLightSource
|
||||
V3d_AMBIENT Graphic3d_TOLS_AMBIENT
|
||||
V3d_DIRECTIONAL Graphic3d_TOLS_DIRECTIONAL
|
||||
V3d_POSITIONAL Graphic3d_TOLS_POSITIONAL
|
||||
V3d_SPOT Graphic3d_TOLS_SPOT
|
||||
BOPCol_BaseAllocator Handle(NCollection_BaseAllocator)
|
||||
BOPCol_BoxBndTree is replaced with BOPTools_BoxBndTree
|
||||
BOPCol_DataMapOfIntegerInteger TColStd_DataMapOfIntegerInteger
|
||||
BOPCol_DataMapOfIntegerListOfInteger TColStd_DataMapOfIntegerListOfInteger
|
||||
BOPCol_DataMapOfIntegerListOfShape TopTools_DataMapOfIntegerListOfShape
|
||||
BOPCol_DataMapOfIntegerReal TColStd_DataMapOfIntegerReal
|
||||
BOPCol_DataMapOfIntegerShape TopTools_DataMapOfIntegerShape
|
||||
BOPCol_DataMapOfShapeBox TopTools_DataMapOfShapeBox
|
||||
BOPCol_DataMapOfShapeInteger TopTools_DataMapOfShapeInteger
|
||||
BOPCol_DataMapOfShapeListOfShape TopTools_DataMapOfShapeListOfShape
|
||||
BOPCol_DataMapOfShapeReal TopTools_DataMapOfShapeReal
|
||||
BOPCol_DataMapOfShapeShape TopTools_DataMapOfShapeShape
|
||||
BOPCol_IndexedDataMapOfShapeListOfShape TopTools_IndexedDataMapOfShapeListOfShape
|
||||
BOPCol_IndexedDataMapOfShapeShape TopTools_IndexedDataMapOfShapeShape
|
||||
BOPCol_IndexedMapOfInteger TColStd_IndexedMapOfInteger
|
||||
BOPCol_IndexedMapOfOrientedShape TopTools_IndexedMapOfOrientedShape
|
||||
BOPCol_IndexedMapOfShape TopTools_IndexedMapOfShape
|
||||
BOPCol_ListOfInteger TColStd_ListOfInteger
|
||||
BOPCol_ListOfListOfShape TopTools_ListOfListOfShape
|
||||
BOPCol_ListOfShape TopTools_ListOfShape
|
||||
BOPCol_MapOfInteger TColStd_MapOfInteger
|
||||
BOPCol_MapOfOrientedShapeTopTools_MapOfOrientedShape
|
||||
BOPCol_MapOfShape TopTools_MapOfShape
|
||||
BOPCol_SequenceOfPnt2d TColgp_SequenceOfPnt2d
|
||||
BOPCol_SequenceOfReal TColStd_SequenceOfReal
|
||||
BOPCol_SequenceOfShape TopTools_SequenceOfShape
|
||||
BOPCol_Parallel BOPTools_Parallel
|
||||
BOPCol_NCVector NCollection_Vector
|
||||
BOPCol_DataMapOfShapeAddress DataMapOfShapeAddress
|
||||
BOPCol_DataMapOfTransientAddress DataMapOfTransientAddress
|
||||
BOPCol_DataMapIteratorOfDataMapOfIntegerReal TColStd_DataMapIteratorOfDataMapOfIntegerReal
|
||||
BOPCol_DataMapIteratorOfDataMapOfShapeAddress DataMapOfShapeAddress::Iterator
|
||||
BOPCol_DataMapIteratorOfDataMapOfTransientAddress DataMapOfTransientAddress::Iterator
|
||||
BOPCol_ListIteratorOfListOfInteger TColStd_ListIteratorOfListOfInteger
|
||||
BOPCol_ListIteratorOfListOfShape TopTools_ListIteratorOfListOfShape
|
||||
BOPCol_MapIteratorOfMapOfInteger TColStd_MapIteratorOfMapOfInteger
|
||||
BOPCol_BoxBndTreeSelector BOPTools_BoxBndTreeSelector
|
||||
BOPCol_BoxBndTree BOPTools_BoxBndTree
|
||||
BOPCol_PListOfInteger TColStd_ListOfInteger*
|
||||
BOPCol_IndexedDataMapOfShapeReal TopTools_IndexedDataMapOfShapeReal
|
||||
BOPCol_MapOfOrientedShape TopTools_MapOfOrientedShape
|
||||
BOPCol_DataMapIteratorOfDataMapOfIntegerInteger TColStd_DataMapIteratorOfDataMapOfIntegerInteger
|
||||
BOPCol_MapIteratorOfMapOfShape TopTools_MapIteratorOfMapOfShape
|
||||
BOPCol_ContextFunctor BOPTools_ContextFunctor
|
||||
BOPCol_ContextCnt BOPTools_ContextCnt
|
||||
BOPCol_Functor BOPTools_Functor
|
||||
BOPCol_Cnt BOPTools_Cnt
|
||||
BOPCol_DataMapIteratorOfDataMapOfIntegerListOfShape TopTools_DataMapIteratorOfDataMapOfIntegerListOfShape
|
||||
BOPCol_MapIteratorOfMapOfOrientedShape TopTools_MapIteratorOfMapOfOrientedShape
|
||||
BOPCol_DataMapIteratorOfDataMapOfIntegerListOfInteger TColStd_DataMapIteratorOfDataMapOfIntegerListOfInteger
|
||||
BOPCol_DataMapIteratorOfDataMapOfShapeShape TopTools_DataMapIteratorOfDataMapOfShapeShape
|
||||
BOPTools::MapShapes TopExp::MapShapes
|
||||
BOPTools::MapShapesAndAncestors TopExp::MapShapesAndAncestors
|
||||
BOPCol_Box2DBndTreeSelector BOPTools_BoxSelector<Bnd_Box2d>
|
||||
BiTgte_DataMapOfShapeBox TopTools_DataMapOfShapeBox
|
||||
|
||||
[tcollection]
|
||||
AdvApp2Var_SequenceOfNode
|
||||
|
282
data/occ/Box.brep
Normal file
@@ -0,0 +1,282 @@
|
||||
DBRep_DrawableShape
|
||||
|
||||
CASCADE Topology V1, (c) Matra-Datavision
|
||||
Locations 0
|
||||
Curve2ds 24
|
||||
1 0 0 1 0
|
||||
1 0 0 1 0
|
||||
1 50 0 0 -1
|
||||
1 0 0 0 1
|
||||
1 0 -80 1 0
|
||||
1 0 0 1 0
|
||||
1 0 0 0 -1
|
||||
1 0 0 0 1
|
||||
1 0 0 1 0
|
||||
1 0 77 1 0
|
||||
1 50 0 0 -1
|
||||
1 77 0 0 1
|
||||
1 0 -80 1 0
|
||||
1 0 77 1 0
|
||||
1 0 0 0 -1
|
||||
1 77 0 0 1
|
||||
1 0 0 0 1
|
||||
1 0 0 1 0
|
||||
1 50 0 0 1
|
||||
1 0 0 1 0
|
||||
1 0 0 0 1
|
||||
1 0 80 1 0
|
||||
1 50 0 0 1
|
||||
1 0 80 1 0
|
||||
Curves 12
|
||||
1 821 803 0 0 0 1
|
||||
1 821 803 50 0 1 0
|
||||
1 821 883 0 0 0 1
|
||||
1 821 803 0 0 1 0
|
||||
1 898 803 0 0 0 1
|
||||
1 898 803 50 0 1 0
|
||||
1 898 883 0 0 0 1
|
||||
1 898 803 0 0 1 0
|
||||
1 821 803 0 1 0 0
|
||||
1 821 803 50 1 0 0
|
||||
1 821 883 0 1 0 0
|
||||
1 821 883 50 1 0 0
|
||||
Polygon3D 0
|
||||
PolygonOnTriangulations 0
|
||||
Surfaces 6
|
||||
1 821 803 0 1 0 0 0 0 1 0 -1 0
|
||||
1 821 803 0 0 1 0 0 0 1 1 0 0
|
||||
1 821 803 50 0 0 1 1 0 0 0 1 0
|
||||
1 821 883 0 0 1 0 0 0 1 1 0 0
|
||||
1 821 803 0 0 0 1 1 0 0 0 1 0
|
||||
1 898 803 0 1 0 0 0 0 1 0 -1 0
|
||||
Triangulations 0
|
||||
|
||||
TShapes 34
|
||||
Ve
|
||||
1e-007
|
||||
821 803 50
|
||||
0 0
|
||||
|
||||
0101100
|
||||
*
|
||||
Ve
|
||||
1e-007
|
||||
821 803 0
|
||||
0 0
|
||||
|
||||
0101100
|
||||
*
|
||||
Ed
|
||||
1e-007 1 1 0
|
||||
1 1 0 0 50
|
||||
2 1 1 0 0 50
|
||||
2 2 2 0 0 50
|
||||
0
|
||||
|
||||
0101000
|
||||
-34 0 +33 0 *
|
||||
Ve
|
||||
1e-007
|
||||
821 883 50
|
||||
0 0
|
||||
|
||||
0101100
|
||||
*
|
||||
Ed
|
||||
1e-007 1 1 0
|
||||
1 2 0 0 80
|
||||
2 3 1 0 0 80
|
||||
2 4 3 0 0 80
|
||||
0
|
||||
|
||||
0101000
|
||||
-31 0 +34 0 *
|
||||
Ve
|
||||
1e-007
|
||||
821 883 0
|
||||
0 0
|
||||
|
||||
0101100
|
||||
*
|
||||
Ed
|
||||
1e-007 1 1 0
|
||||
1 3 0 0 50
|
||||
2 5 1 0 0 50
|
||||
2 6 4 0 0 50
|
||||
0
|
||||
|
||||
0101000
|
||||
-31 0 +29 0 *
|
||||
Ed
|
||||
1e-007 1 1 0
|
||||
1 4 0 0 80
|
||||
2 7 1 0 0 80
|
||||
2 8 5 0 0 80
|
||||
0
|
||||
|
||||
0101000
|
||||
-29 0 +33 0 *
|
||||
Wi
|
||||
|
||||
0101000
|
||||
-32 0 -30 0 +28 0 +27 0 *
|
||||
Fa
|
||||
0 1e-007 1 0
|
||||
|
||||
0111000
|
||||
+26 0 *
|
||||
Ve
|
||||
1e-007
|
||||
898 803 50
|
||||
0 0
|
||||
|
||||
0101100
|
||||
*
|
||||
Ve
|
||||
1e-007
|
||||
898 803 0
|
||||
0 0
|
||||
|
||||
0101100
|
||||
*
|
||||
Ed
|
||||
1e-007 1 1 0
|
||||
1 5 0 0 50
|
||||
2 9 6 0 0 50
|
||||
2 10 2 0 0 50
|
||||
0
|
||||
|
||||
0101000
|
||||
-24 0 +23 0 *
|
||||
Ve
|
||||
1e-007
|
||||
898 883 50
|
||||
0 0
|
||||
|
||||
0101100
|
||||
*
|
||||
Ed
|
||||
1e-007 1 1 0
|
||||
1 6 0 0 80
|
||||
2 11 6 0 0 80
|
||||
2 12 3 0 0 80
|
||||
0
|
||||
|
||||
0101000
|
||||
-21 0 +24 0 *
|
||||
Ve
|
||||
1e-007
|
||||
898 883 0
|
||||
0 0
|
||||
|
||||
0101100
|
||||
*
|
||||
Ed
|
||||
1e-007 1 1 0
|
||||
1 7 0 0 50
|
||||
2 13 6 0 0 50
|
||||
2 14 4 0 0 50
|
||||
0
|
||||
|
||||
0101000
|
||||
-21 0 +19 0 *
|
||||
Ed
|
||||
1e-007 1 1 0
|
||||
1 8 0 0 80
|
||||
2 15 6 0 0 80
|
||||
2 16 5 0 0 80
|
||||
0
|
||||
|
||||
0101000
|
||||
-19 0 +23 0 *
|
||||
Wi
|
||||
|
||||
0101000
|
||||
-22 0 -20 0 +18 0 +17 0 *
|
||||
Fa
|
||||
0 1e-007 6 0
|
||||
|
||||
0111000
|
||||
+16 0 *
|
||||
Ed
|
||||
1e-007 1 1 0
|
||||
1 9 0 0 77
|
||||
2 17 2 0 0 77
|
||||
2 18 5 0 0 77
|
||||
0
|
||||
|
||||
0101000
|
||||
-23 0 +33 0 *
|
||||
Ed
|
||||
1e-007 1 1 0
|
||||
1 10 0 0 77
|
||||
2 19 2 0 0 77
|
||||
2 20 3 0 0 77
|
||||
0
|
||||
|
||||
0101000
|
||||
-24 0 +34 0 *
|
||||
Wi
|
||||
|
||||
0101000
|
||||
-14 0 -22 0 +13 0 +32 0 *
|
||||
Fa
|
||||
0 1e-007 2 0
|
||||
|
||||
0111000
|
||||
+12 0 *
|
||||
Ed
|
||||
1e-007 1 1 0
|
||||
1 11 0 0 77
|
||||
2 21 4 0 0 77
|
||||
2 22 5 0 0 77
|
||||
0
|
||||
|
||||
0101000
|
||||
-19 0 +29 0 *
|
||||
Ed
|
||||
1e-007 1 1 0
|
||||
1 12 0 0 77
|
||||
2 23 4 0 0 77
|
||||
2 24 3 0 0 77
|
||||
0
|
||||
|
||||
0101000
|
||||
-21 0 +31 0 *
|
||||
Wi
|
||||
|
||||
0101000
|
||||
-10 0 -18 0 +9 0 +28 0 *
|
||||
Fa
|
||||
0 1e-007 4 0
|
||||
|
||||
0111000
|
||||
+8 0 *
|
||||
Wi
|
||||
|
||||
0101000
|
||||
-27 0 -10 0 +17 0 +14 0 *
|
||||
Fa
|
||||
0 1e-007 5 0
|
||||
|
||||
0111000
|
||||
+6 0 *
|
||||
Wi
|
||||
|
||||
0101000
|
||||
-30 0 -9 0 +20 0 +13 0 *
|
||||
Fa
|
||||
0 1e-007 3 0
|
||||
|
||||
0111000
|
||||
+4 0 *
|
||||
Sh
|
||||
|
||||
0101100
|
||||
-25 0 +15 0 -11 0 +7 0 -5 0 +3 0 *
|
||||
So
|
||||
|
||||
1100000
|
||||
+2 0 *
|
||||
|
||||
+1 0
|
2562
data/occ/hammer.brep
@@ -93,11 +93,10 @@ The following table gives the full list of environment variables used at the con
|
||||
| 3RDPARTY_TBB* | Path | Path to TBB binaries |
|
||||
| 3RDPARTY_VTK_* | Path | Path to VTK binaries |
|
||||
| BUILD_MODULE_<MODULE>| Boolean flag | Indicates whether the corresponding OCCT module should be built or not. It should be noted that some toolkits of a module can be built even if this module is not checked (this happens if some other modules depend on these toolkits). The main modules and their descriptions can be found in @ref user_guides |
|
||||
| BUILD_LIBRARY_TYPE | String | Specifies the type of library to be created. "Shared" libraries are linked dynamically and loaded at runtime. "Static" libraries are archives of object files used when linking other targets. Note that Draw Harness plugin system is incompatible with "Static" builds, and therefore it is disabled for these builds.|
|
||||
| BUILD_LIBRARY_TYPE | String | Specifies the type of library to be created. "Shared" libraries are linked dynamically and loaded at runtime. "Static" libraries are archives of object files used when linking other targets |
|
||||
| BUILD_ADDITIONAL_TOOLKITS | String | Semicolon-separated individual toolkits to include into build process. If you want to build some particular libraries (toolkits) only, then you may uncheck all modules in the corresponding *BUILD_MODUE_\<MODULE\>* options and provide the list of necessary libraries here. Of course, all dependencies will be resolved automatically |
|
||||
| BUILD_YACCLEX | Boolean flag | Enables Flex/Bison lexical analyzers. OCCT source files relating to STEP reader and ExprIntrp functionality are generated automatically with Flex/Bison. Checking this option leads to automatic search of Flex/Bison binaries and regeneration of the mentioned files |
|
||||
| BUILD_SAMPLES_MFC | Boolean flag | Indicates whether MFC samples should be built together with OCCT. This option is only relevant to Windows platforms |
|
||||
| BUILD_SAMPLES_QT | Boolean flag | Indicates whether QT samples should be built together with OCCT. |
|
||||
| BUILD_MODULE_MfcSamples | Boolean flag | Indicates whether MFC samples should be built together with OCCT. This option is only relevant to Windows platforms |
|
||||
| BUILD_Inspector | Boolean flag | Indicates whether Inspector should be built together with OCCT. |
|
||||
| BUILD_DOC_Overview | Boolean flag | Indicates whether OCCT overview documentation project should be created together with OCCT. It is not built together with OCCT. Checking this option leads to automatic search of Doxygen binaries. Its building calls Doxygen command to generate the documentation in HTML format |
|
||||
| BUILD_PATCH | Path | Points to the directory recognized as a "patch" for OCCT. If specified, the files from this directory take precedence over the corresponding native OCCT sources. This way you are able to introduce patches to Open CASCADE Technology not affecting the original source distribution |
|
||||
|
@@ -76,28 +76,19 @@ Note that .lxx files should be avoided in most cases - inline method should be p
|
||||
|
||||
Toolkit names are prefixed by *TK*, followed by a meaningful part of the name explaining the domain of functionality covered by the toolkit (e.g. *TKOpenGl*).
|
||||
|
||||
### Names of public types
|
||||
### Names of classes
|
||||
|
||||
Names of public classes and other types (structures, enums, typedefs) should match the common pattern: name of the package followed by underscore and suffix (the own name of the type):
|
||||
Usually the names of source files located in a unit start from the unit name separated from the other part of the file name by underscore "_".
|
||||
|
||||
Thus, the names of files containing sources of C++ classes that belong to a package are constructed according to the following template:
|
||||
|
||||
~~~~~
|
||||
<package-name>_<class-name>
|
||||
<package-name>_<class-name>.cxx (or .hxx)
|
||||
~~~~~
|
||||
|
||||
Static methods related to the whole package are defined in the class with the same name as package (without suffix).
|
||||
For example, file *Adaptor2d_Curve2d.cxx* belongs to the package *Adaptor2d*
|
||||
|
||||
Each type should be defined in its own header file with the name of the type and extension ".hxx".
|
||||
Implementation should be placed in the file with the same name and extension ".cxx"; for large classes it is possible to split implementation into multiple source files with additional suffixes in the names (usually numerical, e.g. *BSplCLib_1.cxx*).
|
||||
|
||||
For example, class *Adaptor2d_Curve2d* belongs to the package *Adaptor2d*; it is defined in header file *Adaptor2d_Curve2d.hxx* and implemented in source file *Adaptor2d_Curve2d.cxx*.
|
||||
|
||||
This rule also applies to complex types constructed by instantiation of templates.
|
||||
Such types should be given own names using *typedef* statement, located in same-named header file.
|
||||
|
||||
For example, see definition in the file *TColStd_IndexedDataMapOfStringString.hxx*:
|
||||
~~~~~
|
||||
typedef NCollection_IndexedDataMap<TCollection_AsciiString,TCollection_AsciiString,TCollection_AsciiString> TColStd_IndexedDataMapOfStringString;
|
||||
~~~~~
|
||||
Files that contain sources related to the whole unit are called by the unit name with appropriate extension.
|
||||
|
||||
### Names of functions
|
||||
|
||||
@@ -488,8 +479,6 @@ Inclusion of class header on top verifies consistency of the header (e.g. that h
|
||||
|
||||
An exception to the rule is ordering system headers generating a macros declaration conflicts (like "windows.h" or "X11/Xlib.h") - these headers should be placed in the way solving the conflict.
|
||||
|
||||
The source or header file should include only minimal set of headers necessary for compilation, without duplicates (considering nested includes).
|
||||
|
||||
~~~~~{.cpp}
|
||||
// the header file of implemented class
|
||||
#include <PackageName_ClassName.hxx>
|
||||
|
@@ -192,11 +192,7 @@ Use prefix <i>bug</i> followed by Mantis issue ID and, if necessary, additional
|
||||
* If the test case reports error due to an existing problem and the fix is not available, add @ref testmanual_3_6 "TODO" statement for each error to mark it as a known problem. The TODO statements must be specific so as to match the actually generated messages but not all similar errors.
|
||||
* To check expected output which should be obtained as the test result, add @ref testmanual_3_7 "REQUIRED" statement for each line of output to mark it as required.
|
||||
* If the test case produces error messages (contained in parse.rules), which are expected in that test and should not be considered as its failure (e.g. test for *checkshape* command), add REQUIRED statement for each error to mark it as required output.
|
||||
4. To check whether the data files needed for the test are already present in the database, use DRAW command *testfile* (see below).
|
||||
If the data file is already present, use it for new test instead of adding a duplicate.
|
||||
If the data file(s) are not yet present in the test database, put them to some folder and add it to the environment variable *CSF_TestDataPath* to be found by the test system.
|
||||
Information on where the data files can be accessed by OCC team for putting to official database should be provided in comment to Mantis issue, clearly indicating how names of the files used by the test script match the actual names of the files.
|
||||
The simplest way is to attach the data files to the Mantis issue, with the same names as used by the test script.
|
||||
4. If the test uses data file(s) that are not yet present in the test database, it is possible to put them to (sub)directory pointed out by *CSF_TestDataPath* variable for running test. The files should be attached to the Mantis issue corresponding to the tested modification.
|
||||
5. Check that the test case runs as expected (test for fix: OK with the fix, FAILED without the fix; test for existing problem: BAD), and integrate it to the Git branch created for the issue.
|
||||
|
||||
Example:
|
||||
@@ -222,33 +218,6 @@ fixshape result a 0.01 0.01
|
||||
checkshape result
|
||||
~~~~~
|
||||
|
||||
DRAW command testfile should be used to check the data files being used by the test for possible duplication of content or names.
|
||||
The command accepts list of paths to files being checked as single argument, and will give conclusion on each of the files, for instance:
|
||||
|
||||
~~~~~
|
||||
Draw[1]> testfile [glob /my/data/path/bug12345*]
|
||||
Collecting info on test data files repository...
|
||||
Checking new file(s)...
|
||||
|
||||
* /my/data/path/bug12345.brep: duplicate
|
||||
already present under name bug28773_1.brep
|
||||
--> //server/occt_tests_data/public/brep/bug28773_1.brep
|
||||
|
||||
* /my/data/path/cadso.brep: new file
|
||||
Warning: DOS encoding detected, consider converting to
|
||||
UNIX unless DOS line ends are needed for the test
|
||||
Warning: shape contains triangulation (946 triangles),
|
||||
consider removing them unless they are needed for the test!
|
||||
BREP size=201 KiB, nbfaces=33, nbedges=94 -> private
|
||||
|
||||
* /my/data/path/case_8_wire3.brep: already present
|
||||
--> //server/occt_tests_data/public/brep/case_8_wire3.brep
|
||||
|
||||
* /my/data/path/case_8_wire4.brep: error
|
||||
name is already used by existing file
|
||||
--> //server/occt_tests_data/public/brep/case_8_wire4.brep
|
||||
~~~~~
|
||||
|
||||
@section testmanual_2 Organization of Test Scripts
|
||||
|
||||
@subsection testmanual_2_1 General Layout
|
||||
|
@@ -791,7 +791,6 @@ std::stable_sort (aValues.begin(), aValues.end());
|
||||
|
||||
The old mechanism for rendering Underlay and Overlay on-screen 2D objects based on *Visual3d_Layer* and immediate drawing model (uncached and thus slow) has been removed.
|
||||
Classes *Aspect_Clayer2d, OpenGl_GraphicDriver_Layer, Visual3d_Layer, Visual3d_LayerItem, V3d_LayerMgr* and *V3d_LayerMgrPointer* have been deleted.
|
||||
The following auxiliary definition have been removed as well: Aspect_TypeOfPrimitive, Aspect_TypeOfLayer, Aspect_TypeOfEdge, Aspect_TypeOfDrawMode, Aspect_TypeOfConstraint, Aspect_DriverDefinitionError, Aspect_BadAccess.
|
||||
|
||||
General AIS interactive objects with transformation persistence flag *Graphic3d_TMF_2d* can be used as a replacement of *Visual3d_LayerItem*.
|
||||
The anchor point specified for transformation persistence defines the window corner of (or center in case of (0, 0) point).
|
||||
@@ -1439,124 +1438,9 @@ The methods returning the status of errors and warnings of the algorithms (Error
|
||||
Instead use methods HasErrors() and HasWarnings() to check for presence of errors and warnings, respectively.
|
||||
The full list of errors and warnings, with associated data such as problematic sub-shapes, can be obtained by method GetReport().
|
||||
|
||||
@section upgrade_occt721 Upgrade to OCCT 7.2.1
|
||||
|
||||
@subsection upgrade_721_Changes_In_USD Changes in ShapeUpgrade_UnifySameDomain
|
||||
|
||||
The following public methods in the class ShapeUpgrade_UnifySameDomain became protected:
|
||||
* *UnifyFaces*
|
||||
* *UnifyEdges*
|
||||
|
||||
The following public method has been removed:
|
||||
* *UnifyFacesAndEdges*
|
||||
|
||||
@subsection upgrade_721_Move_BuildPCurveForEdgeOnPlane Moving BuildPCurveForEdgeOnPlane from BOPTools_AlgoTools2D to BRepLib
|
||||
|
||||
The methods BuildPCurveForEdgeOnPlane and BuildPCurveForEdgesOnPlane have been moved from the class BOPTools_AlgoTools2D
|
||||
to the more lower level class BRepLib.
|
||||
|
||||
@subsection upgrade_721_removed Removed features
|
||||
|
||||
The following obsolete features have been removed:
|
||||
* The package BOPCol has been fully removed:
|
||||
- *BOPCol_BaseAllocator* is replaced with *Handle(NCollection_BaseAllocator)*;
|
||||
- *BOPCol_BoxBndTree* is replaced with *BOPTools_BoxBndTree*;
|
||||
- *BOPCol_Box2DBndTree* is removed as unused;
|
||||
- *BOPCol_DataMapOfIntegerInteger* is replaced with *TColStd_DataMapOfIntegerInteger*;
|
||||
- *BOPCol_DataMapOfIntegerListOfInteger* is replaced with *TColStd_DataMapOfIntegerListOfInteger*;
|
||||
- *BOPCol_DataMapOfIntegerListOfShape* is replaced with *TopTools_DataMapOfIntegerListOfShape*;
|
||||
- *BOPCol_DataMapOfIntegerMapOfInteger.hxx* is removed as unused;
|
||||
- *BOPCol_DataMapOfIntegerReal* is replaced with *TColStd_DataMapOfIntegerReal*;
|
||||
- *BOPCol_DataMapOfIntegerShape* is replaced with *TopTools_DataMapOfIntegerShape*;
|
||||
- *BOPCol_DataMapOfShapeBox* is replaced with *TopTools_DataMapOfShapeBox*;
|
||||
- *BOPCol_DataMapOfShapeInteger* is replaced with *TopTools_DataMapOfShapeInteger*;
|
||||
- *BOPCol_DataMapOfShapeListOfShape* is replaced with *TopTools_DataMapOfShapeListOfShape*;
|
||||
- *BOPCol_DataMapOfShapeReal* is replaced with *TopTools_DataMapOfShapeReal*;
|
||||
- *BOPCol_DataMapOfShapeShape* is replaced with *TopTools_DataMapOfShapeShape*;
|
||||
- *BOPCol_DataMapOfTransientAddress* is removed as unused;
|
||||
- *BOPCol_IndexedDataMapOfIntegerListOfInteger* is removed as unused;
|
||||
- *BOPCol_IndexedDataMapOfShapeBox* is removed as unused;
|
||||
- *BOPCol_IndexedDataMapOfShapeInteger* is removed as unused;
|
||||
- *BOPCol_IndexedDataMapOfShapeListOfShape* is replaced with *TopTools_IndexedDataMapOfShapeListOfShape*;
|
||||
- *BOPCol_IndexedDataMapOfShapeReal* is removed as unused;
|
||||
- *BOPCol_IndexedDataMapOfShapeShape* is replaced with *TopTools_IndexedDataMapOfShapeShape*;
|
||||
- *BOPCol_IndexedMapOfInteger* is replaced with *TColStd_IndexedMapOfInteger*;
|
||||
- *BOPCol_IndexedMapOfOrientedShape* is replaced with *TopTools_IndexedMapOfOrientedShape*;
|
||||
- *BOPCol_IndexedMapOfShape* is replaced with *TopTools_IndexedMapOfShape*;
|
||||
- *BOPCol_ListOfInteger* is replaced with *TColStd_ListOfInteger*;
|
||||
- *BOPCol_ListOfListOfShape* is replaced with *TopTools_ListOfListOfShape*;
|
||||
- *BOPCol_ListOfShape* is replaced with *TopTools_ListOfShape*;
|
||||
- *BOPCol_MapOfInteger* is replaced with *TColStd_MapOfInteger*;
|
||||
- *BOPCol_MapOfOrientedShape* is replaced with *TopTools_MapOfOrientedShape*;
|
||||
- *BOPCol_MapOfShape* is replaced with *TopTools_MapOfShape*;
|
||||
- *BOPCol_PListOfInteger* is removed as unused;
|
||||
- *BOPCol_PInteger* is removed as unused
|
||||
- *BOPCol_SequenceOfPnt2d* is replaced with *TColgp_SequenceOfPnt2d*;
|
||||
- *BOPCol_SequenceOfReal* is replaced with *TColStd_SequenceOfReal*;
|
||||
- *BOPCol_SequenceOfShape* is replaced with *TopTools_SequenceOfShape*;
|
||||
- *BOPCol_Parallel* is replaced with *BOPTools_Parallel*;
|
||||
- *BOPCol_NCVector* is replaced with *NCollection_Vector*;
|
||||
* The class *BOPDS_PassKey* and containers for it have been removed as unused.
|
||||
* The unused containers from *IntTools* package have been removed:
|
||||
- *IntTools_DataMapOfShapeAddress* is removed as unused;
|
||||
- *IntTools_IndexedDataMapOfTransientAddress* is removed as unused;
|
||||
* The container *BiTgte_DataMapOfShapeBox* is replaced with *TopTools_DataMapOfShapeBox*;
|
||||
* The class *BOPTools* has been removed as duplicate of the class *TopExp*;
|
||||
* The method *BOPAlgo_Builder::Splits()* has been removed as excessive. The method *BOPAlgo_Builder::Images()* can be used instead.
|
||||
|
||||
@section upgrade_occt730 Upgrade to OCCT 7.3.0
|
||||
|
||||
@subsection upgrade_730_lights Light sources
|
||||
|
||||
Multiple changes have been applied to lights management within TKV3d and TKOpenGl:
|
||||
* V3d_Light class is now an alias to Graphic3d_CLight.
|
||||
Graphic3d_CLight is now a Handle class with refactored methods for managing light source parameters
|
||||
(preserving most methods of V3d_Light sub-classes to simplify porting).
|
||||
* Obsolete debugging functionality for drawing lights source has been removed from V3d_Light.
|
||||
Methods and constructors taking parameters for this drawing and not affecting light definition itself has been also removed.
|
||||
* Light constructors taking V3d_Viewer has been marked deprecated.
|
||||
Application may call V3d_Viewer::AddLight() explicitly to register new light sources created by new constructors within V3d_Viewer, but this step is now optional.
|
||||
* The upper limit of 8 light sources has been removed.
|
||||
* Dedicated classes per light source type V3d_AmbientLight, V3d_DirectionalLight, V3d_PositionalLight and V3d_SpotLight have been preserved,
|
||||
but it is now possible defining light of any type by creating base class Graphic3d_CLight directly.
|
||||
Dedicated classes only hides visibility of unrelated light properties depending on its type.
|
||||
* Calling V3d_Viewer::UpdateLights() is no more required after modifying light sources properties (color, position, etc.).
|
||||
|
||||
@subsection upgrade_730_shadingmodels Shading Models
|
||||
|
||||
*Graphic3d_AspectFillArea3d* has been extended by a new property *ShadingModel()*, which previously has been defined globally for entire View.
|
||||
|
||||
Previously, triangle array without normal vertex attributes was implicitly considered as unshaded,
|
||||
but now such array will be shaded using *Graphic3d_TOSM_FACET* model (e.g. by computing per-triangle normals).
|
||||
Therefore, *Graphic3d_TOSM_UNLIT* should be explicitly specified for disabling shading or triangles array.
|
||||
Alternatively, material without reflectance properties can be used for disabling shading as before.
|
||||
|
||||
@subsection upgrade_730_tkopengl Custom low-level OpenGL elements
|
||||
|
||||
The following API changes should be considered while porting custom OpenGl_Element objects:
|
||||
* *OpenGl_ShaderManager::BindFaceProgram()*, *BindLineProgram()*, *BindMarkerProgram()* now take enumeration arguments instead of Boolean flags.
|
||||
|
||||
@subsection upgrade_730_BOPAlgo_Section Changes in BOPAlgo_Section
|
||||
|
||||
The public method *BuildSection()* in the class *BOPAlgo_Section* has became protected. The methods *Perform()* or *PerformWithFiller()* should be called for construction of the result of SECTION operation.
|
||||
|
||||
@subsection upgrade_730_BRepAdaptor_CompCurve Changes in BRepAdaptor_CompCurve
|
||||
|
||||
The method BRepAdaptor_CompCurve::SetPeriodic has been eliminated.
|
||||
Since new version, the method BRepAdaptor_CompCurve::IsPeriodic() will always return FALSE. Earlier, it could return TRUE in case if the wire contained only one edge based on periodic curve.
|
||||
|
||||
@subsection upgrade_730_removed Removed features
|
||||
* The methods *SetDeflection*, *SetEpsilonT*, *SetDiscretize* of the class *IntTools_EdgeFace* have been removed as excessive.
|
||||
|
||||
@subsection upgrade_730_IntersectionAPI Changes in classes responsible for intersection algorithm
|
||||
|
||||
Interfaces of the following methods have been changed: IntPatch_WLineTool::ComputePurgedWLine(...), IntPatch_PrmPrmIntersection::Perform(...), IntPatch_Intersection::Perform(...), IntPatch_Intersection::ParamParamPerfom(...), IntPatch_Intersection::GeomGeomPerfom(...). Please see documentation about corresponding methods.
|
||||
|
||||
@subsection upgrade_730_BuilderSolid Boolean Operations - Solid Builder algorithm
|
||||
|
||||
Previously, the unclassified faces of *BOPAlgo_BuilderSolid* algorithm (the faces which have not been used for solids creation and located outside of all created solids) have been used to form an additional solid (not closed one) with INTERNAL orientation.
|
||||
Since new version, these unclassified faces are no longer added into resulting solids. Instead, the @ref occt_algorithms_ers "warning" containing these faces appears.
|
||||
|
||||
The following public methods of the *BOPAlgo_BuilderSolid* class have been removed as excessive:
|
||||
* void SetSolid(const TopoDS_Solid& theSolid);
|
||||
* const TopoDS_Solid& Solid() const;
|
||||
|
@@ -28,22 +28,13 @@ https://www.opencascade.com
|
||||
License
|
||||
--------
|
||||
|
||||
Open CASCADE Technology is free software; you can redistribute it and / or modify it under the terms of the
|
||||
@ref license_lgpl_21 "GNU Lesser General Public License (LGPL) version 2.1", with additional @ref occt_lgpl_exception "exception".
|
||||
Open CASCADE Technology is free software; you can redistribute it and / or
|
||||
modify it under the terms of the
|
||||
@ref license_lgpl_21 "GNU Lesser General Public License (LGPL) version 2.1",
|
||||
with additional @ref occt_lgpl_exception "exception".
|
||||
|
||||
Note that LGPL imposes some obligations on the application linked with Open CASCADE Technology.
|
||||
If you wish to use OCCT in a proprietary application, please, pay special attention to address the requirements of LGPL section 6.
|
||||
At minimum the following should be considered:
|
||||
1. Add the notice visible to the users of your application clearly stating that Open CASCADE Technology is used in this application, and that they have rights in this regard according to LGPL.
|
||||
Such notice can be added in About dialog box (this is mandatory if this box contains copyright statements) or a similar place and/or in the documentation.
|
||||
The text of LGPL license should be accessible to the user.
|
||||
2. Make the copy of OCCT sources used by the application available to its users, and if necessary provide instructions on how to build it in a way compatible with the application.
|
||||
3. Ensure that the user actually can exercise the right to run your application with a modified version of OCCT.
|
||||
If the application is distributed in a form that does not allow the user to modify OCCT part (e.g. the application is linked to OCCT statically or is distributed via AppStore on iOS, GooglePlay on Android, Windows Store, etc.),
|
||||
the application should be provided separately in a modifiable form, with all materials needed for the user to be able to run the application with a modified version of OCCT.
|
||||
|
||||
If you want to use Open CASCADE Technology without being bound by LGPL requirements,
|
||||
please <a href="https://www.opencascade.com/contact">contact Open CASCADE company</a> for a commercial license.
|
||||
Alternatively, Open CASCADE Technology may be used under the terms of Open
|
||||
CASCADE commercial license or contractual agreement.
|
||||
|
||||
Note that Open CASCADE Technology is provided on an "AS IS" basis, WITHOUT
|
||||
WARRANTY OF ANY KIND. The entire risk related to any use of the OCCT code and
|
||||
@@ -136,9 +127,6 @@ FreeImage is easy to use, fast, multithreading safe, compatible with all 32-bit
|
||||
and cross-platform (works both with Linux and Mac OS X). FreeImage is optionally used by OCCT to work
|
||||
with images, on conditions of the FreeImage Public License (FIPL) (http://freeimage.sourceforge.net/freeimage-license.txt).
|
||||
|
||||
**David M. Gay's floating point routines** (dtoa.c) are used for fast reading of floating point values from text strings.
|
||||
These routines are available under MIT-like license (see http://www.netlib.org/fp/).
|
||||
|
||||
**CMake** is an open-source, cross-platform family of tools designed to build, test and package software. CMake is used to control the software compilation process using simple platform and compiler independent configuration files, and generate native makefiles and workspaces that can be used in the compiler environment of your choice.
|
||||
OCCT uses CMake as a build system. CMake is available under BSD 3-Clause license. See more at https://cmake.org/
|
||||
|
||||
@@ -208,9 +196,9 @@ for which OCCT is certified to work.
|
||||
|
||||
| OS | Compiler |
|
||||
| --------- | ----------- |
|
||||
| Windows | Microsoft Visual Studio: 2008 SP1, 2010 SP1<sup>1</sup>, 2012 Update 4, 2013 Update 5, 2015, 2017 <br> GCC 4.3+ (Mingw-w64)|
|
||||
| Windows | Microsoft Visual Studio: 2010 SP1<sup>1</sup>, 2012 Update 4, 2013 Update 5, 2015, 2017 <br> Intel C++ Composer XE 2013 SP1 <br> GCC 4.3+ (Mingw-w64)|
|
||||
| Linux | GNU gcc 4.3+ <br> LLVM CLang 3.6+ |
|
||||
| OS X / macOS | XCode 6 or newer |
|
||||
| OS X | XCode 6 or newer |
|
||||
| Android | NDK r10, GNU gcc 4.8 or newer |
|
||||
|
||||
1) VC++ 10 64-bit is used for regular testing and for building
|
||||
|
Before Width: | Height: | Size: 9.9 KiB After Width: | Height: | Size: 17 KiB |
@@ -548,8 +548,7 @@ The class *BOPAlgo_Options* provides the following options for the algorithms:
|
||||
* Check the presence of the Errors and Warnings;
|
||||
* Turn on/off the parallel processing;
|
||||
* Set the additional tolerance for the operation;
|
||||
* Break the operations by user request;
|
||||
* Usage of Oriented Bounding boxes in the operation.
|
||||
* Break the operations by user request.
|
||||
|
||||
@subsection occt_algorithms_root_classes_2 Class BOPAlgo_Algo
|
||||
|
||||
@@ -786,118 +785,6 @@ The types of resulting shapes depend on the type of the corresponding argument p
|
||||
| 7 | EDGE | Set of split EDGEs | |
|
||||
| 8 | VERTEX | VERTEX | |
|
||||
|
||||
@subsection occt_algorithms_7_3a Options
|
||||
|
||||
The General Fuse algorithm has a set of options, which allow speeding-up the operation and improving the quality of the result:
|
||||
* Parallel processing option allows running the algorithm in parallel mode;
|
||||
* Fuzzy option allows setting the additional tolerance for the operation;
|
||||
* Safe input shapes option allows preventing modification of the input shapes;
|
||||
* Gluing option allows speeding-up the intersection of the arguments;
|
||||
* Possibility to disable the check for the inverted solids among input shapes;
|
||||
* Usage of Oriented Bounding Boxes in the operation;
|
||||
* History support.
|
||||
|
||||
For more detailed information on these options please see the @ref occt_algorithms_11a "Advanced options" section.
|
||||
|
||||
@subsection occt_algorithms_7_3b Usage
|
||||
|
||||
The following example illustrates how to use the GF algorithm:
|
||||
|
||||
#### Usage of the GF algorithm on C++ level
|
||||
|
||||
~~~~
|
||||
BOPAlgo_Builder aBuilder;
|
||||
// Setting arguments
|
||||
TopTools_ListOfShape aLSObjects = …; // Objects
|
||||
aBuilder.SetArguments(aLSObjects);
|
||||
|
||||
// Setting options for GF
|
||||
|
||||
// Set parallel processing mode (default is false)
|
||||
Standard_Boolean bRunParallel = Standard_True;
|
||||
aBuilder.SetRunParallel(bRunParallel);
|
||||
|
||||
// Set Fuzzy value (default is Precision::Confusion())
|
||||
Standard_Real aFuzzyValue = 1.e-5;
|
||||
aBuilder.SetFuzzyValue(aFuzzyValue);
|
||||
|
||||
// Set safe processing mode (default is false)
|
||||
Standard_Boolean bSafeMode = Standard_True;
|
||||
aBuilder.SetNonDestructive(bSafeMode);
|
||||
|
||||
// Set Gluing mode for coinciding arguments (default is off)
|
||||
BOPAlgo_GlueEnum aGlue = BOPAlgo_GlueShift;
|
||||
aBuilder.SetGlue(aGlue);
|
||||
|
||||
// Disabling/Enabling the check for inverted solids (default is true)
|
||||
Standard Boolean bCheckInverted = Standard_False;
|
||||
aBuilder.SetCheckInverted(bCheckInverted);
|
||||
|
||||
// Set OBB usage (default is false)
|
||||
Standard_Boolean bUseOBB = Standard_True;
|
||||
aBuilder.SetUseOBB(buseobb);
|
||||
|
||||
// Perform the operation
|
||||
aBuilder.Perform();
|
||||
|
||||
// Check for the errors
|
||||
if (aBuilder.HasErrors())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Check for the warnings
|
||||
if (aBuilder.HasWarnings())
|
||||
{
|
||||
// treatment of the warnings
|
||||
...
|
||||
}
|
||||
|
||||
// result of the operation
|
||||
const TopoDS_Shape& aResult = aBuilder.Shape();
|
||||
~~~~
|
||||
|
||||
#### Usage of the GF algorithm on Tcl level
|
||||
|
||||
~~~~
|
||||
# prepare the arguments
|
||||
box b1 10 10 10
|
||||
box b2 3 4 5 10 10 10
|
||||
box b3 5 6 7 10 10 10
|
||||
|
||||
# clear inner contents
|
||||
bclearobjects; bcleartools;
|
||||
|
||||
# set the arguments
|
||||
baddobjects b1 b2 b3
|
||||
|
||||
# setting options for GF
|
||||
|
||||
# set parallel processing mode (default is 0)
|
||||
brunparallel 1
|
||||
|
||||
# set Fuzzy value
|
||||
bfuzzyvalue 1.e-5
|
||||
|
||||
# set safe processing mode (default is 0)
|
||||
bnondestructive 1
|
||||
|
||||
# set gluing mode (default is 0)
|
||||
bglue 1
|
||||
|
||||
# set check for inverted (default is 1)
|
||||
bcheckinverted 0
|
||||
|
||||
# set obb usage (default is 0)
|
||||
buseobb 1
|
||||
|
||||
# perform intersection
|
||||
bfillds
|
||||
|
||||
# perform GF operaton
|
||||
bbuild result
|
||||
~~~~
|
||||
|
||||
@subsection occt_algorithms_7_3 Examples
|
||||
|
||||
Please, have a look at the examples, which can help to better understand the definitions.
|
||||
@@ -1174,7 +1061,7 @@ The input data for this step is a *BOPAlgo_Builder* object after building result
|
||||
@section occt_algorithms_8 Splitter Algorithm
|
||||
|
||||
The Splitter algorithm allows splitting a group of arbitrary shapes by another group of arbitrary shapes.<br>
|
||||
It is based on the General Fuse algorithm, thus all options of the General Fuse (see @ref occt_algorithms_7_3a "GF Options") are also available in this algorithm.
|
||||
It is based on the General Fuse algorithm, thus all options of the General Fuse such as Fuzzy mode, safe processing mode, parallel mode, gluing mode and history support are also available in this algorithm.
|
||||
|
||||
@subsection occt_algorithms_8_1 Arguments
|
||||
|
||||
@@ -1195,18 +1082,22 @@ It is based on the General Fuse algorithm, thus all options of the General Fuse
|
||||
On the low level the Splitter algorithm is implemented in class *BOPAlgo_Splitter*. The usage of this algorithm looks as follows:
|
||||
~~~~~
|
||||
BOPAlgo_Splitter aSplitter;
|
||||
// Setting arguments and tools
|
||||
TopTools_ListOfShape aLSObjects = …; // Objects
|
||||
TopTools_ListOfShape aLSTools = …; // Tools
|
||||
BOPCol_ListOfShape aLSObjects = …; // Objects
|
||||
BOPCol_ListOfShape aLSTools = …; // Tools
|
||||
Standard_Boolean bRunParallel = Standard_False; /* parallel or single mode (the default value is FALSE)*/
|
||||
Standard_Real aTol = 0.0; /* fuzzy option (default value is 0)*/
|
||||
Standard_Boolean bSafeMode = Standard_False; /* protect or not the arguments from modification*/
|
||||
BOPAlgo_Glue aGlue = BOPAlgo_GlueOff; /* Glue option to speed up intersection of the arguments*/
|
||||
// setting arguments
|
||||
aSplitter.SetArguments(aLSObjects);
|
||||
aSplitter.SetTools(aLSTools);
|
||||
|
||||
// Set options for the algorithm
|
||||
// setting options for this algorithm is similar to setting options for GF algorithm (see "GF Usage" chapter)
|
||||
...
|
||||
|
||||
// Perform the operation
|
||||
aSplitter.Perform();
|
||||
// setting options
|
||||
aSplitter.SetRunParallel(bRunParallel);
|
||||
aSplitter.SetFuzzyValue(aTol);
|
||||
aSplitter.SetNonDestructive(bSafeMode);
|
||||
aSplitter.SetGlue(aGlue);
|
||||
//
|
||||
aSplitter.Perform(); //perform the operation
|
||||
if (aSplitter.HasErrors()) { //check error status
|
||||
return;
|
||||
}
|
||||
@@ -2150,7 +2041,7 @@ The algorithm creates only closed solids. In general case the result solids are
|
||||
But the algorithm allows preventing the addition of the internal for solids parts into result. In this case the result solids will be manifold and not contain any internal parts. However, this option does not prevent from the occurrence of the internal edges or vertices in the faces.<br>
|
||||
Non-closed faces, free wires etc. located outside of any solid are always excluded from the result.
|
||||
|
||||
The Volume Maker algorithm is implemented in the class BOPAlgo_MakerVolume. It is based on the General Fuse (GF) algorithm. All the options of the GF algorithm (see @ref occt_algorithms_7_3a "GF Options") are also available in this algorithm.
|
||||
The Volume Maker algorithm is implemented in the class BOPAlgo_MakerVolume. It is based on the General Fuse (GF) algorithm. All the options of the GF algorithm such as possibility to run algorithm in parallel mode, fuzzy option, safe mode, glue options and history support are also available in this algorithm.
|
||||
|
||||
The requirements for the arguments are the same as for the arguments of GF algorithm - they could be of any type, but each argument should be valid and not self-interfered.
|
||||
|
||||
@@ -2163,19 +2054,23 @@ This option is useful e.g. for building a solid from the faces of one shell or f
|
||||
The usage of the algorithm on the API level:
|
||||
~~~~
|
||||
BOPAlgo_MakerVolume aMV;
|
||||
// Set the arguments
|
||||
TopTools_ListOfShape aLS = …; // arguments
|
||||
aMV.SetArguments(aLS);
|
||||
|
||||
// Set options for the algorithm
|
||||
// setting options for this algorithm is similar to setting options for GF algorithm (see "GF Usage" chapter)
|
||||
...
|
||||
// Additional option of the algorithm
|
||||
BOPCol_ListOfShape aLS = …; // arguments
|
||||
Standard_Boolean bRunParallel = Standard_False; /* parallel or single mode (the default value is FALSE)*/
|
||||
Standard_Boolean bIntersect = Standard_True; /* intersect or not the arguments (the default value is TRUE)*/
|
||||
Standard_Real aTol = 0.0; /* fuzzy option (default value is 0)*/
|
||||
Standard_Boolean bSafeMode = Standard_False; /* protect or not the arguments from modification*/
|
||||
BOPAlgo_Glue aGlue = BOPAlgo_GlueOff; /* Glue option to speed up intersection of the arguments*/
|
||||
Standard_Boolean bAvoidInternalShapes = Standard_False; /* Avoid or not the internal for solids shapes in the result*/
|
||||
//
|
||||
aMV.SetArguments(aLS);
|
||||
aMV.SetRunParallel(bRunParallel);
|
||||
aMV.SetIntersect(bIntersect);
|
||||
aMV.SetFuzzyValue(aTol);
|
||||
aMV.SetNonDestructive(bSafeMode);
|
||||
aMV.SetGlue(aGlue);
|
||||
aMV.SetAvoidInternalShapes(bAvoidInternalShapes);
|
||||
|
||||
// Perform the operation
|
||||
aMV.Perform();
|
||||
//
|
||||
aMV.Perform(); //perform the operation
|
||||
if (aMV.HasErrors()) { //check error status
|
||||
return;
|
||||
}
|
||||
@@ -2233,7 +2128,7 @@ The algorithm can also create containers from the connected Cells added into res
|
||||
|
||||
The algorithm has been implemented in the *BOPAlgo_CellsBuilder* class.
|
||||
|
||||
Cells Builder is based on the General Fuse algorithm. Thus all options of the General Fuse algorithm (see @ref occt_algorithms_7_3a "GF Options") are also available in this algorithm.
|
||||
Cells Builder is based on the General Fuse algorithm. Thus all options of the General Fuse algorithm, such as parallel processing mode, fuzzy mode, safe processing mode, gluing mode and history support are also available in this algorithm.
|
||||
|
||||
The requirements for the input shapes are the same as for General Fuse - each argument should be valid in terms of *BRepCheck_Analyzer* and *BOPAlgo_ArgumentAnalyzer*.
|
||||
|
||||
@@ -2253,14 +2148,18 @@ It is possible to create typed Containers from the parts added into result by us
|
||||
Here is the example of the algorithm use on the API level:
|
||||
~~~~
|
||||
BOPAlgo_CellsBuilder aCBuilder;
|
||||
// Set the arguments
|
||||
TopTools_ListOfShape aLS = …; // arguments
|
||||
BOPCol_ListOfShape aLS = …; // arguments
|
||||
Standard_Boolean bRunParallel = Standard_False; /* parallel or single mode (the default value is FALSE)*/
|
||||
Standard_Real aTol = 0.0; /* fuzzy option (the default value is 0)*/
|
||||
Standard_Boolean bSafeMode = Standard_False; /* protect or not the arguments from modification*/
|
||||
BOPAlgo_Glue aGlue = BOPAlgo_GlueOff; /* Glue option to speed up the intersection of arguments*/
|
||||
//
|
||||
aCBuilder.SetArguments(aLS);
|
||||
|
||||
// Set options for the algorithm
|
||||
// setting options for this algorithm is similar to setting options for GF algorithm (see "GF Usage" chapter)
|
||||
...
|
||||
|
||||
aCBuilder.SetRunParallel(bRunParallel);
|
||||
aCBuilder.SetFuzzyValue(aTol);
|
||||
aCBuilder.SetNonDestructive(bSafeMode);
|
||||
aCBuilder.SetGlue(aGlue);
|
||||
//
|
||||
aCBuilder.Perform(); // build splits of all arguments (GF)
|
||||
if (aCBuilder.HasErrors()) { // check error status
|
||||
return;
|
||||
@@ -2270,8 +2169,8 @@ if (aCBuilder.HasErrors()) { // check error status
|
||||
const TopoDS_Shape& anEmptyRes = aCBuilder.Shape(); // empty result, as nothing has been added yet
|
||||
const TopoDS_Shape& anAllCells = aCBuilder.GetAllParts(); //all split parts
|
||||
//
|
||||
TopTools_ListOfShape aLSToTake = ...; // parts of these arguments will be taken into result
|
||||
TopTools_ListOfShape aLSToAvoid = ...; // parts of these arguments will not be taken into result
|
||||
BOPCol_ListOfShape aLSToTake = ...; // parts of these arguments will be taken into result
|
||||
BOPCol_ListOfShape aLSToAvoid = ...; // parts of these arguments will not be taken into result
|
||||
//
|
||||
Standard_Integer iMaterial = 1; // defines the material for the cells
|
||||
Standard_Boolean bUpdate = Standard_False; // defines whether to update the result right now or not
|
||||
@@ -2819,63 +2718,6 @@ To enable the safe processing mode for the operation in DRAW, it is necessary to
|
||||
bnondestructive 1
|
||||
~~~~
|
||||
|
||||
@subsection occt_algorithms_11a_4 Disabling check of the input solids for inverted status
|
||||
|
||||
By default, all input solids are checked for inverted status, i.e. the solids are classified to understand if they are holes in the space (negative volumes) or normal solids (positive volumes). The possibility to disable the check of the input solids for inverted status is the advanced option in Boolean Operation component. This option can be applied to all Basic operations such as General Fuse, Splitting, Boolean, Section, Maker Volume, Cells building.
|
||||
This option allows avoiding time-consuming classification of the input solids and operate with them as with positive volumes, saving up to 10 percent of time on the cases with big number of input solids.
|
||||
|
||||
The classification should be disabled only if the user is sure that there are no negative volumes among the input solids, otherwise the result may be invalid.
|
||||
|
||||
@subsubsection occt_algorithms_11a_4_1 Usage
|
||||
|
||||
#### API level
|
||||
|
||||
To enable/disable the classification of the input solids it is necessary to call *SetCheckInverted()* method with the appropriate value:
|
||||
~~~~
|
||||
BOPAlgo_Builder aGF;
|
||||
//
|
||||
....
|
||||
// disabling the classification of the input solid
|
||||
aGF.SetCheckInverted(Standard_False);
|
||||
//
|
||||
....
|
||||
~~~~
|
||||
|
||||
#### TCL level
|
||||
To enable/disable the classification of the solids in DRAW, it is necessary to call the *bcheckinverted* command with appropriate value:
|
||||
* 0 - disabling the classification;
|
||||
* 1 - default value, enabling the classification.
|
||||
|
||||
~~~~
|
||||
bcheckinverted 0
|
||||
~~~~
|
||||
|
||||
@subsection occt_algorithms_11a_5_obb Usage of Oriented Bounding Boxes
|
||||
|
||||
Since Oriented Bounding Boxes are usually much tighter than Axes Aligned Bounding Boxes (for more information on OBB please see the @ref occt_modat_6 "Bounding boxes" chapter of Modeling data User guide) its usage can significantly speed-up the intersection stage of the operation by reducing the number of interfering objects.
|
||||
|
||||
@subsubsection occt_algorithms_11a_5_obb_1 Usage
|
||||
|
||||
#### API level
|
||||
To enable/disable the usage of OBB in the operation it is necessary to call the *SetUseOBB()* method with the approriate value:
|
||||
~~~~
|
||||
BOPAlgo_Builder aGF;
|
||||
//
|
||||
....
|
||||
// Enabling the usage of OBB in the operation
|
||||
aGF.SetUseOBB(Standard_True);
|
||||
//
|
||||
....
|
||||
~~~~
|
||||
|
||||
#### TCL level
|
||||
To enable/disable the usage of OBB in the operation in DRAW it is necessary to call the *buseobb* command with the approriate value:
|
||||
* 0 - disabling the usage of OBB;
|
||||
* 1 - enabling the usage of OBB.
|
||||
~~~~
|
||||
buseobb 1
|
||||
~~~~
|
||||
|
||||
@section occt_algorithms_ers Errors and warnings reporting system
|
||||
|
||||
The chapter describes the Error/Warning reporting system of the algorithms in the Boolean Component.
|
||||
@@ -2929,148 +2771,6 @@ Warning: The positioning of the shapes leads to creation of small edges without
|
||||
~~~~
|
||||
|
||||
|
||||
@section occt_algorithms_history History Information
|
||||
|
||||
All operations in Boolean Component support @ref occt_modalg_hist "History information". This chapter describes how the History is filled for these operations.
|
||||
|
||||
Additionally to Vertices, Edges and Faces the history is also available for the Solids.
|
||||
|
||||
The rules for filling the History information about Deleted and Modified shapes are the same as for the API algorithms.
|
||||
|
||||
Only the rules for Generated shapes require clarification.
|
||||
In terms of the algorithms in Boolean Component the shape from the arguments can have Generated shapes only if these new shapes
|
||||
have been obtained as a result of pure intersection (not overlapping) of this shape with any other shapes from arguments. Thus, the Generated shapes are always:
|
||||
* VERTICES created from the intersection points and may be Generated from edges and faces only;
|
||||
* EDGES created from the intersection edges and may be Generated from faces only.
|
||||
|
||||
So, only EDGES and FACES could have information about Generated shapes. For all other types of shapes the list of Generated shapes will be empty.
|
||||
|
||||
@subsection occt_algorithms_history_ex Examples
|
||||
|
||||
Here are some examples illustrating the History information.
|
||||
|
||||
@subsubsection occt_algorithms_history_ex_del Deleted shapes
|
||||
|
||||
The result of CUT operation of two overlapping planar faces (see the example below) does not contain any parts from the tool face. Thus, the tool face is considered as Deleted.
|
||||
If the faces are not fully coinciding, the result must contain some parts of the object face. In this case object face will be considered as not deleted.
|
||||
But if the faces are fully coinciding, the result must be empty, and both faces will be considered as Deleted.
|
||||
|
||||
Example of the overlapping faces:
|
||||
|
||||
~~~~
|
||||
plane p 0 0 0 0 0 1
|
||||
mkface f1 p -10 10 -10 10
|
||||
mkface f2 p 0 20 -10 10
|
||||
|
||||
bclearobjects
|
||||
bcleartools
|
||||
baddobjects f1
|
||||
baddtools f2
|
||||
bfillds
|
||||
bbop r 2
|
||||
|
||||
savehistory cut_hist
|
||||
isdeleted cut_hist f1
|
||||
# Not deleted
|
||||
|
||||
isdeleted cut_hist f2
|
||||
# Deleted
|
||||
~~~~
|
||||
|
||||
@subsubsection occt_algorithms_history_ex_modif Modified shapes
|
||||
|
||||
In the FUSE operation of two edges intersecting in one point (see the example below), both edges will be split by the intersection point. All these splits will be contained in the result.
|
||||
Thus, each of the input edges will be Modified into its two splits.
|
||||
But in the CUT operation on the same edges, the tool edge will be Deleted from the result and, thus, will not have any Modified shapes.
|
||||
|
||||
Example of the intersecting edges:
|
||||
~~~~
|
||||
line l1 0 0 0 1 0 0
|
||||
mkedge e1 l1 -10 10
|
||||
|
||||
line l2 0 0 0 0 1 0
|
||||
mkedge e2 l2 -10 10
|
||||
|
||||
bclearobjects
|
||||
bcleartools
|
||||
baddobjects e1
|
||||
baddtools e2
|
||||
bfillds
|
||||
|
||||
# fuse operation
|
||||
bbop r 1
|
||||
|
||||
savehistory fuse_hist
|
||||
|
||||
modified m1 fuse_hist e1
|
||||
nbshapes m1
|
||||
# EDGES: 2
|
||||
|
||||
modified m2 fuse_hist e2
|
||||
nbshapes m2
|
||||
# EDGES: 2
|
||||
|
||||
# cut operation
|
||||
bbop r 2
|
||||
|
||||
savehistory cut_hist
|
||||
|
||||
modified m1 cut_hist e1
|
||||
nbshapes m1
|
||||
# EDGES: 2
|
||||
|
||||
modified m2 cut_hist e2
|
||||
# The shape has not been modified
|
||||
~~~~
|
||||
|
||||
|
||||
@subsubsection occt_algorithms_history_gen Generated shapes
|
||||
|
||||
The two intersecting edges will both have the intersection vertices Generated from them.
|
||||
|
||||
As for the operation with intersecting faces, consider the following example:
|
||||
|
||||
~~~~
|
||||
plane p1 0 0 0 0 0 1
|
||||
mkface f1 p1 -10 10 -10 10
|
||||
|
||||
plane p2 0 0 0 1 0 0
|
||||
mkface f2 p2 -10 10 -10 10
|
||||
|
||||
bclearobjects
|
||||
bcleartools
|
||||
baddobjects f1
|
||||
baddtools f2
|
||||
bfillds
|
||||
|
||||
# fuse operation
|
||||
bbop r 1
|
||||
|
||||
savehistory fuse_hist
|
||||
|
||||
generated gf1 fuse_hist f1
|
||||
nbshapes gf1
|
||||
# EDGES: 1
|
||||
|
||||
generated gf2 fuse_hist f2
|
||||
nbshapes gf2
|
||||
# EDGES: 1
|
||||
|
||||
|
||||
# common operation - result is empty
|
||||
bbop r 0
|
||||
|
||||
savehistory com_hist
|
||||
|
||||
generated gf1 com_hist f1
|
||||
# No shapes were generated from the shape
|
||||
|
||||
generated gf2 com_hist f2
|
||||
# No shapes were generated from the shape
|
||||
|
||||
~~~~
|
||||
|
||||
|
||||
@section occt_algorithms_11b Usage
|
||||
|
||||
The chapter contains some examples of the OCCT Boolean Component usage. The usage is possible on two levels: C++ and Tcl.
|
||||
@@ -3113,18 +2813,41 @@ The following example illustrates how to use General Fuse operator:
|
||||
#include <TopTools_ListOfShape.hxx>
|
||||
#include <BRepAlgoAPI_BuilderAlgo.hxx>
|
||||
{…
|
||||
Standard_Boolean bRunParallel;
|
||||
Standard_Real aFuzzyValue;
|
||||
BRepAlgoAPI_BuilderAlgo aBuilder;
|
||||
//
|
||||
// prepare the arguments
|
||||
TopTools_ListOfShape& aLS=…;
|
||||
//
|
||||
bRunParallel=Standard_True;
|
||||
aFuzzyValue=2.1e-5;
|
||||
//
|
||||
// set the arguments
|
||||
aBuilder.SetArguments(aLS);
|
||||
|
||||
// Set options for the algorithm
|
||||
// setting options on this level is similar to setting options to GF algorithm on low level (see "GF Usage" chapter)
|
||||
...
|
||||
|
||||
// set parallel processing mode
|
||||
// if bRunParallel= Standard_True : the parallel processing is switched on
|
||||
// if bRunParallel= Standard_False : the parallel processing is switched off
|
||||
aBuilder.SetRunParallel(bRunParallel);
|
||||
//
|
||||
// set Fuzzy value
|
||||
// if aFuzzyValue=0.: the Fuzzy option is off
|
||||
// if aFuzzyValue>0.: the Fuzzy option is on
|
||||
aBuilder.SetFuzzyValue(aFuzzyValue);
|
||||
//
|
||||
// safe mode - avoid modification of the arguments
|
||||
Standard_Boolean bSafeMode = Standard_True;
|
||||
// if bSafeMode == Standard_True - the safe mode is switched on
|
||||
// if bSafeMode == Standard_False - the safe mode is switched off
|
||||
aBuilder.SetNonDestructive(bSafeMode);
|
||||
//
|
||||
// gluing options - for coinciding arguments
|
||||
BOPAlgo_GlueEnum aGlueOpt = BOPAlgo_GlueFull;
|
||||
// if aGlueOpt == BOPAlgo_GlueOff - the gluing mode is switched off
|
||||
// if aGlueOpt == BOPAlgo_GlueShift - the gluing mode is switched on
|
||||
// if aGlueOpt == BOPAlgo_GlueFull - the gluing mode is switched on
|
||||
aBuilder.SetGlue(aGlueOpt);
|
||||
//
|
||||
// run the algorithm
|
||||
aBuilder.Build();
|
||||
if (aBuilder.HasErrors()) {
|
||||
@@ -3151,10 +2874,28 @@ bclearobjects; bcleartools;
|
||||
#
|
||||
# set the arguments
|
||||
baddobjects b1 b2 b3
|
||||
|
||||
# set options for the algorithm (see "GF Usage" chapter)
|
||||
...
|
||||
|
||||
# set parallel processing mode
|
||||
# 1: the parallel processing is switched on
|
||||
# 0: the parallel processing is switched off
|
||||
brunparallel 1
|
||||
#
|
||||
# set Fuzzy value
|
||||
# 0. : the Fuzzy option is off
|
||||
# >0. : the Fuzzy option is on
|
||||
bfuzzyvalue 0.
|
||||
#
|
||||
# set safe processing mode
|
||||
bnondestructive 1
|
||||
# set safe mode
|
||||
# 1 - the safe processing mode is switched on
|
||||
# 0 - the safe processing mode is switched off
|
||||
#
|
||||
# set gluing mode
|
||||
bglue 1
|
||||
# set the gluing mode
|
||||
# 1 or 2 - the gluing mode is switched on
|
||||
# 0 - the gluing mode is switched off
|
||||
#
|
||||
# run the algorithm
|
||||
# r is the result of the operation
|
||||
bapibuild r
|
||||
@@ -3183,9 +2924,31 @@ TopTools_ListOfShape& aLSTools = … ;
|
||||
aSplitter.SetArguments(aLSObjects);
|
||||
aSplitter.SetTools(aLSTools);
|
||||
//
|
||||
// Set options for the algorithm
|
||||
// setting options for this algorithm is similar to setting options for GF algorithm (see "GF Usage" chapter)
|
||||
...
|
||||
// set options
|
||||
// parallel processing mode
|
||||
Standard_Boolean bRunParallel = Standard_True;
|
||||
// bRunParallel == Standard_True - the parallel processing is switched on
|
||||
// bRunParallel == Standard_False - the parallel processing is switched off
|
||||
aSplitter.SetRunParallel();
|
||||
//
|
||||
// fuzzy value - additional tolerance for the operation
|
||||
Standard_Real aFuzzyValue = 1.e-5;
|
||||
// if aFuzzyValue == 0. - the Fuzzy option is off
|
||||
// if aFuzzyValue > 0. - the Fuzzy option is on
|
||||
aSplitter.SetFuzzyValue(aFuzzyValue);
|
||||
//
|
||||
// safe mode - avoid modification of the arguments
|
||||
Standard_Boolean bSafeMode = Standard_True;
|
||||
// if bSafeMode == Standard_True - the safe mode is switched on
|
||||
// if bSafeMode == Standard_False - the safe mode is switched off
|
||||
aSplitter.SetNonDestructive(bSafeMode);
|
||||
//
|
||||
// gluing options - for coinciding arguments
|
||||
BOPAlgo_GlueEnum aGlueOpt = BOPAlgo_GlueFull;
|
||||
// if aGlueOpt == BOPAlgo_GlueOff - the gluing mode is switched off
|
||||
// if aGlueOpt == BOPAlgo_GlueShift - the gluing mode is switched on
|
||||
// if aGlueOpt == BOPAlgo_GlueFull - the gluing mode is switched on
|
||||
aSplitter.SetGlue(aGlueOpt);
|
||||
//
|
||||
// run the algorithm
|
||||
aSplitter.Build();
|
||||
@@ -3218,8 +2981,27 @@ baddobjects b1 b2
|
||||
# set the tools
|
||||
baddtools f
|
||||
#
|
||||
# set options for the algorithm (see "GF Usage" chapter)
|
||||
...
|
||||
# set parallel processing mode
|
||||
# 1: the parallel processing is switched on
|
||||
# 0: the parallel processing is switched off
|
||||
brunparallel 1
|
||||
#
|
||||
# set Fuzzy value
|
||||
# 0. : the Fuzzy option is off
|
||||
# >0. : the Fuzzy option is on
|
||||
bfuzzyvalue 0.
|
||||
#
|
||||
# set safe processing mode
|
||||
bnondestructive 1
|
||||
# set safe mode
|
||||
# 1 - the safe processing mode is switched on
|
||||
# 0 - the safe processing mode is switched off
|
||||
#
|
||||
# set gluing mode
|
||||
bglue 1
|
||||
# set the gluing mode
|
||||
# 1 or 2 - the gluing mode is switched on
|
||||
# 0 - the gluing mode is switched off
|
||||
#
|
||||
# run the algorithm
|
||||
# r is the result of the operation
|
||||
@@ -3252,9 +3034,28 @@ The following example illustrates how to use Common operation:
|
||||
aBuilder.SetArguments(aLS);
|
||||
aBuilder.SetTools(aLT);
|
||||
//
|
||||
// Set options for the algorithm
|
||||
// setting options for this algorithm is similar to setting options for GF algorithm (see "GF Usage" chapter)
|
||||
...
|
||||
// set parallel processing mode
|
||||
// if bRunParallel= Standard_True : the parallel processing is switched on
|
||||
// if bRunParallel= Standard_False : the parallel processing is switched off
|
||||
aBuilder.SetRunParallel(bRunParallel);
|
||||
//
|
||||
// set Fuzzy value
|
||||
// if aFuzzyValue=0.: the Fuzzy option is off
|
||||
// if aFuzzyValue>0.: the Fuzzy option is on
|
||||
aBuilder.SetFuzzyValue(aFuzzyValue);
|
||||
//
|
||||
// safe mode - avoid modification of the arguments
|
||||
Standard_Boolean bSafeMode = Standard_True;
|
||||
// if bSafeMode == Standard_True - the safe mode is switched on
|
||||
// if bSafeMode == Standard_False - the safe mode is switched off
|
||||
aBuilder.SetNonDestructive(bSafeMode);
|
||||
//
|
||||
// gluing options - for coinciding arguments
|
||||
BOPAlgo_GlueEnum aGlueOpt = BOPAlgo_GlueFull;
|
||||
// if aGlueOpt == BOPAlgo_GlueOff - the gluing mode is switched off
|
||||
// if aGlueOpt == BOPAlgo_GlueShift - the gluing mode is switched on
|
||||
// if aGlueOpt == BOPAlgo_GlueFull - the gluing mode is switched on
|
||||
aBuilder.SetGlue(aGlueOpt);
|
||||
//
|
||||
// run the algorithm
|
||||
aBuilder.Build();
|
||||
@@ -3284,8 +3085,27 @@ bclearobjects; bcleartools;
|
||||
baddobjects b1 b3
|
||||
baddtools b2
|
||||
#
|
||||
# set options for the algorithm (see "GF Usage" chapter)
|
||||
...
|
||||
# set parallel processing mode
|
||||
# 1: the parallel processing is switched on
|
||||
# 0: the parallel processing is switched off
|
||||
brunparallel 1
|
||||
#
|
||||
# set Fuzzy value
|
||||
# 0. : the Fuzzy option is off
|
||||
# >0. : the Fuzzy option is on
|
||||
bfuzzyvalue 0.
|
||||
#
|
||||
# set safe processing mode
|
||||
bnondestructive 1
|
||||
# set safe mode
|
||||
# 1 - the safe processing mode is switched on
|
||||
# 0 - the safe processing mode is switched off
|
||||
#
|
||||
# set gluing mode
|
||||
bglue 1
|
||||
# set the gluing mode
|
||||
# 1 or 2 - the gluing mode is switched on
|
||||
# 0 - the gluing mode is switched off
|
||||
#
|
||||
# run the algorithm
|
||||
# r is the result of the operation
|
||||
@@ -3319,9 +3139,28 @@ The following example illustrates how to use Fuse operation:
|
||||
aBuilder.SetArguments(aLS);
|
||||
aBuilder.SetTools(aLT);
|
||||
//
|
||||
// Set options for the algorithm
|
||||
// setting options for this algorithm is similar to setting options for GF algorithm (see "GF Usage" chapter)
|
||||
...
|
||||
// set parallel processing mode
|
||||
// if bRunParallel= Standard_True : the parallel processing is switched on
|
||||
// if bRunParallel= Standard_False : the parallel processing is switched off
|
||||
aBuilder.SetRunParallel(bRunParallel);
|
||||
//
|
||||
// set Fuzzy value
|
||||
// if aFuzzyValue=0.: the Fuzzy option is off
|
||||
// if aFuzzyValue>0.: the Fuzzy option is on
|
||||
aBuilder.SetFuzzyValue(aFuzzyValue);
|
||||
//
|
||||
// safe mode - avoid modification of the arguments
|
||||
Standard_Boolean bSafeMode = Standard_True;
|
||||
// if bSafeMode == Standard_True - the safe mode is switched on
|
||||
// if bSafeMode == Standard_False - the safe mode is switched off
|
||||
aBuilder.SetNonDestructive(bSafeMode);
|
||||
//
|
||||
// gluing options - for coinciding arguments
|
||||
BOPAlgo_GlueEnum aGlueOpt = BOPAlgo_GlueFull;
|
||||
// if aGlueOpt == BOPAlgo_GlueOff - the gluing mode is switched off
|
||||
// if aGlueOpt == BOPAlgo_GlueShift - the gluing mode is switched on
|
||||
// if aGlueOpt == BOPAlgo_GlueFull - the gluing mode is switched on
|
||||
aBuilder.SetGlue(aGlueOpt);
|
||||
//
|
||||
// run the algorithm
|
||||
aBuilder.Build();
|
||||
@@ -3351,8 +3190,27 @@ bclearobjects; bcleartools;
|
||||
baddobjects b1 b3
|
||||
baddtools b2
|
||||
#
|
||||
# set options for the algorithm (see "GF Usage" chapter)
|
||||
...
|
||||
# set parallel processing mode
|
||||
# 1: the parallel processing is switched on
|
||||
# 0: the parallel processing is switched off
|
||||
brunparallel 1
|
||||
#
|
||||
# set Fuzzy value
|
||||
# 0. : the Fuzzy option is off
|
||||
# >0. : the Fuzzy option is on
|
||||
bfuzzyvalue 0.
|
||||
#
|
||||
# set safe processing mode
|
||||
bnondestructive 1
|
||||
# set safe mode
|
||||
# 1 - the safe processing mode is switched on
|
||||
# 0 - the safe processing mode is switched off
|
||||
#
|
||||
# set gluing mode
|
||||
bglue 1
|
||||
# set the gluing mode
|
||||
# 1 or 2 - the gluing mode is switched on
|
||||
# 0 - the gluing mode is switched off
|
||||
#
|
||||
# run the algorithm
|
||||
# r is the result of the operation
|
||||
@@ -3386,9 +3244,28 @@ The following example illustrates how to use Cut operation:
|
||||
aBuilder.SetArguments(aLS);
|
||||
aBuilder.SetTools(aLT);
|
||||
//
|
||||
// Set options for the algorithm
|
||||
// setting options for this algorithm is similar to setting options for GF algorithm (see "GF Usage" chapter)
|
||||
...
|
||||
// set parallel processing mode
|
||||
// if bRunParallel= Standard_True : the parallel processing is switched on
|
||||
// if bRunParallel= Standard_False : the parallel processing is switched off
|
||||
aBuilder.SetRunParallel(bRunParallel);
|
||||
//
|
||||
// set Fuzzy value
|
||||
// if aFuzzyValue=0.: the Fuzzy option is off
|
||||
// if aFuzzyValue>0.: the Fuzzy option is on
|
||||
aBuilder.SetFuzzyValue(aFuzzyValue);
|
||||
//
|
||||
// safe mode - avoid modification of the arguments
|
||||
Standard_Boolean bSafeMode = Standard_True;
|
||||
// if bSafeMode == Standard_True - the safe mode is switched on
|
||||
// if bSafeMode == Standard_False - the safe mode is switched off
|
||||
aBuilder.SetNonDestructive(bSafeMode);
|
||||
//
|
||||
// gluing options - for coinciding arguments
|
||||
BOPAlgo_GlueEnum aGlueOpt = BOPAlgo_GlueFull;
|
||||
// if aGlueOpt == BOPAlgo_GlueOff - the gluing mode is switched off
|
||||
// if aGlueOpt == BOPAlgo_GlueShift - the gluing mode is switched on
|
||||
// if aGlueOpt == BOPAlgo_GlueFull - the gluing mode is switched on
|
||||
aBuilder.SetGlue(aGlueOpt);
|
||||
//
|
||||
// run the algorithm
|
||||
aBuilder.Build();
|
||||
@@ -3418,8 +3295,27 @@ bclearobjects; bcleartools;
|
||||
baddobjects b1 b3
|
||||
baddtools b2
|
||||
#
|
||||
# set options for the algorithm (see "GF Usage" chapter)
|
||||
...
|
||||
# set parallel processing mode
|
||||
# 1: the parallel processing is switched on
|
||||
# 0: the parallel processing is switched off
|
||||
brunparallel 1
|
||||
#
|
||||
# set Fuzzy value
|
||||
# 0. : the Fuzzy option is off
|
||||
# >0. : the Fuzzy option is on
|
||||
bfuzzyvalue 0.
|
||||
#
|
||||
# set safe processing mode
|
||||
bnondestructive 1
|
||||
# set safe mode
|
||||
# 1 - the safe processing mode is switched on
|
||||
# 0 - the safe processing mode is switched off
|
||||
# set gluing mode
|
||||
#
|
||||
bglue 1
|
||||
# set the gluing mode
|
||||
# 1 or 2 - the gluing mode is switched on
|
||||
# 0 - the gluing mode is switched off
|
||||
#
|
||||
# run the algorithm
|
||||
# r is the result of the operation
|
||||
@@ -3454,9 +3350,28 @@ The following example illustrates how to use Section operation:
|
||||
aBuilder.SetArguments(aLS);
|
||||
aBuilder.SetTools(aLT);
|
||||
//
|
||||
// Set options for the algorithm
|
||||
// setting options for this algorithm is similar to setting options for GF algorithm (see "GF Usage" chapter)
|
||||
...
|
||||
// set parallel processing mode
|
||||
// if bRunParallel= Standard_True : the parallel processing is switched on
|
||||
// if bRunParallel= Standard_False : the parallel processing is switched off
|
||||
aBuilder.SetRunParallel(bRunParallel);
|
||||
//
|
||||
// set Fuzzy value
|
||||
// if aFuzzyValue=0.: the Fuzzy option is off
|
||||
// if aFuzzyValue>0.: the Fuzzy option is on
|
||||
aBuilder.SetFuzzyValue(aFuzzyValue);
|
||||
//
|
||||
// safe mode - avoid modification of the arguments
|
||||
Standard_Boolean bSafeMode = Standard_True;
|
||||
// if bSafeMode == Standard_True - the safe mode is switched on
|
||||
// if bSafeMode == Standard_False - the safe mode is switched off
|
||||
aBuilder.SetNonDestructive(bSafeMode);
|
||||
//
|
||||
// gluing options - for coinciding arguments
|
||||
BOPAlgo_GlueEnum aGlueOpt = BOPAlgo_GlueFull;
|
||||
// if aGlueOpt == BOPAlgo_GlueOff - the gluing mode is switched off
|
||||
// if aGlueOpt == BOPAlgo_GlueShift - the gluing mode is switched on
|
||||
// if aGlueOpt == BOPAlgo_GlueFull - the gluing mode is switched on
|
||||
aBuilder.SetGlue(aGlueOpt);
|
||||
//
|
||||
// run the algorithm
|
||||
aBuilder.Build();
|
||||
@@ -3486,8 +3401,27 @@ bclearobjects; bcleartools;
|
||||
baddobjects b1 b3
|
||||
baddtools b2
|
||||
#
|
||||
# set options for the algorithm (see "GF Usage" chapter)
|
||||
...
|
||||
# set parallel processing mode
|
||||
# 1: the parallel processing is switched on
|
||||
# 0: the parallel processing is switched off
|
||||
brunparallel 1
|
||||
#
|
||||
# set Fuzzy value
|
||||
# 0. : the Fuzzy option is off
|
||||
# >0. : the Fuzzy option is on
|
||||
bfuzzyvalue 0.
|
||||
#
|
||||
# set safe processing mode
|
||||
bnondestructive 1
|
||||
# set safe mode
|
||||
# 1 - the safe processing mode is switched on
|
||||
# 0 - the safe processing mode is switched off
|
||||
#
|
||||
# set gluing mode
|
||||
bglue 1
|
||||
# set the gluing mode
|
||||
# 1 or 2 - the gluing mode is switched on
|
||||
# 0 - the gluing mode is switched off
|
||||
#
|
||||
# run the algorithm
|
||||
# r is the result of the operation
|
||||
|
@@ -5529,7 +5529,6 @@ surface_radius c pi 3 c1 c2
|
||||
|
||||
* **intersect** computes intersections of surfaces;
|
||||
* **2dintersect** computes intersections of 2d curves.
|
||||
* **intconcon** computes intersections of 2d conic curves.
|
||||
|
||||
@subsubsection occt_draw_6_7_1 intersect
|
||||
|
||||
@@ -5548,43 +5547,21 @@ plane p 0 0 40 0 1 5
|
||||
intersect e c p
|
||||
~~~~~
|
||||
|
||||
@subsubsection occt_draw_6_7_2 2dintersect
|
||||
@subsubsection occt_draw_6_7_2 dintersect
|
||||
|
||||
Syntax:
|
||||
~~~~~
|
||||
2dintersect curve1 [curve2] [-tol tol] [-state]
|
||||
~~~~~
|
||||
|
||||
Displays the intersection points between 2d curves.
|
||||
Options:
|
||||
-tol - allows changing the intersection tolerance (default value is 1.e-3);
|
||||
-state - allows printing the intersection state for each point.
|
||||
|
||||
**Example:**
|
||||
~~~~~
|
||||
# intersect two 2d ellipses
|
||||
ellipse e1 0 0 5 2
|
||||
ellipse e2 0 0 0 1 5 2
|
||||
2dintersect e1 e2 -tol 1.e-10 -state
|
||||
~~~~~
|
||||
|
||||
@subsubsection occt_draw_6_7_3 intconcon
|
||||
|
||||
Syntax:
|
||||
~~~~~
|
||||
intconcon curve1 curve2
|
||||
2dintersect curve1 curve2
|
||||
~~~~~
|
||||
|
||||
Displays the intersection points between two 2d curves.
|
||||
Curves must be only conic sections: 2d lines, circles, ellipses,
|
||||
hyperbolas, parabolas. Algorithm from IntAna2d_AnaIntersection is used.
|
||||
|
||||
**Example:**
|
||||
~~~~~
|
||||
# intersect two 2d ellipses
|
||||
ellipse e1 0 0 5 2
|
||||
ellipse e2 0 0 0 1 5 2
|
||||
intconcon e1 e2
|
||||
2dintersect e1 e2
|
||||
~~~~~
|
||||
|
||||
@subsection occt_draw_6_8 Approximations
|
||||
@@ -5844,7 +5821,6 @@ The following topics are covered in the eight sections of this chapter:
|
||||
* Transformations of shapes: translation, copy, etc.
|
||||
* Topological operations, or booleans.
|
||||
* Drafting and blending.
|
||||
* Defeaturing.
|
||||
* Analysis of shapes.
|
||||
|
||||
|
||||
@@ -7323,33 +7299,13 @@ buildevol
|
||||
~~~~~
|
||||
|
||||
|
||||
@subsection occt_draw_defeaturing Defeaturing
|
||||
|
||||
Draw command **removefeatures** is intended for performing @ref occt_modalg_defeaturing "3D Model Defeaturing", i.e. it performs the removal of the requested features from the shape.
|
||||
|
||||
Syntax:
|
||||
~~~~
|
||||
removefeatures result shape f1 f2 ... [-nohist] [-parallel]
|
||||
|
||||
Where:
|
||||
result - result of the operation;
|
||||
shape - the shape to remove the features from;
|
||||
f1, f2 - features to remove from the shape;
|
||||
|
||||
Options:
|
||||
nohist - disables the history collection;
|
||||
parallel - enables the parallel processing mode.
|
||||
~~~~
|
||||
|
||||
|
||||
@subsection occt_draw_7_9 Analysis of topology and geometry
|
||||
|
||||
Analysis of shapes includes commands to compute length, area, volumes and inertial properties, as well as to compute some aspects impacting shape validity.
|
||||
|
||||
* Use **lprops**, **sprops**, **vprops** to compute integral properties.
|
||||
* Use **bounding** to compute and to display the bounding box of a shape.
|
||||
* Use **bounding** to display the bounding box of a shape.
|
||||
* Use **distmini** to calculate the minimum distance between two shapes.
|
||||
* Use **isbbinterf** to check if the two shapes are interfered by their bounding boxes.
|
||||
* Use **xdistef**, **xdistcs**, **xdistcc**, **xdistc2dc2dss**, **xdistcc2ds** to check the distance between two objects on even grid.
|
||||
* Use **checkshape** to check validity of the shape.
|
||||
* Use **tolsphere** to see the tolerance spheres of all vertices in the shape.
|
||||
@@ -7402,135 +7358,20 @@ I.Z = 314159.265357595
|
||||
|
||||
Syntax:
|
||||
~~~~~
|
||||
bounding {-s shape | -c xmin ymin zmin xmax ymax zmax} [-obb] [-shape name] [-dump] [-notriangulation] [-perfmeter name NbIters] [-save xmin ymin zmin xmax ymax zmax] [-nodraw] [-optimal] [-exttoler]
|
||||
bounding shape
|
||||
~~~~~
|
||||
|
||||
Computes and displays the bounding box (BndBox) of a shape. The bounding box is a cuboid circumscribes the source shape.
|
||||
Generaly, bounding boxes can be divided on two main types:
|
||||
- axis-aligned BndBox (AABB). I.e. the box whose edges are parallel to the some axis of World Coordinate System (WCS);
|
||||
- oriented BndBox (OBB). I.e. not AABB.
|
||||
Displays the bounding box of a shape. The bounding box is a cuboid created with faces parallel to the x, y, and z planes. The command returns the dimension values of the the box, *xmin ymin zmin xmax ymax zmax.*
|
||||
|
||||
Detailed information about this command is availabe in DRAW help-system (enter "help bounding" in DRAW-application).
|
||||
|
||||
**Example 1: Creation of AABB with given corners**
|
||||
**Example:**
|
||||
~~~~~
|
||||
bounding -c 50 100 30 180 200 100 -shape result
|
||||
# look at the box
|
||||
vdisplay result
|
||||
vfit
|
||||
vsetdispmode 1
|
||||
~~~~~
|
||||
|
||||
**Example 2: Compare AABB and OBB**
|
||||
~~~~~
|
||||
# Create a torus and rotate it
|
||||
# bounding box of a torus
|
||||
ptorus t 20 5
|
||||
trotate t 5 10 15 1 1 1 28
|
||||
|
||||
# Create AABB from the torus
|
||||
bounding -s t -shape ra -dump -save x1 y1 z1 x2 y2 z2
|
||||
==Axes-aligned bounding box
|
||||
==X-range: -26.888704600189307 23.007685197265488
|
||||
==Y-range: -22.237699567214314 27.658690230240481
|
||||
==Z-range: -13.813966507560762 12.273995247458407
|
||||
|
||||
# Obtain the boundaries
|
||||
dump x1 y1 z1 x2 y2 z2
|
||||
==*********** Dump of x1 *************
|
||||
==-26.8887046001893
|
||||
|
||||
==*********** Dump of y1 *************
|
||||
==-22.2376995672143
|
||||
|
||||
==*********** Dump of z1 *************
|
||||
==-13.8139665075608
|
||||
|
||||
==*********** Dump of x2 *************
|
||||
==23.0076851972655
|
||||
|
||||
==*********** Dump of y2 *************
|
||||
==27.6586902302405
|
||||
|
||||
==*********** Dump of z2 *************
|
||||
==12.2739952474584
|
||||
|
||||
# Compute the volume of AABB
|
||||
vprops ra 1.0e-12
|
||||
==Mass : 64949.9
|
||||
|
||||
# Let us check this value
|
||||
dval (x2-x1)*(y2-y1)*(z2-z1)
|
||||
==64949.886543606823
|
||||
~~~~~
|
||||
|
||||
The same result is obtained.
|
||||
|
||||
~~~~~
|
||||
# Create OBB from the torus
|
||||
bounding -s t -shape ro -dump -obb
|
||||
==Oriented bounding box
|
||||
==Center: -1.9405097014619073 2.7104953315130857 -0.76998563005117782
|
||||
==X-axis: 0.31006700219833244 -0.23203206410428409 0.9219650619059514
|
||||
==Y-axis: 0.098302309139513336 -0.95673739537318336 -0.27384340837854165
|
||||
==Z-axis: 0.94561890324040099 0.17554109923901748 -0.27384340837854493
|
||||
==Half X: 5.0000002000000077
|
||||
==Half Y: 26.783728747002169
|
||||
==Half Z: 26.783728747002165
|
||||
|
||||
# Compute the volume of OBB
|
||||
vprops ro 1.0e-12
|
||||
==Mass : 28694.7
|
||||
~~~~~
|
||||
|
||||
As we can see, the volume of OBB is significantly less than the volume of AABB.
|
||||
|
||||
@subsubsection occt_draw_7_9_2a isbbinterf
|
||||
|
||||
Syntax:
|
||||
~~~~~
|
||||
isbbinterf shape1 shape2 [-o]
|
||||
~~~~~
|
||||
|
||||
Checks whether the bounding-boxes created from the given shapes are interfered. If "-o"-option is switched on then the oriented boxes will be checked. Otherwise, axes-aligned boxes will be checked.
|
||||
|
||||
**Example 1: Not interfered AABB**
|
||||
~~~~~
|
||||
box b1 100 60 140 20 10 80
|
||||
box b2 210 200 80 120 60 90
|
||||
isbbinterf b1 b2
|
||||
==The shapes are NOT interfered by AABB.
|
||||
~~~~~
|
||||
|
||||
**Example 2: Interfered AABB**
|
||||
~~~~~
|
||||
box b1 300 300 300
|
||||
box b2 100 100 100 50 50 50
|
||||
isbbinterf b1 b2
|
||||
==The shapes are interfered by AABB.
|
||||
~~~~~
|
||||
|
||||
**Example 3: Not interfered OBB**
|
||||
~~~~~
|
||||
box b1 100 150 200
|
||||
copy b1 b2
|
||||
trotate b1 -150 -150 -150 1 2 3 -40
|
||||
trotate b2 -150 -150 -150 1 5 2 60
|
||||
|
||||
# Check of interference
|
||||
isbbinterf b1 b2 -o
|
||||
==The shapes are NOT interfered by OBB.
|
||||
~~~~~
|
||||
|
||||
**Example 4: Interfered OBB**
|
||||
~~~~~
|
||||
box b1 100 150 200
|
||||
copy b1 b2
|
||||
trotate b1 -50 -50 -50 1 1 1 -40
|
||||
trotate b2 -50 -50 -50 1 1 1 60
|
||||
|
||||
# Check of interference
|
||||
isbbinterf b1 b2 -o
|
||||
==The shapes are interfered by OBB.
|
||||
bounding t
|
||||
==-27.059805107309852 -27.059805107309852 -
|
||||
5.0000001000000003
|
||||
==27.059805107309852 27.059805107309852
|
||||
5.0000001000000003
|
||||
~~~~~
|
||||
|
||||
@subsubsection occt_draw_7_9_3 distmini
|
||||
@@ -8032,163 +7873,6 @@ Options:
|
||||
* -a AngTol - angular tolerance used for distinguishing the planar faces;
|
||||
* -s Shared(0/1) - boolean flag which defines whether the input edges are already shared or have to be intersected.
|
||||
|
||||
@subsection occt_draw_hist History commands
|
||||
|
||||
Draw module for @ref occt_modalg_hist "History Information support" includes the command to save history into a drawable object and the actual history commands:
|
||||
|
||||
* *savehistory*;
|
||||
* *isdeleted*;
|
||||
* *modified*;
|
||||
* *generated*.
|
||||
|
||||
@subsubsection occt_draw_hist_save savehistory
|
||||
|
||||
*savehistory* command saves the history from the session into a drawable object with the given name.
|
||||
|
||||
Syntax:
|
||||
~~~~
|
||||
savehistory : savehistory name
|
||||
~~~~
|
||||
|
||||
If the history of some operation is needed the *savehistory* command should be called after the command performing the operation.
|
||||
If some other operation supporting history will be performed before the history of first operation is saved it will be overwritten with the new history.
|
||||
|
||||
Example:
|
||||
~~~~
|
||||
box b1 10 10 10
|
||||
box b2 5 0 0 10 10 15
|
||||
bfuse r b1 b2
|
||||
savehistory fuse_hist
|
||||
|
||||
dump fuse_hist
|
||||
#*********** Dump of fuse_hist *************
|
||||
# History contains:
|
||||
# - 4 Deleted shapes;
|
||||
# - 20 Modified shapes;
|
||||
# - 6 Generated shapes.
|
||||
|
||||
unifysamedom ru r
|
||||
savehistory usd_hist
|
||||
dump usd_hist
|
||||
#*********** Dump of usd_hist *************
|
||||
#History contains:
|
||||
# - 14 Deleted shapes;
|
||||
# - 28 Modified shapes;
|
||||
# - 0 Generated shapes.
|
||||
~~~~
|
||||
|
||||
@subsubsection occt_draw_hist_isdel isdeleted
|
||||
|
||||
*isdeleted* command checks if the given shape has been deleted in the given history.
|
||||
|
||||
Syntax:
|
||||
~~~~
|
||||
isdeleted : isdeleted history shape
|
||||
~~~~
|
||||
|
||||
Example:
|
||||
~~~~
|
||||
box b1 4 4 4 2 2 2
|
||||
box b2 10 10 10
|
||||
bcommon r b1 b2
|
||||
|
||||
savehistory com_hist
|
||||
# all vertices, edges and faces of the b2 are deleted
|
||||
foreach s [join [list [explode b2 v] [explode b2 e] [explode b2 f] ] ] {
|
||||
isdeleted com_hist $s
|
||||
# Deleted
|
||||
}
|
||||
~~~~
|
||||
|
||||
@subsubsection occt_draw_hist_mod modified
|
||||
|
||||
*modified* command returns the shapes Modified from the given shape in the given history. All modified shapes are put into compound. If the shape has not been modified the resulting compound will be empty. Note that if the shape has been modified into a single shape only, it will be returned without enclosure into compound.
|
||||
|
||||
Syntax:
|
||||
~~~~
|
||||
modified : modified modified_shapes history shape
|
||||
~~~~
|
||||
|
||||
Example:
|
||||
~~~~
|
||||
box b 10 10 10
|
||||
explode b e
|
||||
fillet r b 2 b_1
|
||||
|
||||
savehistory fillet_hist
|
||||
|
||||
explode b f
|
||||
|
||||
modified m3 fillet_hist b_3
|
||||
modified m5 fillet_hist b_5
|
||||
~~~~
|
||||
|
||||
@subsubsection occt_draw_hist_gen generated
|
||||
|
||||
*generated* command returns the shapes Generated from the given shape in the given history. All generated shapes are put into compound. If no shapes have been generated from the shape the resulting compound will be empty. Note that if the shape has generated a single shape only, it will be returned without enclosure into compound.
|
||||
|
||||
Syntax:
|
||||
~~~~
|
||||
generated : generated generated_shapes history shape
|
||||
~~~~
|
||||
|
||||
Example:
|
||||
~~~~
|
||||
polyline w1 0 0 0 10 0 0 10 10 0
|
||||
polyline w2 5 1 10 9 1 10 9 5 10
|
||||
|
||||
thrusections r 0 0 w1 w2
|
||||
|
||||
savehistory loft_hist
|
||||
|
||||
explode w1 e
|
||||
explode w2 e
|
||||
|
||||
generated g11 loft_hist w1_1
|
||||
generated g12 loft_hist w1_2
|
||||
generated g21 loft_hist w2_1
|
||||
generated g22 loft_hist w2_2
|
||||
|
||||
compare g11 g21
|
||||
# equal shapes
|
||||
|
||||
compare g12 g22
|
||||
# equal shapes
|
||||
~~~~
|
||||
|
||||
@subsubsection occt_draw_hist_extension Enabling Draw history support for the algorithms
|
||||
|
||||
Draw History mechanism allows fast and easy enabling of the Draw history support for the OCCT algorithms supporting standard history methods.
|
||||
To enable History commands for the algorithm it is necessary to save the history of the algorithm into the session.
|
||||
For that, it is necessary to put the following code into the command implementation just after the command is done:
|
||||
~~~~
|
||||
BRepTest_Objects::SetHistory(ListOfArguments, Algorithm);
|
||||
~~~~
|
||||
|
||||
Here is the example of how it is done in the command performing Split operation (see implementation of the *bapisplit* command):
|
||||
~~~~
|
||||
BRepAlgoAPI_Splitter aSplitter;
|
||||
// setting arguments
|
||||
aSplitter.SetArguments(BOPTest_Objects::Shapes());
|
||||
// setting tools
|
||||
aSplitter.SetTools(BOPTest_Objects::Tools());
|
||||
|
||||
// setting options
|
||||
aSplitter.SetRunParallel(BOPTest_Objects::RunParallel());
|
||||
aSplitter.SetFuzzyValue(BOPTest_Objects::FuzzyValue());
|
||||
aSplitter.SetNonDestructive(BOPTest_Objects::NonDestructive());
|
||||
aSplitter.SetGlue(BOPTest_Objects::Glue());
|
||||
aSplitter.SetCheckInverted(BOPTest_Objects::CheckInverted());
|
||||
aSplitter.SetUseOBB(BOPTest_Objects::UseOBB());
|
||||
|
||||
// performing operation
|
||||
aSplitter.Build();
|
||||
|
||||
// Store the history for the Objects (overwrites the history in the session)
|
||||
BRepTest_Objects::SetHistory(BOPTest_Objects::Shapes(), aSplitter);
|
||||
// Add the history for the Tools
|
||||
BRepTest_Objects::AddHistory(BOPTest_Objects::Tools(), aSplitter);
|
||||
~~~~
|
||||
|
||||
@subsection occt_draw_7_12 Texture Mapping to a Shape
|
||||
|
||||
|
Before Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 9.7 KiB |
Before Width: | Height: | Size: 8.3 KiB |
Before Width: | Height: | Size: 9.6 KiB |
Before Width: | Height: | Size: 4.5 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 24 KiB |
@@ -1283,109 +1283,6 @@ Standard_DomainError::Raise
|
||||
TopoDS_Edge E = ME;
|
||||
~~~~~
|
||||
|
||||
|
||||
@subsection occt_modalg_hist History support
|
||||
|
||||
All topological API algorithms support the history of shapes modifications (or just History) for their arguments.
|
||||
Generally, the history is available for the following types of sub-shapes of input shapes:
|
||||
* Vertex
|
||||
* Edge
|
||||
* Face
|
||||
|
||||
Some algorithms also support the history for Solids.
|
||||
|
||||
The history information consists of the following information:
|
||||
* Information about Deleted shapes;
|
||||
* Information about Modified shapes;
|
||||
* Information about Generated shapes.
|
||||
|
||||
The History is filled basing on the result of the operation. History cannot return any shapes not contained in the result.
|
||||
Thus, if the result of the operation is empty shape, all input shapes will be considered as Deleted and none will have Modified and Generated shapes.
|
||||
|
||||
The history information can be accessed by the API methods:
|
||||
* *Standard_Boolean IsDeleted(const TopoDS_Shape& theS)* - to check if the shape has been Deleted during the operation;
|
||||
* *const TopTools_ListOfShape& Modified(const TopoDS_Shape& theS)* - to get the shapes Modified from the given shape;
|
||||
* *const TopTools_ListOfShape& Generated(const TopoDS_Shape& theS)* - to get the shapes Generated from the given shape.
|
||||
|
||||
@subsubsection occt_modalg_hist_del Deleted shapes
|
||||
|
||||
The shape is considered as Deleted during the operation if all of the following conditions are met:
|
||||
* The shape is the part of the argument shapes of the operation;
|
||||
* The result shape does not contain the shape itself;
|
||||
* The result shape does not contain any of the splits of the shape.
|
||||
|
||||
For example, in the CUT operation between two intersecting solids all vertices/edges/faces located completely inside the Tool solid will be Deleted during the operation.
|
||||
|
||||
@subsubsection occt_modalg_hist_mod Modified shapes
|
||||
|
||||
The shape is considered as Modified during the operation if the result shape contains the splits of the shape, not the shape itself. The shape can be modified only into the shapes with same dimension.
|
||||
The splits of the shape contained in the result shape are Modified from the shape.
|
||||
The Modified shapes are created from the sub-shapes of the input shapes and, generally, repeat their geometry.
|
||||
|
||||
The list of Modified elements will contain only those which are contained in the result of the operation. If the list is empty the shape has not been modified and it is necessary to check if it has been Deleted.
|
||||
|
||||
For example, after translation of the shape in any direction all its sub-shapes will be modified into their translated copies.
|
||||
|
||||
@subsubsection occt_modalg_hist_gen Generated shapes
|
||||
|
||||
The shapes contained in the result shape are considered as Generated from the input shape if they were produced during the operation and have different dimension with the shapes from which they were created.
|
||||
|
||||
The list of Generated elements will contain only those which are contained in the result of the operation. If the list is empty no new shapes have been Generated from the shape.
|
||||
|
||||
For example, extrusion of the edge in some direction will create a face. This face will be generated from the edge.
|
||||
|
||||
@subsubsection occt_modalg_hist_tool BRepTools_History
|
||||
|
||||
*BRepTools_History* is the general History tool intended for unification of the histories of different algorithms.
|
||||
|
||||
BRepTools_History can be created from any algorithm supporting the standard history methods (IsDeleted(), Modified() and Generated()):
|
||||
~~~~
|
||||
// The arguments of the operation
|
||||
TopoDS_Shape aS = ...;
|
||||
|
||||
// Perform transformation on the shape
|
||||
gp_Trsf aTrsf;
|
||||
aTrsf.SetTranslationPart(gp_Vec(0, 0, 1));
|
||||
BRepBuilderAPI_Transform aTransformer(aS, aTrsf); // Transformation API algorithm
|
||||
const TopoDS_Shape& aRes = aTransformer.Shape();
|
||||
|
||||
// Create the translation history object
|
||||
TopTools_ListOfShape anArguments;
|
||||
anArguments.Append(aS);
|
||||
BRepTools_History aHistory(anArguments, aTransformer);
|
||||
~~~~
|
||||
|
||||
BRepTools_History also allows merging of the histories. Thus, if you have two or more subsequent operations you can get one final history combined from histories of these operations:
|
||||
|
||||
~~~~
|
||||
Handle(BRepTools_History) aHist1 = ...; // History of first operation
|
||||
Handle(BRepTools_History) aHist2 = ...; // History of second operation
|
||||
~~~~
|
||||
|
||||
It is possible to merge the second history into the first one:
|
||||
~~~~
|
||||
aHist1->Merge(aHist2);
|
||||
~~~~
|
||||
|
||||
Or create the new history keeping the two histories unmodified:
|
||||
~~~~
|
||||
Handle(BRepTools_History) aResHistory = new BRepTools_History;
|
||||
aResHistory->Merge(aHist1);
|
||||
aResHistory->Merge(aHist2);
|
||||
~~~~
|
||||
|
||||
The possibility of Merging of the histories and its creation from the API algorithms allows providing easy History support for the new algorithms.
|
||||
|
||||
@subsubsection occt_modalg_hist_draw DRAW history support
|
||||
|
||||
DRAW History support for the algorithms supporting history is provided by three basic commands:
|
||||
* *isdeleted*;
|
||||
* *modified*;
|
||||
* *generated*.
|
||||
|
||||
For more information on the Draw History mechanism please refer the corresponding chapter in the Draw users guide - @ref occt_draw_hist "History commands".
|
||||
|
||||
|
||||
@section occt_modalg_3 Standard Topological Objects
|
||||
|
||||
The following standard topological objects can be created:
|
||||
@@ -3138,182 +3035,3 @@ Meshing covers a shape with a triangular mesh. Other than hidden line removal, y
|
||||
|
||||
You can obtain information on the shape by first exploring it. To access triangulation of a face in the shape later, use *BRepTool::Triangulation*. To access a polygon, which is the approximation of an edge of the face, use *BRepTool::PolygonOnTriangulation*.
|
||||
|
||||
|
||||
@section occt_modalg_defeaturing 3D Model Defeaturing
|
||||
|
||||
The Open CASCADE Technology Defeaturing algorithm is intended for removal of the unwanted parts or features from the model. These parts could be the holes, protrusions, gaps, chamfers, fillets etc.
|
||||
|
||||
Feature detection is not performed, and all features desired for removal should be defined by the user. The input shape is not modified during Defeaturing, the new shape is built in the result.
|
||||
|
||||
On the API level the Defeaturing algorithm is implemented in the *BRepAlgoAPI_Defeaturing* class. On the input the algorithm accepts the shape to remove the features from and the features (one or many) to remove from the shape.
|
||||
Currently, the input shape should either be SOLID, or COMPSOLID, or COMPOUND of SOLIDs.
|
||||
The features to remove are the sets of faces forming the features. It does not matter how the feature faces are given. It could be the separate faces or the collections of them. The faces should belong to the initial shape, and those that do not belong will be ignored.
|
||||
|
||||
The actual features removal is performed by the low-level *BOPAlgo_RemoveFeatures* algorithm. On the API level, all the inputs are passed into the tool and the method *BOPAlgo_RemoveFeatures::Perform()* is called.
|
||||
|
||||
Before starting Features removal all the faces requested for removal from the shape are sorted on the connected blocks - each block represents single feature to remove.
|
||||
The features will be removed from the shape one by one, which will allow removing all possible features even if there were some problems with the removal of some of them (due to e.g. incorrect input data).
|
||||
|
||||
The removed feature is filled by the extension of the faces adjacent to the feature. In general, the algorithm of removing of the single feature from the shape looks as follows:
|
||||
* Find the faces adjacent to the feature;
|
||||
* Extend the adjacent faces to cover the feature;
|
||||
* Trim the extended faces by the bounds of original face (except for bounds common with the feature), so it will cover the feature only;
|
||||
* Rebuild the solids with reconstructed adjacent faces avoiding the feature faces.
|
||||
|
||||
If the single feature removal was successful, the result shape is overwritten with the new shape, otherwise the results are not kept, and the warning is given.
|
||||
Either way the process continues with the next feature.
|
||||
|
||||
The Defeaturing algorithm has the following options:
|
||||
* History support;
|
||||
|
||||
and the options available from base class (*BOPAlgo_Options*):
|
||||
* Error/Warning reporting system;
|
||||
* Parallel processing mode.
|
||||
|
||||
Please note that the other options of the base class are not supported here and will have no effect.
|
||||
|
||||
<b>History support</b> allows tracking modification of the input shape in terms of Modified, IsDeleted and Generated. By default, the history is collected, but it is possible to disable it using the method *TrackHistory(false)*.
|
||||
On the low-level the history information is collected by the history tool *BRepTools_History*, which can be accessed through the method *BOPAlgo_RemoveFeatures::History()*.
|
||||
|
||||
<b>Error/Warning reporting system</b> - allows obtaining the extended overview of the Errors/Warnings occurred during the operation. As soon as any error appears the algorithm stops working. The warnings allow continuing the job, informing the user that something went wrong. The algorithm returns the following errors/warnings:
|
||||
* BOPAlgo_AlertUnsupportedType - the alert will be given as an error if the input shape does not contain any solids, and as a warning if the input shape contains not only solids, but also other shapes;
|
||||
* BOPAlgo_AlertNoFacesToRemove - the error alert is given in case there are no faces to remove from the shape (nothing to do);
|
||||
* BOPAlgo_AlertUnableToRemoveTheFeature - the warning alert is given to inform the user the removal of the feature is not possible. The algorithm will still try to remove the other features;
|
||||
* BOPAlgo_AlertRemoveFeaturesFailed - the error alert is given in case if the operation was aborted by the unknown reason.
|
||||
|
||||
For more information on the error/warning reporting system please see the chapter @ref occt_algorithms_ers "Errors and warnings reporting system" of Boolean operations user guide.
|
||||
|
||||
<b>Parallel processing mode</b> - allows running the algorithm in parallel mode obtaining the result faster.
|
||||
|
||||
The algorithm has certain limitations:
|
||||
* Intersection of the surfaces of the connected faces adjacent to the feature should not be empty. It means, that such faces should not be tangent to each other.
|
||||
If the intersection of the adjacent faces will be empty, the algorithm will be unable to trim the faces correctly and, most likely, the feature will not be removed.
|
||||
* The algorithm does not process the INTERNAL parts of the solids, they are simply removed during reconstruction.
|
||||
|
||||
Note, that for successful removal of the feature, the extended faces adjacent to the feature should cover the feature completely, otherwise the solids will not be rebuild.
|
||||
Take a look at the simple shape on the image below:
|
||||
@figure{/user_guides/modeling_algos/images/modeling_algos_rf_im001.png,"",220}
|
||||
|
||||
Removal of all three faces of the gap is not going to work, because there will be no face to fill the transverse part of the step.
|
||||
Although, removal of only two faces, keeping one of the transverse faces, will fill the gap with the kept face:
|
||||
<table align="center">
|
||||
<tr>
|
||||
<td>@figure{/user_guides/modeling_algos/images/modeling_algos_rf_im002.png,"Keeping the right transverse face",220}</td>
|
||||
<td>@figure{/user_guides/modeling_algos/images/modeling_algos_rf_im003.png,"Keeping the left transverse face",220}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@subsection occt_modalg_defeaturing_usage Usage
|
||||
|
||||
Here is the example of usage of the *BRepAlgoAPI_Defeaturing* algorithm on the C++ level:
|
||||
~~~~
|
||||
TopoDS_Shape aSolid = ...; // Input shape to remove the features from
|
||||
TopTools_ListOfShape aFeatures = ...; // Features to remove from the shape
|
||||
Standard_Boolean bRunParallel = ...; // Parallel processing mode
|
||||
Standard_Boolean isHistoryNeeded = ...; // History support
|
||||
|
||||
BRepAlgoAPI_Defeaturing aDF; // Defeaturing algorithm
|
||||
aDF.SetShape(aSolid); // Set the shape
|
||||
aDF.AddFacesToRemove(aFaces); // Add faces to remove
|
||||
aDF.SetRunParallel(bRunParallel); // Define the processing mode (parallel or single)
|
||||
aDF.TrackHistory(isHistoryNeeded); // Define whether to track the shapes modifications
|
||||
aDF.Build(); // Perform the operation
|
||||
if (!aDF.IsDone()) // Check for the errors
|
||||
{
|
||||
// error treatment
|
||||
Standard_SStream aSStream;
|
||||
aDF.DumpErrors(aSStream);
|
||||
return;
|
||||
}
|
||||
if (aDF.HasWarnings()) // Check for the warnings
|
||||
{
|
||||
// warnings treatment
|
||||
Standard_SStream aSStream;
|
||||
aDF.DumpWarnings(aSStream);
|
||||
}
|
||||
const TopoDS_Shape& aResult = aDF.Shape(); // Result shape
|
||||
~~~~
|
||||
|
||||
To track the history of a shape use the API history methods:
|
||||
~~~~
|
||||
// Obtain modification of the shape
|
||||
const TopTools_ListOfShape& BRepAlgoAPI_Defeaturing::Modified(const TopoDS_Shape& theS);
|
||||
|
||||
// Obtain shapes generated from the shape
|
||||
const TopTools_ListOfShape& BRepAlgoAPI_Defeaturing::Generated(const TopoDS_Shape& theS);
|
||||
|
||||
// Check if the shape is removed or not
|
||||
Standard_Boolean BRepAlgoAPI_Defeaturing::IsDeleted(const TopoDS_Shape& theS);
|
||||
~~~~
|
||||
|
||||
For the usage of the Defeaturing algorithm on the Draw level the command <b>removefeatures</b> has been implemented.
|
||||
|
||||
To track the history of a shape modification during Defeaturing the @ref occt_draw_hist "standard history commands" can be used.
|
||||
|
||||
For more details on commands above please refer the @ref occt_draw_defeaturing "Defeaturing commands" of the Draw test harness user guide.
|
||||
|
||||
To have possibility to access the error/warning shapes of the operation use the *bdrawwarnshapes* command before running the algorithm (see command usage in the @ref occt_algorithms_ers "Errors and warnings reporting system" of Boolean operations user guide).
|
||||
|
||||
@subsection occt_modalg_defeaturing_examples Examples
|
||||
|
||||
Here are the few examples of defeaturing of the ANC101 model:
|
||||
|
||||
@figure{/user_guides/modeling_algos/images/modeling_algos_rf_im004.png,"ANC101 model",220}</td>
|
||||
|
||||
<table align="center">
|
||||
<tr>
|
||||
<td>@figure{/user_guides/modeling_algos/images/modeling_algos_rf_im005.png,"Removing the cylindrical protrusion",220}</td>
|
||||
<td>@figure{/user_guides/modeling_algos/images/modeling_algos_rf_im006.png,"Result",220}</td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>@figure{/user_guides/modeling_algos/images/modeling_algos_rf_im007.png,"Removing the cylindrical holes",220}</td>
|
||||
<td>@figure{/user_guides/modeling_algos/images/modeling_algos_rf_im008.png,"Result",220}</td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>@figure{/user_guides/modeling_algos/images/modeling_algos_rf_im009.png,"Removing the cylindrical holes",220}</td>
|
||||
<td>@figure{/user_guides/modeling_algos/images/modeling_algos_rf_im010.png,"Result",220}</td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>@figure{/user_guides/modeling_algos/images/modeling_algos_rf_im011.png,"Removing the small gaps in the front",220}</td>
|
||||
<td>@figure{/user_guides/modeling_algos/images/modeling_algos_rf_im012.png,"Result",220}</td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>@figure{/user_guides/modeling_algos/images/modeling_algos_rf_im013.png,"Removing the gaps in the front completely",220}</td>
|
||||
<td>@figure{/user_guides/modeling_algos/images/modeling_algos_rf_im014.png,"Result",220}</td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>@figure{/user_guides/modeling_algos/images/modeling_algos_rf_im015.png,"Removing the cylindrical protrusion",220}</td>
|
||||
<td>@figure{/user_guides/modeling_algos/images/modeling_algos_rf_im016.png,"Result",220}</td></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
Here are the few examples of defeaturing of the model containing boxes with blends:
|
||||
|
||||
@figure{/user_guides/modeling_algos/images/modeling_algos_rf_im017.png,"Box blend model",220}</td>
|
||||
|
||||
<table align="center">
|
||||
<tr>
|
||||
<td>@figure{/user_guides/modeling_algos/images/modeling_algos_rf_im018.png,"Removing the blend",220}</td>
|
||||
<td>@figure{/user_guides/modeling_algos/images/modeling_algos_rf_im019.png,"Result",220}</td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>@figure{/user_guides/modeling_algos/images/modeling_algos_rf_im020.png,"Removing the blend",220}</td>
|
||||
<td>@figure{/user_guides/modeling_algos/images/modeling_algos_rf_im021.png,"Result",220}</td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>@figure{/user_guides/modeling_algos/images/modeling_algos_rf_im022.png,"Removing the blend",220}</td>
|
||||
<td>@figure{/user_guides/modeling_algos/images/modeling_algos_rf_im023.png,"Result",220}</td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>@figure{/user_guides/modeling_algos/images/modeling_algos_rf_im024.png,"Removing the blend",220}</td>
|
||||
<td>@figure{/user_guides/modeling_algos/images/modeling_algos_rf_im025.png,"Result",220}</td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>@figure{/user_guides/modeling_algos/images/modeling_algos_rf_im026.png,"Removing the blend",220}</td>
|
||||
<td>@figure{/user_guides/modeling_algos/images/modeling_algos_rf_im027.png,"Result",220}</td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>@figure{/user_guides/modeling_algos/images/modeling_algos_rf_im028.png,"Removing the blend",220}</td>
|
||||
<td>@figure{/user_guides/modeling_algos/images/modeling_algos_rf_im029.png,"Result",220}</td></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
Before Width: | Height: | Size: 641 KiB |
@@ -1294,99 +1294,3 @@ The following sample code reads a shape from ASCII file and writes it to a binar
|
||||
}
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@section occt_modat_6 Bounding boxes
|
||||
|
||||
*Bounding box(es) (BndBox(es))* is used in many OCCT algorithms. In general, it is some filter to avoid check of excess interferences between pairs of shapes (check of interferences between BndBoxes is much simpler then between shapes and if BndBoxes do not interfere then there is no point in searching interferences between the corresponding shapes).
|
||||
Generally, BndBoxes can be divided on two main types:
|
||||
- axis-aligned BndBox (AABB). I.e. the box whose edges are parallel to the axes of World Coordinate System (WCS);
|
||||
- oriented BndBox (OBB). I.e. not AABB.
|
||||
In fact, every AABB is a specific case of OBB.<br>
|
||||
|
||||
The image below illustrates the example, when using OBB is better than AABB.
|
||||
|
||||
@figure{/user_guides/modeling_data/images/modeling_data_image015.png,"Illustrating the problem with AABB.",320}
|
||||
|
||||
AABBs in this picture are interfered. Therefore, many OCCT-algorithms will spend much time to interfere the shapes. However, if we check OBBs, which are not interfered, then searching of interferences between the shapes will not be necessary. At that, creation and analysis of OBBs takes significantly more time than the analogical operations with AABB.
|
||||
|
||||
Later in this section, the BndBox having the smallest surface area will be called as <b> optimal </b>.
|
||||
|
||||
In OCCT, BndBox(es) are described in Bnd package. In general, Bnd_Box class describes AABB, Bnd_OBB class describes OBB. These classes contain the following common methods (this list is not complete; please see the documentation about corresponding class for detailed information):
|
||||
|
||||
- SetVoid() and IsVoid(). SetVoid method clears the existing BndBox. IsVoid method indicates whether the BndBox is initialized.
|
||||
- Enlarge(...). Extends the current BndBox.
|
||||
- Add(...). Rebuilds the current BndBox in order to cover all previous objects (which it was created from) and the argument of the method.
|
||||
- IsOut(...). Checks whether the argument is inside/outside of the current BndBox.
|
||||
|
||||
Also, BRepBndLib class contains methods to provide creation of BndBox (both AABB and OBB) from the complex shape.
|
||||
|
||||
@subsection occt_modat_6_1 Brief description of some algorithms working with OBB
|
||||
|
||||
@subsubsection occt_modat_6_1_1 Creation of OBB from set of points
|
||||
|
||||
The algorithm is described in <a href="http://www.idt.mdh.se/~tla/publ/FastOBBs.pdf">"Fast Computation of Tight Fitting Oriented Bounding Boxes" by Thomas Larsson and Linus Källberg</a>. It includes the following steps:
|
||||
|
||||
<span>1.</span> Choose \f$ N_{a} (N_{a} \geq 3) \f$ initial axes.<br>
|
||||
<span>2.</span> Project every given point to the every chosen (in item 1) axis. At that, "minimal" and "maximal" points of every axis (i.e. point having minimal and maximal parameter (correspondingly) of the projection to this axis) are chosen. I.e. \f$ 2*N_{a} \f$ points will be held and this set can contain equal points. Later (unless otherwise specified) in this algorithm we will work with these \f$ 2*N_{a} \f$ points only.<br>
|
||||
<span>3.</span> Choose one pair of points among all pairs of "minimal" and "maximal" points of every axis (from item 1), with two furthest points. Let \f$ p_{0} \f$ and \f$ p_{1} \f$ be the "minimal" and "maximal" point of this pair.<br>
|
||||
<span>4.</span> Create an axis \f$ \mathbf{e_{0}}\left \{ \overrightarrow{p_{0}p_{1}} \right \} \f$ (i.e. having direction \f$ \overrightarrow{p_{0}p_{1}} \f$ ).<br>
|
||||
<span>5.</span> Choose the point \f$ p_{2} \f$ (from the set defined in item 2) which is in the maximal distance from the infinite line directed along \f$ \mathbf{e_{0}} \f$ axis.<br>
|
||||
|
||||
Further, let us consider the triangle \f$ T_{0}\left \langle p_{0}, p_{1}, p_{2} \right \rangle \f$ (i.e. having vertices \f$ p_{0}, p_{1} \f$ and \f$ p_{2} \f$). Namely:
|
||||
|
||||
<span>6.</span> Create new axes: \f$ \mathbf{e_{1}}\left \{ \overrightarrow{p_{1}p_{2}} \right \} \f$, \f$ \mathbf{e_{2}}\left \{ \overrightarrow{p_{2}p_{0}} \right \} \f$, \f$ \mathbf{n}\left \{ \overrightarrow{\mathbf{e_{0}}} \times \overrightarrow{\mathbf{e_{1}}} \right \} \f$, \f$ \mathbf{m_{0}}\left \{ \overrightarrow{\mathbf{e_{0}}} \times \overrightarrow{\mathbf{n}} \right \} \f$, \f$ \mathbf{m_{1}}\left \{ \overrightarrow{\mathbf{e_{1}}} \times \overrightarrow{\mathbf{n}} \right \} \f$, \f$ \mathbf{m_{2}}\left \{ \overrightarrow{\mathbf{e_{2}}} \times \overrightarrow{\mathbf{n}} \right \} \f$.<br>
|
||||
<span>7.</span> Create OBBs based on the following axis: \f$ \left \{ \mathbf{e_{0}} \vdots \mathbf{m_{0}} \vdots \mathbf{n} \right \} \f$, \f$ \left \{ \mathbf{e_{1}} \vdots \mathbf{m_{1}} \vdots \mathbf{n} \right \} \f$ and \f$ \left \{ \mathbf{e_{2}} \vdots \mathbf{m_{2}} \vdots \mathbf{n} \right \} \f$ . Choose optimal OBB.<br>
|
||||
<span>8.</span> Choose the points \f$ q_{0} \f$ and \f$ q_{1} \f$ (from the set defined in item 2), which are in maximal distance from the plane of the triangle \f$ T_{0} \f$ (from both sides of this plane). At that, \f$ q_{0} \f$ has minimal coordinate along the axis \f$ \mathbf{n} \f$, \f$ q_{1} \f$ has a maximal coordinate.<br>
|
||||
<span>9.</span> Repeat the step 6...7 for the triangles \f$ T_{1}\left \langle p_{0}, p_{1}, q_{0} \right \rangle \f$, \f$ T_{2}\left \langle p_{1}, p_{2}, q_{0} \right \rangle \f$, \f$ T_{3}\left \langle p_{0}, p_{2}, q_{0} \right \rangle \f$, \f$ T_{4}\left \langle p_{0}, p_{1}, q_{1} \right \rangle \f$, \f$ T_{5}\left \langle p_{1}, p_{2}, q_{1} \right \rangle \f$, \f$ T_{6}\left \langle p_{0}, p_{2}, q_{1} \right \rangle \f$.<br>
|
||||
<span>10.</span> Compute the center of OBB and its half dimensions.<br>
|
||||
<span>11.</span> Create OBB using the center, axes and half dimensions.<br>
|
||||
|
||||
This algorithm is realized in Bnd_OBB::ReBuild(...) method.
|
||||
|
||||
@subsubsection occt_modat_6_1_2 Creation of OBB based on Axes of inertia
|
||||
|
||||
The algorithm contains the following steps:
|
||||
1. Calculate three inertia axes, which will be the axes of the OBB.
|
||||
2. Transform the source object (TopoDS_Shape) into the local coordinate system based on the axes from item 1.
|
||||
3. Create an AABB for the shape obtained in the item 2.
|
||||
4. Compute the center of AABB and its half dimensions
|
||||
5. Transform the center into the WCS
|
||||
6. Create OBB using the center, axes and half dimensions.
|
||||
|
||||
@subsubsection occt_modat_6_1_3 Method IsOut for a point
|
||||
|
||||
1. Project the point to each axis.
|
||||
2. Check, whether the absolute value of the projection parameter greater than the correspond half-dimension. In this case, IsOut method will return TRUE.
|
||||
|
||||
@subsubsection occt_modat_6_1_4 Method IsOut for another OBB
|
||||
|
||||
According to the <a href="http://www.jkh.me/files/tutorials/Separating%20Axis%20Theorem%20for%20Oriented%20Bounding%20Boxes.pdf">"Separating Axis Theorem for Oriented Bounding Boxes"</a>, it is necessary to check the 15 separating axes: 6 axes of the boxes and 9 are their cross products.<br>
|
||||
The algorithm of analyzing axis \f$ \mathbf{l} \f$ is following:
|
||||
1. Compute the "length" according to the formula: \f$ L_{j}=\sum_{i=0}^{2}{H_{i}\cdot \left | \overrightarrow{\mathbf{a_{i}}} \cdot \overrightarrow{\mathbf{l}} \right |} \f$. Here, \f$ \mathbf{a_{i}} \f$ is an i-th axis (X-axis, Y-axis, Z-axis) of j-th BndBox (j=1...2). \f$ H_{i} \f$ is a half-dimension along i-th axis.
|
||||
2. If \f$ \left |\overrightarrow{C_{1}C_{2}} \cdot \overrightarrow{\mathbf{l}} \right | > L_{1}+L_{2} \f$ (where \f$ C_{j} \f$ is the center of j-th OBB) then the considered OBBs are not interfered in terms of the axis \f$ \mathbf{l} \f$.
|
||||
|
||||
If OBBs are not interfered in terms of at least one axis (of 15) then they are not interfered at all.
|
||||
|
||||
@subsubsection occt_modat_6_1_5 Method Add for point or another BndBox
|
||||
|
||||
Create new OBB (see the section @ref occt_modat_6_1_1) based on the source point and all vertices of the given BndBoxes.
|
||||
|
||||
@subsection occt_modat_6_2 Add a shape
|
||||
|
||||
Method BRepBndLib::AddOBB(...) allows creating BndBox from the complex object (TopoDS_Shape). This method uses both algorithms described in the sections @ref occt_modat_6_1_1 and sections @ref occt_modat_6_1_2.
|
||||
|
||||
The first algorithm is used if the shape outer shell can be represented by a set of points contained in the shape. Namely, only the following elements are the source of set of points:
|
||||
|
||||
- Nodes of triangulation;
|
||||
- Nodes of Poly_Polygon3D;
|
||||
- Vertices of edges with linear 3D-curve lying in the planar face;
|
||||
- Vertices of edges with linear 3D-curve if the source shape does not contain more complex topological structure (e.g. the source shape is a compound of edges);
|
||||
- Vertices if the source shape does not contain more complex topological structure (e.g. the source shape is a compound of vertices).
|
||||
|
||||
If required set of points cannot be extracted then the algorithm from section @ref occt_modat_6_1_2 is used for OBB creation.
|
||||
|
||||
The package BRepBndLib contains the methods BRepBndLib::Add(...), BRepBndLib::AddClose(...) and BRepBndLib::AddOptimal(...) for creation of AABB of a shape. Please see reference manual for detailed information.
|
||||
|
||||
@subsection occt_modat_6_3 Limitations of algorithm for OBB creation.
|
||||
|
||||
1. The algorithm described in the section @ref occt_modat_6_1_1 works significantly better (finds resulting OBB with less surface area) and faster than the algorithm from the section @ref occt_modat_6_1_2. Nevertheless, (in general) the result returned by both algorithms is not always optimal (i.e. sometimes another OBB exists having less surface area). Moreover, the first method does not allow computing OBB of shapes with complex geometry.
|
||||
2. Currently, the algorithm of OBB creation is implemented for objects in 3D-space only.
|
||||
|
@@ -1481,7 +1481,7 @@ General types of STEP entities imported by OCCT are listed in the table below:
|
||||
|Datum_Feature|XCAFDoc_Datum|
|
||||
|Datum_Target|XCAFDoc_Datum|
|
||||
|
||||
Processing of GD&T is realized in accordance with <a href="https://www.cax-if.org/documents/rec_pracs_pmi_v40.pdf">Recommended practices for the Representation and Presentation of Product Manufacturing</a> for AP242.
|
||||
Processing of GD&T is realized in accordance with <a href="http://www.cax-if.org/documents/rec_pracs_pmi_v40.pdf">Recommended practices for the Representation and Presentation of Product Manufacturing</a> for AP242.
|
||||
The general restriction is that OCCT STEP Reader imports GD&T assigned only to shapes (faces, edges, vertices, etc) or to shape groups from general shape model i.e. any constructive geometries are not translated as referenced shapes.
|
||||
|
||||
#### Dimensions
|
||||
|
@@ -635,7 +635,7 @@ The conception of instancing operates the object hierarchy as follows:
|
||||
|
||||
Classes *AIS_ConnectedInteractive* and *AIS_MultipleConnectedInteractive* are used to implement this conception.
|
||||
|
||||
*AIS_ConnectedInteractive* is an object instance, which reuses the geometry of the connected object but has its own transformation and visibility flag. This connection is propagated down to *OpenGl* level, namely to *OpenGl_Structure*. *OpenGl_Structure* can be connected only to a single other structure.
|
||||
*AIS_ConnectedInteractive* is an object instance, which reuses the geometry of the connected object but has its own transformation, material, visibility flag, etc. This connection is propagated down to *OpenGl* level, namely to *OpenGl_Structure*. *OpenGl_Structure* can be connected only to a single other structure.
|
||||
|
||||
*AIS_ConnectedInteractive* can be referenced to any *AIS_InteractiveObject* in general. When it is referenced to another *AIS_ConnectedInteractive*, it just copies the reference.
|
||||
|
||||
|
@@ -91,59 +91,26 @@ XDE can read and write colors and layers assigned to shapes or their subparts (d
|
||||
|
||||
@figure{/user_guides/xde/images/xde_image006.png,"Colors and Layers",240}
|
||||
|
||||
@subsection occt_xde_1_7 Geometric Dimensions & Tolerances (GD\&T)
|
||||
|
||||
GD\&T are a type of Product and Manufacturing Information (PMI) that can be either computed automatically by a CAD system,
|
||||
or entered manually by the user. For detailed information use <a href="https://www.cax-if.org/documents/rec_pracs_pmi_v40.pdf">CAx-IF Recommended Practices
|
||||
for the Representation and Presentation of Product Manufacturing Information (PMI) (AP242)</a>
|
||||
|
||||
XDE can read and write GD\&T data of the following types:
|
||||
* dimensions, such as distance, length, radius and so on;
|
||||
* geometric tolerances;
|
||||
* datums, i.e a theoretically exact geometric references, such as point, line or plane, to which toleranced features are related.
|
||||
|
||||
XDE supports two presentations of GD\&T data:
|
||||
* semantic presentation, i.e. data is stored in a machine-consumable way and includes all information required to understand the
|
||||
specification without the aid of any presentation elements;
|
||||
* tessellated presentation, i.e. data is displayed in a human-readable way.
|
||||
|
||||
@subsection occt_xde_1_8 Clipping planes
|
||||
|
||||
XDE supports reading from STEP and storing named planes used for clipping.
|
||||
Currently, XDE supports saving of clipping planes in XBF format only.
|
||||
|
||||
XDE provides capabilities for adding, editing and removing clipping planes.
|
||||
|
||||
@subsection occt_xde_1_9 Saved views
|
||||
|
||||
XDE supports reading from STEP views. Views allow to save information about camera parameters (position, direction, zoom factor, etc.)
|
||||
and visible shapes, PMIs, used clipping planes and notes. Currently, XDE supports saving of clipping planes in XBF format only.
|
||||
|
||||
XDE provides the following view management capabilities:
|
||||
* add/remove views;
|
||||
* set view camera parameters;
|
||||
* set visible shapes, PMIs, used clipping planes and notes.
|
||||
|
||||
@subsection occt_xde_1_10 Custom notes
|
||||
@subsection occt_xde_1_7 Custom notes
|
||||
|
||||
Custom notes is a kind of application-specific data attached to assembly items, their attributes and sub-shapes. Basically, there are simple textual comments, binary data and other application-specific data. Each note is provided with a timestamp and the user who created it.
|
||||
Custom notes is a kind of application specific data attached to assembly items, their attributes and sub-shapes. Basically, there are simple textual comments, binary data and other application specific data. Each note is provided with a timestamp and the user created it.
|
||||
|
||||
Notes API provides the following functionality:
|
||||
* Returns the total number of notes and annotated items;
|
||||
* Returns labels for all notes and annotated items;
|
||||
* Returns total number of notes and annotated items
|
||||
* Returns labels for all notes and annotated items
|
||||
* Creates notes:
|
||||
- Comment note from a text string;
|
||||
- Binary data note from a file or byte array;
|
||||
* Checks if an assembly item is annotated;
|
||||
* Finds a label for the annotated item;
|
||||
* Returns all note labels for the annotated item;
|
||||
* Adds a note to item(s):
|
||||
- Assembly item;
|
||||
- Assembly item attribute;
|
||||
- Assembly item subshape index;
|
||||
* Removes note(s) from an annotated assembly item; orphan note(s) might be deleted optionally (items without linked notes will be deleted automatically);
|
||||
* Deletes note(s) and removes them from annotated items;
|
||||
* Gets / deletes orphan notes.
|
||||
- Comment note from a text string
|
||||
- Binary data note from a file or byte array
|
||||
* Checks if an assembly item is annotated
|
||||
* Finds a label for the annotated item
|
||||
* Returns all note labels for the annotated item
|
||||
* Add a note to item(s):
|
||||
- Assembly item
|
||||
- Assembly item attribute
|
||||
- Assembly item subshape index
|
||||
* Remove note(s) from an annotated assembly item; orphan note(s) might be deleted optionally (items without linked notes will be deleted automatically)
|
||||
* Delete note(s) and removes them from annotated items
|
||||
* Get / delete orphan notes
|
||||
|
||||
@section occt_xde_2 Working with XDE
|
||||
|
||||
@@ -537,7 +504,7 @@ XDE can read and write colors and layers assigned to shapes or their subparts (d
|
||||
|
||||
@figure{/user_guides/xde/images/239_xde_12_400.png,"Motor Head",240}
|
||||
|
||||
In an XDE document, colors are managed by the class *XCAFDoc_ColorTool*. It works basing on the same principles as ShapeTool works with Shapes. This tool can be provided on the Main Label or on any sub-label. The Property itself is defined as an *XCAFDoc_Color*, sub-class of *TDF_Attribute*.
|
||||
In an XDE document, colors are managed by the class *XCAFDoc_ColorTool*. This is done with the same principles as for ShapeTool with Shapes, and with the same capability of having a tool on the Main Label, or on any sub-label. The Property itself is defined as an *XCAFDoc_Color*, sub-class of *TDF_Attribute*.
|
||||
|
||||
Colors are stored in a child of the starting document label: it is the second level (0.1.2), while Shapes are at the first level. Each color then corresponds to a dedicated label, the property itself is a Quantity_Color, which has a name and value for Red, Green, Blue. A Color may be attached to Surfaces (flat colors) or to Curves (wireframe colors), or to both. A Color may be attached to a sub-shape. In such a case, the sub-shape (and its own sub-shapes) takes its own Color as a priority.
|
||||
|
||||
@@ -660,277 +627,29 @@ To remove a Color and all the references to it (so that the related shapes will
|
||||
myColors->RemoveColor(ColLabel);
|
||||
~~~~~
|
||||
|
||||
@subsection occt_xde_2_7 Geometric Dimensions & Tolerances (GD\&T)
|
||||
@subsection occt_xde_2_7 Custom notes
|
||||
|
||||
XDE can read and write GD\&T assigned to shapes or their subparts (down to the level of faces and edges) to and from STEP formats.
|
||||
In an XDE document, custom notes are managed by the class *XCAFDoc_NotesTool*. This is done with the same principles as for ShapeTool with Shapes, and with the same capability of having a tool on the Main Label, or on any sub-label. The Property itself is defined as sub-classes of an *XCAFDoc_Note* abstract class, which is a sub-class of *TDF_Attribute* one.
|
||||
|
||||
In an XDE document, GD\&T are managed by the class *XCAFDoc_DimTolTool*. It works basing on the same principles as ShapeTool works with Shapes. This tool can be provided on the Main Label or on any sub-label. The GD\&T entities themselves are defined as the following sub-classes of *TDF_Attribute*:
|
||||
* *XCAFDoc_Dimension* - for dimensions;
|
||||
* *XCAFDoc_GeomTolerance* - for geometric tolerances;
|
||||
* *XCAFDoc_Datum* - for geometric tolerance Datums.
|
||||
A GD\&T type is identified by the attributes listed above, i.e. *XCAFDoc_DimTolTool* methods working with particular entity types check
|
||||
for presence of the corresponding attributes in passed labels. One can use methods of *XCAFDoc_DimTolTool* beginning with 'Is' for this purpose.
|
||||
|
||||
GD\&T entities are stored in a child of the starting document label 0.1.4.
|
||||
Each GD\&T entity then corresponds to the dedicated label, the property itself is one of access classes:
|
||||
* *XCAFDimTolObject_DimensionObject* - for dimensions;
|
||||
* *XCAFDimTolObject_GeomToleranceObject* - for geometric tolerances;
|
||||
* *XCAFDimTolObject_DatumObject* - for geometric tolerance Datums.
|
||||
|
||||
GD\&Ts and Shapes are related to by Graph Nodes.
|
||||
|
||||
These definitions are common to various exchange formats, at least for STEP.
|
||||
|
||||
@subsubsection occt_xde_2_7_1 Initialization
|
||||
To query, edit, or initialize a Document to handle GD\&Ts of XCAF, use:
|
||||
~~~~~
|
||||
Handle(XCAFDoc_DimTolTool) myDimTolTool =
|
||||
XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
|
||||
~~~~~
|
||||
This call can be used at any time. When it is used for the first time, a relevant structure is added to the document. This definition is used for all later GD\&T calls and is not repeated for them.
|
||||
|
||||
@subsubsection occt_xde_2_7_2 Adding a GD\&T
|
||||
*XCAFDoc_DimTolTool* provides methods to create GD\&T 'empty' entities:
|
||||
* *AddDimension* - for a new dimension;
|
||||
* *AddGeomTolerance* - for a new geometric tolerance;
|
||||
* *AddDatum* - for a new geometric tolerance datum.
|
||||
|
||||
All methods create a sub-label for the corresponding GD\&T entity of the tool master label and attach an attribute specific for the
|
||||
created entity.
|
||||
|
||||
Here is an example of adding a new dimension:
|
||||
~~~~~
|
||||
TDF_Label aDimLabel = myDimTolTool->AddDimension();
|
||||
if (!aDimLabel.IsNull())
|
||||
{
|
||||
// error processing
|
||||
}
|
||||
~~~~~
|
||||
A similar approach can be used for other GD\&T types.
|
||||
|
||||
@subsubsection occt_xde_2_7_3 Editing a GD\&T
|
||||
A newly added GD\&T entity is empty. To set its data a corresponding access object should be used as it is demonstrated
|
||||
below, where the dimension becomes the linear distance between two points.
|
||||
~~~~~
|
||||
Handle(XCAFDoc_Dimension) aDimAttr;
|
||||
aDimLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimAttr);
|
||||
if (!aDimAttr.IsNull())
|
||||
{
|
||||
Handle(XCAFDimTolObjects_DimensionObject) aDimObject = aDimAttr->GetObject();
|
||||
// set dimension data
|
||||
aDimObject->SetType(XCAFDimTolObjects_DimensionType_Location_LinearDistance);
|
||||
aDimObject->SetPoint(thePnt1); // the first reference point
|
||||
aDimObject->SetPoint2(thePnt2); // the second reference point
|
||||
aDimObject->SetValue(theValue); // the distance value
|
||||
//...
|
||||
aDimAttr->SetObject(aDimObject);
|
||||
}
|
||||
~~~~~
|
||||
A similar approach can be used for other GD\&T types.
|
||||
|
||||
@subsubsection occt_xde_2_7_4 Linking GD\&Ts
|
||||
To link a GD\&T entity with other OCAF labels (e.g. representing shapes) one should use the following methods:
|
||||
* *SetDimension* - for dimensions;
|
||||
* *SetGeomTolerance* - for geometric tolerances;
|
||||
* SetDatum - for geometric tolerance datums.
|
||||
|
||||
These methods can take a single label or a sequence of labels. All previous links will be removed.
|
||||
|
||||
The example below demonstrates linking of a dimension to sequences of shape labels:
|
||||
~~~~~
|
||||
TDF_LabelSequence aShapes1, aShapes2;
|
||||
aShapes1.Append(aShape11);
|
||||
//...
|
||||
aShapes2.Append(aShape21);
|
||||
//...
|
||||
aDGTTool->SetDimension(aShapes1, aShapes2, aDimLabel);
|
||||
~~~~~
|
||||
|
||||
In addition, a special method *SetDatumToGeomTol* should be used to link a datum with a geometric tolerance.
|
||||
|
||||
@subsubsection occt_xde_2_7_5 Finding GD\&Ts and reference shapes
|
||||
|
||||
*XCAFDimTolObjects_Tool* class provides basic capabilities for searching GD\&Ts linked to shapes.
|
||||
Using the tool one can get sequences of dimensions, geometric tolerances and datums linked with a shape. A series of related datums is also returned for geometric tolerances.
|
||||
|
||||
To get reference shapes for a GD\&T entity one can use *GetRefShapeLabel* from *XCAFDoc_DimTolTool*.
|
||||
|
||||
*XCAFDoc_DimTolTool* provides methods to get lists of all dimensions, geometric tolerances and datums.
|
||||
|
||||
@subsubsection occt_xde_2_7_6 Storing custom data
|
||||
Every GD\&T entity in XDE is represented as a label with attached attribute identifying entity type. All specific data is
|
||||
stored in sub-labels in standard OCAF attributes, such as *TDataStd_Integer*, *TDataStd_IntegerArray*, *TDataStd_RealArray* and so on.
|
||||
Sub-label tags are reserved for internal use and cannot be used for storing custom data. The following tag ranges are reserved for
|
||||
GD\&T entities:
|
||||
* 1 - 17 - for dimensions;
|
||||
* 1 - 17 - for geometric tolerances;
|
||||
* 1 - 19 - for datums.
|
||||
Custom data can be stored in labels with tags beyond the ranges listed above.
|
||||
|
||||
@subsection occt_xde_2_8 Clipping planes
|
||||
|
||||
In an XDE document, Clipping planes are managed by the class *XCAFDoc_ClippingPlaneTool*. It works basing on the same principles as ShapeTool works with Shapes. This tool can be provided on the Main Label or on any sub-label. Clipping planes are stored in a child of the starting document label 0.1.8, where planes themselves are defined as *TDataXtd_Plane* attribute. *TDataStd_Name* attribute is used for naming.
|
||||
|
||||
To query, edit, or initialize a Document to handle clipping planes of XCAF, use:
|
||||
~~~~~
|
||||
Handle(XCAFDoc_ClippingPlaneTool) myClipPlaneTool =
|
||||
XCAFDoc_DocumentTool::ClippingPlaneTool(Doc->Main());
|
||||
~~~~~
|
||||
This call can be used at any time. When it is used for the first time, a relevant structure is added to the document.
|
||||
|
||||
To add a clipping plane use one of overloaded methods *AddClippingPlane*, e.g.:
|
||||
~~~~~
|
||||
gp_Pln aPln = ...
|
||||
Standard_Boolean aCapping = ...
|
||||
TDF_Label aClipPlnLbl = myClipPlaneTool->AddClippingPlane(aPln, "Name of plane", aCapping);
|
||||
if (aClipPlnLbl.IsNull())
|
||||
{
|
||||
// error processing
|
||||
}
|
||||
~~~~~
|
||||
|
||||
To remove a plane use *RemoveClippingPlane* method, e.g.:
|
||||
~~~~~
|
||||
if (!myClipPlaneTool->RemoveClippingPlane(aClipPlnLbl))
|
||||
{
|
||||
// not removed
|
||||
}
|
||||
~~~~~
|
||||
The plane will not be removed if it is referenced in at least one view.
|
||||
|
||||
To change clipping plane and its name use *UpdateClippingPlane* method, e.g.:
|
||||
~~~~~
|
||||
gp_Pln aPln = ...
|
||||
myClipPlaneTool->UpdateClippingPlane(aClipPlnLbl, aPln, "New name of plane");
|
||||
~~~~~
|
||||
|
||||
Capping property can be changed using *SetCapping* method, e.g.:
|
||||
~~~~~
|
||||
Standard_Boolean aCapping = ...
|
||||
myClipPlaneTool->SetCapping(aClipPlnLbl, aCapping);
|
||||
~~~~~
|
||||
|
||||
*XCAFDoc_ClippingPlaneTool* can be used to get all clipping plane labels and to check if a label belongs to the ClippingPlane table, e.g.:
|
||||
~~~~~
|
||||
TDF_LabelSequence aClipPlaneLbls;
|
||||
myClipPlaneTool->GetClippingPlanes(aClipPlaneLbls);
|
||||
...
|
||||
for (TDF_LabelSequence::Iterator anIt(aClipPlaneLbls); anIt.More(); anIt.Next())
|
||||
{
|
||||
if (myClipPlaneTool->IsClippingPlane(anIt.Value()))
|
||||
{
|
||||
// the label is a clipping plane
|
||||
gp_Pln aPln;
|
||||
TCollection_ExtendedString aName;
|
||||
Standard_Boolean aCapping;
|
||||
if (!myClipPlaneTool->GetClippingPlane(anIt.Value(), aPln, aName, aCapping))
|
||||
{
|
||||
// error processing
|
||||
}
|
||||
...
|
||||
}
|
||||
}
|
||||
~~~~~
|
||||
|
||||
@subsection occt_xde_2_9 Saved views
|
||||
|
||||
In an XDE document, Views are managed by the class *XCAFDoc_ViewTool*. It works basing on the same principles as ShapeTool works with Shapes. This tool can be provided on the Main Label or on any sub-label. Views are stored in a child of the starting document label 0.1.7, where a view itself is defined as *XCAFDoc_View* sub-class of *TDF_Attribute*. Views and selected shapes, clipping planes, GD\&Ts and notes are related to by Graph Nodes.
|
||||
|
||||
To query, edit, or initialize a Document to handle views of XCAF, use:
|
||||
~~~~~
|
||||
Handle(XCAFDoc_ViewTool) myViewTool =
|
||||
XCAFDoc_DocumentTool::ViewTool(Doc->Main());
|
||||
~~~~~
|
||||
This call can be used at any time. When it is used for the first time, a relevant structure is added to the document.
|
||||
|
||||
To add a view use *AddView* method and an access *XCAFView_Object* object to set camera parameters, e.g.:
|
||||
~~~~~
|
||||
TDF_Label aViewLbl = myViewTool->AddView();
|
||||
if (aViewLbl.IsNull())
|
||||
{
|
||||
// error processing
|
||||
}
|
||||
Handle(XCAFDoc_View) aViewAttr;
|
||||
aViewLbl.FindAttribute(XCAFDoc_View::GetID(), aViewAttr);
|
||||
if (!aViewAttr.IsNull())
|
||||
{
|
||||
Handle(XCAFView_Object) aViewObject = aViewAttr->GetObject();
|
||||
// set view data
|
||||
aViewObject->SetType(XCAFView_ProjectionType_Parallel);
|
||||
aViewObject->SetViewDirection(theViewDir);
|
||||
aViewObject->SetZoomFactor(2.0);
|
||||
...
|
||||
aViewAttr->SetObject(aViewObject);
|
||||
}
|
||||
~~~~~
|
||||
|
||||
To set shapes, clipping planes, GD\&Ts and notes selected for the view use one of overloaded *SetView* methods of *XCAFDoc_ViewTool*.
|
||||
To set only clipping planes one should use *SetClippingPlanes* method.
|
||||
~~~~~
|
||||
TDF_LabelSequence aShapes; ...
|
||||
TDF_LabelSequence aGDTs; ...
|
||||
myViewTool->SetView(aShapes, aGDTs, aViewLbl);
|
||||
TDF_LabelSequence aClippingPlanes; ...
|
||||
myViewTool->SetClippingPlanes(aClippingPlanes, aViewLbl);
|
||||
~~~~~
|
||||
|
||||
To remove a view use *RemoveView* method.
|
||||
|
||||
To get all view labels and check if a label belongs to the View table use:
|
||||
~~~~~
|
||||
TDF_LabelSequence aViewLbls;
|
||||
myViewTool->GetViewLabels(aViewLbls);
|
||||
...
|
||||
for (TDF_LabelSequence::Iterator anIt(aViewLbls); anIt.More(); anIt.Next())
|
||||
{
|
||||
if (myViewTool->IsView(anIt.Value()))
|
||||
{
|
||||
// the label is a view
|
||||
...
|
||||
}
|
||||
}
|
||||
~~~~~
|
||||
|
||||
To get shapes, clipping planes, GD\&Ts or notes associated with a particular view use the following methods:
|
||||
* *GetRefShapeLabel* - returns a sequence of associated shape labels;
|
||||
* *GetRefGDTLabel* - returns a sequence of associated GDT labels;
|
||||
* *GetRefClippingPlaneLabel* - returns a sequence of associated clipping plane labels;
|
||||
* *GetRefNoteLabel* - returns a sequence of associated note labels;
|
||||
* *GetRefAnnotationLabel* - returns a sequence of associated annotated labels.
|
||||
|
||||
And vice versa, to get views that display a particular clipping plane, GD\&T or note use the following methods:
|
||||
* *GetViewLabelsForShape* - returns a sequence of associated view labels for a shape;
|
||||
* *GetViewLabelsForGDT* - returns a sequence of associated view labels for a GD\&T;
|
||||
* *GetViewLabelsForClippingPlane* - returns a sequence of associated view labels for a clipping plane;
|
||||
* *GetViewLabelsForNote* - returns a sequence of associated view labels for a note;
|
||||
* *GetViewLabelsForAnnotation* - returns a sequence of associated view labels for an annotated label.
|
||||
|
||||
@subsection occt_xde_2_10 Custom notes
|
||||
|
||||
In an XDE document, custom notes are managed by the class *XCAFDoc_NotesTool*.
|
||||
It works basing on the same principles as ShapeTool works with Shapes.
|
||||
This tool can be provided on the Main Label or on any sub-label.
|
||||
The Property itself is defined as sub-class of *XCAFDoc_Note* abstract class, which is a sub-class of *TDF_Attribute* one.
|
||||
|
||||
Custom notes are stored in a child of the *XCAFDoc_NotesTool* label, at label 0.1.9.1. Each note then corresponds to a dedicated label. A note may be attached to a document item identified by a label, a sub-shape identified by integer index or an attribute identified by GUID. Annotations are stored in a child of the *XCAFDoc_NotesTool* label, at label 0.1.9.2.
|
||||
Custom notes are stored in a child of the *XCAFDoc_NotesTool* label: it is at label 0.1.9.1. Each note then corresponds to a dedicated label. A note may be attached to a document item identified by a label, a sub-shape identified by integer index or an attribute identified by GUID. Annotations are stored in a child of the *XCAFDoc_NotesTool* label: it is at label 0.1.9.2.
|
||||
Notes binding is done through *XCAFDoc_GraphNode* attribute.
|
||||
|
||||
@figure{/user_guides/xde/images/xde_notes001.png,"Structure of notes part of XCAF document",240}
|
||||
|
||||
@subsubsection occt_xde_2_10_1 Initialization
|
||||
@subsubsection occt_xde_2_7_1 Initialization
|
||||
|
||||
To query, edit, or initialize a Document to handle custom notes of XCAF, use:
|
||||
~~~~~
|
||||
Handle(XCAFDoc_NotesTool) myNotes =
|
||||
XCAFDoc_DocumentTool::NotesTool(Doc->Main ());
|
||||
~~~~~
|
||||
This call can be used at any time. The first time it is used, a relevant structure is added to the document. This definition is used for all later notes calls and will not be repeated for them.
|
||||
This call can be used at any time. The first time it is used, a relevant structure is added to the document. This definition is used for all the following notes calls and will not be repeated for these.
|
||||
|
||||
@subsubsection occt_xde_2_10_2 Creating Notes
|
||||
@subsubsection occt_xde_2_7_2 Creating Notes
|
||||
|
||||
Before annotating a Document item a note must be created using one of the following methods of *XCAFDoc_NotesTool* class:
|
||||
- *CreateComment* : creates a note with a textual comment;
|
||||
- *CreateBinData* : creates a note with arbitrary binary data, e.g. contents of a file.
|
||||
- CreateComment : creates a note with a textual comment
|
||||
- CreateBinData : creates a note with arbitrary binary data, e.g. contents of a file
|
||||
|
||||
Both methods return an instance of *XCAFDoc_Note* class.
|
||||
~~~~~
|
||||
@@ -939,13 +658,13 @@ Handle(XCAFDoc_Note) myNote = myNotes->CreateComment("User", "Timestamp", "Hello
|
||||
~~~~~
|
||||
This code adds a child label to label 0.1.9.1 with *XCAFDoc_NoteComment* attribute.
|
||||
|
||||
@subsubsection occt_xde_2_10_3 Editing a Note
|
||||
@subsubsection occt_xde_2_7_3 Editing a Note
|
||||
An instance of *XCAFDoc_Note* class can be used for note editing.
|
||||
One may change common note data.
|
||||
~~~~~
|
||||
myNote->Set("New User", "New Timestamp");
|
||||
~~~~~
|
||||
To change specific data one needs to down cast *myNote* handle to the appropriate sub-class:
|
||||
To change specific data one need to down cast *myNote* handle to the appropriate sub-class:
|
||||
~~~~~
|
||||
Handle(XCAFDoc_NoteComment) myCommentNote = Handle(XCAFDoc_NoteComment)::DownCast(myNote);
|
||||
if (!myCommentNote.IsNull()) {
|
||||
@@ -953,12 +672,12 @@ if (!myCommentNote.IsNull()) {
|
||||
}
|
||||
~~~~~
|
||||
|
||||
@subsubsection occt_xde_2_10_4 Adding Notes
|
||||
@subsubsection occt_xde_2_7_4 Adding Notes
|
||||
|
||||
Once a note has been created it can be bound to a Document item using the following *XCAFDoc_NotesTool* methods:
|
||||
- *AddNote* : binds a note to a label;
|
||||
- *AddNoteToAttr* : binds a note to a label's attribute;
|
||||
- *AddNoteToSubshape* : binds a note to a sub-shape.
|
||||
- AddNote : binds a note to a label
|
||||
- AddNoteToAttr : binds a note to a label's attribute
|
||||
- AddNoteToSubshape : binds a note to a sub-shape
|
||||
|
||||
All methods return a pointer to *XCAFDoc_AssemblyItemRef* attribute identifying the annotated item.
|
||||
~~~~~
|
||||
@@ -971,14 +690,14 @@ Handle(XCAFDoc_AssemblyItemRef) myRefAttr = myNotes->AddNoteToAttr(myNote->Label
|
||||
Standard_Integer theSubshape = 1;
|
||||
Handle(XCAFDoc_AssemblyItemRef) myRefSubshape = myNotes->AddNoteToSubshape(myNote->Label(), theSubshape);
|
||||
~~~~~
|
||||
This code adds three child labels with *XCAFDoc_AssemblyItemRef* attribute to label 0.1.9.2. *XCAFDoc_GraphNode* attributes are added to the child labels and note labels.
|
||||
This code adds three child labels to label 0.1.9.2 with *XCAFDoc_AssemblyItemRef* attribute with *XCAFDoc_GraphNode* attributes added to this and note labels.
|
||||
|
||||
@subsubsection occt_xde_2_10_5 Finding Notes
|
||||
@subsubsection occt_xde_2_7_5 Finding Notes
|
||||
|
||||
To find annotation labels under label 0.1.9.2 use the following *XCAFDoc_NotesTool* methods:
|
||||
- *FindAnnotatedItem* : returns an annotation label for a label;
|
||||
- *FindAnnotatedItemAttr* : returns an annotation label for a label's attribute;
|
||||
- *FindAnnotatedItemSubshape* : returns an annotation label for a sub-shape.
|
||||
- FindAnnotatedItem : returns an annotation label for a label
|
||||
- FindAnnotatedItemAttr : returns an annotation label for a label's attribute
|
||||
- FindAnnotatedItemSubshape : returns an annotation label for a sub-shape
|
||||
|
||||
~~~~~
|
||||
Handle(XCAFDoc_NotesTool) myNotes = ...
|
||||
@@ -992,9 +711,9 @@ TDF_Label myLabelSubshape = myNotes->FindAnnotatedItemSubshape(theLabel, theSubs
|
||||
Null label will be returned if there is no corresponding annotation.
|
||||
|
||||
To get all notes of the Document item use the following *XCAFDoc_NotesTool* methods:
|
||||
- *GetNotes* : outputs a sequence of note labels bound to a label;
|
||||
- *GetAttrNotes* : outputs a sequence of note labels bound to a label's attribute;
|
||||
- *GetAttrSubshape* : outputs a sequence of note labels bound to a sub-shape.
|
||||
- GetNotes : outputs a sequence of note labels bound to a label
|
||||
- GetAttrNotes : outputs a sequence of note labels bound to a label's attribute
|
||||
- GetAttrSubshape : outputs a sequence of note labels bound to a sub-shape
|
||||
|
||||
All these methods return the number of notes.
|
||||
~~~~~
|
||||
@@ -1010,12 +729,12 @@ TDF_LabelSequence theNotesSubshape;
|
||||
myNotes->GetAttrSubshape(theLabel, theSubshape, theNotesSubshape);
|
||||
~~~~~
|
||||
|
||||
@subsubsection occt_xde_2_10_6 Removing Notes
|
||||
@subsubsection occt_xde_2_7_6 Removing Notes
|
||||
|
||||
To remove a note use one of the following *XCAFDoc_NotesTool* methods:
|
||||
- *RemoveNote* : unbinds a note from a label;
|
||||
- *RemoveAttrNote* : unbinds a note from a label's attribute;
|
||||
- *RemoveSubshapeNote* : unbinds a note from a sub-shape.
|
||||
- RemoveNote : unbinds a note from a label
|
||||
- RemoveAttrNote : unbinds a note from a label's attribute
|
||||
- RemoveSubshapeNote : unbinds a note from a sub-shape
|
||||
|
||||
~~~~~
|
||||
Handle(XCAFDoc_Note) myNote = ...
|
||||
@@ -1027,31 +746,30 @@ Standard_Integer theSubshape = 1;
|
||||
myNotes->RemoveSubshapeNote(myNote->Label(), theSubshape);
|
||||
~~~~~
|
||||
A note will not be deleted automatically.
|
||||
Counterpart methods to remove all notes are available, too.
|
||||
Counterpart methods to remove all notes are available too.
|
||||
|
||||
@subsubsection occt_xde_2_10_7 Deleting Notes
|
||||
@subsubsection occt_xde_2_7_7 Deleting Notes
|
||||
|
||||
To delete note(s) use the following *XCAFDoc_NotesTool* methods:
|
||||
- *DeleteNote* : deletes a single note;
|
||||
- *DeleteNotes* : deletes a sequence of notes;
|
||||
- *DeleteAllNotes* : deletes all Document notes;
|
||||
- *DeleteOrphanNotes* : deletes notes not bound to Document items.
|
||||
- DeleteNote : deletes a single note
|
||||
- DeleteNotes : deletes a sequence of notes
|
||||
- DeleteAllNotes : deletes all Document notes
|
||||
- DeleteOrphanNotes : deletes notes not bound to Document items
|
||||
|
||||
All these methods except for the last one break all links with Document items as well.
|
||||
All these methods excepting the last one break all links with Document items as well.
|
||||
|
||||
@subsection occt_xde_2_11 Reading and Writing STEP or IGES
|
||||
@subsection occt_xde_2_8 Reading and Writing STEP or IGES
|
||||
Note that saving and restoring the document itself are standard OCAF operations. As the various previously described definitions enter into this frame, they will not be explained any further.
|
||||
The same can be said for Viewing: presentations can be defined from Shapes and Colors.
|
||||
|
||||
There are several important points to consider:
|
||||
* Previously defined Readers and Writers for dealing with Shapes only, whether Standard or Advanced, remain unchanged in their form and in their dependencies. In addition, functions other than mapping are also unchanged.
|
||||
* XDE provides mapping with data other than Shapes. Names, Colors, Layers, GD\&T, Clipping planes, Views, Validation Properties (Centroid, Volume, Area), and Assembly Structure are hierarchic with rigid motion. Currently, Clipping planes and Views writing supported for XBF format only.
|
||||
* XDE provides mapping with data other than Shapes. Names, Colors, Layers, Validation Properties (Centroid, Volume, Area), and Assembly Structure are hierarchic with rigid motion.
|
||||
* XDE mapping is relevant for use within the Advanced level of Data Exchanges, rather than Standard ones, because a higher level of information is better suited to a higher quality of shapes. In addition, this allows to avoid the multiplicity of combinations between various options. Note that this choice is not one of architecture but of practical usage and packaging.
|
||||
* Reader and Writer classes for XDE are generally used like those for Shapes. However, their use is adapted to manage a Document rather than a Shape.
|
||||
|
||||
The packages to manage this are *IGESCAFControl* for IGES, and *STEPCAFControl* for STEP.
|
||||
|
||||
@subsubsection occt_xde_2_11_1 Reading a STEP file
|
||||
@subsubsection occt_xde_2_8_1 Reading a STEP file
|
||||
To read a STEP file by itself, use:
|
||||
|
||||
~~~~~
|
||||
@@ -1072,7 +790,7 @@ if ( !reader.Transfer ( doc ) ) {
|
||||
~~~~~
|
||||
|
||||
In addition, the reader provides methods that are applicable to document transfers and for directly querying of the data produced.
|
||||
@subsubsection occt_xde_2_11_2 Writing a STEP file
|
||||
@subsubsection occt_xde_2_8_2 Writing a STEP file
|
||||
To write a STEP file by itself, use:
|
||||
|
||||
~~~~~
|
||||
@@ -1093,19 +811,18 @@ if ( ! writer.Transfer ( Doc, mode ) ) {
|
||||
IFSelect_ReturnStatus stat = writer.Write(file-name);
|
||||
~~~~~
|
||||
|
||||
@subsubsection occt_xde_2_11_3 Reading an IGES File
|
||||
@subsubsection occt_xde_2_8_3 Reading an IGES File
|
||||
Use the same procedure as for a STEP file but with IGESCAFControl instead of STEPCAFControl.
|
||||
@subsubsection occt_xde_2_11_4 Writing an IGES File
|
||||
@subsubsection occt_xde_2_8_4 Writing an IGES File
|
||||
Use the same procedure as for a STEP file but with IGESCAFControl instead of STEPCAFControl.
|
||||
|
||||
@subsection occt_xde_2_12 Using an XDE Document
|
||||
@subsection occt_xde_2_9 Using an XDE Document
|
||||
There are several ways of exploiting XDE data from an application, you can:
|
||||
1. Get the data relevant for the application by mapping XDE/Appli, then discard the XDE data once it has been used.
|
||||
2. Create a reference from the Application Document to the XDE Document, to have its data available as external data.
|
||||
3. Embed XDE data inside the Application Document (see the following section for details).
|
||||
4. Directly exploit XDE data such as when using file checkers.
|
||||
|
||||
@subsubsection occt_xde_2_12_1 XDE Data inside an Application Document
|
||||
@subsubsection occt_xde_2_91 XDE Data inside an Application Document
|
||||
To have XCAF data elsewhere than under label 0.1, you use the DocLabel of XDE. The method DocLabel from XCAFDoc_DocumentTool determines the relevant Label for XCAF. However, note that the default is 0.1.
|
||||
|
||||
In addition, as XDE data is defined and managed in a modular way, you can consider exclusively Assembly Structure, only Colors, and so on.
|
||||
|
@@ -32,8 +32,6 @@
|
||||
//wrapper of pure C++ classes to ref classes
|
||||
#include <NCollection_Haft.h>
|
||||
|
||||
#include <vcclr.h>
|
||||
|
||||
// list of required OCCT libraries
|
||||
#pragma comment(lib, "TKernel.lib")
|
||||
#pragma comment(lib, "TKMath.lib")
|
||||
@@ -47,24 +45,6 @@
|
||||
#pragma comment(lib, "TKStl.lib")
|
||||
#pragma comment(lib, "TKVrml.lib")
|
||||
|
||||
//! Auxiliary tool for converting C# string into UTF-8 string.
|
||||
static TCollection_AsciiString toAsciiString (String^ theString)
|
||||
{
|
||||
if (theString == nullptr)
|
||||
{
|
||||
return TCollection_AsciiString();
|
||||
}
|
||||
|
||||
pin_ptr<const wchar_t> aPinChars = PtrToStringChars (theString);
|
||||
const wchar_t* aWCharPtr = aPinChars;
|
||||
if (aWCharPtr == NULL
|
||||
|| *aWCharPtr == L'\0')
|
||||
{
|
||||
return TCollection_AsciiString();
|
||||
}
|
||||
return TCollection_AsciiString (aWCharPtr);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Proxy class encapsulating calls to OCCT C++ classes within
|
||||
/// C++/CLI class visible from .Net (CSharp)
|
||||
@@ -113,14 +93,14 @@ public:
|
||||
/// Make dump of current view to file
|
||||
/// </summary>
|
||||
/// <param name="theFileName">Name of dump file</param>
|
||||
bool Dump(const TCollection_AsciiString& theFileName)
|
||||
bool Dump(char *theFileName)
|
||||
{
|
||||
if (myView().IsNull())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
myView()->Redraw();
|
||||
return myView()->Dump(theFileName.ToCString()) != Standard_False;
|
||||
return myView()->Dump(theFileName) != Standard_False;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -751,18 +731,28 @@ public:
|
||||
/// <param name="theFileName">Name of import file</param>
|
||||
bool ImportBrep(System::String^ theFileName)
|
||||
{
|
||||
return ImportBrep (toAsciiString (theFileName));
|
||||
bool isResult = false;
|
||||
int aLength = theFileName->Length;
|
||||
char* aFilename = new char[aLength+1];
|
||||
for(int i = 0; i<aLength; i++)
|
||||
{
|
||||
aFilename[i] = (char)theFileName->ToCharArray()[i];
|
||||
}
|
||||
aFilename[aLength] = '\0';
|
||||
isResult = ImportBrep(aFilename);
|
||||
return isResult;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///Import BRep file
|
||||
/// </summary>
|
||||
/// <param name="theFileName">Name of import file</param>
|
||||
bool ImportBrep (const TCollection_AsciiString& theFileName)
|
||||
bool ImportBrep(char* theFileName)
|
||||
{
|
||||
Standard_CString aFileName = (Standard_CString) theFileName;
|
||||
TopoDS_Shape aShape;
|
||||
BRep_Builder aBuilder;
|
||||
Standard_Boolean isResult = BRepTools::Read(aShape,theFileName.ToCString(),aBuilder);
|
||||
Standard_Boolean isResult = BRepTools::Read(aShape,aFileName,aBuilder);
|
||||
if (!isResult)
|
||||
{
|
||||
return false;
|
||||
@@ -776,10 +766,11 @@ public:
|
||||
///Import Step file
|
||||
/// </summary>
|
||||
/// <param name="theFileName">Name of import file</param>
|
||||
bool ImportStep(const TCollection_AsciiString& theFileName)
|
||||
bool ImportStep(char* theFileName)
|
||||
{
|
||||
Standard_CString aFileName = (Standard_CString) theFileName;
|
||||
STEPControl_Reader aReader;
|
||||
IFSelect_ReturnStatus aStatus = aReader.ReadFile(theFileName.ToCString());
|
||||
IFSelect_ReturnStatus aStatus = aReader.ReadFile(aFileName);
|
||||
if ( aStatus == IFSelect_RetDone )
|
||||
{
|
||||
bool isFailsonly = false;
|
||||
@@ -814,10 +805,11 @@ public:
|
||||
///Import Iges file
|
||||
/// </summary>
|
||||
/// <param name="theFileName">Name of import file</param>
|
||||
bool ImportIges(const TCollection_AsciiString& theFileName)
|
||||
bool ImportIges(char* theFileName)
|
||||
{
|
||||
Standard_CString aFileName = (Standard_CString) theFileName;
|
||||
IGESControl_Reader aReader;
|
||||
int aStatus = aReader.ReadFile( theFileName.ToCString() );
|
||||
int aStatus = aReader.ReadFile( aFileName );
|
||||
|
||||
if ( aStatus == IFSelect_RetDone )
|
||||
{
|
||||
@@ -838,7 +830,7 @@ public:
|
||||
///Export BRep file
|
||||
/// </summary>
|
||||
/// <param name="theFileName">Name of export file</param>
|
||||
bool ExportBRep(const TCollection_AsciiString& theFileName)
|
||||
bool ExportBRep(char* theFileName)
|
||||
{
|
||||
myAISContext()->InitSelected();
|
||||
if (!myAISContext()->MoreSelected())
|
||||
@@ -848,14 +840,14 @@ public:
|
||||
|
||||
Handle(AIS_InteractiveObject) anIO = myAISContext()->SelectedInteractive();
|
||||
Handle(AIS_Shape) anIS = Handle(AIS_Shape)::DownCast(anIO);
|
||||
return BRepTools::Write (anIS->Shape(), theFileName.ToCString()) != Standard_False;
|
||||
return BRepTools::Write (anIS->Shape(), (Standard_CString)theFileName) != Standard_False;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///Export Step file
|
||||
/// </summary>
|
||||
/// <param name="theFileName">Name of export file</param>
|
||||
bool ExportStep(const TCollection_AsciiString& theFileName)
|
||||
bool ExportStep(char* theFileName)
|
||||
{
|
||||
STEPControl_StepModelType aType = STEPControl_AsIs;
|
||||
IFSelect_ReturnStatus aStatus;
|
||||
@@ -872,7 +864,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
aStatus = aWriter.Write(theFileName.ToCString());
|
||||
aStatus = aWriter.Write( (Standard_CString)theFileName );
|
||||
if ( aStatus != IFSelect_RetDone )
|
||||
{
|
||||
return false;
|
||||
@@ -885,7 +877,7 @@ public:
|
||||
///Export Iges file
|
||||
/// </summary>
|
||||
/// <param name="theFileName">Name of export file</param>
|
||||
bool ExportIges(const TCollection_AsciiString& theFileName)
|
||||
bool ExportIges(char* theFileName)
|
||||
{
|
||||
IGESControl_Controller::Init();
|
||||
IGESControl_Writer aWriter( Interface_Static::CVal( "XSTEP.iges.unit" ),
|
||||
@@ -900,14 +892,14 @@ public:
|
||||
}
|
||||
|
||||
aWriter.ComputeModel();
|
||||
return aWriter.Write(theFileName.ToCString()) != Standard_False;
|
||||
return aWriter.Write( (Standard_CString)theFileName) != Standard_False;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///Export Vrml file
|
||||
/// </summary>
|
||||
/// <param name="theFileName">Name of export file</param>
|
||||
bool ExportVrml(const TCollection_AsciiString& theFileName)
|
||||
bool ExportVrml(char* theFileName)
|
||||
{
|
||||
TopoDS_Compound aRes;
|
||||
BRep_Builder aBuilder;
|
||||
@@ -927,7 +919,7 @@ public:
|
||||
}
|
||||
|
||||
VrmlAPI_Writer aWriter;
|
||||
aWriter.Write(aRes, theFileName.ToCString());
|
||||
aWriter.Write( aRes, (Standard_CString)theFileName );
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -936,7 +928,7 @@ public:
|
||||
///Export Stl file
|
||||
/// </summary>
|
||||
/// <param name="theFileName">Name of export file</param>
|
||||
bool ExportStl(const TCollection_AsciiString& theFileName)
|
||||
bool ExportStl(char* theFileName)
|
||||
{
|
||||
TopoDS_Compound aComp;
|
||||
BRep_Builder aBuilder;
|
||||
@@ -955,7 +947,7 @@ public:
|
||||
}
|
||||
|
||||
StlAPI_Writer aWriter;
|
||||
aWriter.Write(aComp, theFileName.ToCString());
|
||||
aWriter.Write( aComp, (Standard_CString)theFileName );
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -968,8 +960,14 @@ public:
|
||||
bool TranslateModel(System::String^ theFileName, int theFormat, bool theIsImport)
|
||||
{
|
||||
bool isResult;
|
||||
int aLength = theFileName->Length;
|
||||
char* aFilename = new char[aLength+1];
|
||||
for(int i = 0; i<aLength; i++)
|
||||
{
|
||||
aFilename[i] = (char)theFileName->ToCharArray()[i];
|
||||
}
|
||||
aFilename[aLength] = '\0';
|
||||
|
||||
const TCollection_AsciiString aFilename = toAsciiString (theFileName);
|
||||
if (theIsImport)
|
||||
{
|
||||
switch(theFormat)
|
||||
|
@@ -1,4 +1,3 @@
|
||||
#include <d3d9.h>
|
||||
#include <windows.h>
|
||||
|
||||
// include required OCCT headers
|
||||
@@ -39,8 +38,6 @@
|
||||
//wrapper of pure C++ classes to ref classes
|
||||
#include <NCollection_Haft.h>
|
||||
|
||||
#include <vcclr.h>
|
||||
|
||||
// list of required OCCT libraries
|
||||
#pragma comment(lib, "TKernel.lib")
|
||||
#pragma comment(lib, "TKMath.lib")
|
||||
@@ -57,24 +54,6 @@
|
||||
|
||||
#pragma comment(lib, "D3D9.lib")
|
||||
|
||||
//! Auxiliary tool for converting C# string into UTF-8 string.
|
||||
static TCollection_AsciiString toAsciiString (String^ theString)
|
||||
{
|
||||
if (theString == nullptr)
|
||||
{
|
||||
return TCollection_AsciiString();
|
||||
}
|
||||
|
||||
pin_ptr<const wchar_t> aPinChars = PtrToStringChars (theString);
|
||||
const wchar_t* aWCharPtr = aPinChars;
|
||||
if (aWCharPtr == NULL
|
||||
|| *aWCharPtr == L'\0')
|
||||
{
|
||||
return TCollection_AsciiString();
|
||||
}
|
||||
return TCollection_AsciiString (aWCharPtr);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Proxy class encapsulating calls to OCCT C++ classes within
|
||||
/// C++/CLI class visible from .Net (CSharp)
|
||||
@@ -129,14 +108,14 @@ public:
|
||||
/// Make dump of current view to file
|
||||
/// </summary>
|
||||
/// <param name="theFileName">Name of dump file</param>
|
||||
bool Dump (const TCollection_AsciiString& theFileName)
|
||||
bool Dump (const char* theFileName)
|
||||
{
|
||||
if (myView().IsNull())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
myView()->Redraw();
|
||||
return myView()->Dump (theFileName.ToCString()) != Standard_False;
|
||||
return myView()->Dump (theFileName) != Standard_False;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -640,7 +619,7 @@ public:
|
||||
}
|
||||
for (myAISContext()->InitSelected(); myAISContext()->MoreSelected(); myAISContext()->NextSelected())
|
||||
{
|
||||
myAISContext()->SetTransparency (myAISContext()->SelectedInteractive(), ((Standard_Real )theTrans) / 10.0, Standard_False);
|
||||
myAISContext()->SetTransparency (myAISContext()->Current(), ((Standard_Real )theTrans) / 10.0, Standard_False);
|
||||
}
|
||||
myAISContext()->UpdateCurrentViewer();
|
||||
}
|
||||
@@ -729,18 +708,28 @@ public:
|
||||
/// <param name="theFileName">Name of import file</param>
|
||||
bool ImportBrep (System::String^ theFileName)
|
||||
{
|
||||
return ImportBrep (toAsciiString (theFileName));
|
||||
bool isResult = false;
|
||||
int aLength = theFileName->Length;
|
||||
char* aFilename = new char[aLength + 1];
|
||||
for(int i = 0; i < aLength; ++i)
|
||||
{
|
||||
aFilename[i] = (char )theFileName->ToCharArray()[i];
|
||||
}
|
||||
aFilename[aLength] = '\0';
|
||||
isResult = ImportBrep (aFilename);
|
||||
delete[] aFilename;
|
||||
return isResult;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///Import BRep file
|
||||
/// </summary>
|
||||
/// <param name="theFileName">Name of import file</param>
|
||||
bool ImportBrep (const TCollection_AsciiString& theFileName)
|
||||
bool ImportBrep (char* theFileName)
|
||||
{
|
||||
TopoDS_Shape aShape;
|
||||
BRep_Builder aBuilder;
|
||||
if (!BRepTools::Read (aShape, theFileName.ToCString(), aBuilder))
|
||||
if (!BRepTools::Read (aShape, theFileName, aBuilder))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -756,10 +745,10 @@ public:
|
||||
///Import Step file
|
||||
/// </summary>
|
||||
/// <param name="theFileName">Name of import file</param>
|
||||
bool ImportStep (const TCollection_AsciiString& theFileName)
|
||||
bool ImportStep (char* theFileName)
|
||||
{
|
||||
STEPControl_Reader aReader;
|
||||
if (aReader.ReadFile (theFileName.ToCString()) != IFSelect_RetDone)
|
||||
if (aReader.ReadFile (theFileName) != IFSelect_RetDone)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -789,10 +778,10 @@ public:
|
||||
///Import Iges file
|
||||
/// </summary>
|
||||
/// <param name="theFileName">Name of import file</param>
|
||||
bool ImportIges (const TCollection_AsciiString& theFileName)
|
||||
bool ImportIges (char* theFileName)
|
||||
{
|
||||
IGESControl_Reader aReader;
|
||||
if (aReader.ReadFile (theFileName.ToCString()) != IFSelect_RetDone)
|
||||
if (aReader.ReadFile (theFileName) != IFSelect_RetDone)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -808,7 +797,7 @@ public:
|
||||
///Export BRep file
|
||||
/// </summary>
|
||||
/// <param name="theFileName">Name of export file</param>
|
||||
bool ExportBRep (const TCollection_AsciiString& theFileName)
|
||||
bool ExportBRep (char* theFileName)
|
||||
{
|
||||
myAISContext()->InitSelected();
|
||||
if (!myAISContext()->MoreSelected())
|
||||
@@ -818,14 +807,14 @@ public:
|
||||
|
||||
Handle(AIS_Shape) anIS = Handle(AIS_Shape)::DownCast (myAISContext()->SelectedInteractive());
|
||||
return !anIS.IsNull()
|
||||
&& BRepTools::Write (anIS->Shape(), theFileName.ToCString());
|
||||
&& BRepTools::Write (anIS->Shape(), theFileName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///Export Step file
|
||||
/// </summary>
|
||||
/// <param name="theFileName">Name of export file</param>
|
||||
bool ExportStep (const TCollection_AsciiString& theFileName)
|
||||
bool ExportStep (char* theFileName)
|
||||
{
|
||||
STEPControl_StepModelType aType = STEPControl_AsIs;
|
||||
STEPControl_Writer aWriter;
|
||||
@@ -843,14 +832,14 @@ public:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return aWriter.Write (theFileName.ToCString()) == IFSelect_RetDone;
|
||||
return aWriter.Write (theFileName) == IFSelect_RetDone;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///Export Iges file
|
||||
/// </summary>
|
||||
/// <param name="theFileName">Name of export file</param>
|
||||
bool ExportIges (const TCollection_AsciiString& theFileName)
|
||||
bool ExportIges (char* theFileName)
|
||||
{
|
||||
IGESControl_Controller::Init();
|
||||
IGESControl_Writer aWriter (Interface_Static::CVal ("XSTEP.iges.unit"),
|
||||
@@ -867,14 +856,14 @@ public:
|
||||
}
|
||||
|
||||
aWriter.ComputeModel();
|
||||
return aWriter.Write (theFileName.ToCString()) != Standard_False;
|
||||
return aWriter.Write (theFileName) != Standard_False;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///Export Vrml file
|
||||
/// </summary>
|
||||
/// <param name="theFileName">Name of export file</param>
|
||||
bool ExportVrml (const TCollection_AsciiString& theFileName)
|
||||
bool ExportVrml (char* theFileName)
|
||||
{
|
||||
TopoDS_Compound aRes;
|
||||
BRep_Builder aBuilder;
|
||||
@@ -890,7 +879,7 @@ public:
|
||||
}
|
||||
|
||||
VrmlAPI_Writer aWriter;
|
||||
aWriter.Write (aRes, theFileName.ToCString());
|
||||
aWriter.Write (aRes, theFileName);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -898,7 +887,7 @@ public:
|
||||
///Export Stl file
|
||||
/// </summary>
|
||||
/// <param name="theFileName">Name of export file</param>
|
||||
bool ExportStl (const TCollection_AsciiString& theFileName)
|
||||
bool ExportStl (char* theFileName)
|
||||
{
|
||||
TopoDS_Compound aComp;
|
||||
BRep_Builder aBuilder;
|
||||
@@ -914,7 +903,7 @@ public:
|
||||
}
|
||||
|
||||
StlAPI_Writer aWriter;
|
||||
aWriter.Write (aComp, theFileName.ToCString());
|
||||
aWriter.Write (aComp, theFileName);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -927,7 +916,14 @@ public:
|
||||
bool TranslateModel (System::String^ theFileName, int theFormat, bool theIsImport)
|
||||
{
|
||||
bool isResult = false;
|
||||
const TCollection_AsciiString aFilename = toAsciiString (theFileName);
|
||||
int aLength = theFileName->Length;
|
||||
char* aFilename = new char[aLength + 1];
|
||||
for (int aCharIter = 0; aCharIter < aLength; ++aCharIter)
|
||||
{
|
||||
aFilename[aCharIter] = (char)theFileName->ToCharArray()[aCharIter];
|
||||
}
|
||||
aFilename[aLength] = '\0';
|
||||
|
||||
if (theIsImport)
|
||||
{
|
||||
switch (theFormat)
|
||||
@@ -949,6 +945,7 @@ public:
|
||||
case 5: isResult = Dump (aFilename); break;
|
||||
}
|
||||
}
|
||||
delete[] aFilename;
|
||||
return isResult;
|
||||
}
|
||||
|
||||
|
@@ -137,12 +137,12 @@ void Textures_Presentation::Init()
|
||||
//================================================================
|
||||
void Textures_Presentation::lightsOnOff(Standard_Boolean isOn)
|
||||
{
|
||||
static Handle(V3d_Light) aLight1 = new V3d_DirectionalLight(V3d_XnegYposZneg);
|
||||
static Handle(V3d_Light) aLight2 = new V3d_DirectionalLight(V3d_XnegYnegZpos);
|
||||
static Handle(V3d_Light) aLight3 = new V3d_DirectionalLight(V3d_XposYnegZpos);
|
||||
static Handle(V3d_Light) aLight4 = new V3d_DirectionalLight(V3d_XnegYnegZneg);
|
||||
static Handle(V3d_Light) aLight5 = new V3d_DirectionalLight(V3d_XnegYposZpos);
|
||||
static Handle(V3d_Light) aLight6 = new V3d_DirectionalLight(V3d_XposYposZpos);
|
||||
static Handle(V3d_Light) aLight1 = new V3d_DirectionalLight(getViewer(), V3d_XnegYposZneg);
|
||||
static Handle(V3d_Light) aLight2 = new V3d_DirectionalLight(getViewer(), V3d_XnegYnegZpos);
|
||||
static Handle(V3d_Light) aLight3 = new V3d_DirectionalLight(getViewer(), V3d_XposYnegZpos);
|
||||
static Handle(V3d_Light) aLight4 = new V3d_DirectionalLight(getViewer(), V3d_XnegYnegZneg);
|
||||
static Handle(V3d_Light) aLight5 = new V3d_DirectionalLight(getViewer(), V3d_XnegYposZpos);
|
||||
static Handle(V3d_Light) aLight6 = new V3d_DirectionalLight(getViewer(), V3d_XposYposZpos);
|
||||
|
||||
if (isOn)
|
||||
{
|
||||
|
@@ -185,12 +185,12 @@ Standard_Boolean TexturesExt_Presentation::loadShape(TopoDS_Shape& aShape,
|
||||
//================================================================
|
||||
void TexturesExt_Presentation::lightsOnOff(Standard_Boolean isOn)
|
||||
{
|
||||
static Handle(V3d_Light) aLight1 = new V3d_DirectionalLight(V3d_XnegYposZneg);
|
||||
static Handle(V3d_Light) aLight2 = new V3d_DirectionalLight(V3d_XnegYnegZpos);
|
||||
static Handle(V3d_Light) aLight3 = new V3d_DirectionalLight(V3d_XposYnegZpos);
|
||||
static Handle(V3d_Light) aLight4 = new V3d_DirectionalLight(V3d_XnegYnegZneg);
|
||||
static Handle(V3d_Light) aLight5 = new V3d_DirectionalLight(V3d_XnegYposZpos);
|
||||
static Handle(V3d_Light) aLight6 = new V3d_DirectionalLight(V3d_XposYposZpos);
|
||||
static Handle(V3d_Light) aLight1 = new V3d_DirectionalLight(getViewer(), V3d_XnegYposZneg);
|
||||
static Handle(V3d_Light) aLight2 = new V3d_DirectionalLight(getViewer(), V3d_XnegYnegZpos);
|
||||
static Handle(V3d_Light) aLight3 = new V3d_DirectionalLight(getViewer(), V3d_XposYnegZpos);
|
||||
static Handle(V3d_Light) aLight4 = new V3d_DirectionalLight(getViewer(), V3d_XnegYnegZneg);
|
||||
static Handle(V3d_Light) aLight5 = new V3d_DirectionalLight(getViewer(), V3d_XnegYposZpos);
|
||||
static Handle(V3d_Light) aLight6 = new V3d_DirectionalLight(getViewer(), V3d_XposYposZpos);
|
||||
|
||||
if (isOn)
|
||||
{
|
||||
|
@@ -9,25 +9,16 @@ set( OCC_LIB_PATH "" CACHE PATH "OpenCascade LIB PATH")
|
||||
|
||||
set( OCCTDEMO_DIR ${OCC_CASROOT}/samples/mfc/occtdemo)
|
||||
|
||||
if ((MSVC_VERSION EQUAL 1300) OR (MSVC_VERSION EQUAL 1310))
|
||||
if (DEFINED MSVC70)
|
||||
SET(COMPILER vc7)
|
||||
elseif (MSVC_VERSION EQUAL 1400)
|
||||
elseif (DEFINED MSVC80)
|
||||
SET(COMPILER vc8)
|
||||
elseif (MSVC_VERSION EQUAL 1500)
|
||||
elseif (DEFINED MSVC90)
|
||||
SET(COMPILER vc9)
|
||||
elseif (MSVC_VERSION EQUAL 1600)
|
||||
elseif (DEFINED MSVC10)
|
||||
SET(COMPILER vc10)
|
||||
elseif (MSVC_VERSION EQUAL 1700)
|
||||
elseif (DEFINED MSVC11)
|
||||
SET(COMPILER vc11)
|
||||
elseif (MSVC_VERSION EQUAL 1800)
|
||||
SET(COMPILER vc12)
|
||||
elseif (MSVC_VERSION EQUAL 1900)
|
||||
SET(COMPILER vc14)
|
||||
elseif ((MSVC_VERSION GREATER 1900) AND (MSVC_VERSION LESS 2000))
|
||||
# Since Visual Studio 15 (2017), its version diverged from version of
|
||||
# compiler which is 14.1; as that compiler uses the same run-time as 14.0,
|
||||
# we keep its id as "vc14" to be compatibille
|
||||
SET(COMPILER vc14)
|
||||
else()
|
||||
SET(COMPILER ${CMAKE_GENERATOR})
|
||||
endif()
|
||||
|
@@ -65,7 +65,7 @@ add_executable (Geometry WIN32 ${Geometry_SOURCE_FILES}
|
||||
${Geometry_RESOURCE_FILES}
|
||||
${Geometry_RESOURCE_HEADER})
|
||||
|
||||
set_property(TARGET Geometry PROPERTY FOLDER "Samples/mfc")
|
||||
set_property(TARGET Geometry PROPERTY FOLDER Samples)
|
||||
|
||||
if (SINGLE_GENERATOR)
|
||||
install (TARGETS Geometry DESTINATION "${INSTALL_DIR_BIN}")
|
||||
|
@@ -37,7 +37,7 @@ add_executable ( Modeling WIN32 ${Modeling_SOURCE_FILES}
|
||||
${Modeling_RESOURCE_HEADER}
|
||||
${Modeling_RESOURCE_FILES})
|
||||
|
||||
set_property (TARGET Modeling PROPERTY FOLDER "Samples/mfc")
|
||||
set_property (TARGET Modeling PROPERTY FOLDER Samples)
|
||||
|
||||
if (SINGLE_GENERATOR)
|
||||
install (TARGETS Modeling DESTINATION "${INSTALL_DIR_BIN}")
|
||||
|
@@ -14,7 +14,6 @@
|
||||
|
||||
#include <Adaptor3d_HCurveOnSurface.hxx>
|
||||
#include <Adaptor3d_CurveOnSurface.hxx>
|
||||
#include <AIS_ColoredShape.hxx>
|
||||
#include <AIS_ListOfInteractive.hxx>
|
||||
#include <AIS_ListIteratorOfListOfInteractive.hxx>
|
||||
#include <TColStd_Array2OfReal.hxx>
|
||||
@@ -1181,8 +1180,8 @@ Sleep(1000);
|
||||
|
||||
TopoDS_Shape FusedShape = BRepAlgoAPI_Fuse(theBox1,theBox2);
|
||||
|
||||
myAISContext->Erase(ais1,false);
|
||||
myAISContext->Erase(ais2,false);
|
||||
myAISContext->Erase(ais1,Standard_True);
|
||||
myAISContext->Erase(ais2,Standard_True);
|
||||
|
||||
Handle (AIS_Shape) aFusion = new AIS_Shape(FusedShape);
|
||||
myAISContext->SetDisplayMode(aFusion,1,Standard_False);
|
||||
@@ -1191,7 +1190,7 @@ myAISContext->SetMaterial(aFusion,Graphic3d_NOM_PLASTIC,Standard_False);
|
||||
myAISContext->Display(aFusion,Standard_False);
|
||||
const Handle(AIS_InteractiveObject)& anIOFusion = aFusion;
|
||||
myAISContext->SetSelected (anIOFusion, Standard_False);
|
||||
myAISContext->UpdateCurrentViewer();
|
||||
Fit();
|
||||
|
||||
TCollection_AsciiString Message ("\
|
||||
\n\
|
||||
@@ -1219,8 +1218,9 @@ TopoDS_Shape theBox = BRepPrimAPI_MakeBox(axe, 60, 80, 100).Shape();
|
||||
Handle(AIS_Shape) aboxshape=new AIS_Shape(theBox);
|
||||
myAISContext->SetColor(aboxshape,Quantity_NOC_YELLOW,Standard_False);
|
||||
myAISContext->SetMaterial(aboxshape,Graphic3d_NOM_PLASTIC,Standard_False);
|
||||
myAISContext->SetDisplayMode(aboxshape,1,Standard_False);
|
||||
myAISContext->SetTransparency(aboxshape,0.2,Standard_False);
|
||||
myAISContext->Display(aboxshape, AIS_Shaded, 0, Standard_False);
|
||||
myAISContext->Display(aboxshape,Standard_False);
|
||||
const Handle(AIS_InteractiveObject)& anIOBoxShape = aboxshape;
|
||||
myAISContext->SetSelected (anIOBoxShape, Standard_False);
|
||||
Fit();
|
||||
@@ -1235,21 +1235,20 @@ myAISContext->SetTransparency(awedge,0.0,Standard_False);
|
||||
myAISContext->Display(awedge,Standard_False);
|
||||
const Handle(AIS_InteractiveObject)& anIOWedge = awedge;
|
||||
myAISContext->SetSelected (anIOWedge, Standard_False);
|
||||
myAISContext->UpdateCurrentViewer();
|
||||
Fit();
|
||||
Sleep(500);
|
||||
|
||||
TopoDS_Shape theCommonSurface = BRepAlgoAPI_Common(theBox,theWedge);
|
||||
|
||||
myAISContext->Erase(aboxshape, false);
|
||||
myAISContext->Erase(awedge, false);
|
||||
myAISContext->Erase(aboxshape,Standard_True);
|
||||
myAISContext->Erase(awedge,Standard_True);
|
||||
|
||||
Handle(AIS_Shape) acommon = new AIS_Shape(theCommonSurface);
|
||||
myAISContext->SetColor(acommon,Quantity_NOC_GREEN,Standard_False);
|
||||
myAISContext->SetMaterial(acommon,Graphic3d_NOM_PLASTIC,Standard_False);
|
||||
myAISContext->Display (acommon, AIS_Shaded, 0,Standard_False);
|
||||
myAISContext->Display(acommon,Standard_False);
|
||||
const Handle(AIS_InteractiveObject)& anIOCommon = acommon;
|
||||
myAISContext->SetSelected (anIOCommon, Standard_False);
|
||||
myAISContext->UpdateCurrentViewer();
|
||||
|
||||
TCollection_AsciiString Message ("\
|
||||
\n\
|
||||
@@ -4187,27 +4186,24 @@ if (!aPlane.IsNull()) { \n\
|
||||
|
||||
void CModelingDoc::OnExplorer()
|
||||
{
|
||||
myAISContext->RemoveAll (false);
|
||||
AIS_ListOfInteractive aList;
|
||||
myAISContext->DisplayedObjects(aList);
|
||||
AIS_ListIteratorOfListOfInteractive aListIterator;
|
||||
for(aListIterator.Initialize(aList);aListIterator.More();aListIterator.Next()){
|
||||
myAISContext->Remove (aListIterator.Value(), Standard_False);
|
||||
}
|
||||
|
||||
TopoDS_Shape aBox = BRepPrimAPI_MakeBox(100, 100, 100).Shape();
|
||||
TopoDS_Shape aBox = BRepPrimAPI_MakeBox(100, 100, 100).Shape();
|
||||
Standard_Integer j(8);
|
||||
Handle(AIS_ColoredShape) theBox = new AIS_ColoredShape(aBox);
|
||||
Handle(AIS_Shape) theBox = new AIS_Shape(aBox);
|
||||
myAISContext->SetColor(theBox,Quantity_NOC_RED,Standard_False);
|
||||
myAISContext->SetMaterial(theBox,Graphic3d_NOM_PLASTIC,Standard_False);
|
||||
myAISContext->Display(theBox, AIS_Shaded, 0,Standard_False);
|
||||
myAISContext->Display(theBox,Standard_False);
|
||||
Fit();
|
||||
Sleep(500);
|
||||
|
||||
for (TopExp_Explorer exp (aBox,TopAbs_FACE);exp.More();exp.Next())
|
||||
{
|
||||
for (TopExp_Explorer exp (aBox,TopAbs_FACE);exp.More();exp.Next()) {
|
||||
TopoDS_Face aCurrentFace = TopoDS::Face(exp.Current());
|
||||
{
|
||||
Handle(AIS_ColoredDrawer) aSubFaceAspects = theBox->CustomAspects (aCurrentFace);
|
||||
aSubFaceAspects->SetShadingAspect (new Prs3d_ShadingAspect());
|
||||
*aSubFaceAspects->ShadingAspect()->Aspect() = *theBox->Attributes()->ShadingAspect()->Aspect();
|
||||
aSubFaceAspects->ShadingAspect()->Aspect()->ChangeFrontMaterial().SetTransparency (0.8f);
|
||||
myAISContext->Redisplay (theBox, false);
|
||||
}
|
||||
|
||||
//test the orientation of the current face
|
||||
TopAbs_Orientation orient = aCurrentFace.Orientation();
|
||||
@@ -4228,28 +4224,49 @@ void CModelingDoc::OnExplorer()
|
||||
gp_Ax1 norm = agpPlane.Axis();
|
||||
gp_Dir dir = norm.Direction();
|
||||
gp_Vec move(dir);
|
||||
//Connect
|
||||
// new in 2.0 ... AIS_ConnectedInteractive wants a TopLoc_Location instead of a Geom_Transformation
|
||||
// TopLoc_Location aLocation;
|
||||
// Handle (AIS_ConnectedInteractive) theTransformedDisplay = new AIS_ConnectedInteractive();
|
||||
// theTransformedDisplay->Connect(theMovingFace,theMove);
|
||||
// theTransformedDisplay->Connect(theMovingFace, aLocation);
|
||||
// Handle (Geom_Transformation) theMove = new Geom_Transformation(aLocation->Transformation());
|
||||
// new in 2.0
|
||||
// myAISContext->Display(theTransformedDisplay);
|
||||
|
||||
TopLoc_Location aLocation;
|
||||
Handle (AIS_ConnectedInteractive) theTransformedDisplay = new AIS_ConnectedInteractive();
|
||||
theTransformedDisplay->Connect(theMovingFace, aLocation);
|
||||
|
||||
|
||||
// = myAISContext->Location(theMovingFace);
|
||||
Handle (Geom_Transformation) theMove = new Geom_Transformation(aLocation.Transformation());
|
||||
myAISContext->Display(theTransformedDisplay,Standard_False);
|
||||
myAISContext->UpdateCurrentViewer();
|
||||
Fit();
|
||||
Sleep (500);
|
||||
|
||||
for (Standard_Integer i=1;i<=30;i++)
|
||||
{
|
||||
for (Standard_Integer i=1;i<=30;i++) {
|
||||
|
||||
//Build a transformation on the display
|
||||
// theMove->SetTranslation(move*i);
|
||||
|
||||
// if (orient==TopAbs_FORWARD) theTransformedDisplay->SetTransformation(theMove);
|
||||
// else theTransformedDisplay->SetTransformation(theMove->Inverted());
|
||||
|
||||
// myAISContext->Redisplay(theTransformedDisplay);
|
||||
|
||||
// new in 2.0
|
||||
theMove->SetTranslation(move*i);
|
||||
if (orient==TopAbs_FORWARD) myAISContext->SetLocation(theTransformedDisplay,TopLoc_Location(theMove->Trsf()));
|
||||
else myAISContext->SetLocation(theTransformedDisplay,TopLoc_Location(theMove->Inverted()->Trsf()));
|
||||
|
||||
myAISContext->Redisplay(theTransformedDisplay,true);
|
||||
myAISContext->Redisplay(theTransformedDisplay,Standard_False);
|
||||
}
|
||||
j+=15;
|
||||
}
|
||||
|
||||
myAISContext->UpdateCurrentViewer();
|
||||
//myAISContext->Erase(theBox,Standard_True,Standard_False);
|
||||
myAISContext->Remove(theBox, Standard_False);
|
||||
Fit();
|
||||
Sleep (500);
|
||||
|
||||
TCollection_AsciiString Message ("\
|
||||
|
@@ -33,7 +33,7 @@ add_executable (Viewer2d WIN32 ${Viewer2d_SOURCE_FILES}
|
||||
${Viewer2d_RESOURCE_HEADER}
|
||||
${Viewer2d_RESOURCE_FILES})
|
||||
|
||||
set_property (TARGET Viewer2d PROPERTY FOLDER "Samples/mfc")
|
||||
set_property (TARGET Viewer2d PROPERTY FOLDER Samples)
|
||||
|
||||
if (SINGLE_GENERATOR)
|
||||
install (TARGETS Viewer2d DESTINATION "${INSTALL_DIR_BIN}")
|
||||
|
@@ -73,6 +73,7 @@
|
||||
#include <AIS_Line.hxx>
|
||||
#include <AIS_InteractiveContext.hxx>
|
||||
#include <AIS_InteractiveObject.hxx>
|
||||
#include <AIS_LocalContext.hxx>
|
||||
#include <AIS_TextLabel.hxx>
|
||||
|
||||
#include <Aspect_TypeOfline.hxx>
|
||||
|
@@ -330,7 +330,8 @@ void CViewer2dDoc::OnBUTTONTestImage()
|
||||
Handle(Sample2D_Image) anImage = new Sample2D_Image (aFileName);
|
||||
anImage->SetCoord (40,50) ;
|
||||
anImage->SetScale (1.0);
|
||||
myAISContext->Display (anImage, AIS_Shaded, 0, Standard_False);
|
||||
myAISContext->Display (anImage, Standard_False);
|
||||
myAISContext->SetDisplayMode (anImage,3,Standard_False);
|
||||
FitAll2DViews (Standard_True);
|
||||
}
|
||||
}
|
||||
@@ -364,41 +365,48 @@ void CViewer2dDoc::OnBUTTONMultipleImage()
|
||||
Handle(Sample2D_Image) anImage = new Sample2D_Image (aFileName);
|
||||
anImage->SetCoord (40, 50);
|
||||
anImage->SetScale (0.5);
|
||||
myAISContext->Display (anImage, AIS_Shaded, 0, Standard_False);
|
||||
myAISContext->Display (anImage, Standard_False);
|
||||
myAISContext->SetDisplayMode (anImage, 3, Standard_False);
|
||||
}
|
||||
{ // 2
|
||||
Handle(Sample2D_Image) anImage = new Sample2D_Image (aFileName);
|
||||
anImage->SetCoord (100, 50);
|
||||
anImage->SetScale (0.9);
|
||||
myAISContext->Display (anImage, AIS_Shaded, 0, Standard_False);
|
||||
myAISContext->Display (anImage, Standard_False);
|
||||
myAISContext->SetDisplayMode (anImage, 3, Standard_False);
|
||||
}
|
||||
{ // 3
|
||||
Handle(Sample2D_Image) anImage = new Sample2D_Image (aFileName);
|
||||
anImage->SetCoord (40, 40);
|
||||
anImage->SetScale (0.3);
|
||||
myAISContext->Display (anImage, AIS_Shaded, 0, Standard_False);
|
||||
myAISContext->Display (anImage, Standard_False);
|
||||
myAISContext->SetDisplayMode (anImage, 3, Standard_False);
|
||||
}
|
||||
{ // 4
|
||||
Handle(Sample2D_Image) anImage = new Sample2D_Image (aFileName);
|
||||
anImage->SetCoord (50, 40);
|
||||
myAISContext->Display (anImage, AIS_Shaded, 0, Standard_False);
|
||||
myAISContext->Display (anImage, Standard_False);
|
||||
myAISContext->SetDisplayMode (anImage, 3, Standard_False);
|
||||
}
|
||||
{ // 5
|
||||
Handle(Sample2D_Image) anImage = new Sample2D_Image (aFileName);
|
||||
anImage->SetCoord (80, 45);
|
||||
anImage->SetScale (2);
|
||||
myAISContext->Display (anImage, AIS_Shaded, 0, Standard_False);
|
||||
myAISContext->Display (anImage, Standard_False);
|
||||
myAISContext->SetDisplayMode (anImage, 3, Standard_False);
|
||||
}
|
||||
{ // 6
|
||||
Handle(Sample2D_Image) anImage = new Sample2D_Image (aFileName);
|
||||
anImage->SetCoord (20, -20);
|
||||
myAISContext->Display (anImage, AIS_Shaded, 0, Standard_False);
|
||||
myAISContext->Display (anImage, Standard_False);
|
||||
myAISContext->SetDisplayMode (anImage, 3, Standard_False);
|
||||
}
|
||||
{ // 7
|
||||
Handle(Sample2D_Image) anImage = new Sample2D_Image (aFileName);
|
||||
anImage->SetCoord (0, 0);
|
||||
anImage->SetScale (0.5);
|
||||
myAISContext->Display (anImage, AIS_Shaded, 0, Standard_False);
|
||||
myAISContext->Display (anImage, Standard_False);
|
||||
myAISContext->SetDisplayMode (anImage, 3, Standard_False);
|
||||
}
|
||||
FitAll2DViews (Standard_True); // Update Viewer
|
||||
}
|
||||
|
@@ -3,6 +3,7 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include <AIS_Shape.hxx>
|
||||
#include <AIS_LocalContext.hxx>
|
||||
#include <TopoDS_Face.hxx>
|
||||
#include "OCC_2dDoc.h"
|
||||
|
||||
|
@@ -57,7 +57,7 @@ add_executable (Viewer3d WIN32 ${Viewer3d_SOURCE_FILES}
|
||||
${COMMON_WINMAIN_FILE}
|
||||
${Viewer3d_RESOURCE_FILES})
|
||||
|
||||
set_property (TARGET Viewer3d PROPERTY FOLDER "Samples/mfc")
|
||||
set_property (TARGET Viewer3d PROPERTY FOLDER Samples)
|
||||
|
||||
if (SINGLE_GENERATOR)
|
||||
install (TARGETS Viewer3d DESTINATION "${INSTALL_DIR_BIN}")
|
||||
|
@@ -191,12 +191,12 @@ Standard_Boolean TexturesExt_Presentation::loadShape(TopoDS_Shape& aShape,
|
||||
//================================================================
|
||||
void TexturesExt_Presentation::lightsOnOff(Standard_Boolean isOn)
|
||||
{
|
||||
static Handle(V3d_Light) aLight1 = new V3d_DirectionalLight(V3d_XnegYposZneg);
|
||||
static Handle(V3d_Light) aLight2 = new V3d_DirectionalLight(V3d_XnegYnegZpos);
|
||||
static Handle(V3d_Light) aLight3 = new V3d_DirectionalLight(V3d_XposYnegZpos);
|
||||
static Handle(V3d_Light) aLight4 = new V3d_DirectionalLight(V3d_XnegYnegZneg);
|
||||
static Handle(V3d_Light) aLight5 = new V3d_DirectionalLight(V3d_XnegYposZpos);
|
||||
static Handle(V3d_Light) aLight6 = new V3d_DirectionalLight(V3d_XposYposZpos);
|
||||
static Handle(V3d_Light) aLight1 = new V3d_DirectionalLight(getViewer(), V3d_XnegYposZneg);
|
||||
static Handle(V3d_Light) aLight2 = new V3d_DirectionalLight(getViewer(), V3d_XnegYnegZpos);
|
||||
static Handle(V3d_Light) aLight3 = new V3d_DirectionalLight(getViewer(), V3d_XposYnegZpos);
|
||||
static Handle(V3d_Light) aLight4 = new V3d_DirectionalLight(getViewer(), V3d_XnegYnegZneg);
|
||||
static Handle(V3d_Light) aLight5 = new V3d_DirectionalLight(getViewer(), V3d_XnegYposZpos);
|
||||
static Handle(V3d_Light) aLight6 = new V3d_DirectionalLight(getViewer(), V3d_XposYposZpos);
|
||||
|
||||
if (isOn)
|
||||
{
|
||||
|
@@ -196,7 +196,7 @@ void CViewer3dDoc::OnSphere()
|
||||
myAISContext->SetMaterial (mySphere, Graphic3d_NOM_BRONZE, Standard_False);
|
||||
myAISContext->SetDisplayMode (mySphere, 1, Standard_False);
|
||||
|
||||
myAISContext->Display (mySphere, Standard_True);
|
||||
myAISContext->Display (mySphere, Standard_False);
|
||||
TCollection_AsciiString Message("\
|
||||
BRepPrimAPI_MakeSphere S(gp_Pnt(0,300,0), 100.);\n\
|
||||
");
|
||||
@@ -681,55 +681,55 @@ void CViewer3dDoc::Popup (const Standard_Integer x,
|
||||
//Set faces selection mode
|
||||
void CViewer3dDoc::OnFaces()
|
||||
{
|
||||
myAISContext->Deactivate();
|
||||
myAISContext->Activate (AIS_Shape::SelectionMode (TopAbs_FACE));
|
||||
|
||||
myCResultDialog.SetTitle("Standard mode: TopAbs_FACE");
|
||||
myCResultDialog.SetText(" myAISContext->Deactivate();\n"
|
||||
" myAISContext->Activate (AIS_Shape::SelectionMode (TopAbs_FACE));\n\n");
|
||||
myCResultDialog.SetText(" myAISContext->OpenLocalContext(); \n"
|
||||
" \n"
|
||||
" myAISContext->ActivateStandardMode(TopAbs_FACE); \n"
|
||||
" \n");
|
||||
SetTitle (L"Standard mode: TopAbs_FACE");
|
||||
}
|
||||
|
||||
//Set edges selection mode
|
||||
void CViewer3dDoc::OnEdges()
|
||||
{
|
||||
myAISContext->Deactivate();
|
||||
myAISContext->Activate (AIS_Shape::SelectionMode (TopAbs_EDGE));
|
||||
|
||||
myCResultDialog.SetTitle("Standard mode: TopAbs_EDGE");
|
||||
myCResultDialog.SetText(" myAISContext->Deactivate();\n"
|
||||
" myAISContext->Activate (AIS_Shape::SelectionMode (TopAbs_EDGE));\n\n");
|
||||
myCResultDialog.SetText(" myAISContext->OpenLocalContext(); \n"
|
||||
" \n"
|
||||
" myAISContext->ActivateStandardMode(TopAbs_EDGE); \n"
|
||||
" \n");
|
||||
SetTitle (L"Standard mode: TopAbs_EDGE");
|
||||
}
|
||||
|
||||
// Set vertices selection mode
|
||||
void CViewer3dDoc::OnVertices()
|
||||
{
|
||||
myAISContext->Deactivate();
|
||||
myAISContext->Activate (AIS_Shape::SelectionMode (TopAbs_VERTEX));
|
||||
|
||||
myCResultDialog.SetTitle("Standard mode: TopAbs_VERTEX");
|
||||
myCResultDialog.SetText(" myAISContext->Deactivate();\n"
|
||||
" myAISContext->Activate (AIS_Shape::SelectionMode (TopAbs_VERTEX));\n\n");
|
||||
myCResultDialog.SetText(" myAISContext->OpenLocalContext(); \n"
|
||||
" \n"
|
||||
" myAISContext->ActivateStandardMode(TopAbs_VERTEX); \n"
|
||||
" \n");
|
||||
SetTitle (L"Standard mode: TopAbs_VERTEX");
|
||||
}
|
||||
|
||||
//Neutral selection mode
|
||||
void CViewer3dDoc::OnNeutral()
|
||||
{
|
||||
myAISContext->Deactivate();
|
||||
myAISContext->Activate (0);
|
||||
|
||||
myCResultDialog.SetTitle("Standard mode: Neutral");
|
||||
myCResultDialog.SetText(" myAISContext->Deactivate();\n"
|
||||
" myAISContext->Activate (0);\n\n");
|
||||
myCResultDialog.SetText(" myAISContext->CloseAllContexts(); \n"
|
||||
" \n");
|
||||
SetTitle (L"Standard mode: Neutral");
|
||||
}
|
||||
|
||||
// Change the color of faces on a user cylinder
|
||||
void CViewer3dDoc::OnUsercylinderChangefacecolor()
|
||||
{
|
||||
myAISContext->Activate (myAISContext->SelectedInteractive(), AIS_Shape::SelectionMode (TopAbs_FACE));
|
||||
myAISContext->Activate(myAISContext->SelectedInteractive(), 4);
|
||||
myState = FACE_COLOR;
|
||||
// see the following of treatment in inputevent
|
||||
}
|
||||
|