Compare commits
27 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
d2c909178e | ||
|
434098193a | ||
|
7d7a3e84d7 | ||
|
f2f4e84dca | ||
|
8574e3291f | ||
|
230b2bff00 | ||
|
6985e642f7 | ||
|
c22e576d5e | ||
|
c22f67408d | ||
|
81dc032664 | ||
|
66d61d8a06 | ||
|
024d6f7775 | ||
|
80070d4915 | ||
|
6b55f8e398 | ||
|
7d3225b51a | ||
|
249dd6ed46 | ||
|
a975e06e70 | ||
|
cc77a38d94 | ||
|
2f690078d7 | ||
|
2a9be0e22b | ||
|
2111e96703 | ||
|
2fa4d230bb | ||
|
c0f08310cc | ||
|
e21fec8100 | ||
|
3dffe5f265 | ||
|
bb88f3ff6e | ||
|
4bcc20301e |
@@ -515,6 +515,7 @@ endif()
|
|||||||
# VTK
|
# VTK
|
||||||
if (USE_VTK)
|
if (USE_VTK)
|
||||||
add_definitions (-DHAVE_VTK)
|
add_definitions (-DHAVE_VTK)
|
||||||
|
set (OCCT_VTK_USED_TARGETS "" CACHE INTERNAL "" FORCE)
|
||||||
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/vtk")
|
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/vtk")
|
||||||
else()
|
else()
|
||||||
OCCT_CHECK_AND_UNSET_GROUP ("3RDPARTY_VTK")
|
OCCT_CHECK_AND_UNSET_GROUP ("3RDPARTY_VTK")
|
||||||
@@ -655,11 +656,13 @@ if (CAN_USE_EIGEN)
|
|||||||
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/eigen")
|
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/eigen")
|
||||||
else()
|
else()
|
||||||
OCCT_CHECK_AND_UNSET_GROUP ("3RDPARTY_EIGEN")
|
OCCT_CHECK_AND_UNSET_GROUP ("3RDPARTY_EIGEN")
|
||||||
|
OCCT_CHECK_AND_UNSET ("INSTALL_EIGEN")
|
||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
OCCT_CHECK_AND_UNSET ("USE_EIGEN")
|
OCCT_CHECK_AND_UNSET ("USE_EIGEN")
|
||||||
|
|
||||||
OCCT_CHECK_AND_UNSET_GROUP ("3RDPARTY_EIGEN")
|
OCCT_CHECK_AND_UNSET_GROUP ("3RDPARTY_EIGEN")
|
||||||
|
OCCT_CHECK_AND_UNSET ("INSTALL_EIGEN")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Doxygen
|
# Doxygen
|
||||||
@@ -870,6 +873,22 @@ else()
|
|||||||
OCCT_CONFIGURE_AND_INSTALL ("adm/templates/custom.${SCRIPT_EXT}.main" "custom.${SCRIPT_EXT}" "custom.${SCRIPT_EXT}" "${INSTALL_DIR_SCRIPT}")
|
OCCT_CONFIGURE_AND_INSTALL ("adm/templates/custom.${SCRIPT_EXT}.main" "custom.${SCRIPT_EXT}" "custom.${SCRIPT_EXT}" "${INSTALL_DIR_SCRIPT}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (WIN32)
|
||||||
|
set (THIRDPARTY_DIR_REPLACE "%THIRDPARTY_DIR%")
|
||||||
|
else()
|
||||||
|
set (THIRDPARTY_DIR_REPLACE "\${THIRDPARTY_DIR}")
|
||||||
|
endif()
|
||||||
|
get_cmake_property(USED_3RDPARTY_CACHE_VARIABLES VARIABLES)
|
||||||
|
string (REGEX MATCHALL "(^|;)USED_3RDPARTY_[^;]+_DIR[^;]*" USED_3RDPARTY_CACHE_VARIABLES "${USED_3RDPARTY_CACHE_VARIABLES}")
|
||||||
|
file (TO_CMAKE_PATH "${3RDPARTY_DIR}" 3RDPARTY_DIR)
|
||||||
|
foreach (USED_3RDPARTY_CACHE_VARIABLE ${USED_3RDPARTY_CACHE_VARIABLES})
|
||||||
|
file (TO_CMAKE_PATH "${${USED_3RDPARTY_CACHE_VARIABLE}}" ${USED_3RDPARTY_CACHE_VARIABLE})
|
||||||
|
string (REPLACE "${3RDPARTY_DIR}" "${THIRDPARTY_DIR_REPLACE}" ${USED_3RDPARTY_CACHE_VARIABLE} "${${USED_3RDPARTY_CACHE_VARIABLE}}")
|
||||||
|
if (NOT WIN32)
|
||||||
|
string (REGEX REPLACE ";" ":" ${USED_3RDPARTY_CACHE_VARIABLE} "${${USED_3RDPARTY_CACHE_VARIABLE}}")
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
# write current custom.bat/sh (for install directory)
|
# write current custom.bat/sh (for install directory)
|
||||||
set (SUB_CUSTOM_BUILD_NAME "custom_${COMPILER}_${COMPILER_BITNESS}.install.${SCRIPT_EXT}")
|
set (SUB_CUSTOM_BUILD_NAME "custom_${COMPILER}_${COMPILER_BITNESS}.install.${SCRIPT_EXT}")
|
||||||
OCCT_CONFIGURE_AND_INSTALL ("adm/templates/custom.install.${SCRIPT_EXT}.in" "${SUB_CUSTOM_BUILD_NAME}" "${SUB_CUSTOM_NAME}" "${INSTALL_DIR_SCRIPT}")
|
OCCT_CONFIGURE_AND_INSTALL ("adm/templates/custom.install.${SCRIPT_EXT}.in" "${SUB_CUSTOM_BUILD_NAME}" "${SUB_CUSTOM_NAME}" "${INSTALL_DIR_SCRIPT}")
|
||||||
|
@@ -1,5 +1,9 @@
|
|||||||
# eigen
|
# eigen
|
||||||
|
|
||||||
|
if (NOT DEFINED INSTALL_EIGEN)
|
||||||
|
set (INSTALL_EIGEN OFF CACHE BOOL "${INSTALL_EIGEN_DESCR}")
|
||||||
|
endif()
|
||||||
|
|
||||||
# eigen directory
|
# eigen directory
|
||||||
if (NOT DEFINED 3RDPARTY_EIGEN_DIR)
|
if (NOT DEFINED 3RDPARTY_EIGEN_DIR)
|
||||||
set (3RDPARTY_EIGEN_DIR "" CACHE PATH "The directory containing eigen")
|
set (3RDPARTY_EIGEN_DIR "" CACHE PATH "The directory containing eigen")
|
||||||
@@ -61,6 +65,18 @@ endif()
|
|||||||
|
|
||||||
if (3RDPARTY_EIGEN_INCLUDE_DIR AND EXISTS "${3RDPARTY_EIGEN_INCLUDE_DIR}")
|
if (3RDPARTY_EIGEN_INCLUDE_DIR AND EXISTS "${3RDPARTY_EIGEN_INCLUDE_DIR}")
|
||||||
list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_EIGEN_INCLUDE_DIR}")
|
list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_EIGEN_INCLUDE_DIR}")
|
||||||
|
|
||||||
|
# Install header files
|
||||||
|
if (INSTALL_EIGEN)
|
||||||
|
file(GLOB EIGEN_SUBDIRS "${3RDPARTY_EIGEN_INCLUDE_DIR}/*")
|
||||||
|
foreach(SUBDIR ${EIGEN_SUBDIRS})
|
||||||
|
if(IS_DIRECTORY "${SUBDIR}")
|
||||||
|
install (DIRECTORY "${SUBDIR}" DESTINATION "${INSTALL_DIR_INCLUDE}")
|
||||||
|
else()
|
||||||
|
install (FILES "${SUBDIR}" DESTINATION "${INSTALL_DIR_INCLUDE}")
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
endif()
|
||||||
else()
|
else()
|
||||||
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_EIGEN_INCLUDE_DIR)
|
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_EIGEN_INCLUDE_DIR)
|
||||||
|
|
||||||
|
@@ -8,7 +8,7 @@ if (NOT DEFINED 3RDPARTY_FFMPEG_DIR)
|
|||||||
set (3RDPARTY_FFMPEG_DIR "" CACHE PATH "The directory containing FFmpeg")
|
set (3RDPARTY_FFMPEG_DIR "" CACHE PATH "The directory containing FFmpeg")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# include occt macros. compiler_bitness, os_wiht_bit, compiler
|
# include occt macros. compiler_bitness, os_with_bit, compiler
|
||||||
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_macros")
|
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_macros")
|
||||||
|
|
||||||
# specify FFMPEG folder in connection with 3RDPARTY_DIR
|
# specify FFMPEG folder in connection with 3RDPARTY_DIR
|
||||||
@@ -27,49 +27,52 @@ if (NOT DEFINED 3RDPARTY_FFMPEG_INCLUDE_DIR)
|
|||||||
set (3RDPARTY_FFMPEG_INCLUDE_DIR "" CACHE PATH "the path of headers directory")
|
set (3RDPARTY_FFMPEG_INCLUDE_DIR "" CACHE PATH "the path of headers directory")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (NOT DEFINED 3RDPARTY_FFMPEG_LIBRARY OR NOT 3RDPARTY_FFMPEG_LIBRARY_DIR OR NOT EXISTS "${3RDPARTY_FFMPEG_LIBRARY_DIR}")
|
separate_arguments (CSF_FFmpeg)
|
||||||
set (3RDPARTY_FFMPEG_LIBRARY "" CACHE FILEPATH "FFmpeg framework" FORCE)
|
foreach (LIBRARY_NAME ${CSF_FFmpeg})
|
||||||
|
if (NOT DEFINED 3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} OR NOT 3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} OR NOT EXISTS "${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}}")
|
||||||
|
set (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} "" CACHE FILEPATH "FFmpeg framework (${LIBRARY_NAME})" FORCE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (NOT DEFINED 3RDPARTY_FFMPEG_LIBRARY_DIR)
|
if (NOT DEFINED 3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME})
|
||||||
set (3RDPARTY_FFMPEG_LIBRARY_DIR "" CACHE PATH "The directory containing FFmpeg framework")
|
set (3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} "" CACHE PATH "The directory containing FFmpeg framework (${LIBRARY_NAME})")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
if (NOT DEFINED 3RDPARTY_FFMPEG_DLL OR NOT 3RDPARTY_FFMPEG_DLL_DIR OR NOT EXISTS "${3RDPARTY_FFMPEG_DLL_DIR}")
|
if (NOT DEFINED 3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} OR NOT 3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} OR NOT EXISTS "${3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}}")
|
||||||
set (3RDPARTY_FFMPEG_DLL "" CACHE FILEPATH "FFmpeg shared libraries" FORCE)
|
set (3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} "" CACHE FILEPATH "FFmpeg shared libraries (${LIBRARY_NAME})" FORCE)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
if (NOT DEFINED 3RDPARTY_FFMPEG_DLL_DIR)
|
if (NOT DEFINED 3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME})
|
||||||
set (3RDPARTY_FFMPEG_DLL_DIR "" CACHE PATH "The directory containing FFmpeg shared libraries")
|
set (3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} "" CACHE PATH "The directory containing FFmpeg shared libraries (${LIBRARY_NAME})")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# check 3RDPARTY_${PRODUCT_NAME}_ paths for consistency with specified 3RDPARTY_${PRODUCT_NAME}_DIR
|
# check 3RDPARTY_${PRODUCT_NAME}_ paths for consistency with specified 3RDPARTY_${PRODUCT_NAME}_DIR
|
||||||
if (3RDPARTY_FFMPEG_DIR AND EXISTS "${3RDPARTY_FFMPEG_DIR}")
|
if (3RDPARTY_FFMPEG_DIR AND EXISTS "${3RDPARTY_FFMPEG_DIR}")
|
||||||
CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FFMPEG_DIR 3RDPARTY_FFMPEG_INCLUDE_DIR PATH "the path to FFmpeg")
|
CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FFMPEG_DIR 3RDPARTY_FFMPEG_INCLUDE_DIR PATH "the path to FFmpeg")
|
||||||
CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FFMPEG_DIR 3RDPARTY_FFMPEG_LIBRARY FILEPATH "the path to FFmpeg framework")
|
CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FFMPEG_DIR 3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} FILEPATH "the path to FFmpeg framework (${LIBRARY_NAME})")
|
||||||
|
|
||||||
if (3RDPARTY_FFMPEG_LIBRARY AND EXISTS "${3RDPARTY_FFMPEG_LIBRARY}")
|
if (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}}")
|
||||||
get_filename_component (3RDPARTY_FFMPEG_LIBRARY_DIR "${3RDPARTY_FFMPEG_LIBRARY}" PATH)
|
get_filename_component (3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}}" PATH)
|
||||||
set (3RDPARTY_FFMPEG_LIBRARY_DIR "${3RDPARTY_FFMPEG_LIBRARY_DIR}" CACHE PATH "The directory containing FFmpeg libraries" FORCE)
|
set (3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}}" CACHE PATH "The directory containing FFmpeg library (${LIBRARY_NAME})" FORCE)
|
||||||
else()
|
else()
|
||||||
CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FFMPEG_DIR 3RDPARTY_FFMPEG_LIBRARY_DIR PATH "The directory containing FFmpeg libraries")
|
CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FFMPEG_DIR 3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} PATH "The directory containing FFmpeg library (${LIBRARY_NAME})")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FFMPEG_DIR 3RDPARTY_FFMPEG_DLL FILEPATH "the path to FFmpeg shared libraries")
|
CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FFMPEG_DIR 3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} FILEPATH "the path to FFmpeg shared library (${LIBRARY_NAME})")
|
||||||
|
|
||||||
if (3RDPARTY_FFMPEG_DLL AND EXISTS "${3RDPARTY_FFMPEG_DLL}")
|
if (3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}")
|
||||||
get_filename_component (3RDPARTY_FFMPEG_DLL_DIR "${3RDPARTY_FFMPEG_DLL}" PATH)
|
get_filename_component (3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}" PATH)
|
||||||
set (3RDPARTY_FFMPEG_DLL_DIR "${3RDPARTY_FFMPEG_DLL_DIR}" CACHE PATH "The directory containing FFmpeg shared libraries" FORCE)
|
set (3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}}" CACHE PATH "The directory containing FFmpeg shared library (${LIBRARY_NAME})" FORCE)
|
||||||
else()
|
else()
|
||||||
CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FFMPEG_DIR 3RDPARTY_FFMPEG_DLL_DIR PATH "The directory containing FFmpeg shared libraries")
|
CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FFMPEG_DIR 3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} PATH "The directory containing FFmpeg shared library (${LIBRARY_NAME})")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
# header
|
# header
|
||||||
if (NOT 3RDPARTY_FFMPEG_INCLUDE_DIR OR NOT EXISTS "${3RDPARTY_FFMPEG_INCLUDE_DIR}")
|
if (NOT 3RDPARTY_FFMPEG_INCLUDE_DIR OR NOT EXISTS "${3RDPARTY_FFMPEG_INCLUDE_DIR}")
|
||||||
@@ -99,8 +102,9 @@ else()
|
|||||||
set (3RDPARTY_FFMPEG_INCLUDE_DIR "" CACHE FILEPATH "the path to avutil.h" FORCE)
|
set (3RDPARTY_FFMPEG_INCLUDE_DIR "" CACHE FILEPATH "the path to avutil.h" FORCE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# library
|
# libraries
|
||||||
if (NOT 3RDPARTY_FFMPEG_LIBRARY OR NOT EXISTS "${3RDPARTY_FFMPEG_LIBRARY}")
|
foreach (LIBRARY_NAME ${CSF_FFmpeg})
|
||||||
|
if (NOT 3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} OR NOT EXISTS "${3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}}")
|
||||||
set (CMAKE_FIND_LIBRARY_SUFFIXES .lib .so .dylib .a)
|
set (CMAKE_FIND_LIBRARY_SUFFIXES .lib .so .dylib .a)
|
||||||
|
|
||||||
set (FFMPEG_PATH_SUFFIXES lib)
|
set (FFMPEG_PATH_SUFFIXES lib)
|
||||||
@@ -111,59 +115,59 @@ if (NOT 3RDPARTY_FFMPEG_LIBRARY OR NOT EXISTS "${3RDPARTY_FFMPEG_LIBRARY}")
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
# set 3RDPARTY_FFMPEG_LIBRARY as notfound, otherwise find_library can't assign a new value to 3RDPARTY_FFMPEG_LIBRARY
|
# set 3RDPARTY_FFMPEG_LIBRARY as notfound, otherwise find_library can't assign a new value to 3RDPARTY_FFMPEG_LIBRARY
|
||||||
set (3RDPARTY_FFMPEG_LIBRARY "3RDPARTY_FFMPEG_LIBRARY-NOTFOUND" CACHE FILEPATH "The path to FFmpeg library" FORCE)
|
set (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} "3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}-NOTFOUND" CACHE FILEPATH "The path to FFmpeg library (${LIBRARY_NAME})" FORCE)
|
||||||
|
|
||||||
if (3RDPARTY_FFMPEG_DIR AND EXISTS "${3RDPARTY_FFMPEG_DIR}")
|
if (3RDPARTY_FFMPEG_DIR AND EXISTS "${3RDPARTY_FFMPEG_DIR}")
|
||||||
find_library (3RDPARTY_FFMPEG_LIBRARY NAMES avutil
|
find_library (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} NAMES ${LIBRARY_NAME}
|
||||||
PATHS "${3RDPARTY_FFMPEG_LIBRARY_DIR}" "${3RDPARTY_FFMPEG_DIR}"
|
PATHS "${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}}" "${3RDPARTY_FFMPEG_DIR}"
|
||||||
PATH_SUFFIXES ${FFMPEG_PATH_SUFFIXES}
|
PATH_SUFFIXES ${FFMPEG_PATH_SUFFIXES}
|
||||||
CMAKE_FIND_ROOT_PATH_BOTH
|
CMAKE_FIND_ROOT_PATH_BOTH
|
||||||
NO_DEFAULT_PATH)
|
NO_DEFAULT_PATH)
|
||||||
else()
|
else()
|
||||||
find_library (3RDPARTY_FFMPEG_LIBRARY NAMES avutil
|
find_library (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} NAMES ${LIBRARY_NAME}
|
||||||
PATH_SUFFIXES ${FFMPEG_PATH_SUFFIXES}
|
PATH_SUFFIXES ${FFMPEG_PATH_SUFFIXES}
|
||||||
CMAKE_FIND_ROOT_PATH_BOTH)
|
CMAKE_FIND_ROOT_PATH_BOTH)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (3RDPARTY_FFMPEG_LIBRARY AND EXISTS "${3RDPARTY_FFMPEG_LIBRARY}")
|
if (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}}")
|
||||||
get_filename_component (3RDPARTY_FFMPEG_LIBRARY_DIR "${3RDPARTY_FFMPEG_LIBRARY}" PATH)
|
get_filename_component (3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}}" PATH)
|
||||||
set (3RDPARTY_FFMPEG_LIBRARY_DIR "${3RDPARTY_FFMPEG_LIBRARY_DIR}" CACHE PATH "The directory containing FFmpeg library" FORCE)
|
set (3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}}" CACHE PATH "The directory containing FFmpeg library (${LIBRARY_NAME})" FORCE)
|
||||||
else()
|
else()
|
||||||
set (3RDPARTY_FFMPEG_LIBRARY_DIR "" CACHE PATH "The directory containing FFmpeg library" FORCE)
|
set (3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} "" CACHE PATH "The directory containing FFmpeg library (${LIBRARY_NAME})" FORCE)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (3RDPARTY_FFMPEG_LIBRARY_DIR AND EXISTS "${3RDPARTY_FFMPEG_LIBRARY_DIR}")
|
if (3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}}")
|
||||||
list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_FFMPEG_LIBRARY_DIR}")
|
list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}}")
|
||||||
else()
|
else()
|
||||||
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FFMPEG_LIBRARY_DIR)
|
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME})
|
||||||
|
|
||||||
set (3RDPARTY_FFMPEG_LIBRARY "" CACHE FILEPATH "The path to FFmpeg library" FORCE)
|
set (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} "" CACHE FILEPATH "The path to FFmpeg library (${LIBRARY_NAME})" FORCE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# shared library
|
# shared library
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
if (NOT 3RDPARTY_FFMPEG_DLL OR NOT EXISTS "${3RDPARTY_FFMPEG_DLL}")
|
if (NOT 3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} OR NOT EXISTS "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}")
|
||||||
|
|
||||||
set (CMAKE_FIND_LIBRARY_SUFFIXES .dll)
|
set (CMAKE_FIND_LIBRARY_SUFFIXES .dll)
|
||||||
set (3RDPARTY_FFMPEG_DLL "3RDPARTY_FFMPEG_DLL-NOTFOUND" CACHE FILEPATH "The path to FFmpeg shared library" FORCE)
|
set (3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} "3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}-NOTFOUND" CACHE FILEPATH "The path to FFmpeg shared library (${LIBRARY_NAME})" FORCE)
|
||||||
|
|
||||||
# find FFmpeg shared library
|
# find FFmpeg shared library
|
||||||
file (GLOB 3RDPARTY_FFMPEG_DLL "${3RDPARTY_FFMPEG_DIR}/bin/avutil[-][0-9]*")
|
file (GLOB 3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_DIR}/bin/${LIBRARY_NAME}[-][0-9]*")
|
||||||
|
|
||||||
if (3RDPARTY_FFMPEG_DLL AND EXISTS "${3RDPARTY_FFMPEG_DLL}")
|
if (3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}")
|
||||||
set (3RDPARTY_FFMPEG_DLL "${3RDPARTY_FFMPEG_DLL}" CACHE FILEPATH "FFmpeg shared library" FORCE)
|
set (3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}" CACHE FILEPATH "FFmpeg shared library (${LIBRARY_NAME})" FORCE)
|
||||||
get_filename_component (3RDPARTY_FFMPEG_DLL_DIR "${3RDPARTY_FFMPEG_DLL}" PATH)
|
get_filename_component (3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}" PATH)
|
||||||
set (3RDPARTY_FFMPEG_DLL_DIR "${3RDPARTY_FFMPEG_DLL_DIR}" CACHE PATH "The directory containing FFmpeg library" FORCE)
|
set (3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}}" CACHE PATH "The directory containing FFmpeg library (${LIBRARY_NAME})" FORCE)
|
||||||
else()
|
else()
|
||||||
set (3RDPARTY_FFMPEG_DLL_DIR "" CACHE PATH "The directory containing FFmpeg shared library" FORCE)
|
set (3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} "" CACHE PATH "The directory containing FFmpeg shared library (${LIBRARY_NAME})" FORCE)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (3RDPARTY_FFMPEG_DLL_DIR OR EXISTS "${3RDPARTY_FFMPEG_DLL_DIR}")
|
if (3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} OR EXISTS "${3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}}")
|
||||||
list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_FFMPEG_DLL_DIR}")
|
list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}}")
|
||||||
else()
|
else()
|
||||||
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FFMPEG_DLL_DIR)
|
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME})
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@@ -174,21 +178,21 @@ if (INSTALL_FFMPEG)
|
|||||||
|
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
if (DEFINED INSTALL_BIN_DIR)
|
if (DEFINED INSTALL_BIN_DIR)
|
||||||
install (FILES "${3RDPARTY_FFMPEG_DLL}" DESTINATION "${INSTALL_BIN_DIR}")
|
install (FILES "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}" DESTINATION "${INSTALL_BIN_DIR}")
|
||||||
else()
|
else()
|
||||||
install (FILES "${3RDPARTY_FFMPEG_DLL}"
|
install (FILES "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}"
|
||||||
CONFIGURATIONS Release
|
CONFIGURATIONS Release
|
||||||
DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bin")
|
DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bin")
|
||||||
install (FILES "${3RDPARTY_FFMPEG_DLL}"
|
install (FILES "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}"
|
||||||
CONFIGURATIONS RelWithDebInfo
|
CONFIGURATIONS RelWithDebInfo
|
||||||
DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bini")
|
DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bini")
|
||||||
install (FILES "${3RDPARTY_FFMPEG_DLL}"
|
install (FILES "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}"
|
||||||
CONFIGURATIONS Debug
|
CONFIGURATIONS Debug
|
||||||
DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bind")
|
DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bind")
|
||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
get_filename_component(3RDPARTY_FFMPEG_LIBRARY_ABS ${3RDPARTY_FFMPEG_LIBRARY} REALPATH)
|
get_filename_component(3RDPARTY_FFMPEG_LIBRARY_ABS ${3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}} REALPATH)
|
||||||
get_filename_component(3RDPARTY_FFMPEG_LIBRARY_NAME ${3RDPARTY_FFMPEG_LIBRARY} NAME)
|
get_filename_component(3RDPARTY_FFMPEG_LIBRARY_NAME ${3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}} NAME)
|
||||||
|
|
||||||
if (DEFINED INSTALL_LIB_DIR)
|
if (DEFINED INSTALL_LIB_DIR)
|
||||||
install (FILES "${3RDPARTY_FFMPEG_LIBRARY_ABS}"
|
install (FILES "${3RDPARTY_FFMPEG_LIBRARY_ABS}"
|
||||||
@@ -214,15 +218,16 @@ if (INSTALL_FFMPEG)
|
|||||||
else()
|
else()
|
||||||
# the library directory for using by the executable
|
# the library directory for using by the executable
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
set (USED_3RDPARTY_FFMPEG_DIR ${3RDPARTY_FFMPEG_DLL_DIR})
|
set (USED_3RDPARTY_FFMPEG_DIR ${3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}})
|
||||||
else()
|
else()
|
||||||
set (USED_3RDPARTY_FFMPEG_DIR ${3RDPARTY_FFMPEG_LIBRARY_DIR})
|
set (USED_3RDPARTY_FFMPEG_DIR ${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}})
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
mark_as_advanced (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} 3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME})
|
||||||
|
endforeach()
|
||||||
|
|
||||||
# unset all redundant variables
|
# unset all redundant variables
|
||||||
OCCT_CHECK_AND_UNSET (FFMPEG_INCLUDE_DIRS)
|
OCCT_CHECK_AND_UNSET (FFMPEG_INCLUDE_DIRS)
|
||||||
OCCT_CHECK_AND_UNSET (FFMPEG_LIBRARY_DIRS)
|
OCCT_CHECK_AND_UNSET (FFMPEG_LIBRARY_DIRS)
|
||||||
OCCT_CHECK_AND_UNSET (FFMPEG_DIR)
|
OCCT_CHECK_AND_UNSET (FFMPEG_DIR)
|
||||||
|
|
||||||
mark_as_advanced (3RDPARTY_FFMPEG_LIBRARY 3RDPARTY_FFMPEG_DLL)
|
|
||||||
|
@@ -34,9 +34,13 @@ endif()
|
|||||||
# FREEIMAGE
|
# FREEIMAGE
|
||||||
if (USE_FREEIMAGE)
|
if (USE_FREEIMAGE)
|
||||||
set (CSF_FreeImagePlus "freeimage")
|
set (CSF_FreeImagePlus "freeimage")
|
||||||
|
else()
|
||||||
|
if (WIN32)
|
||||||
|
set (CSF_FreeImagePlus "windowscodecs")
|
||||||
else()
|
else()
|
||||||
set (CSF_FreeImagePlus)
|
set (CSF_FreeImagePlus)
|
||||||
endif()
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
# TCL/TK
|
# TCL/TK
|
||||||
if (USE_TCL)
|
if (USE_TCL)
|
||||||
|
@@ -213,6 +213,9 @@ foreach (USED_ITEM ${USED_EXTERNLIB_AND_TOOLKITS})
|
|||||||
|
|
||||||
if (NOT "${TK_FOUND}" STREQUAL "" OR NOT "${VTK_FOUND}" STREQUAL "")
|
if (NOT "${TK_FOUND}" STREQUAL "" OR NOT "${VTK_FOUND}" STREQUAL "")
|
||||||
list (APPEND USED_TOOLKITS_BY_CURRENT_PROJECT ${USED_ITEM})
|
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()
|
else()
|
||||||
string (REGEX MATCH "^CSF_" CSF_FOUND ${USED_ITEM})
|
string (REGEX MATCH "^CSF_" CSF_FOUND ${USED_ITEM})
|
||||||
if ("${CSF_FOUND}" STREQUAL "")
|
if ("${CSF_FOUND}" STREQUAL "")
|
||||||
|
@@ -245,6 +245,9 @@ foreach (USED_ITEM ${USED_EXTERNLIB_AND_TOOLKITS})
|
|||||||
|
|
||||||
if (NOT "${TK_FOUND}" STREQUAL "" OR NOT "${VTK_FOUND}" STREQUAL "")
|
if (NOT "${TK_FOUND}" STREQUAL "" OR NOT "${VTK_FOUND}" STREQUAL "")
|
||||||
list (APPEND USED_TOOLKITS_BY_CURRENT_PROJECT ${USED_ITEM})
|
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()
|
else()
|
||||||
string (REGEX MATCH "^CSF_" CSF_FOUND ${USED_ITEM})
|
string (REGEX MATCH "^CSF_" CSF_FOUND ${USED_ITEM})
|
||||||
if ("${CSF_FOUND}" STREQUAL "")
|
if ("${CSF_FOUND}" STREQUAL "")
|
||||||
|
@@ -84,6 +84,7 @@ INSTALL_MESSAGE (INSTALL_TEST_CASES "non-regression OCCT test scripts")
|
|||||||
INSTALL_MESSAGE (INSTALL_DOC_Overview "OCCT overview documentation (HTML format)")
|
INSTALL_MESSAGE (INSTALL_DOC_Overview "OCCT overview documentation (HTML format)")
|
||||||
INSTALL_MESSAGE (INSTALL_FFMPEG "FFmpeg binaries")
|
INSTALL_MESSAGE (INSTALL_FFMPEG "FFmpeg binaries")
|
||||||
INSTALL_MESSAGE (INSTALL_FREEIMAGE "FreeImage binaries")
|
INSTALL_MESSAGE (INSTALL_FREEIMAGE "FreeImage binaries")
|
||||||
|
INSTALL_MESSAGE (INSTALL_EIGEN "EIGEN header files")
|
||||||
INSTALL_MESSAGE (INSTALL_EGL "EGL binaries")
|
INSTALL_MESSAGE (INSTALL_EGL "EGL binaries")
|
||||||
INSTALL_MESSAGE (INSTALL_GLES2 "OpenGL ES 2.0 binaries")
|
INSTALL_MESSAGE (INSTALL_GLES2 "OpenGL ES 2.0 binaries")
|
||||||
INSTALL_MESSAGE (INSTALL_FREETYPE "FreeType binaries")
|
INSTALL_MESSAGE (INSTALL_FREETYPE "FreeType binaries")
|
||||||
@@ -91,8 +92,7 @@ INSTALL_MESSAGE (INSTALL_GL2PS "GL2PS binaries")
|
|||||||
INSTALL_MESSAGE (INSTALL_TBB "TBB binaries")
|
INSTALL_MESSAGE (INSTALL_TBB "TBB binaries")
|
||||||
INSTALL_MESSAGE (INSTALL_TCL "TCL binaries")
|
INSTALL_MESSAGE (INSTALL_TCL "TCL binaries")
|
||||||
INSTALL_MESSAGE (INSTALL_TK "TK binaries")
|
INSTALL_MESSAGE (INSTALL_TK "TK binaries")
|
||||||
|
INSTALL_MESSAGE (INSTALL_VTK "VTK binaries ")
|
||||||
#INSTALL_MESSAGE (INSTALL_VTK "VTK binaries ")
|
|
||||||
|
|
||||||
# build variables
|
# build variables
|
||||||
macro (BUILD_MODULE_MESSAGE BUILD_MODULE_TARGET_VARIABLE BUILD_MODULE_TARGET_STRING)
|
macro (BUILD_MODULE_MESSAGE BUILD_MODULE_TARGET_VARIABLE BUILD_MODULE_TARGET_STRING)
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
# vtk
|
# vtk
|
||||||
|
|
||||||
#if (NOT DEFINED INSTALL_VTK)
|
if (NOT DEFINED INSTALL_VTK)
|
||||||
# set (INSTALL_VTK OFF CACHE BOOL "${INSTALL_VTK_DESCR}")
|
set (INSTALL_VTK OFF CACHE BOOL "${INSTALL_VTK_DESCR}")
|
||||||
#endif()
|
endif()
|
||||||
|
|
||||||
# vtk directory
|
# vtk directory
|
||||||
if (NOT DEFINED 3RDPARTY_VTK_DIR)
|
if (NOT DEFINED 3RDPARTY_VTK_DIR)
|
||||||
@@ -210,12 +210,87 @@ if (BUILD_SHARED_LIBS)
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Install vtk library using vtk targets
|
||||||
|
macro (OCCT_INSTALL_VTK VTK_LIBRARY_NAME)
|
||||||
|
# Check that input library name contains "vtk" prefix
|
||||||
|
string (REGEX MATCH "^vtk" IS_VTK_LIBRARY ${VTK_LIBRARY_NAME})
|
||||||
|
# Check that input library was not already installed
|
||||||
|
list (FIND OCCT_VTK_USED_TARGETS ${VTK_LIBRARY_NAME} VTK_LIBRARY_IS_USED)
|
||||||
|
if (BUILD_SHARED_LIBS AND INSTALL_VTK AND TARGET ${VTK_LIBRARY_NAME} AND VTK_LIBRARY_IS_USED EQUAL -1 AND IS_VTK_LIBRARY)
|
||||||
|
OCCT_MAKE_OS_WITH_BITNESS()
|
||||||
|
|
||||||
|
# Get configuration of vtk
|
||||||
|
get_target_property (TARGET_VTK_IMPORT_CONFS ${VTK_LIBRARY_NAME} IMPORTED_CONFIGURATIONS)
|
||||||
|
list (GET TARGET_VTK_IMPORT_CONFS 0 CHOSEN_IMPORT_CONF)
|
||||||
|
|
||||||
|
# Get dependencies for current input library
|
||||||
|
get_property(VTK_LIBRARY_PATH TARGET ${VTK_LIBRARY_NAME} PROPERTY LOCATION)
|
||||||
|
get_property(VTK_DEPEND TARGET ${VTK_LIBRARY_NAME} PROPERTY IMPORTED_LINK_DEPENDENT_LIBRARIES_${CHOSEN_IMPORT_CONF})
|
||||||
|
get_property(VTK_IMPORTED_INTERFACE TARGET ${VTK_LIBRARY_NAME} PROPERTY IMPORTED_LINK_INTERFACE_LIBRARIES_${CHOSEN_IMPORT_CONF})
|
||||||
|
get_property(VTK_INTERFACE TARGET ${VTK_LIBRARY_NAME} PROPERTY INTERFACE_LINK_LIBRARIES)
|
||||||
|
list (APPEND VTK_DEPEND ${VTK_INTERFACE} ${VTK_IMPORTED_INTERFACE})
|
||||||
|
|
||||||
|
# Install
|
||||||
|
if (WIN32)
|
||||||
|
if (SINGLE_GENERATOR)
|
||||||
|
install (FILES "${VTK_LIBRARY_PATH}" DESTINATION "${INSTALL_DIR_BIN}")
|
||||||
|
else()
|
||||||
|
install (FILES "${VTK_LIBRARY_PATH}"
|
||||||
|
CONFIGURATIONS Release
|
||||||
|
DESTINATION "${INSTALL_DIR_BIN}")
|
||||||
|
install (FILES "${VTK_LIBRARY_PATH}"
|
||||||
|
CONFIGURATIONS RelWithDebInfo
|
||||||
|
DESTINATION "${INSTALL_DIR_BIN}i")
|
||||||
|
install (FILES "${VTK_LIBRARY_PATH}"
|
||||||
|
CONFIGURATIONS Debug
|
||||||
|
DESTINATION "${INSTALL_DIR_BIN}d")
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
get_filename_component(3RDPARTY_VTK_LIBRARY_ABS ${VTK_LIBRARY_PATH} REALPATH)
|
||||||
|
|
||||||
|
if (SINGLE_GENERATOR)
|
||||||
|
install (FILES "${3RDPARTY_VTK_LIBRARY_ABS}"
|
||||||
|
DESTINATION "${INSTALL_DIR_LIB}")
|
||||||
|
else()
|
||||||
|
install (FILES "${3RDPARTY_VTK_LIBRARY_ABS}"
|
||||||
|
CONFIGURATIONS Release
|
||||||
|
DESTINATION "${INSTALL_DIR_LIB}")
|
||||||
|
install (FILES "${3RDPARTY_VTK_LIBRARY_ABS}"
|
||||||
|
CONFIGURATIONS RelWithDebInfo
|
||||||
|
DESTINATION "${INSTALL_DIR_LIB}i")
|
||||||
|
install (FILES "${3RDPARTY_VTK_LIBRARY_ABS}"
|
||||||
|
CONFIGURATIONS Debug
|
||||||
|
DESTINATION "${INSTALL_DIR_LIB}d")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set (USED_3RDPARTY_VTK_DIR "")
|
||||||
|
|
||||||
|
# Mark current library as already installed
|
||||||
|
list (APPEND OCCT_VTK_USED_TARGETS ${VTK_LIBRARY_NAME})
|
||||||
|
set (OCCT_VTK_USED_TARGETS "${OCCT_VTK_USED_TARGETS}" CACHE INTERNAL "" FORCE)
|
||||||
|
|
||||||
|
# Recursively install all depended libraries
|
||||||
|
foreach(VTK_TARGET ${VTK_DEPEND})
|
||||||
|
OCCT_INSTALL_VTK(${VTK_TARGET})
|
||||||
|
endforeach()
|
||||||
|
endif()
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
if (NOT BUILD_SHARED_LIBS)
|
||||||
|
OCCT_CHECK_AND_UNSET(3RDPARTY_VTK_DLL_DIR)
|
||||||
|
OCCT_CHECK_AND_UNSET(3RDPARTY_VTK_LIBRARY_DIR)
|
||||||
|
OCCT_CHECK_AND_UNSET(INSTALL_VTK)
|
||||||
|
endif()
|
||||||
|
|
||||||
# the library directory for using by the executable
|
# the library directory for using by the executable
|
||||||
|
if (NOT INSTALL_VTK)
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
set (USED_3RDPARTY_VTK_DIR ${3RDPARTY_VTK_DLL_DIR})
|
set (USED_3RDPARTY_VTK_DIR ${3RDPARTY_VTK_DLL_DIR})
|
||||||
else()
|
else()
|
||||||
set (USED_3RDPARTY_VTK_DIR ${3RDPARTY_VTK_LIBRARY_DIR})
|
set (USED_3RDPARTY_VTK_DIR ${3RDPARTY_VTK_LIBRARY_DIR})
|
||||||
endif()
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
OCCT_CHECK_AND_UNSET (VTK_INCLUDE_DIRS)
|
OCCT_CHECK_AND_UNSET (VTK_INCLUDE_DIRS)
|
||||||
OCCT_CHECK_AND_UNSET (VTK_LIBRARY_DIRS)
|
OCCT_CHECK_AND_UNSET (VTK_LIBRARY_DIRS)
|
||||||
|
@@ -1312,6 +1312,8 @@ proc osutils:csfList { theOS theCsfLibsMap theCsfFrmsMap } {
|
|||||||
} else {
|
} else {
|
||||||
set aLibsMap(CSF_FreeImagePlus) "freeimage"
|
set aLibsMap(CSF_FreeImagePlus) "freeimage"
|
||||||
}
|
}
|
||||||
|
} elseif { "$theOS" == "wnt" } {
|
||||||
|
set aLibsMap(CSF_FreeImagePlus) "windowscodecs"
|
||||||
}
|
}
|
||||||
if { "$::HAVE_FFMPEG" == "true" } {
|
if { "$::HAVE_FFMPEG" == "true" } {
|
||||||
set aLibsMap(CSF_FFmpeg) "avcodec avformat swscale avutil"
|
set aLibsMap(CSF_FFmpeg) "avcodec avformat swscale avutil"
|
||||||
|
@@ -24,18 +24,15 @@ if /I "%VCVER%" == "@COMPILER@" (
|
|||||||
set "TCL_VERSION_WITH_DOT=@3RDPARTY_TCL_LIBRARY_VERSION_WITH_DOT@"
|
set "TCL_VERSION_WITH_DOT=@3RDPARTY_TCL_LIBRARY_VERSION_WITH_DOT@"
|
||||||
set "TK_VERSION_WITH_DOT=@3RDPARTY_TK_LIBRARY_VERSION_WITH_DOT@"
|
set "TK_VERSION_WITH_DOT=@3RDPARTY_TK_LIBRARY_VERSION_WITH_DOT@"
|
||||||
|
|
||||||
set "CSF_OCCTBinPath=@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_BIN@%3"
|
set "CSF_OCCTBinPath=%CASROOT%/@INSTALL_DIR_BIN@%3"
|
||||||
set "CSF_OCCTLibPath=@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_LIB@%3"
|
set "CSF_OCCTLibPath=%CASROOT%/@INSTALL_DIR_LIB@%3"
|
||||||
|
|
||||||
set "CSF_OCCTIncludePath=@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_INCLUDE@"
|
set "CSF_OCCTIncludePath=%CASROOT%/@INSTALL_DIR_INCLUDE@"
|
||||||
set "CSF_OCCTResourcePath=@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_RESOURCE@"
|
set "CSF_OCCTResourcePath=%CASROOT%/@INSTALL_DIR_RESOURCE@"
|
||||||
set "CSF_OCCTDataPath=@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_DATA@"
|
set "CSF_OCCTDataPath=%CASROOT%/@INSTALL_DIR_DATA@"
|
||||||
set "CSF_OCCTSamplesPath=@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_SAMPLES@"
|
set "CSF_OCCTSamplesPath=%CASROOT%/@INSTALL_DIR_SAMPLES@"
|
||||||
set "CSF_OCCTTestsPath=@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_TESTS@"
|
set "CSF_OCCTTestsPath=%CASROOT%/@INSTALL_DIR_TESTS@"
|
||||||
set "CSF_OCCTDocPath=@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_DOC@"
|
set "CSF_OCCTDocPath=%CASROOT%/@INSTALL_DIR_DOC@"
|
||||||
|
|
||||||
rem for compatability with external application using CASROOT
|
|
||||||
set "CASROOT=@INSTALL_DIR_ABSOLUTE@"
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@@ -21,17 +21,14 @@ if [ "$1" == "@BIN_LETTER@" ]; then
|
|||||||
export TCL_VERSION_WITH_DOT="@3RDPARTY_TCL_LIBRARY_VERSION_WITH_DOT@"
|
export TCL_VERSION_WITH_DOT="@3RDPARTY_TCL_LIBRARY_VERSION_WITH_DOT@"
|
||||||
export TK_VERSION_WITH_DOT="@3RDPARTY_TK_LIBRARY_VERSION_WITH_DOT@"
|
export TK_VERSION_WITH_DOT="@3RDPARTY_TK_LIBRARY_VERSION_WITH_DOT@"
|
||||||
|
|
||||||
export CSF_OCCTBinPath="@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_BIN@"
|
export CSF_OCCTBinPath="${CASROOT}/@INSTALL_DIR_BIN@"
|
||||||
export CSF_OCCTLibPath="@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_LIB@"
|
export CSF_OCCTLibPath="${CASROOT}/@INSTALL_DIR_LIB@"
|
||||||
export CSF_OCCTIncludePath="@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_INCLUDE@"
|
export CSF_OCCTIncludePath="${CASROOT}/@INSTALL_DIR_INCLUDE@"
|
||||||
export CSF_OCCTResourcePath="@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_RESOURCE@"
|
export CSF_OCCTResourcePath="${CASROOT}/@INSTALL_DIR_RESOURCE@"
|
||||||
export CSF_OCCTDataPath="@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_DATA@"
|
export CSF_OCCTDataPath="${CASROOT}/@INSTALL_DIR_DATA@"
|
||||||
export CSF_OCCTSamplesPath="@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_SAMPLES@"
|
export CSF_OCCTSamplesPath="${CASROOT}/@INSTALL_DIR_SAMPLES@"
|
||||||
export CSF_OCCTTestsPath="@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_TESTS@"
|
export CSF_OCCTTestsPath="${CASROOT}/@INSTALL_DIR_TESTS@"
|
||||||
export CSF_OCCTDocPath="@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_DOC@"
|
export CSF_OCCTDocPath="${CASROOT}/@INSTALL_DIR_DOC@"
|
||||||
|
|
||||||
# for compatability with external application using CASROOT
|
|
||||||
export CASROOT="@INSTALL_DIR_ABSOLUTE@"
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@@ -31,14 +31,14 @@ set "CSF_OPT_LIB64="
|
|||||||
set "CSF_OPT_BIN32="
|
set "CSF_OPT_BIN32="
|
||||||
set "CSF_OPT_BIN64="
|
set "CSF_OPT_BIN64="
|
||||||
|
|
||||||
rem ----- Load local settings -----
|
|
||||||
if exist "%~dp0custom.bat" (
|
|
||||||
call "%~dp0custom.bat" %1 %2 %3 %4 %5
|
|
||||||
)
|
|
||||||
|
|
||||||
if not ["%CASROOT%"] == [""] if exist "%SCRIPTROOT%\%CASROOT%" set "CASROOT=%SCRIPTROOT%\%CASROOT%"
|
if not ["%CASROOT%"] == [""] if exist "%SCRIPTROOT%\%CASROOT%" set "CASROOT=%SCRIPTROOT%\%CASROOT%"
|
||||||
if ["%CASROOT%"] == [""] set "CASROOT=%SCRIPTROOT%"
|
if ["%CASROOT%"] == [""] set "CASROOT=%SCRIPTROOT%"
|
||||||
|
|
||||||
|
rem ----- Load local settings -----
|
||||||
|
if exist "%CASROOT%\custom.bat" (
|
||||||
|
call "%CASROOT%\custom.bat" %1 %2 %3 %4 %5
|
||||||
|
)
|
||||||
|
|
||||||
rem ----- Read script arguments (override local settings) -----
|
rem ----- Read script arguments (override local settings) -----
|
||||||
if not ["%1"] == [""] set "VCVER=%1"
|
if not ["%1"] == [""] set "VCVER=%1"
|
||||||
if not ["%2"] == [""] set "ARCH=%2"
|
if not ["%2"] == [""] set "ARCH=%2"
|
||||||
@@ -49,8 +49,33 @@ if /I ["%3"] == ["d"] set "CASDEB=d"
|
|||||||
if /I ["%3"] == ["i"] set "CASDEB=i"
|
if /I ["%3"] == ["i"] set "CASDEB=i"
|
||||||
if /I ["%3"] == ["relwithdeb"] set "CASDEB=i"
|
if /I ["%3"] == ["relwithdeb"] set "CASDEB=i"
|
||||||
|
|
||||||
rem Decode VCVER
|
rem Decode VCVER variable and define related ones:
|
||||||
call "%~dp0adm\vcver.bat"
|
rem
|
||||||
|
rem VCFMT - "vc" followed by full version number of Visual Studio toolset
|
||||||
|
rem (same as VCVER without optional suffix "-uwp")
|
||||||
|
rem VCLIB - name of folder contining binaries
|
||||||
|
rem (same as VCVER except without third version in number)
|
||||||
|
rem VCPROP - name of required Visual Studion Workload (starting with VS 2017)
|
||||||
|
rem
|
||||||
|
rem Note that for VS before 2015 (vc14) always
|
||||||
|
rem VCFMT=VCLIB=VCVER and VCPROP=NativeDesktop
|
||||||
|
|
||||||
|
rem Since VS 2017, environment variables like VS100COMNTOOLS are not defined
|
||||||
|
rem any more, we can only use vswhere.exe tool to find Visual Studio.
|
||||||
|
rem Add path to vswhere.exe
|
||||||
|
set "PATH=%PATH%;%ProgramFiles(x86)%\Microsoft Visual Studio\Installer"
|
||||||
|
|
||||||
|
rem for vc10-12, interpretation is trivial
|
||||||
|
set VCFMT=%VCVER%
|
||||||
|
set VCLIB=%VCVER:~0,4%
|
||||||
|
set VCPROP=NativeDesktop
|
||||||
|
rem vc14 and later can have optional suffix "-uwp"
|
||||||
|
if "%VCVER:~-4%" == "-uwp" (
|
||||||
|
set VCFMT=%VCVER:~0,-4%
|
||||||
|
set VCLIB=%VCLIB%-uwp
|
||||||
|
set VCPROP=Universal
|
||||||
|
)
|
||||||
|
rem echo VCVER=%VCVER% VCFMT=%VCFMT% VCLIB=%VCLIB% VCPROP=%VCPROP%
|
||||||
|
|
||||||
rem ----- Parsing of Visual Studio platform -----
|
rem ----- Parsing of Visual Studio platform -----
|
||||||
set "VisualStudioExpressName=VCExpress"
|
set "VisualStudioExpressName=VCExpress"
|
||||||
@@ -73,6 +98,8 @@ if not "%DevEnvDir%" == "" (
|
|||||||
for /f "usebackq delims=" %%i in (`vswhere.exe -version "[15.0,15.99]" -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do (
|
for /f "usebackq delims=" %%i in (`vswhere.exe -version "[15.0,15.99]" -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do (
|
||||||
set "DevEnvDir=%%i\Common7\IDE\"
|
set "DevEnvDir=%%i\Common7\IDE\"
|
||||||
)
|
)
|
||||||
|
) else if /I "%VCFMT%" == "gcc" (
|
||||||
|
rem MinGW
|
||||||
) else (
|
) else (
|
||||||
echo Error: wrong VS identifier
|
echo Error: wrong VS identifier
|
||||||
exit /B
|
exit /B
|
||||||
@@ -96,6 +123,8 @@ if /I "%VCFMT%" == "vc10" (
|
|||||||
set "VCVARS=%%i\VC\Auxiliary\Build\vcvarsall.bat"
|
set "VCVARS=%%i\VC\Auxiliary\Build\vcvarsall.bat"
|
||||||
)
|
)
|
||||||
set "VCPlatformToolSet=v141"
|
set "VCPlatformToolSet=v141"
|
||||||
|
) else if /I "%VCFMT%" == "gcc" (
|
||||||
|
rem MinGW
|
||||||
) else (
|
) else (
|
||||||
echo Error: first argument ^(%VCVER%^) should specify supported version of Visual C++,
|
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^)
|
echo one of: vc10 ^(VS 2010 SP3^), vc11 ^(VS 2012 SP3^), vc12 ^(VS 2013^) or vc14 ^(VS 2015^)
|
||||||
|
@@ -31,7 +31,9 @@ rem VCFMT=VCLIB=VCVER and VCPROP=NativeDesktop
|
|||||||
rem Since VS 2017, environment variables like VS100COMNTOOLS are not defined
|
rem Since VS 2017, environment variables like VS100COMNTOOLS are not defined
|
||||||
rem any more, we can only use vswhere.exe tool to find Visual Studio.
|
rem any more, we can only use vswhere.exe tool to find Visual Studio.
|
||||||
rem Add path to vswhere.exe
|
rem Add path to vswhere.exe
|
||||||
|
if /I not "%VCFMT%" == "gcc" (
|
||||||
set "PATH=%PATH%;%ProgramFiles(x86)%\Microsoft Visual Studio\Installer"
|
set "PATH=%PATH%;%ProgramFiles(x86)%\Microsoft Visual Studio\Installer"
|
||||||
|
)
|
||||||
|
|
||||||
rem for vc10-12, interpretation is trivial
|
rem for vc10-12, interpretation is trivial
|
||||||
set VCFMT=%VCVER%
|
set VCFMT=%VCVER%
|
||||||
@@ -66,6 +68,8 @@ if not "%DevEnvDir%" == "" (
|
|||||||
for /f "usebackq delims=" %%i in (`vswhere.exe -version "[15.0,15.99]" -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do (
|
for /f "usebackq delims=" %%i in (`vswhere.exe -version "[15.0,15.99]" -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do (
|
||||||
set "DevEnvDir=%%i\Common7\IDE\"
|
set "DevEnvDir=%%i\Common7\IDE\"
|
||||||
)
|
)
|
||||||
|
) else if /I "%VCFMT%" == "gcc" (
|
||||||
|
rem MinGW
|
||||||
) else (
|
) else (
|
||||||
echo Error: wrong VS identifier
|
echo Error: wrong VS identifier
|
||||||
exit /B
|
exit /B
|
||||||
@@ -89,23 +93,28 @@ if /I "%VCFMT%" == "vc10" (
|
|||||||
set "VCVARS=%%i\VC\Auxiliary\Build\vcvarsall.bat"
|
set "VCVARS=%%i\VC\Auxiliary\Build\vcvarsall.bat"
|
||||||
)
|
)
|
||||||
set "VCPlatformToolSet=v141"
|
set "VCPlatformToolSet=v141"
|
||||||
|
) else if /I "%VCFMT%" == "gcc" (
|
||||||
|
rem MinGW
|
||||||
) else (
|
) else (
|
||||||
echo Error: first argument ^(%VCVER%^) should specify supported version of Visual C++,
|
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^)
|
echo one of: vc10 ^(VS 2010 SP3^), vc11 ^(VS 2012 SP3^), vc12 ^(VS 2013^) or vc14 ^(VS 2015^)
|
||||||
exit
|
exit
|
||||||
)
|
)
|
||||||
|
|
||||||
|
rem ----- For compatability with external application using CASROOT -----
|
||||||
|
if ["%CASROOT%"] == [""] set "CASROOT=%SCRIPTROOT%"
|
||||||
|
|
||||||
|
rem ----- Define path to 3rdparty products -----
|
||||||
|
set "THIRDPARTY_DIR=@3RDPARTY_DIR@"
|
||||||
|
|
||||||
if ["%ARCH%"] == ["32"] set VCARCH=x86
|
if ["%ARCH%"] == ["32"] set VCARCH=x86
|
||||||
if ["%ARCH%"] == ["64"] set VCARCH=amd64
|
if ["%ARCH%"] == ["64"] set VCARCH=amd64
|
||||||
|
|
||||||
if /I ["%1"] == ["vc141"] set "VCVER=vc14"
|
if /I ["%1"] == ["vc141"] set "VCVER=vc14"
|
||||||
if exist "%~dp0custom.bat" (
|
if exist "%CASROOT%\custom.bat" (
|
||||||
call "%~dp0custom.bat" %VCVER% %ARCH% %CASDEB%
|
call "%CASROOT%\custom.bat" %VCVER% %ARCH% %CASDEB%
|
||||||
)
|
)
|
||||||
|
|
||||||
rem for compatability with external application using CASROOT
|
|
||||||
if ["%CASROOT%"] == [""] set "CASROOT=%SCRIPTROOT%"
|
|
||||||
|
|
||||||
if not ["%TCL_DIR%"] == [""] set "PATH=%TCL_DIR%;%PATH%"
|
if not ["%TCL_DIR%"] == [""] set "PATH=%TCL_DIR%;%PATH%"
|
||||||
if not ["%TK_DIR%"] == [""] set "PATH=%TK_DIR%;%PATH%"
|
if not ["%TK_DIR%"] == [""] set "PATH=%TK_DIR%;%PATH%"
|
||||||
if not ["%FREETYPE_DIR%"] == [""] set "PATH=%FREETYPE_DIR%;%PATH%"
|
if not ["%FREETYPE_DIR%"] == [""] set "PATH=%FREETYPE_DIR%;%PATH%"
|
||||||
@@ -146,7 +155,7 @@ set "CSF_STEPDefaults=%CSF_OCCTResourcePath%\XSTEPResource"
|
|||||||
set "CSF_XmlOcafResource=%CSF_OCCTResourcePath%\XmlOcafResource"
|
set "CSF_XmlOcafResource=%CSF_OCCTResourcePath%\XmlOcafResource"
|
||||||
set "CSF_MIGRATION_TYPES=%CSF_OCCTResourcePath%\StdResource\MigrationSheet.txt"
|
set "CSF_MIGRATION_TYPES=%CSF_OCCTResourcePath%\StdResource\MigrationSheet.txt"
|
||||||
|
|
||||||
rem Draw Harness special stuff
|
rem ----- Draw Harness special stuff -----
|
||||||
if exist "%CSF_OCCTResourcePath%\DrawResources" (
|
if exist "%CSF_OCCTResourcePath%\DrawResources" (
|
||||||
set "DRAWHOME=%CSF_OCCTResourcePath%\DrawResources"
|
set "DRAWHOME=%CSF_OCCTResourcePath%\DrawResources"
|
||||||
set "CSF_DrawPluginDefaults=%CSF_OCCTResourcePath%\DrawResources"
|
set "CSF_DrawPluginDefaults=%CSF_OCCTResourcePath%\DrawResources"
|
||||||
|
@@ -24,15 +24,13 @@ export CSF_OPT_BIN32=""
|
|||||||
export CSF_OPT_BIN64=""
|
export CSF_OPT_BIN64=""
|
||||||
|
|
||||||
# ----- Set local settings -----
|
# ----- Set local settings -----
|
||||||
if [ "${CASROOT}" != "" ] && [ -e "${CASROOT}/custom.sh" ]; then source "${CASROOT}/custom.sh"; fi
|
|
||||||
if [ -e "${aScriptPath}/custom.sh" ]; then source "${aScriptPath}/custom.sh"; fi
|
|
||||||
|
|
||||||
if [ "${CASROOT}" != "" ] && [ -d "${aScriptPath}/${CASROOT}" ]; then
|
if [ "${CASROOT}" != "" ] && [ -d "${aScriptPath}/${CASROOT}" ]; then
|
||||||
export CASROOT="${aScriptPath}/${CASROOT}"
|
export CASROOT="${aScriptPath}/${CASROOT}"
|
||||||
fi
|
fi
|
||||||
if [ "${CASROOT}" == "" ]; then
|
if [ "${CASROOT}" == "" ]; then
|
||||||
export CASROOT="${aScriptPath}"
|
export CASROOT="${aScriptPath}"
|
||||||
fi
|
fi
|
||||||
|
if [ -e "${CASROOT}/custom.sh" ]; then source "${CASROOT}/custom.sh"; fi
|
||||||
|
|
||||||
# Read script arguments
|
# Read script arguments
|
||||||
shopt -s nocasematch
|
shopt -s nocasematch
|
||||||
|
@@ -2,12 +2,15 @@
|
|||||||
|
|
||||||
aScriptPath=${BASH_SOURCE%/*}; if [ -d "${aScriptPath}" ]; then cd "$aScriptPath"; fi; aScriptPath="$PWD";
|
aScriptPath=${BASH_SOURCE%/*}; if [ -d "${aScriptPath}" ]; then cd "$aScriptPath"; fi; aScriptPath="$PWD";
|
||||||
|
|
||||||
# ----- for compatability with external application using CASROOT -----
|
# ----- For compatability with external application using CASROOT -----
|
||||||
if [ "${CASROOT}" == "" ]; then
|
if [ "${CASROOT}" == "" ]; then
|
||||||
export CASROOT="${aScriptPath}"
|
export CASROOT="@INSTALL_DIR@"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Read script arguments
|
# ----- Define path to 3rdparty products -----
|
||||||
|
export THIRDPARTY_DIR="@3RDPARTY_DIR@"
|
||||||
|
|
||||||
|
# ----- Read script arguments -----
|
||||||
shopt -s nocasematch
|
shopt -s nocasematch
|
||||||
export CASDEB="";
|
export CASDEB="";
|
||||||
if [[ "$1" == "debug" ]]; then export CASDEB="d"; fi
|
if [[ "$1" == "debug" ]]; then export CASDEB="d"; fi
|
||||||
@@ -33,8 +36,8 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ----- Set local settings -----
|
# ----- Set local settings -----
|
||||||
if [ -e "${aScriptPath}/custom.sh" ]; then
|
if [ -e "${CASROOT}/@INSTALL_DIR_SCRIPT@/custom.sh" ]; then
|
||||||
source "${aScriptPath}/custom.sh" "${CASDEB}" "${ARCH}"
|
source "${CASROOT}/@INSTALL_DIR_SCRIPT@/custom.sh" "${CASDEB}" "${ARCH}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
THRDPARTY_PATH=""
|
THRDPARTY_PATH=""
|
||||||
@@ -127,7 +130,7 @@ export CSF_STEPDefaults="${CSF_OCCTResourcePath}/XSTEPResource"
|
|||||||
export CSF_XmlOcafResource="${CSF_OCCTResourcePath}/XmlOcafResource"
|
export CSF_XmlOcafResource="${CSF_OCCTResourcePath}/XmlOcafResource"
|
||||||
export CSF_MIGRATION_TYPES="${CSF_OCCTResourcePath}/StdResource/MigrationSheet.txt"
|
export CSF_MIGRATION_TYPES="${CSF_OCCTResourcePath}/StdResource/MigrationSheet.txt"
|
||||||
|
|
||||||
# Draw Harness special stuff
|
# ----- Draw Harness special stuff -----
|
||||||
if [ -e "${CSF_OCCTResourcePath}/DrawResources" ]; then
|
if [ -e "${CSF_OCCTResourcePath}/DrawResources" ]; then
|
||||||
export DRAWHOME="${CSF_OCCTResourcePath}/DrawResources"
|
export DRAWHOME="${CSF_OCCTResourcePath}/DrawResources"
|
||||||
export CSF_DrawPluginDefaults="${CSF_OCCTResourcePath}/DrawResources"
|
export CSF_DrawPluginDefaults="${CSF_OCCTResourcePath}/DrawResources"
|
||||||
|
@@ -1,30 +0,0 @@
|
|||||||
@echo off
|
|
||||||
rem Decode VCVER variable and define related ones:
|
|
||||||
rem
|
|
||||||
rem VCFMT - "vc" followed by full version number of Visual Studio toolset
|
|
||||||
rem (same as VCVER without optional suffix "-uwp")
|
|
||||||
rem VCLIB - name of folder contining binaries
|
|
||||||
rem (same as VCVER except without third version in number)
|
|
||||||
rem VCPROP - name of required Visual Studion Workload (starting with VS 2017)
|
|
||||||
rem
|
|
||||||
rem Note that for VS before 2015 (vc14) always
|
|
||||||
rem VCFMT=VCLIB=VCVER and VCPROP=NativeDesktop
|
|
||||||
|
|
||||||
rem Since VS 2017, environment variables like VS100COMNTOOLS are not defined
|
|
||||||
rem any more, we can only use vswhere.exe tool to find Visual Studio.
|
|
||||||
rem Add path to vswhere.exe
|
|
||||||
set "PATH=%PATH%;%ProgramFiles(x86)%\Microsoft Visual Studio\Installer"
|
|
||||||
|
|
||||||
rem for vc10-12, interpretation is trivial
|
|
||||||
set VCFMT=%VCVER%
|
|
||||||
set VCLIB=%VCVER:~0,4%
|
|
||||||
set VCPROP=NativeDesktop
|
|
||||||
|
|
||||||
rem vc14 and later can have optional suffix "-uwp"
|
|
||||||
if "%VCVER:~-4%" == "-uwp" (
|
|
||||||
set VCFMT=%VCVER:~0,-4%
|
|
||||||
set VCLIB=%VCLIB%-uwp
|
|
||||||
set VCPROP=Universal
|
|
||||||
)
|
|
||||||
|
|
||||||
rem echo VCVER=%VCVER% VCFMT=%VCFMT% VCLIB=%VCLIB% VCPROP=%VCPROP%
|
|
@@ -13,6 +13,7 @@ overview/overview.md
|
|||||||
|
|
||||||
../samples/qt/AndroidQt/ReadMe.md
|
../samples/qt/AndroidQt/ReadMe.md
|
||||||
../samples/java/jniviewer/ReadMe.md
|
../samples/java/jniviewer/ReadMe.md
|
||||||
|
../samples/ios/UIKitSample/ReadMe.md
|
||||||
|
|
||||||
tutorial/tutorial.md
|
tutorial/tutorial.md
|
||||||
|
|
||||||
@@ -31,6 +32,7 @@ user_guides/xde/xde.md
|
|||||||
user_guides/ocaf/ocaf.md
|
user_guides/ocaf/ocaf.md
|
||||||
user_guides/tobj/tobj.md
|
user_guides/tobj/tobj.md
|
||||||
user_guides/draw_test_harness/draw_test_harness.md
|
user_guides/draw_test_harness/draw_test_harness.md
|
||||||
|
user_guides/inspector/inspector.md
|
||||||
user_guides/brep_wp/brep_wp.md
|
user_guides/brep_wp/brep_wp.md
|
||||||
user_guides/vis/vis.md
|
user_guides/vis/vis.md
|
||||||
|
|
||||||
|
@@ -14,6 +14,7 @@ user_guides/shape_healing/shape_healing.md
|
|||||||
user_guides/ocaf/ocaf.md
|
user_guides/ocaf/ocaf.md
|
||||||
user_guides/step/step.md
|
user_guides/step/step.md
|
||||||
user_guides/draw_test_harness/draw_test_harness.md
|
user_guides/draw_test_harness/draw_test_harness.md
|
||||||
|
user_guides/inspector/inspector.md
|
||||||
user_guides/tobj/tobj.md
|
user_guides/tobj/tobj.md
|
||||||
user_guides/visualization/visualization.md
|
user_guides/visualization/visualization.md
|
||||||
user_guides/xde/xde.md
|
user_guides/xde/xde.md
|
||||||
|
@@ -97,6 +97,7 @@ The following table gives the full list of environment variables used at the con
|
|||||||
| 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_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_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_MODULE_MfcSamples | Boolean flag | Indicates whether MFC samples should be built together with OCCT. This option is only relevant to Windows platforms |
|
| 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_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 |
|
| 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 |
|
||||||
| BUILD_WITH_DEBUG | Boolean flag | Enables extended messages of many OCCT algorithms, usually printed to cout. These include messages on internal errors and special cases encountered, timing, etc. |
|
| BUILD_WITH_DEBUG | Boolean flag | Enables extended messages of many OCCT algorithms, usually printed to cout. These include messages on internal errors and special cases encountered, timing, etc. |
|
||||||
|
@@ -1156,7 +1156,13 @@ The following obsolete features have been removed:
|
|||||||
* The method Perform of the *ShapeConstruct_ProjectCurveOnSurface* class is modified:
|
* The method Perform of the *ShapeConstruct_ProjectCurveOnSurface* class is modified:
|
||||||
- input arguments *continuity*, *maxdeg*, *nbinterval* have been removed as unused;
|
- input arguments *continuity*, *maxdeg*, *nbinterval* have been removed as unused;
|
||||||
- input arguments *TolFirst*, *TolLast* have been added at the end of arguments' list.
|
- input arguments *TolFirst*, *TolLast* have been added at the end of arguments' list.
|
||||||
* The functionality to process shapes different only in orientation by different ways was removed from types *BRepTools_ReShape* and *ShapeBuild_ReShape*.
|
* Typedefs Quantity_Factor, Quantity_Parameter, Quantity_Ratio, Quantity_Coefficient, Quantity_PlaneAngle, Quantity_Length, V3d_Parameter and V3d_Coordinate have been removed; Standard_Real should be used instead.
|
||||||
|
|
||||||
|
@subsection upgrade_occt720_reshape_oriented_removed Corrections in BRepOffset API
|
||||||
|
|
||||||
|
In classes *BRepTools_ReShape* and *ShapeBuild_ReShape*, the possibility to process shapes different only by orientation in different ways has been removed.
|
||||||
|
Thus methods *Remove()* and *Replace()* do not have any more the last argument 'oriented'; they work always as if *Standard_False* was passed before (default behavior).
|
||||||
|
Methods *ModeConsiderLo()* and *Apply()* with three arguments have been removed.
|
||||||
|
|
||||||
@subsection upgrade_occt720_correction_of_Offset_API Corrections in BRepOffset API
|
@subsection upgrade_occt720_correction_of_Offset_API Corrections in BRepOffset API
|
||||||
|
|
||||||
@@ -1213,6 +1219,8 @@ Management of highlight attributes has been revised and might require modificati
|
|||||||
- *myZLayer*, replaced by *myDrawer->ZLayer()*
|
- *myZLayer*, replaced by *myDrawer->ZLayer()*
|
||||||
* The method *PrsMgr_PresentationManager::Unhighlight()* taking Display Mode as an argument has been marked deprecated.
|
* The method *PrsMgr_PresentationManager::Unhighlight()* taking Display Mode as an argument has been marked deprecated.
|
||||||
Implementation now performs unhighlighting of all highlighted presentation mode.
|
Implementation now performs unhighlighting of all highlighted presentation mode.
|
||||||
|
* The methods taking/returning *Quantity_NameOfColor* (predefined list of colors) and duplicating methods operating with *Quantity_Color* (definition of arbitrary RGB color) in AIS have been removed.
|
||||||
|
*Quantity_Color* should be now used instead.
|
||||||
|
|
||||||
@subsection upgrade_720_implicit_viewer_update Elimination of implicit 3D Viewer updates
|
@subsection upgrade_720_implicit_viewer_update Elimination of implicit 3D Viewer updates
|
||||||
|
|
||||||
@@ -1226,7 +1234,7 @@ To avoid such issues, the interface has been modified and default value has been
|
|||||||
Therefore, old application code should be updated to set the flag theToUpdateViewer explicitly
|
Therefore, old application code should be updated to set the flag theToUpdateViewer explicitly
|
||||||
to desired value (TRUE to preserve old previous behavior), if it was not already set.
|
to desired value (TRUE to preserve old previous behavior), if it was not already set.
|
||||||
|
|
||||||
The follow AIS_InteractiveContext methods have been changed:
|
The following AIS_InteractiveContext methods have been changed:
|
||||||
Display, Erase, EraseAll, DisplayAll, EraseSelected, DisplaySelected, ClearPrs, Remove, RemoveAll, Hilight,
|
Display, Erase, EraseAll, DisplayAll, EraseSelected, DisplaySelected, ClearPrs, Remove, RemoveAll, Hilight,
|
||||||
HilightWithColor, Unhilight, Redisplay, RecomputePrsOnly, Update, SetDisplayMode, UnsetDisplayMode, SetColor,
|
HilightWithColor, Unhilight, Redisplay, RecomputePrsOnly, Update, SetDisplayMode, UnsetDisplayMode, SetColor,
|
||||||
UnsetColor, SetWidth, UnsetWidth, SetMaterial, UnsetMaterial, SetTransparency, UnsetTransparency,
|
UnsetColor, SetWidth, UnsetWidth, SetMaterial, UnsetMaterial, SetTransparency, UnsetTransparency,
|
||||||
@@ -1273,7 +1281,8 @@ In most cases this change should be transparent, however applications implementi
|
|||||||
* Package BVH now uses opencascade::handle instead of NCollection_Handle (for classes BVH_Properties, BVH_Builder, BVH_Tree, BVH_Object).
|
* Package BVH now uses opencascade::handle instead of NCollection_Handle (for classes BVH_Properties, BVH_Builder, BVH_Tree, BVH_Object).
|
||||||
Application code using BVH package directly should be updated accordingly.
|
Application code using BVH package directly should be updated accordingly.
|
||||||
* AIS_Shape now computes UV texture coordinates for AIS_Shaded presentation in case if texture mapping is enabled within Shaded Attributes.
|
* AIS_Shape now computes UV texture coordinates for AIS_Shaded presentation in case if texture mapping is enabled within Shaded Attributes.
|
||||||
Therefore, redundant class AIS_TexturedShape has been marked deprecated - applications can use AIS_Shape directly (texture mapping should be defined through AIS_Shape::Attributes()).
|
Therefore, redundant class *AIS_TexturedShape is now deprecated* - applications can use *AIS_Shape* directly (texture mapping should be defined through AIS_Shape::Attributes()).
|
||||||
|
* Methods for managing active texture within OpenGl_Workspace class (ActiveTexture(), DisableTexture(), EnableTexture()) have been moved to *OpenGl_Context::BindTextures()*.
|
||||||
|
|
||||||
@subsection upgrade_720_BOP_DataStructure BOP - Pairs of interfering indices
|
@subsection upgrade_720_BOP_DataStructure BOP - Pairs of interfering indices
|
||||||
|
|
||||||
@@ -1353,7 +1362,7 @@ NCollection_Handle<Storage_BaseDriver> aFileDriver(new FSD_File());
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
OCC_CATCH_SIGNALS
|
OCC_CATCH_SIGNALS
|
||||||
PCDM_ReadWriter::Open(*aFileDriver, TCollection_ExtendedString(CStringA(filename).GetBuffer()), Storage_VSWrite);
|
PCDM_ReadWriter::Open (*aFileDriver, TCollection_ExtendedString(theFilename), Storage_VSWrite);
|
||||||
}
|
}
|
||||||
catch (Standard_Failure& e)
|
catch (Standard_Failure& e)
|
||||||
{
|
{
|
||||||
@@ -1361,7 +1370,7 @@ catch (Standard_Failure& e)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Create a storage data instance
|
// Create a storage data instance
|
||||||
Handle(StdStorage_Data) aData = new StdStorage_Data;
|
Handle(StdStorage_Data) aData = new StdStorage_Data();
|
||||||
// Set an axiliary application name (optional)
|
// Set an axiliary application name (optional)
|
||||||
aData->HeaderData()->SetApplicationName(TCollection_ExtendedString("Application"));
|
aData->HeaderData()->SetApplicationName(TCollection_ExtendedString("Application"));
|
||||||
|
|
||||||
@@ -1380,8 +1389,7 @@ for (Standard_Integer i = 1; i <= shapes.Length(); ++i)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Construct a root name
|
// Construct a root name
|
||||||
TCollection_AsciiString aName = "Shape_";
|
TCollection_AsciiString aName = TCollection_AsciiString("Shape_") + i;
|
||||||
aName += i;
|
|
||||||
|
|
||||||
// Add a root to storage data
|
// Add a root to storage data
|
||||||
Handle(StdStorage_Root) aRoot = new StdStorage_Root(aName, aPShape);
|
Handle(StdStorage_Root) aRoot = new StdStorage_Root(aName, aPShape);
|
||||||
|
BIN
dox/overview/images/sample_ios_uikit.png
Normal file
After Width: | Height: | Size: 48 KiB |
@@ -18,7 +18,7 @@ modeling (CAD), manufacturing / measuring (CAM) or numerical simulation (CAE).
|
|||||||
@section OCCT_OVW_SECTION_2 Copyrights
|
@section OCCT_OVW_SECTION_2 Copyrights
|
||||||
|
|
||||||
Open CASCADE Technology and all materials, including this documentation, is
|
Open CASCADE Technology and all materials, including this documentation, is
|
||||||
Copyright (c) 1999-2016 by OPEN CASCADE S.A.S. All rights reserved.
|
Copyright (c) 1999-2017 by OPEN CASCADE S.A.S. All rights reserved.
|
||||||
|
|
||||||
@htmlonly<center>@endhtmlonly
|
@htmlonly<center>@endhtmlonly
|
||||||
https://www.opencascade.com
|
https://www.opencascade.com
|
||||||
@@ -83,28 +83,28 @@ To use Tcl/Tk, please refer to the Licensing Terms (https://www.tcl.tk/software/
|
|||||||
|
|
||||||
**GL2PS** is developed by Christophe Geuzaine and others. It is optionally used by OCCT to
|
**GL2PS** is developed by Christophe Geuzaine and others. It is optionally used by OCCT to
|
||||||
export content of OpenGL scene to vector graphics formats (PS, PDF, EMF, SVG).
|
export content of OpenGL scene to vector graphics formats (PS, PDF, EMF, SVG).
|
||||||
The library is licensed under GL2PS LICENSE https://www.geuz.org/gl2ps/COPYING.GL2PS Version 2, November 2003.
|
The library is licensed under GL2PS license (http://www.geuz.org/gl2ps/COPYING.GL2PS).
|
||||||
|
|
||||||
**FreeType 2** is developed by Antoine Leca, David Turner, Werner Lemberg and others.
|
**FreeType 2** is developed by Antoine Leca, David Turner, Werner Lemberg and others.
|
||||||
It is a software font engine that is designed to be small, efficient, highly customizable and
|
It is a software font engine that is designed to be small, efficient, highly customizable and
|
||||||
portable while capable of producing high-quality output (glyph images). This product
|
portable while capable of producing high-quality output (glyph images). This product
|
||||||
can be used in graphic libraries, display servers, font conversion tools,
|
can be used in graphic libraries, display servers, font conversion tools,
|
||||||
text image generation tools, and many other products.
|
text image generation tools, and many other products.
|
||||||
|
FreeType 2 is released under two open-source licenses: BSD-like FreeType License and the GPL (https://www.freetype.org/license.html).
|
||||||
FreeType 2 is released under two open-source licenses: BSD-like FreeType License and the GPL.
|
|
||||||
|
|
||||||
**Intel(R) Threading Building Blocks (TBB)** offers a rich and complete approach to expressing parallelism in a C++ program.
|
**Intel(R) Threading Building Blocks (TBB)** offers a rich and complete approach to expressing parallelism in a C++ program.
|
||||||
It is a library that helps you to take advantage of multi-core processor performance without having to be a threading expert.
|
It is a library that helps you to take advantage of multi-core processor performance without having to be a threading expert.
|
||||||
Threading Building Blocks is not just a threads-replacement library. It represents a higher-level, task-based parallelism that
|
Threading Building Blocks is not just a threads-replacement library. It represents a higher-level, task-based parallelism that
|
||||||
abstracts platform details and threading mechanisms for scalability and performance.
|
abstracts platform details and threading mechanisms for scalability and performance.
|
||||||
TBB is available under GPLv2 license with the runtime exception.
|
TBB version 2017 is available under Apache 2.0 license, while older versions
|
||||||
|
until 4.4 are available under GPLv2 license with the runtime exception (https://www.threadingbuildingblocks.org).
|
||||||
|
|
||||||
**OpenGL** is an industry standard API for 3D graphics used by OCCT for
|
**OpenGL** is an industry standard API for 3D graphics used by OCCT for
|
||||||
implementation of 3D viewer. OpenGL specification is developed by the
|
implementation of 3D viewer. OpenGL specification is developed by the
|
||||||
Khronos group, https://www.khronos.org/opengl/. OCCT code includes header
|
Khronos group, https://www.khronos.org/opengl/. OCCT code includes header
|
||||||
file *glext.h* obtained from Khronos web site.
|
file *glext.h* obtained from Khronos web site.
|
||||||
|
|
||||||
**VTK** -- The **Visualization Toolkit (VTK)** is an open-source, freely available software system for 3D computer graphics, image processing and visualization. OCCT VIS component provides adaptation functionality for visualization of OCCT topological shapes by means of VTK library. If you need further information on VTK, please, refer to VTK Homepage https://www.vtk.org/.
|
**VTK** -- The **Visualization Toolkit (VTK)** is an open-source, freely available software system for 3D computer graphics, image processing and visualization. OCCT VIS component provides adaptation functionality for visualization of OCCT topological shapes by means of VTK library. If you need further information on VTK, please, refer to VTK Homepage http://www.vtk.org/.
|
||||||
|
|
||||||
**Doxygen** developed by Dimitri van Heesch is open source documentation system for
|
**Doxygen** developed by Dimitri van Heesch is open source documentation system for
|
||||||
C++, C, Java, Objective-C, Python, IDL, PHP and C#. This product is used in Open CASCADE Technology
|
C++, C, Java, Objective-C, Python, IDL, PHP and C#. This product is used in Open CASCADE Technology
|
||||||
@@ -115,17 +115,17 @@ If you need further information on Doxygen, please refer to https://www.stack.nl
|
|||||||
Graph visualization is representiation of structured information as diagrams of abstract graphs and networks.
|
Graph visualization is representiation of structured information as diagrams of abstract graphs and networks.
|
||||||
This product is used together with Doxygen in Open CASCADE Technology for automatic creation of Technical Documentation
|
This product is used together with Doxygen in Open CASCADE Technology for automatic creation of Technical Documentation
|
||||||
(generation of dependency graphs). Current versions of Graphviz are licensed on an open source
|
(generation of dependency graphs). Current versions of Graphviz are licensed on an open source
|
||||||
basis under The Eclipse Public License (EPL) (https://www.graphviz.org/License.php).
|
basis under The Eclipse Public License (EPL) (http://www.graphviz.org/License.php).
|
||||||
|
|
||||||
**Inno Setup** is a free script-driven installation system created in CodeGear Delphi by Jordan Russell.
|
**Inno Setup** is a free script-driven installation system created in CodeGear Delphi by Jordan Russell.
|
||||||
In OCCT Inno Setup is used to create Installation Wizard on Windows.
|
In OCCT Inno Setup is used to create Installation Wizard on Windows.
|
||||||
It is licensed under Inno Setup License (https://www.jrsoftware.org/files/is/license.txt).
|
It is licensed under Inno Setup License (http://www.jrsoftware.org/files/is/license.txt).
|
||||||
|
|
||||||
**FreeImage** is an Open Source library supporting popular graphics image formats, such as PNG, BMP, JPEG, TIFF,
|
**FreeImage** is an Open Source library supporting popular graphics image formats, such as PNG, BMP, JPEG, TIFF,
|
||||||
and others used by multimedia applications. This library is developed by Hervé Drolon and Floris van den Berg.
|
and others used by multimedia applications. This library is developed by Hervé Drolon and Floris van den Berg.
|
||||||
FreeImage is easy to use, fast, multithreading safe, compatible with all 32-bit or 64-bit versions of Windows,
|
FreeImage is easy to use, fast, multithreading safe, compatible with all 32-bit or 64-bit versions of Windows,
|
||||||
and cross-platform (works both with Linux and Mac OS X). FreeImage is optionally used by OCCT to work
|
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) (https://freeimage.sourceforge.net/freeimage-license.txt).
|
with images, on conditions of the FreeImage Public License (FIPL) (http://freeimage.sourceforge.net/freeimage-license.txt).
|
||||||
|
|
||||||
**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.
|
**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/
|
OCCT uses CMake as a build system. CMake is available under BSD 3-Clause license. See more at https://cmake.org/
|
||||||
@@ -196,7 +196,7 @@ for which OCCT is certified to work.
|
|||||||
|
|
||||||
| OS | Compiler |
|
| OS | Compiler |
|
||||||
| --------- | ----------- |
|
| --------- | ----------- |
|
||||||
| Windows | Microsoft Visual Studio: 2010 SP1<sup>1</sup>, 2012 Update 4, 2013 Update 5, 2015 <br> Intel C++ Composer XE 2013 SP1 <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+ |
|
| Linux | GNU gcc 4.3+ <br> LLVM CLang 3.6+ |
|
||||||
| OS X | XCode 6 or newer |
|
| OS X | XCode 6 or newer |
|
||||||
| Android | NDK r10, GNU gcc 4.8 or newer |
|
| Android | NDK r10, GNU gcc 4.8 or newer |
|
||||||
@@ -209,15 +209,15 @@ for which OCCT is certified to work.
|
|||||||
| Component | Requirement |
|
| Component | Requirement |
|
||||||
| --------- | ----------- |
|
| --------- | ----------- |
|
||||||
| Graphic library | OpenGL 3.3+, OpenGL ES 2.0+ <br> Direct3D 9 |
|
| Graphic library | OpenGL 3.3+, OpenGL ES 2.0+ <br> Direct3D 9 |
|
||||||
| Qt (for samples and demos) | Desktop: Qt 4.8.6+ http://www.qt.io/download/ <br> Android: Qt 5.3.2+ http://www.qt.io/download/ |
|
| Qt (for samples and demos) | Desktop: Qt 4.8.6+ https://www.qt.io/download/ <br> Android: Qt 5.3.2+ https://www.qt.io/download/ |
|
||||||
| TCL (for testing tools) | Tcl/Tk 8.6.3+ http://www.tcl.tk/software/tcltk/download.html <br> or ActiveTcl 8.6 http://www.activestate.com/activetcl/downloads (for Windows)|
|
| TCL (for testing tools) | Tcl/Tk 8.6.3+ https://www.tcl.tk/software/tcltk/download.html <br> or ActiveTcl 8.6 https://www.activestate.com/activetcl/downloads (for Windows)|
|
||||||
| Freetype (for text rendering) | FreeType 2.4.11-2.5.5 http://sourceforge.net/projects/freetype/files/ |
|
| Freetype (for text rendering) | FreeType 2.4.11-2.5.5 https://sourceforge.net/projects/freetype/files/ |
|
||||||
| FreeImage (optional, for support of common 2D graphic formats) | FreeImage 3.17.0+ http://sourceforge.net/projects/freeimage/files |
|
| FreeImage (optional, for support of common 2D graphic formats) | FreeImage 3.17.0+ https://sourceforge.net/projects/freeimage/files |
|
||||||
| FFmpeg (optional, for video recording) | FFmpeg 3.1+ https://www.ffmpeg.org |
|
| FFmpeg (optional, for video recording) | FFmpeg 3.1+ https://www.ffmpeg.org/download.html |
|
||||||
| gl2ps (optional, for export contents of OCCT viewer to vector formats) | gl2ps-1.3.8+ http://geuz.org/gl2ps/ |
|
| gl2ps (optional, for export contents of OCCT viewer to vector formats) | gl2ps-1.3.8+ http://geuz.org/gl2ps/ |
|
||||||
| Intel TBB (optional, for multithreaded algorithms) | TBB 4.x or 5.x http://www.threadingbuildingblocks.org/ |
|
| Intel TBB (optional, for multithreaded algorithms) | TBB 4.x or 5.x https://www.threadingbuildingblocks.org/ |
|
||||||
| VTK (for VTK Integration Services | VTK 6.1+ http://www.vtk.org/VTK/resources/software.html |
|
| VTK (for VTK Integration Services | VTK 6.1+ http://www.vtk.org/download/ |
|
||||||
| Doxygen (optional for building documentation) | Doxygen 1.8.5+ http://www.stack.nl/~dimitri/doxygen/download.html |
|
| Doxygen (optional for building documentation) | Doxygen 1.8.5+ https://www.stack.nl/~dimitri/doxygen/download.html |
|
||||||
|
|
||||||
@subsection overview_req_hw Hardware
|
@subsection overview_req_hw Hardware
|
||||||
|
|
||||||
@@ -534,11 +534,11 @@ Export:
|
|||||||
* Stl
|
* Stl
|
||||||
* Vrml
|
* Vrml
|
||||||
|
|
||||||
See \subpage samples_csharp_occt "Readme" for details.
|
See \subpage samples_csharp_occt "C# sample Readme" for details.
|
||||||
|
|
||||||
There is also another C# example with the same functionality, which demonstrates the integration of Direct3D Viewer into .NET applications using WPF front end.
|
There is also another C# example with the same functionality, which demonstrates the integration of Direct3D Viewer into .NET applications using WPF front end.
|
||||||
|
|
||||||
See \subpage samples_csharp_direct3d "Readme" for details.
|
See \subpage samples_csharp_direct3d "Direct3D C# sample Readme" for details.
|
||||||
|
|
||||||
@subsubsection OCCT_OVW_SECTION_7_3_4 Android
|
@subsubsection OCCT_OVW_SECTION_7_3_4 Android
|
||||||
|
|
||||||
@@ -546,8 +546,16 @@ There are two samples are representing usage OCCT framework on Android mobile pl
|
|||||||
|
|
||||||
jniviewer
|
jniviewer
|
||||||
@figure{/overview/images/samples_java_android_occt.jpg}
|
@figure{/overview/images/samples_java_android_occt.jpg}
|
||||||
Java -- See \subpage samples_java_android_occt "Readme" for details.
|
Java -- See \subpage samples_java_android_occt "Android Java sample Readme" for details.
|
||||||
|
|
||||||
AndroidQt
|
AndroidQt
|
||||||
@figure{/overview/images/samples_qml_android_occt.jpg}
|
@figure{/overview/images/samples_qml_android_occt.jpg}
|
||||||
Qt -- See \subpage samples_qml_android_occt "Readme" for details.
|
Qt -- See \subpage samples_qml_android_occt "Android Qt sample Readme" for details.
|
||||||
|
|
||||||
|
@subsubsection OCCT_OVW_SECTION_7_3_5 iOS
|
||||||
|
|
||||||
|
There is a sample demonstrating usage of OCCT on iOS with Apple UIKit framework.
|
||||||
|
|
||||||
|
@figure{/overview/images/sample_ios_uikit.png}
|
||||||
|
|
||||||
|
See \subpage occt_samples_ios_uikit "iOS sample Readme" for details.
|
||||||
|
@@ -10687,6 +10687,87 @@ Example:
|
|||||||
mdist
|
mdist
|
||||||
~~~~~
|
~~~~~
|
||||||
|
|
||||||
|
@section occt_draw_13 Inspector commands
|
||||||
|
|
||||||
|
|
||||||
|
This section describes commands that make possible to use Inspector.
|
||||||
|
|
||||||
|
@subsection occt_draw_13_1 tinspector
|
||||||
|
|
||||||
|
Syntax:
|
||||||
|
~~~~~
|
||||||
|
tinspector [-plugins {name1 ... [nameN] | all}]
|
||||||
|
[-activate name]
|
||||||
|
[-shape object [name1] ... [nameN]]
|
||||||
|
[-open file_name [name1] ... [nameN]]
|
||||||
|
[-update]
|
||||||
|
[-select {object | name1 ... [nameN]}]
|
||||||
|
[-show {0|1} = 1]
|
||||||
|
~~~~~
|
||||||
|
Starts tool of inspection.
|
||||||
|
Options:
|
||||||
|
* *plugins* enters plugins that should be added in the inspector.
|
||||||
|
Available names are: dfbrowser, vinspector and shapeview.
|
||||||
|
Plugins order will be the same as defined in arguments.
|
||||||
|
'all' adds all available plugins in the order:
|
||||||
|
DFBrowser, VInspector and ShapeView.
|
||||||
|
If at the first call this option is not used, 'all' option is applyed;
|
||||||
|
* *activate* activates the plugin in the tool view.
|
||||||
|
If at the first call this option is not used, the first plugin is activated;
|
||||||
|
* *shape* initializes plugin/s by the shape object. If 'name' is empty, initializes all plugins;
|
||||||
|
* *open* gives the file to the plugin/s. If the plugin is active, after open, update content will be done;
|
||||||
|
* *update* updates content of the active plugin;
|
||||||
|
* *select* sets the parameter that should be selected in an active tool view.
|
||||||
|
Depending on active tool the parameter is:
|
||||||
|
ShapeView: 'object' is an instance of TopoDS_Shape TShape,
|
||||||
|
DFBrowser: 'name' is an entry of TDF_Label and name2(optionaly) for TDF_Attribute type name,
|
||||||
|
VInspector: 'object' is an instance of AIS_InteractiveObject;
|
||||||
|
* *show* sets Inspector view visible or hidden. The first call of this command will show it.
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
~~~~~
|
||||||
|
pload DCAF INSPECTOR
|
||||||
|
|
||||||
|
NewDocument Doc BinOcaf
|
||||||
|
|
||||||
|
set aSetAttr1 100
|
||||||
|
set aLabel 0:2
|
||||||
|
SetInteger Doc ${aLabel} ${aSetAttr1}
|
||||||
|
|
||||||
|
tinspector -plugins dfbrowser -select 0:2 TDataStd_Integer
|
||||||
|
~~~~~
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
~~~~~
|
||||||
|
pload ALL INSPECTOR
|
||||||
|
|
||||||
|
box b1 200 100 120
|
||||||
|
box b2 100 200 220 100 120 100
|
||||||
|
|
||||||
|
tinspector -plugins shapeview -shape b1 -shape b2 -select b1
|
||||||
|
~~~~~
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
~~~~~
|
||||||
|
pload ALL INSPECTOR
|
||||||
|
|
||||||
|
tinspector -plugins vinspector
|
||||||
|
|
||||||
|
vinit
|
||||||
|
box box_1 100 100 100
|
||||||
|
vdisplay box_1
|
||||||
|
|
||||||
|
box box_2 180 120 200 150 150 150
|
||||||
|
vdisplay box_2
|
||||||
|
|
||||||
|
vfit
|
||||||
|
vselmode box_1 1 1
|
||||||
|
vselmode box_1 3 1
|
||||||
|
|
||||||
|
tinspector -update -select box_1
|
||||||
|
~~~~~
|
||||||
|
|
||||||
|
|
||||||
@section occt_draw_11 Extending Test Harness with custom commands
|
@section occt_draw_11 Extending Test Harness with custom commands
|
||||||
|
|
||||||
|
|
||||||
|
BIN
dox/user_guides/inspector/images/3DView.png
Normal file
After Width: | Height: | Size: 5.2 KiB |
224
dox/user_guides/inspector/images/3DView_elements.svg
Normal file
@@ -0,0 +1,224 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="165.36458mm"
|
||||||
|
height="99.483337mm"
|
||||||
|
viewBox="0 0 165.36458 99.483337"
|
||||||
|
version="1.1"
|
||||||
|
id="svg8"
|
||||||
|
sodipodi:docname="3DView_elements.svg"
|
||||||
|
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)">
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="0.98994949"
|
||||||
|
inkscape:cx="237.05748"
|
||||||
|
inkscape:cy="217.01184"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:window-width="1410"
|
||||||
|
inkscape:window-height="786"
|
||||||
|
inkscape:window-x="265"
|
||||||
|
inkscape:window-y="101"
|
||||||
|
inkscape:window-maximized="0"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
showborder="true"
|
||||||
|
inkscape:showpageshadow="false" />
|
||||||
|
<metadata
|
||||||
|
id="metadata5">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(-208.35938,-140.66904)">
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:#000000;stroke-width:0.52916667;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4147-9"
|
||||||
|
width="164.83542"
|
||||||
|
height="98.95417"
|
||||||
|
x="208.62396"
|
||||||
|
y="140.93362"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#bfbfbf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4157-5"
|
||||||
|
width="155.95102"
|
||||||
|
height="20.214758"
|
||||||
|
x="212.62312"
|
||||||
|
y="145.17099"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#bfbfbf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4159-1"
|
||||||
|
width="155.83388"
|
||||||
|
height="64.776878"
|
||||||
|
x="212.62471"
|
||||||
|
y="170.05089"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.36620295;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4195-1-1"
|
||||||
|
width="30.417513"
|
||||||
|
height="11.316654"
|
||||||
|
x="286.53876"
|
||||||
|
y="149.43106"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.36620295;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4195-1-5-9"
|
||||||
|
width="30.417513"
|
||||||
|
height="11.316654"
|
||||||
|
x="321.21384"
|
||||||
|
y="149.43106"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:3.38666677px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="295.72775"
|
||||||
|
y="156.1628"
|
||||||
|
id="text5675-5"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan5677-3"
|
||||||
|
x="295.72775"
|
||||||
|
y="156.1628"
|
||||||
|
style="font-size:3.88055563px;line-height:1.25;stroke-width:0.28222224px">Single</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:3.38666677px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="331.03946"
|
||||||
|
y="156.53418"
|
||||||
|
id="text5679-5"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan5681-0"
|
||||||
|
x="331.03946"
|
||||||
|
y="156.53418"
|
||||||
|
style="font-size:3.88055563px;line-height:1.25;stroke-width:0.28222224px">Clean</tspan></text>
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.45057005;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4195-8-33"
|
||||||
|
width="14.354354"
|
||||||
|
height="56.42762"
|
||||||
|
x="216.9996"
|
||||||
|
y="174.34537"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.83517319;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4195-7-0"
|
||||||
|
width="67.939919"
|
||||||
|
height="26.352776"
|
||||||
|
x="265.93634"
|
||||||
|
y="189.26295"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:3.3866663px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="295.6308"
|
||||||
|
y="201.46571"
|
||||||
|
id="text5683-5-2"
|
||||||
|
transform="scale(0.98830373,1.0118347)"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan5685-3-7"
|
||||||
|
x="295.6308"
|
||||||
|
y="201.46571"
|
||||||
|
style="font-size:3.83516741px;line-height:1.25;stroke-width:0.28222221px">3D view</tspan></text>
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.36620298;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4195-1-1-3"
|
||||||
|
width="30.417513"
|
||||||
|
height="11.316654"
|
||||||
|
x="217.1886"
|
||||||
|
y="149.43106"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:3.38666677px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="227.84984"
|
||||||
|
y="156.48491"
|
||||||
|
id="text5675-5-2"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan5677-3-2"
|
||||||
|
x="227.84984"
|
||||||
|
y="156.48491"
|
||||||
|
style="font-size:3.88055563px;line-height:1.25;stroke-width:0.28222224px">View</tspan></text>
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.36620298;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4195-1-1-9"
|
||||||
|
width="30.417513"
|
||||||
|
height="11.316654"
|
||||||
|
x="251.86369"
|
||||||
|
y="149.43106"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:3.38666677px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="262.35156"
|
||||||
|
y="156.53418"
|
||||||
|
id="text5675-5-9"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan5677-3-0"
|
||||||
|
x="262.35156"
|
||||||
|
y="156.53418"
|
||||||
|
style="font-size:3.88055563px;line-height:1.25;stroke-width:0.28222224px">Multi</tspan></text>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 9.9 KiB |
BIN
dox/user_guides/inspector/images/TStandaloneEXE.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
dox/user_guides/inspector/images/TStandaloneEXE_open.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
dox/user_guides/inspector/images/VStudio_projects.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
dox/user_guides/inspector/images/dfbrowser.png
Normal file
After Width: | Height: | Size: 38 KiB |
284
dox/user_guides/inspector/images/dfbrowser_elements.svg
Normal file
@@ -0,0 +1,284 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="165.36443mm"
|
||||||
|
height="99.48317mm"
|
||||||
|
viewBox="0 0 165.36443 99.48317"
|
||||||
|
version="1.1"
|
||||||
|
id="svg1643"
|
||||||
|
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
|
||||||
|
sodipodi:docname="dfbrowser_elements.svg">
|
||||||
|
<defs
|
||||||
|
id="defs1637" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="1"
|
||||||
|
inkscape:cx="290.24314"
|
||||||
|
inkscape:cy="320.3071"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="false"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
inkscape:showpageshadow="false"
|
||||||
|
inkscape:window-width="1246"
|
||||||
|
inkscape:window-height="857"
|
||||||
|
inkscape:window-x="371"
|
||||||
|
inkscape:window-y="37"
|
||||||
|
inkscape:window-maximized="0" />
|
||||||
|
<metadata
|
||||||
|
id="metadata1640">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(356.33698,30.17611)">
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:#78943d;stroke-width:0.52916667;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4147"
|
||||||
|
width="164.83542"
|
||||||
|
height="98.95417"
|
||||||
|
x="-356.07248"
|
||||||
|
y="-29.91161"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#9bbb59;fill-opacity:1;fill-rule:evenodd;stroke:#78943d;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4157"
|
||||||
|
width="155.951"
|
||||||
|
height="20.214758"
|
||||||
|
x="-352.0733"
|
||||||
|
y="-25.674246"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#9bbb59;fill-opacity:1;fill-rule:evenodd;stroke:#78943d;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4159"
|
||||||
|
width="75.795822"
|
||||||
|
height="64.91011"
|
||||||
|
x="-352.07172"
|
||||||
|
y="-0.79434544"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#9bbb59;fill-opacity:1;fill-rule:evenodd;stroke:#78943d;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4161-4"
|
||||||
|
width="75.811562"
|
||||||
|
height="30.252827"
|
||||||
|
x="-272.04941"
|
||||||
|
y="33.729694"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#9bbb59;fill-opacity:1;fill-rule:evenodd;stroke:#78943d;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4161-4-8"
|
||||||
|
width="75.811562"
|
||||||
|
height="30.252827"
|
||||||
|
x="-272.04941"
|
||||||
|
y="-0.80220562"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.56444448;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4195"
|
||||||
|
width="73.552574"
|
||||||
|
height="11.118413"
|
||||||
|
x="-347.50781"
|
||||||
|
y="-21.126072"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.36620289;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4195-1"
|
||||||
|
width="30.417513"
|
||||||
|
height="11.316654"
|
||||||
|
x="-267.92496"
|
||||||
|
y="-21.225193"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.36620289;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4195-1-5"
|
||||||
|
width="30.417513"
|
||||||
|
height="11.316654"
|
||||||
|
x="-231.57631"
|
||||||
|
y="-21.225193"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:3.38666677px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="-259.7175"
|
||||||
|
y="-14.48304"
|
||||||
|
id="text5675"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan5677"
|
||||||
|
x="-259.7175"
|
||||||
|
y="-14.48304"
|
||||||
|
style="font-size:3.88055563px;line-height:1.25;stroke-width:0.28222224px">Update</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:3.38666677px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="-223.04579"
|
||||||
|
y="-14.12208"
|
||||||
|
id="text5679"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan5681"
|
||||||
|
x="-223.04579"
|
||||||
|
y="-14.12208"
|
||||||
|
style="font-size:3.88055563px;line-height:1.25;stroke-width:0.28222224px">Search</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:3.38666677px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="-325.95343"
|
||||||
|
y="-14.547463"
|
||||||
|
id="text5683"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan5685"
|
||||||
|
x="-325.95343"
|
||||||
|
y="-14.547463"
|
||||||
|
style="font-size:3.88055563px;line-height:1.25;stroke-width:0.28222224px">Tree Navigation</tspan></text>
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.56444448;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4195-8"
|
||||||
|
width="65.570122"
|
||||||
|
height="19.385952"
|
||||||
|
x="-347.50781"
|
||||||
|
y="11.248657"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:3.38666654px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="-333.31332"
|
||||||
|
y="22.090868"
|
||||||
|
id="text5683-5"
|
||||||
|
transform="scale(0.98830373,1.0118347)"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan5685-3"
|
||||||
|
x="-333.31332"
|
||||||
|
y="22.090868"
|
||||||
|
style="font-size:3.83516741px;line-height:1.25;stroke-width:0.28222221px">OCAF tree view</tspan></text>
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.56444448;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4195-8-0"
|
||||||
|
width="65.570122"
|
||||||
|
height="19.385952"
|
||||||
|
x="-267.68332"
|
||||||
|
y="3.9789243"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.56444448;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4195-8-3-5"
|
||||||
|
width="38.7719"
|
||||||
|
height="16.820164"
|
||||||
|
x="-267.11316"
|
||||||
|
y="37.191612"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#9bbb59;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4195-8-3"
|
||||||
|
width="38.7719"
|
||||||
|
height="16.820164"
|
||||||
|
x="-240.60002"
|
||||||
|
y="42.180641"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:3.38666654px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="-252.8326"
|
||||||
|
y="13.779153"
|
||||||
|
id="text5683-5-9"
|
||||||
|
transform="scale(0.98830373,1.0118347)"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan5685-3-8"
|
||||||
|
x="-252.8326"
|
||||||
|
y="13.779153"
|
||||||
|
style="font-size:3.83516741px;line-height:1.25;stroke-width:0.28222221px">Property Panel</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:3.38666654px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="-231.82542"
|
||||||
|
y="51.393177"
|
||||||
|
id="text5683-5-0"
|
||||||
|
transform="scale(0.98830373,1.0118347)"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan5685-3-5"
|
||||||
|
x="-231.82542"
|
||||||
|
y="51.393177"
|
||||||
|
style="font-size:3.83516741px;line-height:1.25;stroke-width:0.28222221px">3D View</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:3.38666654px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="-267.25568"
|
||||||
|
y="46.086102"
|
||||||
|
id="text5683-5-1"
|
||||||
|
transform="scale(0.98830373,1.0118347)"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan5685-3-80"
|
||||||
|
x="-267.25568"
|
||||||
|
y="46.086102"
|
||||||
|
style="font-size:3.83516741px;line-height:1.25;stroke-width:0.28222221px">Dump View</tspan></text>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 48 KiB |
After Width: | Height: | Size: 7.4 KiB |
BIN
dox/user_guides/inspector/images/display_main_presentation.png
Normal file
After Width: | Height: | Size: 7.4 KiB |
BIN
dox/user_guides/inspector/images/drawexe_tinspector.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
dox/user_guides/inspector/images/dump_attribute.png
Normal file
After Width: | Height: | Size: 8.0 KiB |
BIN
dox/user_guides/inspector/images/property_panel_array.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 44 KiB |
BIN
dox/user_guides/inspector/images/property_panel_label.png
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
dox/user_guides/inspector/images/property_panel_named_data.png
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
dox/user_guides/inspector/images/property_panel_simple_type.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 4.5 KiB |
After Width: | Height: | Size: 6.0 KiB |
BIN
dox/user_guides/inspector/images/property_panel_tree_node.png
Normal file
After Width: | Height: | Size: 4.3 KiB |
BIN
dox/user_guides/inspector/images/search.png
Normal file
After Width: | Height: | Size: 33 KiB |
BIN
dox/user_guides/inspector/images/shapeview.png
Normal file
After Width: | Height: | Size: 32 KiB |
142
dox/user_guides/inspector/images/shapeview_elements.svg
Normal file
@@ -0,0 +1,142 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="165.36458mm"
|
||||||
|
height="99.483337mm"
|
||||||
|
viewBox="0 0 165.36458 99.483337"
|
||||||
|
version="1.1"
|
||||||
|
id="svg2491"
|
||||||
|
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
|
||||||
|
sodipodi:docname="shapeview_elements.svg">
|
||||||
|
<defs
|
||||||
|
id="defs2485" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="0.98994949"
|
||||||
|
inkscape:cx="319.53221"
|
||||||
|
inkscape:cy="223.36826"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:showpageshadow="false"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
inkscape:window-width="1205"
|
||||||
|
inkscape:window-height="766"
|
||||||
|
inkscape:window-x="422"
|
||||||
|
inkscape:window-y="28"
|
||||||
|
inkscape:window-maximized="0" />
|
||||||
|
<metadata
|
||||||
|
id="metadata2488">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(293.59301,-77.169049)">
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:#ffa040;stroke-width:0.52916667;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4147-0-8"
|
||||||
|
width="164.83542"
|
||||||
|
height="98.95417"
|
||||||
|
x="-293.32843"
|
||||||
|
y="77.433632"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\shapeview.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#fcd5b5;fill-opacity:1;fill-rule:evenodd;stroke:#ff9933;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4159-8"
|
||||||
|
width="70.094536"
|
||||||
|
height="85.011993"
|
||||||
|
x="-285.46909"
|
||||||
|
y="83.598381"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\shapeview.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.62230003;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4195-8-2"
|
||||||
|
width="54.993557"
|
||||||
|
height="25.389547"
|
||||||
|
x="-277.91861"
|
||||||
|
y="113.40961"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\shapeview.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#fcd5b5;fill-opacity:1;fill-rule:evenodd;stroke:#ffa040;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4159-8-9"
|
||||||
|
width="70.094536"
|
||||||
|
height="85.011993"
|
||||||
|
x="-207.25319"
|
||||||
|
y="83.598389"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\shapeview.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.56444448;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4195-8-2-4"
|
||||||
|
width="54.993557"
|
||||||
|
height="25.389547"
|
||||||
|
x="-199.70271"
|
||||||
|
y="113.40961"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\shapeview.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:3.3866663px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="-272.88153"
|
||||||
|
y="125.70056"
|
||||||
|
id="text5683-5-4-9"
|
||||||
|
transform="scale(0.98830373,1.0118347)"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\shapeview.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan5685-3-59-2"
|
||||||
|
x="-272.88153"
|
||||||
|
y="125.70056"
|
||||||
|
style="font-size:3.83516741px;line-height:1.25;stroke-width:0.28222221px">TopoDS_Shape View</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:3.3866663px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="-182.24478"
|
||||||
|
y="126.02359"
|
||||||
|
id="text5683-5-0-0"
|
||||||
|
transform="scale(0.98830373,1.0118347)"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\shapeview.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan5685-3-5-6"
|
||||||
|
x="-182.24478"
|
||||||
|
y="126.02359"
|
||||||
|
style="font-size:3.83516741px;line-height:1.25;stroke-width:0.28222221px">3D View</tspan></text>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 5.8 KiB |
244
dox/user_guides/inspector/images/tinspector_elements.svg
Normal file
@@ -0,0 +1,244 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="164.48495mm"
|
||||||
|
height="98.635941mm"
|
||||||
|
viewBox="0 0 164.48495 98.635941"
|
||||||
|
version="1.1"
|
||||||
|
id="svg8"
|
||||||
|
sodipodi:docname="tinspector_elements.svg"
|
||||||
|
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)">
|
||||||
|
<defs
|
||||||
|
id="defs2">
|
||||||
|
<pattern
|
||||||
|
y="0"
|
||||||
|
x="0"
|
||||||
|
height="6"
|
||||||
|
width="6"
|
||||||
|
patternUnits="userSpaceOnUse"
|
||||||
|
id="EMFhbasepattern" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="1.4"
|
||||||
|
inkscape:cx="329.8397"
|
||||||
|
inkscape:cy="227.89271"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:window-width="1575"
|
||||||
|
inkscape:window-height="895"
|
||||||
|
inkscape:window-x="46"
|
||||||
|
inkscape:window-y="75"
|
||||||
|
inkscape:window-maximized="0"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0" />
|
||||||
|
<metadata
|
||||||
|
id="metadata5">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(-23.06172,-25.84832)">
|
||||||
|
<path
|
||||||
|
id="path933"
|
||||||
|
d="M 23.326301,26.112901 H 187.28209 V 124.21968 H 23.326301 Z"
|
||||||
|
style="fill:none;stroke:#953735;stroke-width:0.52916276px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path935"
|
||||||
|
d="M 28.109932,31.192871 H 62.95001 v 12.97507 H 28.109932 Z"
|
||||||
|
style="fill:#9bbb59;fill-opacity:1;fill-rule:nonzero;stroke:#71893f;stroke-width:0.52916276px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path937"
|
||||||
|
d="m 66.54831,31.108201 h 34.84008 v 12.97507 H 66.54831 Z"
|
||||||
|
style="fill:none;stroke:#33cccc;stroke-width:0.52916276px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path939"
|
||||||
|
d="m 104.9867,31.023531 h 34.84007 v 12.97508 H 104.9867 Z"
|
||||||
|
style="fill:none;stroke:#ff9933;stroke-width:0.52916276px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path941"
|
||||||
|
d="m 37.550195,37.648651 c 0,0.254 -0.04233,0.48683 -0.169332,0.6985 -0.105832,0.21166 -0.253998,0.38099 -0.444497,0.48683 -0.126999,0.0847 -0.275164,0.14816 -0.42333,0.16933 -0.169332,0.0423 -0.35983,0.0635 -0.634995,0.0635 h -0.698495 v -2.83631 h 0.698495 c 0.275165,0 0.48683,0.0212 0.656162,0.0635 0.169332,0.0423 0.296331,0.10583 0.42333,0.16933 0.190498,0.127 0.338664,0.27516 0.444497,0.48683 0.105832,0.1905 0.148165,0.42333 0.148165,0.69849 z m -0.380997,0 c 0,-0.21166 -0.04233,-0.40216 -0.126999,-0.55033 -0.0635,-0.16933 -0.190498,-0.27516 -0.338664,-0.35983 -0.105833,-0.0635 -0.232832,-0.10583 -0.359831,-0.14816 -0.126999,-0.0212 -0.275164,-0.0212 -0.444497,-0.0212 h -0.35983 v 2.18015 h 0.35983 c 0.190499,0 0.338665,-0.0212 0.465664,-0.0423 0.148165,-0.0423 0.275164,-0.0847 0.380997,-0.14817 0.148165,-0.10583 0.253998,-0.21166 0.317498,-0.35983 0.0635,-0.14817 0.105832,-0.33866 0.105832,-0.55033 z"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path943"
|
||||||
|
d="m 39.963178,36.569161 h -1.418157 v 0.80433 h 1.227658 v 0.33866 h -1.227658 v 1.35466 h -0.380997 v -2.83631 h 1.799154 z"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path945"
|
||||||
|
d="m 42.524325,38.198981 c 0,0.127 -0.02117,0.254 -0.08467,0.35983 -0.04233,0.10583 -0.126999,0.21167 -0.211665,0.27517 -0.105833,0.0847 -0.211665,0.14816 -0.338664,0.16933 -0.126999,0.0423 -0.296331,0.0635 -0.48683,0.0635 h -1.015992 v -2.83631 h 0.84666 c 0.211665,0 0.359831,0.0212 0.465663,0.0423 0.105833,0 0.190499,0.0423 0.296331,0.0847 0.105833,0.0635 0.169332,0.12699 0.211666,0.21166 0.0635,0.0847 0.08467,0.1905 0.08467,0.29633 0,0.14817 -0.04233,0.254 -0.105832,0.35983 -0.0635,0.0847 -0.169332,0.16933 -0.275165,0.21167 v 0.0212 c 0.190499,0.0423 0.338665,0.127 0.444497,0.254 0.105833,0.12699 0.169332,0.27516 0.169332,0.48683 z m -0.634995,-1.26999 c 0,-0.0847 0,-0.127 -0.02117,-0.16933 -0.04233,-0.0635 -0.0635,-0.0847 -0.126999,-0.127 -0.04233,-0.0212 -0.126999,-0.0423 -0.211665,-0.0635 -0.08467,0 -0.190498,0 -0.317497,0 h -0.444497 v 0.80433 h 0.486829 c 0.127,0 0.211665,0 0.275165,-0.0212 0.08467,0 0.148166,-0.0423 0.190499,-0.0635 0.0635,-0.0423 0.105832,-0.0847 0.126999,-0.14817 0.04233,-0.0635 0.04233,-0.127 0.04233,-0.21166 z m 0.253998,1.26999 c 0,-0.10583 -0.02117,-0.1905 -0.0635,-0.254 -0.02117,-0.0847 -0.08467,-0.127 -0.190498,-0.16933 -0.0635,-0.0423 -0.126999,-0.0635 -0.211665,-0.0635 -0.08467,-0.0212 -0.190499,-0.0212 -0.317498,-0.0212 h -0.592662 v 1.05833 h 0.507996 c 0.148166,0 0.296331,-0.0212 0.402164,-0.0423 0.105832,0 0.190498,-0.0423 0.253998,-0.0847 0.0635,-0.0423 0.126999,-0.10584 0.148165,-0.16933 0.04233,-0.0635 0.0635,-0.14817 0.0635,-0.254 z"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path947"
|
||||||
|
d="m 44.344645,37.331151 h -0.02117 c -0.04233,-0.0212 -0.105832,-0.0212 -0.148165,-0.0212 -0.04233,0 -0.105833,-0.0212 -0.169332,-0.0212 -0.126999,0 -0.232832,0.0423 -0.317498,0.0847 -0.105832,0.0423 -0.211665,0.10584 -0.296331,0.1905 v 1.50283 h -0.359831 v -2.11663 h 0.359831 v 0.3175 c 0.126999,-0.127 0.253998,-0.21166 0.359831,-0.254 0.105832,-0.0423 0.232831,-0.0635 0.338664,-0.0635 0.0635,0 0.105832,0 0.126999,0 0.04233,0 0.08467,0 0.126999,0.0212 z"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path949"
|
||||||
|
d="m 46.482462,38.008481 c 0,0.33867 -0.08467,0.61383 -0.253998,0.80433 -0.169332,0.21167 -0.42333,0.3175 -0.719661,0.3175 -0.296331,0 -0.529163,-0.10583 -0.698495,-0.3175 -0.190498,-0.1905 -0.275164,-0.46566 -0.275164,-0.80433 0,-0.35983 0.08467,-0.61383 0.275164,-0.82549 0.169332,-0.1905 0.402164,-0.29633 0.698495,-0.29633 0.296331,0 0.550329,0.10583 0.719661,0.29633 0.169332,0.21166 0.253998,0.46566 0.253998,0.82549 z m -0.35983,0 c 0,-0.27516 -0.04233,-0.48683 -0.169332,-0.61383 -0.105833,-0.127 -0.253998,-0.21166 -0.444497,-0.21166 -0.190499,0 -0.338664,0.0847 -0.444497,0.21166 -0.105832,0.127 -0.169332,0.33867 -0.169332,0.61383 0,0.254 0.0635,0.46567 0.169332,0.59267 0.105833,0.14816 0.253998,0.21166 0.444497,0.21166 0.190499,0 0.338664,-0.0635 0.444497,-0.21166 0.105832,-0.127 0.169332,-0.33867 0.169332,-0.59267 z"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path951"
|
||||||
|
d="m 49.699771,36.950161 -0.550328,2.11665 h -0.317498 l -0.550329,-1.62982 -0.529163,1.62982 h -0.338664 l -0.550329,-2.11665 h 0.35983 l 0.402164,1.62982 0.529163,-1.62982 h 0.275164 l 0.55033,1.62982 0.35983,-1.62982 z"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path953"
|
||||||
|
d="m 51.731758,38.452981 c 0,0.1905 -0.08467,0.35983 -0.232834,0.46566 -0.16933,0.127 -0.380997,0.1905 -0.656161,0.1905 -0.169331,0 -0.296331,-0.0212 -0.444497,-0.0423 -0.126998,-0.0423 -0.232831,-0.0847 -0.317498,-0.127 v -0.40216 h 0.02117 c 0.105833,0.0847 0.232833,0.14816 0.380997,0.1905 0.127,0.0635 0.253998,0.0847 0.380998,0.0847 0.169333,0 0.275164,-0.0212 0.380997,-0.0847 0.08467,-0.0423 0.127,-0.127 0.127,-0.23283 0,-0.0847 -0.02117,-0.14817 -0.08467,-0.1905 -0.04233,-0.0423 -0.127,-0.0847 -0.275164,-0.10584 -0.04233,-0.0212 -0.105833,-0.0212 -0.1905,-0.0423 -0.08467,-0.0212 -0.148164,-0.0212 -0.211664,-0.0423 -0.1905,-0.0635 -0.338664,-0.12699 -0.402164,-0.23283 -0.08467,-0.0847 -0.127,-0.21166 -0.127,-0.33866 0,-0.0847 0.02117,-0.16933 0.0635,-0.254 0.04233,-0.0635 0.08467,-0.14817 0.169334,-0.21166 0.0635,-0.0423 0.148164,-0.10584 0.253997,-0.127 0.127,-0.0423 0.232831,-0.0635 0.380997,-0.0635 0.127,0 0.253998,0.0212 0.380998,0.0635 0.126997,0.0212 0.23283,0.0635 0.317497,0.10583 v 0.381 h -0.02117 c -0.08467,-0.0635 -0.190497,-0.127 -0.317497,-0.16934 -0.148167,-0.0423 -0.275164,-0.0635 -0.402164,-0.0635 -0.127,0 -0.232831,0.0212 -0.317497,0.0635 -0.08467,0.0423 -0.127,0.127 -0.127,0.23284 0,0.0847 0.02117,0.14816 0.0635,0.19049 0.0635,0.0423 0.148166,0.0847 0.275164,0.10584 0.0635,0.0212 0.127,0.0212 0.211666,0.0423 0.08466,0.0212 0.148164,0.0423 0.211664,0.0423 0.148167,0.0423 0.275164,0.10583 0.380998,0.1905 0.08467,0.10583 0.127,0.23283 0.127,0.38099 z"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path955"
|
||||||
|
d="m 54.017739,38.029651 h -1.56632 c 0,0.14816 0.02117,0.254 0.0635,0.35983 0.04233,0.0847 0.08466,0.16933 0.169331,0.23283 0.0635,0.0635 0.127,0.10583 0.23283,0.127 0.08467,0.0423 0.1905,0.0423 0.296334,0.0423 0.148164,0 0.275164,-0.0212 0.423328,-0.0847 0.148166,-0.0423 0.254,-0.10583 0.317497,-0.16933 h 0.02117 v 0.40216 c -0.126998,0.0423 -0.253998,0.0847 -0.359831,0.127 -0.126997,0.0212 -0.275164,0.0423 -0.402161,0.0423 -0.359831,0 -0.634998,-0.0847 -0.825495,-0.27516 -0.1905,-0.1905 -0.296331,-0.46567 -0.296331,-0.8255 0,-0.33866 0.105831,-0.61383 0.275164,-0.82549 0.190498,-0.1905 0.444498,-0.29633 0.761995,-0.29633 0.275164,0 0.507995,0.0847 0.656161,0.254 0.148167,0.16933 0.232831,0.40216 0.232831,0.69849 z m -0.338664,-0.254 c -0.02117,-0.1905 -0.0635,-0.33866 -0.148164,-0.4445 -0.105833,-0.10583 -0.232833,-0.14816 -0.423331,-0.14816 -0.1905,0 -0.338664,0.0423 -0.465664,0.16933 -0.105833,0.10583 -0.16933,0.254 -0.190497,0.42333 z"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path957"
|
||||||
|
d="m 55.88039,37.331151 h -0.0212 c -0.0635,-0.0212 -0.10583,-0.0212 -0.14816,-0.0212 -0.0635,0 -0.127,-0.0212 -0.1905,-0.0212 -0.10583,0 -0.21166,0.0423 -0.3175,0.0847 -0.10583,0.0423 -0.1905,0.10584 -0.29633,0.1905 v 1.50283 h -0.3598 v -2.11663 h 0.35983 v 0.3175 c 0.14817,-0.127 0.27517,-0.21166 0.381,-0.254 0.10583,-0.0423 0.21166,-0.0635 0.33866,-0.0635 0.0423,0 0.10584,0 0.127,0 0.0212,0 0.0635,0 0.127,0.0212 z"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path959"
|
||||||
|
d="m 76.00974,35.786001 -1.03715,2.81515 h -0.508 l -1.01599,-2.81515 h 0.40216 l 0.88899,2.47648 0.889,-2.47648 z"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path961"
|
||||||
|
d="m 77.4279,38.601151 h -1.12182 v -0.27517 h 0.38099 v -2.24365 h -0.38099 v -0.29633 h 1.12182 v 0.29633 h -0.381 v 2.24365 h 0.381 z"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path963"
|
||||||
|
d="m 79.79855,38.601151 h -0.33866 v -1.18533 c 0,-0.10583 -0.0212,-0.1905 -0.0212,-0.27516 -0.0212,-0.0847 -0.0423,-0.16934 -0.0635,-0.21167 -0.0423,-0.0423 -0.0847,-0.0847 -0.14817,-0.10583 -0.0423,-0.0423 -0.127,-0.0423 -0.21167,-0.0423 -0.10583,0 -0.21166,0.0212 -0.31749,0.0635 -0.10583,0.0423 -0.21167,0.10583 -0.29633,0.1905 v 1.56632 H 78.0417 v -2.11665 h 0.35983 v 0.254 c 0.10583,-0.10584 0.21166,-0.16934 0.33866,-0.23284 0.127,-0.0423 0.23283,-0.0635 0.35983,-0.0635 0.23283,0 0.40217,0.0635 0.52917,0.1905 0.12699,0.14817 0.16933,0.33867 0.16933,0.61383 z"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path965"
|
||||||
|
d="m 81.99987,38.008481 c 0,0.1905 -0.0635,0.33867 -0.23283,0.46567 -0.16934,0.127 -0.381,0.19049 -0.65617,0.19049 -0.14816,0 -0.29633,-0.0212 -0.42333,-0.0635 -0.14816,-0.0212 -0.254,-0.0635 -0.33866,-0.127 v -0.38099 h 0.0212 c 0.10583,0.0847 0.23283,0.14816 0.38099,0.1905 0.127,0.0423 0.27517,0.0847 0.381,0.0847 0.16933,0 0.29633,-0.0423 0.381,-0.0847 0.0847,-0.0423 0.127,-0.127 0.127,-0.23284 0,-0.0847 -0.0212,-0.14816 -0.0635,-0.19049 -0.0635,-0.0423 -0.14817,-0.0847 -0.27517,-0.10584 -0.0635,-0.0212 -0.127,-0.0423 -0.21166,-0.0423 -0.0847,-0.0212 -0.14817,-0.0423 -0.21167,-0.0635 -0.19049,-0.0423 -0.31749,-0.10583 -0.40216,-0.21166 -0.0847,-0.0847 -0.10583,-0.21167 -0.10583,-0.33867 0,-0.10583 0,-0.16933 0.0423,-0.25399 0.0423,-0.0847 0.0847,-0.14817 0.16933,-0.21167 0.0635,-0.0635 0.14817,-0.10583 0.27517,-0.127 0.10583,-0.0423 0.23283,-0.0635 0.35983,-0.0635 0.127,0 0.25399,0.0212 0.38099,0.0423 0.127,0.0423 0.23284,0.0635 0.3175,0.127 v 0.381 H 81.894 c -0.0847,-0.0847 -0.1905,-0.127 -0.3175,-0.16933 -0.12699,-0.0635 -0.25399,-0.0847 -0.38099,-0.0847 -0.127,0 -0.254,0.0212 -0.33867,0.0847 -0.0847,0.0423 -0.12699,0.127 -0.12699,0.21166 0,0.0847 0.0212,0.16933 0.0847,0.21167 0.0423,0.0423 0.127,0.0635 0.254,0.10583 0.0635,0 0.12699,0.0212 0.21166,0.0423 0.0847,0.0212 0.14817,0.0212 0.21166,0.0423 0.16934,0.0423 0.29634,0.10583 0.381,0.1905 0.0847,0.10583 0.127,0.21166 0.127,0.381 z"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path967"
|
||||||
|
d="m 84.37051,37.521651 c 0,0.16933 -0.0212,0.33867 -0.0635,0.48683 -0.0423,0.127 -0.127,0.254 -0.21166,0.35983 -0.0847,0.0847 -0.16933,0.14817 -0.29633,0.21167 -0.10584,0.0423 -0.23283,0.0635 -0.35983,0.0635 -0.10584,0 -0.21167,0 -0.29633,-0.0212 -0.0847,-0.0212 -0.16934,-0.0635 -0.27517,-0.127 v 0.88899 h -0.35983 v -2.89981 h 0.35983 v 0.23283 c 0.10583,-0.0847 0.21167,-0.14816 0.3175,-0.1905 0.127,-0.0635 0.254,-0.0847 0.381,-0.0847 0.25399,0 0.46566,0.0847 0.59266,0.27517 0.14816,0.1905 0.21166,0.46566 0.21166,0.80433 z m -0.35983,0.0212 c 0,-0.254 -0.0423,-0.44449 -0.12699,-0.57149 -0.0847,-0.127 -0.23284,-0.1905 -0.40217,-0.1905 -0.10583,0 -0.21166,0.0212 -0.31749,0.0635 -0.10584,0.0423 -0.1905,0.10583 -0.29634,0.16933 v 1.20649 c 0.10584,0.0423 0.1905,0.0635 0.27517,0.0847 0.0635,0.0212 0.14816,0.0212 0.23283,0.0212 0.21167,0 0.35983,-0.0635 0.46566,-0.1905 0.10584,-0.127 0.16933,-0.33866 0.16933,-0.59266 z"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path969"
|
||||||
|
d="m 86.69883,37.585151 h -1.54515 c 0,0.127 0.0212,0.254 0.0635,0.33867 0.0212,0.10583 0.0847,0.1905 0.14816,0.25399 0.0635,0.0423 0.14817,0.10584 0.23283,0.127 0.0847,0.0212 0.1905,0.0423 0.29633,0.0423 0.14817,0 0.29633,-0.0212 0.4445,-0.0847 0.14817,-0.0635 0.254,-0.10583 0.3175,-0.16933 v 0 0.381 c -0.10583,0.0635 -0.23283,0.10583 -0.35983,0.127 -0.127,0.0423 -0.254,0.0635 -0.40217,0.0635 -0.33866,0 -0.61382,-0.10583 -0.80432,-0.29633 -0.21167,-0.1905 -0.29633,-0.4445 -0.29633,-0.80433 0,-0.33866 0.0847,-0.61383 0.27516,-0.82549 0.1905,-0.1905 0.4445,-0.29634 0.74083,-0.29634 0.29633,0 0.50799,0.0847 0.65616,0.254 0.16933,0.14817 0.23283,0.40217 0.23283,0.6985 z m -0.33866,-0.27516 c 0,-0.16933 -0.0423,-0.3175 -0.14817,-0.42333 -0.0847,-0.10583 -0.23283,-0.14817 -0.42333,-0.14817 -0.1905,0 -0.33866,0.0423 -0.44449,0.16933 -0.127,0.10584 -0.1905,0.23284 -0.1905,0.40217 z"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path971"
|
||||||
|
d="m 88.81548,38.474151 c -0.127,0.0635 -0.23283,0.10583 -0.33866,0.127 -0.10583,0.0423 -0.23283,0.0635 -0.33867,0.0635 -0.14816,0 -0.29633,-0.0212 -0.42333,-0.0635 -0.127,-0.0635 -0.23283,-0.127 -0.33866,-0.21167 -0.0847,-0.0847 -0.14817,-0.21167 -0.21166,-0.33866 -0.0423,-0.14817 -0.0635,-0.3175 -0.0635,-0.48683 0,-0.35983 0.0847,-0.635 0.27516,-0.8255 0.1905,-0.1905 0.4445,-0.29633 0.76199,-0.29633 0.127,0 0.23284,0.0212 0.35984,0.0635 0.10583,0.0212 0.21166,0.0635 0.31749,0.10583 v 0.40217 h -0.0212 c -0.10583,-0.0847 -0.21166,-0.14817 -0.33866,-0.1905 -0.10584,-0.0423 -0.23283,-0.0635 -0.33867,-0.0635 -0.1905,0 -0.35983,0.0635 -0.48683,0.1905 -0.10583,0.14816 -0.16933,0.33866 -0.16933,0.61383 0,0.25399 0.0635,0.44449 0.16933,0.57149 0.127,0.14817 0.27517,0.21167 0.48683,0.21167 0.0635,0 0.14817,0 0.21167,-0.0212 0.0847,-0.0212 0.14816,-0.0423 0.21166,-0.0847 0.0423,-0.0212 0.10584,-0.0423 0.14817,-0.0847 0.0423,-0.0212 0.0847,-0.0423 0.10583,-0.0635 h 0.0212 z"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path973"
|
||||||
|
d="m 90.36064,38.601151 c -0.0635,0 -0.127,0.0212 -0.21167,0.0423 -0.0847,0 -0.14816,0 -0.21166,0 -0.21167,0 -0.381,-0.0423 -0.48683,-0.16934 -0.10584,-0.10583 -0.16933,-0.29633 -0.16933,-0.55033 v -1.12182 h -0.23284 v -0.3175 h 0.23284 v -0.59266 h 0.35983 v 0.59266 h 0.71966 v 0.3175 h -0.71966 v 0.95249 c 0,0.10584 0,0.21167 0,0.27517 0,0.0423 0.0212,0.10583 0.0635,0.16933 0.0212,0.0423 0.0635,0.0847 0.10583,0.10583 0.0423,0.0212 0.127,0.0423 0.23283,0.0423 0.0423,0 0.10583,-0.0212 0.16933,-0.0212 0.0635,-0.0212 0.10584,-0.0423 0.14817,-0.0635 v 0 z"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path975"
|
||||||
|
d="m 92.60429,37.563991 c 0,0.33866 -0.0847,0.61382 -0.254,0.80432 -0.1905,0.21167 -0.42333,0.29633 -0.71966,0.29633 -0.29633,0 -0.52917,-0.0847 -0.71966,-0.29633 -0.16934,-0.1905 -0.254,-0.46566 -0.254,-0.80432 0,-0.35983 0.0847,-0.635 0.254,-0.8255 0.19049,-0.21166 0.42333,-0.29633 0.71966,-0.29633 0.29633,0 0.52916,0.0847 0.71966,0.29633 0.16933,0.1905 0.254,0.46567 0.254,0.8255 z m -0.35983,0 c 0,-0.27517 -0.0635,-0.48683 -0.16933,-0.61383 -0.10584,-0.14817 -0.254,-0.21167 -0.4445,-0.21167 -0.1905,0 -0.33867,0.0635 -0.4445,0.21167 -0.10583,0.127 -0.16933,0.33866 -0.16933,0.61383 0,0.25399 0.0635,0.46566 0.16933,0.59266 0.10583,0.14816 0.254,0.21166 0.4445,0.21166 0.1905,0 0.33866,-0.0635 0.4445,-0.21166 0.10583,-0.127 0.16933,-0.33867 0.16933,-0.59266 z"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path977"
|
||||||
|
d="m 94.48811,36.886661 h -0.0212 c -0.0635,-0.0212 -0.10584,-0.0212 -0.16933,-0.0212 -0.0423,-0.0212 -0.10584,-0.0212 -0.16934,-0.0212 -0.10583,0 -0.21166,0.0212 -0.31749,0.0847 -0.10584,0.0423 -0.1905,0.10583 -0.29633,0.16933 v 1.50282 h -0.35984 v -2.11665 h 0.35984 v 0.3175 c 0.14816,-0.10583 0.27516,-0.1905 0.38099,-0.23283 0.10583,-0.0423 0.21167,-0.0847 0.3175,-0.0847 0.0635,0 0.10583,0.0212 0.14816,0.0212 0.0212,0 0.0635,0 0.127,0.0212 z"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path979"
|
||||||
|
d="m 114.0883,37.775651 c 0,0.10583 -0.0212,0.23283 -0.0635,0.33867 -0.0635,0.10583 -0.127,0.19049 -0.21167,0.27516 -0.10583,0.0635 -0.23283,0.127 -0.35983,0.16933 -0.14817,0.0635 -0.29633,0.0847 -0.48683,0.0847 -0.21166,0 -0.381,-0.0212 -0.55033,-0.0635 -0.16933,-0.0423 -0.3175,-0.0847 -0.48683,-0.16933 v -0.46566 h 0.0212 c 0.14817,0.10583 0.29633,0.21166 0.48683,0.27516 0.1905,0.0635 0.35983,0.0847 0.52916,0.0847 0.23284,0 0.42333,-0.0423 0.55033,-0.127 0.127,-0.0847 0.1905,-0.1905 0.1905,-0.33866 0,-0.127 -0.0423,-0.23283 -0.0847,-0.27517 -0.0635,-0.0635 -0.16933,-0.10583 -0.29633,-0.14816 -0.0847,-0.0212 -0.1905,-0.0423 -0.29633,-0.0635 -0.10583,-0.0212 -0.23283,-0.0423 -0.35983,-0.0635 -0.254,-0.0423 -0.42333,-0.14817 -0.55033,-0.27517 -0.127,-0.127 -0.1905,-0.29633 -0.1905,-0.48683 0,-0.23283 0.10583,-0.44449 0.3175,-0.59266 0.1905,-0.14816 0.4445,-0.21166 0.74083,-0.21166 0.21166,0 0.38099,0 0.55033,0.0423 0.16933,0.0423 0.31749,0.0847 0.44449,0.14816 v 0.4445 h -0.0212 c -0.10583,-0.0847 -0.254,-0.16933 -0.42333,-0.23283 -0.1905,-0.0635 -0.35983,-0.0847 -0.55033,-0.0847 -0.19049,0 -0.35983,0.0423 -0.48683,0.127 -0.10583,0.0847 -0.16933,0.1905 -0.16933,0.3175 0,0.12699 0.0212,0.21166 0.0847,0.27516 0.0635,0.0635 0.16933,0.127 0.3175,0.14817 0.0847,0.0212 0.1905,0.0423 0.35983,0.0635 0.14816,0.0423 0.27516,0.0635 0.35983,0.0847 0.21166,0.0635 0.381,0.14816 0.48683,0.25399 0.10583,0.10584 0.14817,0.27517 0.14817,0.46567 z"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path981"
|
||||||
|
d="m 116.43778,38.579981 h -0.35983 v -1.20649 c 0,-0.0847 0,-0.1905 -0.0212,-0.27517 0,-0.0847 -0.0212,-0.14816 -0.0635,-0.1905 -0.0212,-0.0635 -0.0635,-0.0847 -0.127,-0.12699 -0.0635,-0.0212 -0.127,-0.0212 -0.23283,-0.0212 -0.0847,0 -0.1905,0.0212 -0.29633,0.0635 -0.10584,0.0423 -0.21167,0.10583 -0.3175,0.19049 v 1.56633 h -0.35983 v -2.94215 h 0.35983 v 1.05833 c 0.127,-0.0847 0.23283,-0.14817 0.35983,-0.21167 0.10583,-0.0423 0.23283,-0.0635 0.35983,-0.0635 0.23284,0 0.40217,0.0635 0.52917,0.1905 0.10583,0.14817 0.16933,0.33867 0.16933,0.59266 z"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path983"
|
||||||
|
d="m 118.76609,38.579981 h -0.35983 v -0.21167 c -0.0212,0.0212 -0.0635,0.0423 -0.127,0.0847 -0.0423,0.0423 -0.10583,0.0635 -0.14816,0.0847 -0.0635,0.0423 -0.127,0.0635 -0.21167,0.0847 -0.0635,0.0212 -0.16933,0.0212 -0.25399,0.0212 -0.1905,0 -0.35984,-0.0635 -0.48684,-0.19049 -0.14816,-0.127 -0.21166,-0.27517 -0.21166,-0.48683 0,-0.14817 0.0423,-0.27517 0.10583,-0.381 0.0635,-0.10583 0.16933,-0.16933 0.29633,-0.23283 0.127,-0.0635 0.27517,-0.10584 0.46567,-0.127 0.16933,-0.0212 0.381,-0.0212 0.57149,-0.0423 v -0.0423 c 0,-0.0847 0,-0.14817 -0.0423,-0.21167 -0.0212,-0.0423 -0.0635,-0.0847 -0.10583,-0.127 -0.0635,-0.0212 -0.127,-0.0423 -0.1905,-0.0635 -0.0635,0 -0.14816,0 -0.21166,0 -0.10583,0 -0.21167,0 -0.3175,0.0423 -0.127,0.0212 -0.23283,0.0423 -0.35983,0.10584 h -0.0212 v -0.381 c 0.0635,0 0.16933,-0.0212 0.29633,-0.0635 0.14816,-0.0212 0.27516,-0.0212 0.40216,-0.0212 0.14817,0 0.27517,0 0.381,0.0423 0.10583,0.0212 0.21166,0.0635 0.29633,0.127 0.0635,0.0423 0.127,0.127 0.16933,0.21166 0.0423,0.10584 0.0635,0.21167 0.0635,0.33867 z m -0.35983,-0.508 v -0.59266 c -0.10583,0 -0.23283,0.0212 -0.38099,0.0212 -0.14817,0.0212 -0.254,0.0423 -0.33867,0.0635 -0.10583,0.0212 -0.1905,0.0635 -0.254,0.127 -0.0635,0.0635 -0.0847,0.14816 -0.0847,0.254 0,0.127 0.0212,0.21166 0.10584,0.27516 0.0635,0.0635 0.1905,0.0847 0.33866,0.0847 0.127,0 0.23283,-0.0212 0.33867,-0.0635 0.10583,-0.0423 0.19049,-0.10583 0.27516,-0.16933 z"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path985"
|
||||||
|
d="m 121.32724,37.500491 c 0,0.16933 -0.0212,0.33866 -0.0847,0.46566 -0.0423,0.14817 -0.10583,0.27516 -0.21166,0.35983 -0.0847,0.10583 -0.16933,0.16933 -0.29633,0.23283 -0.10584,0.0423 -0.21167,0.0635 -0.33867,0.0635 -0.127,0 -0.21166,0 -0.3175,-0.0212 -0.0847,-0.0423 -0.16933,-0.0635 -0.25399,-0.127 v 0.889 h -0.35983 v -2.89981 h 0.35983 v 0.23283 c 0.0847,-0.0847 0.1905,-0.14817 0.31749,-0.21167 0.10584,-0.0423 0.23284,-0.0635 0.381,-0.0635 0.254,0 0.4445,0.0847 0.59266,0.27517 0.127,0.1905 0.21167,0.46566 0.21167,0.80433 z m -0.381,0.0212 c 0,-0.27517 -0.0423,-0.46567 -0.127,-0.59267 -0.0847,-0.10583 -0.21166,-0.16933 -0.40216,-0.16933 -0.10583,0 -0.1905,0.0212 -0.29633,0.0635 -0.10583,0.0423 -0.21166,0.0847 -0.29633,0.16933 v 1.2065 c 0.0847,0.0423 0.16933,0.0635 0.254,0.0847 0.0635,0.0212 0.14816,0.0212 0.254,0.0212 0.19049,0 0.33866,-0.0635 0.46566,-0.1905 0.10583,-0.14817 0.14816,-0.33867 0.14816,-0.59267 z"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path987"
|
||||||
|
d="m 123.65556,37.563991 h -1.56632 c 0,0.12699 0.0212,0.25399 0.0635,0.33866 0.0423,0.10583 0.0847,0.16933 0.14816,0.23283 0.0847,0.0635 0.14817,0.10583 0.23283,0.14817 0.10583,0.0212 0.1905,0.0423 0.3175,0.0423 0.127,0 0.27517,-0.0212 0.42333,-0.0847 0.14817,-0.0635 0.254,-0.127 0.3175,-0.16933 h 0.0212 v 0.38099 c -0.127,0.0635 -0.254,0.10583 -0.381,0.127 -0.127,0.0423 -0.254,0.0635 -0.381,0.0635 -0.35983,0 -0.635,-0.10583 -0.82549,-0.29633 -0.1905,-0.1905 -0.29633,-0.46566 -0.29633,-0.80433 0,-0.33866 0.0847,-0.61383 0.27516,-0.82549 0.1905,-0.21167 0.4445,-0.29633 0.76199,-0.29633 0.27517,0 0.48684,0.0635 0.65617,0.23283 0.14817,0.16933 0.23283,0.40216 0.23283,0.71966 z m -0.35983,-0.27517 c 0,-0.1905 -0.0423,-0.33866 -0.127,-0.42333 -0.10583,-0.10583 -0.23283,-0.16933 -0.42333,-0.16933 -0.1905,0 -0.35983,0.0635 -0.46567,0.16933 -0.10583,0.127 -0.16933,0.254 -0.19049,0.42333 z"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path989"
|
||||||
|
d="m 126.44954,35.764831 -1.03716,2.81515 h -0.50799 l -1.016,-2.81515 h 0.40217 l 0.88899,2.47648 0.88899,-2.47648 z"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path991"
|
||||||
|
d="m 127.2327,36.124661 h -0.40216 v -0.38099 h 0.40216 z m -0.0212,2.45532 h -0.35983 v -2.11665 h 0.35983 z"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path993"
|
||||||
|
d="m 129.68802,37.563991 h -1.56632 c 0,0.12699 0.0212,0.25399 0.0635,0.33866 0.0423,0.10583 0.0847,0.16933 0.14816,0.23283 0.0847,0.0635 0.14817,0.10583 0.23283,0.14817 0.10583,0.0212 0.1905,0.0423 0.3175,0.0423 0.127,0 0.27516,-0.0212 0.42333,-0.0847 0.14816,-0.0635 0.254,-0.127 0.3175,-0.16933 h 0.0212 v 0.38099 c -0.127,0.0635 -0.254,0.10583 -0.38099,0.127 -0.127,0.0423 -0.254,0.0635 -0.381,0.0635 -0.35983,0 -0.635,-0.10583 -0.82549,-0.29633 -0.1905,-0.1905 -0.29634,-0.46566 -0.29634,-0.80433 0,-0.33866 0.0847,-0.61383 0.27517,-0.82549 0.1905,-0.21167 0.4445,-0.29633 0.76199,-0.29633 0.27517,0 0.48683,0.0635 0.65616,0.23283 0.14817,0.16933 0.23284,0.40216 0.23284,0.71966 z m -0.35984,-0.27517 c 0,-0.1905 -0.0423,-0.33866 -0.12699,-0.42333 -0.10584,-0.10583 -0.23284,-0.16933 -0.42333,-0.16933 -0.1905,0 -0.35983,0.0635 -0.46567,0.16933 -0.10583,0.127 -0.16933,0.254 -0.19049,0.42333 z"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path995"
|
||||||
|
d="m 132.88416,36.463331 -0.55033,2.11665 h -0.33866 l -0.52917,-1.62982 -0.55033,1.62982 h -0.31749 l -0.5715,-2.11665 h 0.381 l 0.38099,1.65099 0.52917,-1.65099 h 0.29633 l 0.55033,1.65099 0.35983,-1.65099 z"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path997"
|
||||||
|
d="M 42.608991,62.752131 H 181.82113 V 118.33539 H 42.608991 Z"
|
||||||
|
style="fill:none;stroke:#ff9933;stroke-width:0.52916276px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path999"
|
||||||
|
d="M 35.666376,55.280361 H 174.89968 V 110.86361 H 35.666376 Z"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#33cccc;stroke-width:0.52916276px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
id="path1001"
|
||||||
|
d="M 28.744927,47.808581 H 167.97823 V 103.39183 H 28.744927 Z"
|
||||||
|
style="fill:#9bbb59;fill-opacity:1;fill-rule:nonzero;stroke:#77933c;stroke-width:0.52916667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 29 KiB |
BIN
dox/user_guides/inspector/images/vinspector.png
Normal file
After Width: | Height: | Size: 40 KiB |
200
dox/user_guides/inspector/images/vinspector_elements.svg
Normal file
@@ -0,0 +1,200 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="165.36458mm"
|
||||||
|
height="99.483337mm"
|
||||||
|
viewBox="0 0 165.36458 99.483337"
|
||||||
|
version="1.1"
|
||||||
|
id="svg3064"
|
||||||
|
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
|
||||||
|
sodipodi:docname="vinspector_elements.svg">
|
||||||
|
<defs
|
||||||
|
id="defs3058" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="0.98994949"
|
||||||
|
inkscape:cx="261.33464"
|
||||||
|
inkscape:cy="225.25011"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="false"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
inkscape:showpageshadow="false"
|
||||||
|
inkscape:window-width="1277"
|
||||||
|
inkscape:window-height="875"
|
||||||
|
inkscape:window-x="314"
|
||||||
|
inkscape:window-y="16"
|
||||||
|
inkscape:window-maximized="0" />
|
||||||
|
<metadata
|
||||||
|
id="metadata3061">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(201.36682,-127.81786)">
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:#33cccc;stroke-width:0.52916667;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4147-0"
|
||||||
|
width="164.83542"
|
||||||
|
height="98.95417"
|
||||||
|
x="-201.10223"
|
||||||
|
y="128.08244"
|
||||||
|
inkscape:export-filename="D:\OCCT\master_CR27398_doc\dox\user_guides\qt_browsers\images\vinspector.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#93cddd;fill-opacity:1;fill-rule:evenodd;stroke:#33cccc;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4157-8"
|
||||||
|
width="155.951"
|
||||||
|
height="20.214758"
|
||||||
|
x="-197.10306"
|
||||||
|
y="132.31981"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#93cddd;fill-opacity:1;fill-rule:evenodd;stroke:#33cccc;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4159-9"
|
||||||
|
width="155.55411"
|
||||||
|
height="39.471096"
|
||||||
|
x="-197.06837"
|
||||||
|
y="157.2328"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.56444448;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4195-6"
|
||||||
|
width="109.47361"
|
||||||
|
height="11.118413"
|
||||||
|
x="-155.47618"
|
||||||
|
y="136.86798"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.36620289;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4195-1-6"
|
||||||
|
width="30.417513"
|
||||||
|
height="11.316654"
|
||||||
|
x="-192.77927"
|
||||||
|
y="136.76886"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:3.38666677px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="-184.57181"
|
||||||
|
y="143.51102"
|
||||||
|
id="text5675-9"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan5677-2"
|
||||||
|
x="-184.57181"
|
||||||
|
y="143.51102"
|
||||||
|
style="font-size:3.88055563px;line-height:1.25;stroke-width:0.28222224px">Update</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:3.38666677px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="-118.07398"
|
||||||
|
y="143.87196"
|
||||||
|
id="text5683-7"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan5685-7"
|
||||||
|
x="-118.07398"
|
||||||
|
y="143.87196"
|
||||||
|
style="font-size:3.88055563px;line-height:1.25;stroke-width:0.28222224px">Selection controls</tspan></text>
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.56444448;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4195-8-4"
|
||||||
|
width="79.254326"
|
||||||
|
height="23.947351"
|
||||||
|
x="-158.91849"
|
||||||
|
y="164.99469"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:3.38666654px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="-143.42757"
|
||||||
|
y="176.27301"
|
||||||
|
id="text5683-5-4"
|
||||||
|
transform="scale(0.98830373,1.0118347)"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan5685-3-59"
|
||||||
|
x="-143.42757"
|
||||||
|
y="176.27301"
|
||||||
|
style="font-size:3.83516741px;line-height:1.25;stroke-width:0.28222221px">Presentations tree view</tspan></text>
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#93cddd;fill-opacity:1;fill-rule:evenodd;stroke:#33cccc;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4157-8-7"
|
||||||
|
width="155.951"
|
||||||
|
height="20.214758"
|
||||||
|
x="-196.94507"
|
||||||
|
y="202.23282"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.36620289;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
|
||||||
|
id="rect4195-1-6-6"
|
||||||
|
width="147.01831"
|
||||||
|
height="11.316654"
|
||||||
|
x="-192.62131"
|
||||||
|
y="206.68187"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:3.38666654px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="-132.50854"
|
||||||
|
y="210.87439"
|
||||||
|
id="text5683-5-4-1"
|
||||||
|
transform="scale(0.98830373,1.0118347)"
|
||||||
|
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan5685-3-59-8"
|
||||||
|
x="-132.50854"
|
||||||
|
y="210.87439"
|
||||||
|
style="font-size:3.83516741px;line-height:1.25;stroke-width:0.28222221px">History view</tspan></text>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 8.8 KiB |
578
dox/user_guides/inspector/inspector.md
Normal file
@@ -0,0 +1,578 @@
|
|||||||
|
Inspector {#occt_user_guides__inspector}
|
||||||
|
===============================
|
||||||
|
|
||||||
|
@tableofcontents
|
||||||
|
|
||||||
|
@section occt_inspector_1 Introduction
|
||||||
|
|
||||||
|
This manual explains how to use Inspector.
|
||||||
|
|
||||||
|
@subsection occt_inspector_1_1 Overview
|
||||||
|
Inspector is a Qt-based library that provides functionality to interactively inspect low-level content of the OCAF data model, OCCT viewer and Modelisation Data.
|
||||||
|
This component is aimed to assist the developers of OCCT-based applications to debug the problematic situations that occur in their applications.
|
||||||
|
|
||||||
|
Inspector has a plugin-oriented architecture. The current release contains the following plugins:
|
||||||
|
|
||||||
|
| Plugin | OCCT component | Root class of OCCT investigated component |
|
||||||
|
| :----- | :----- | :----- |
|
||||||
|
| @ref occt_inspector_2_2 "DFBrowser"| OCAF | TDocStd_Application |
|
||||||
|
| @ref occt_inspector_2_3 "VInspector"| Visualization | AIS_InteractiveContext |
|
||||||
|
| @ref occt_inspector_2_4 "ShapeView"| Modelisation Data | TopoDS_Shape |
|
||||||
|
|
||||||
|
|
||||||
|
Each plugin implements logic of a corresponding OCCT component.
|
||||||
|
|
||||||
|
Each of the listed plugins is embeded in the common framework.
|
||||||
|
The user is able to manage which plugins should be loaded by Inspector.
|
||||||
|
Also he can extend number of plugins by implementing a new plugin.
|
||||||
|
|
||||||
|
|
||||||
|
@subsection occt_inspector_1_3 Getting started
|
||||||
|
|
||||||
|
There are two launch modes:
|
||||||
|
1. Launch **TInspectorEXE** executable sample. For more details see @ref occt_inspector_6 "TInspectorEXE" section;
|
||||||
|
2. Launch DRAW, load plugin INSPECTOR, and use **tinspector** command.
|
||||||
|
For more details see @ref occt_inspector_7 "Launch in DRAW Test Harness" section.
|
||||||
|
|
||||||
|
|
||||||
|
Note. If you have no Inspector library in your build directory, please make sure that OCCT is compiled with *BUILD_Inspector*
|
||||||
|
option ON. For more details see @ref occt_inspector_4 "Build procedure".
|
||||||
|
|
||||||
|
|
||||||
|
@section occt_inspector_2 Inspector
|
||||||
|
|
||||||
|
@subsection occt_inspector_2_1 Overview
|
||||||
|
|
||||||
|
Inspector consists of the following components:
|
||||||
|
* <b>buttons</b> to activate the corresponding plugin;
|
||||||
|
* <b>view area</b> to visualize the plugin content.
|
||||||
|
|
||||||
|
@figure{tinspector_elements.svg,"Plugins placement in Inspector",360}
|
||||||
|
|
||||||
|
@subsection occt_inspector_2_2 DFBrowser Plugin
|
||||||
|
|
||||||
|
@subsubsection occt_inspector_2_2_1 Overview
|
||||||
|
|
||||||
|
@figure{dfbrowser.png, "DFBrowser"}
|
||||||
|
|
||||||
|
This plugin visualizes content of TDocStd_Application in a tree view. It shows documents of the application,
|
||||||
|
hierarchy of TDF_Labels, content of TDF_Attributes and interconnection between attributes (e.g. references).
|
||||||
|
Additionally it has 3D view to visualize TopoDS_Shape elements stored in the document.
|
||||||
|
|
||||||
|
@subsubsection occt_inspector_2_2_2 Elements
|
||||||
|
|
||||||
|
@figure{dfbrowser_elements.svg, "DFBrowser Elements",360}
|
||||||
|
|
||||||
|
<b>OCAF tree view</b>
|
||||||
|
|
||||||
|
Each OCAF element has own tree view item:
|
||||||
|
|
||||||
|
| Type | Tree item | Text | Description |
|
||||||
|
| :----- | :----- | :----- | :----- |
|
||||||
|
| TDocStd_Application | Application | TDocStd_Application | It is the root of tree view. Children are documents.|
|
||||||
|
| TDocStd_Document | Document | entry : name | It is a child of Application item. Children are Labels and Attributes items.<br> Text view is an entry of the root label and the value of TDataStd_Name attribute for the label if it exists. |
|
||||||
|
| TDF_Label | Label | entry : name | It is a child of a Document or another Label item. Children and text view are the same as for Document item. |
|
||||||
|
| TDF_Attribute | Attribute | attribute type [additional information] | It is a child of a Label. It has no children. <br> Text view is the attribute type (DynamicType()->Name() of TDF_Attribute) and additional information (a combination of attribute values) |
|
||||||
|
|
||||||
|
|
||||||
|
Additional information of TDF_Attributes:
|
||||||
|
|
||||||
|
| Type | Text |
|
||||||
|
| :----- | :----- |
|
||||||
|
| TDocStd_Owner | [storage format] |
|
||||||
|
| TDataStd_AsciiString,<br> TDataStd_Name,<br> TDataStd_Real,<br> @ref occt_attribute_simple_types "other Simple types" | [value] |
|
||||||
|
| TDataStd_BooleanList,<br> TDataStd_ExtStringList,<br> @ref occt_attribute_list_types "other List types" | [value_1 ... value_n] |
|
||||||
|
| TDataStd_BooleanArray,<br> TDataStd_ByteArray,<br> @ref occt_attribute_array_types "other Array types" | [value_1 ... value_n] |
|
||||||
|
| TDataStd_TreeNode | [tree node ID ==> Father()->Label()] (if it has father) or <br> [tree node ID <== First()->Label()] (if it has NO father)|
|
||||||
|
| TDataStd_TreeNode(XDE) | [@ref occt_attribute_xde_tree_node_id "XDE tree node ID" ==> Father()->Label()] (if it has father), <br> [@ref occt_attribute_xde_tree_node_id "XDE tree Node ID" <== label_1, ..., label_n] (if it has NO father)|
|
||||||
|
| TNaming_NamedShape | [shape type : evolution] |
|
||||||
|
| TNaming_UsedShapes | [map extent] |
|
||||||
|
|
||||||
|
|
||||||
|
Custom color of items:
|
||||||
|
|
||||||
|
| OCAF element Type | Color |
|
||||||
|
| :----- | :----- |
|
||||||
|
| TDF_Label | <b>dark green</b>, if the label has TDataStd_Name attribute, <br><b>light grey</b> if the label is empty (has no attributes on all levels of hierarchy),<br> <b>black</b> otherwise |
|
||||||
|
| TNaming_NamedShape | <b>dark gray</b> for TopAbs_FORWARD orientation of TopoDS_Shape, <br> <b>gray</b> for TopAbs_REVERSED orientation of TopoDS_Shape, <br> <b>black</b> for other orientation |
|
||||||
|
|
||||||
|
|
||||||
|
Context popup menu:
|
||||||
|
| Action | Functionality |
|
||||||
|
| :----- | :----- |
|
||||||
|
| Expand | Expands the next two levels under the selected item |
|
||||||
|
| Expand All | Expands the whole tree of the selected item |
|
||||||
|
| Collapse All | Collapses the whole tree of the selected item |
|
||||||
|
|
||||||
|
|
||||||
|
<b>Property Panel</b>
|
||||||
|
|
||||||
|
Property panel is used to display content of Label or Attribute tree view items.
|
||||||
|
This control is used for content of Label or Attribute tree view items or Search result view.
|
||||||
|
Information is usually shown in one or several tables.
|
||||||
|
|
||||||
|
TDF_Attribute has the following content in Property Panel:
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr><th>Type</th><th>Description</th><th>Content</th></tr>
|
||||||
|
<tr><td>TDF_Label</td>
|
||||||
|
<td> a table of [entry or attribute name, value]</td>
|
||||||
|
<td>@figure{property_panel_label.png, "",140}</td></tr>
|
||||||
|
<tr><td>TDocStd_Owner,<br> @ref occt_attribute_simple_types "Simple types", <br> @ref occt_attribute_list_types "List types"</td>
|
||||||
|
<td>a table of [method name, value]</td>
|
||||||
|
<td>@figure{property_panel_simple_type.png, "",140}</td></tr>
|
||||||
|
<tr><td>TDataStd_BooleanArray,<br> TDataStd_ByteArray,<br> @ref occt_attribute_array_types "other Array types"</td>
|
||||||
|
<td>2 controls: <br> * a table of [array bound, value], <br> * table of [method name, value]</td>
|
||||||
|
<td>@figure{property_panel_array.png, "",140}</td></tr>
|
||||||
|
<tr><td>TDataStd_TreeNode</td>
|
||||||
|
<td>2 controls: <br> * a table of [Tree ID, value] (visible only if Tree ID() != ID()), <br> * a tree view of tree nodes starting from Root() of the tree node. The current tree node has <b>dark blue</b> text.</td>
|
||||||
|
<td>@figure{property_panel_tree_node.png, "",140} </td></tr>
|
||||||
|
<tr><td>TDataStd_NamedData</td>
|
||||||
|
<td>tab bar of attribute elements, each tab has a table of [name, value]</td>
|
||||||
|
<td>@figure{property_panel_named_data.png, "",140}</td></tr>
|
||||||
|
<tr><td>TNaming_UsedShapes</td>
|
||||||
|
<td>a table of all the shapes handled by the framework</td>
|
||||||
|
<td>@figure{property_panel_tnaming_used_shapes.png, "",140}</td></tr>
|
||||||
|
<tr><td>TNaming_NamedShape</td>
|
||||||
|
<td>2 controls: <br> * a table of [method name, value] including CurrentShape/OriginalShape methods result of TNaming_Tools, <br> * an evolution table. <br> Tables contain buttons for @ref occt_shape_export "TopoDS_Shape export".</td>
|
||||||
|
<td>@figure{property_panel_tnaming_named_shape.png, "",140}</td></tr>
|
||||||
|
<tr><td>TNaming_Naming</td>
|
||||||
|
<td>2 controls: <br> * a table of TNaming_Name vlaues,<br> * a table of [method name, value]</td>
|
||||||
|
<td>@figure{property_panel_tnaming_naming.png, "",140}</td></tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
<b>Dump view</b>
|
||||||
|
|
||||||
|
@figure{dump_attribute.png, "Dump of TDF_Attribute"}
|
||||||
|
|
||||||
|
Dump view shows result of <b>TDF_Attribute::Dump()</b> or <b>TDF_Label::Dump()</b> of selected tree view item.
|
||||||
|
|
||||||
|
<b>3D view</b>
|
||||||
|
|
||||||
|
3D View visualizes TopoDS_Shape elements of OCAF attribute via AIS facilities.
|
||||||
|
|
||||||
|
DFBrowser creates two kinds presentations depending on the selection place:
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr><th>Kind</th><th>Source object</th><th>Visualization propeties</th><th>View</th></tr>
|
||||||
|
<tr><td>Main presentation</td>
|
||||||
|
<td>Tree view item:<br> TPrsStd_AISPresentation,<br> TNaming_NamedShape,<br> TNaming_Naming</td>
|
||||||
|
<td>Color: a default color for shape type of the current TopoDS_Shape</td>
|
||||||
|
<td>@figure{display_main_presentation.png, "",100}</td></tr>
|
||||||
|
<tr><td>Additional presentation</td>
|
||||||
|
<td>References in Property panel</td>
|
||||||
|
<td>Color: white</td>
|
||||||
|
<td>@figure{display_additional_presentation.png, "",100}</td></tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<b>Tree Navigation</b>
|
||||||
|
|
||||||
|
Tree Navigation shows a path to the item selected in the tree view.
|
||||||
|
The path is a sequence of label entries and attribute type name.
|
||||||
|
Each element in the path is selectable - the user can click on it to select the corresponding tree view item.
|
||||||
|
|
||||||
|
Navigation control has buttons to go to the previous and the next selected tree view items.
|
||||||
|
|
||||||
|
|
||||||
|
<b>Update Button</b>
|
||||||
|
|
||||||
|
Update button synchronizes content of tree view to the current content of OCAF document that could be modified outside.
|
||||||
|
|
||||||
|
<b>Search</b>
|
||||||
|
|
||||||
|
The user can search OCAF element by typing:
|
||||||
|
* TDF_Label entry,
|
||||||
|
* TDF_Attribute name,
|
||||||
|
* TDataStd_Name and TDataStd_Comment attributes value.
|
||||||
|
|
||||||
|
@figure{search.png,"Search"}
|
||||||
|
|
||||||
|
As soon as the user confirms the typed criteria, the Property panel is filled by all satisfied values.
|
||||||
|
The user can click a value to hightligt the corresponding tree view item. By double click the item will be selected.
|
||||||
|
|
||||||
|
|
||||||
|
@subsubsection occt_inspector_2_2_3 Elements cooperation
|
||||||
|
|
||||||
|
<b>Tree item selection</b>
|
||||||
|
|
||||||
|
Selection of tree view item updates content of the following controls:
|
||||||
|
* Navigation line
|
||||||
|
* Property Panel
|
||||||
|
* 3D View (if it is possible to create an interactive presentation)
|
||||||
|
* Dump View
|
||||||
|
|
||||||
|
@figure{dfbrowser_selection_in_tree_view.svg,"",360}
|
||||||
|
|
||||||
|
<b>Property Panel item selection </b>
|
||||||
|
|
||||||
|
If property panel shows content of TDF_Label:
|
||||||
|
* selection of the table row hightlights the corresponding item in tree view,
|
||||||
|
* double click on the table row selects this item in tree view.
|
||||||
|
|
||||||
|
If property panel shows content of TDF_Attribute that has reference to another attribute, selection of this reference:
|
||||||
|
* highlights the referenced item in TreeView,
|
||||||
|
* displays additional presentation in 3D view if it can be created.
|
||||||
|
|
||||||
|
@figure{property_panel_item_selection.svg,"",360}
|
||||||
|
|
||||||
|
Attributes having references:
|
||||||
|
|
||||||
|
| Type | Reference | Additional presentation
|
||||||
|
| :----- | :----- | :----- |
|
||||||
|
| TDF_Reference | TDF_Label | |
|
||||||
|
| TDataStd_ReferenceArray, <br> TDataStd_ReferenceList, <br> TNaming_Naming | one or several TDF_Label in a container | |
|
||||||
|
| TDataStd_TreeNode | TDF_Label | |
|
||||||
|
| TNaming_NamedShape | TDF_Label in Evolution table | selected TopoDS_Shapes in property panel tables |
|
||||||
|
| TNaming_UsedShapes | one or several TNaming_NamedShape | TopoDS_Shapes of selected TNaming_NamedShape |
|
||||||
|
|
||||||
|
|
||||||
|
@subsubsection occt_shape_export TopoDS_Shape export
|
||||||
|
|
||||||
|
Property panel of TNaming_NamedShape attribute has controls to export TopoDS_Shape to:
|
||||||
|
* BREP. The save file dialog is started to enter the result file name,
|
||||||
|
* @ref occt_inspector_2_4 "ShapeView" plugin. Dialog about exporting element to ShapeView is shown with a possibility to activate this plugin immediatelly.
|
||||||
|
|
||||||
|
|
||||||
|
@subsection occt_inspector_2_3 VInspector Plugin
|
||||||
|
|
||||||
|
@subsubsection occt_inspector_2_3_1 Overview
|
||||||
|
|
||||||
|
@figure{vinspector.png, "VInspector"}
|
||||||
|
|
||||||
|
It visualizes interactive objects displayed in AIS_InteractiveContext in a tree view with columputed selection
|
||||||
|
components for each presentation. It shows the selected elements in the context and allows to select these elements.
|
||||||
|
|
||||||
|
@subsubsection occt_inspector_2_3_2 Elements
|
||||||
|
|
||||||
|
@figure{vinspector_elements.svg,"VInspector Elements",360}
|
||||||
|
|
||||||
|
<b>Presentations tree view</b>
|
||||||
|
|
||||||
|
It shows presentations and selection computed of them. Also, the view has columns with information about state of visualization elements.
|
||||||
|
|
||||||
|
VInspector tree items.
|
||||||
|
|
||||||
|
| Type | Description |
|
||||||
|
| :----- | :----- |
|
||||||
|
| AIS_InteractiveContext | It is the root of tree view. Children are interactive objects obtained by *DisplayedObjects* and *ErasedObjects* methods.|
|
||||||
|
| AIS_InteractiveObject | It is a child of AIS_InteractiveContext item. Children are SelectMgr_Selection obtained by iteration on *CurrentSelection* |
|
||||||
|
| SelectMgr_Selection | It is a child of AIS_InteractiveObject. Children are SelectMgr_SensitiveEntity obtaining by iteration on *Sensitive* |
|
||||||
|
| SelectMgr_SensitiveEntity | It is a child of SelectMgr_Selection. Children are SelectMgr_SensitiveEntity obtaining by iteration on *OwnerId* |
|
||||||
|
| SelectBasics_EntityOwner | It is a child SelectMgr_SensitiveEntity. It has no children. |
|
||||||
|
|
||||||
|
|
||||||
|
Custom color of tree view items:
|
||||||
|
|
||||||
|
| OCAF element Type | Column | What | Color |
|
||||||
|
| :----- | :----- | :----- | :----- |
|
||||||
|
| AIS_InteractiveObject | 0 | Text | <b>dark gray</b>, it is in *ErasedObjects* list of AIS_InteractiveContext,<br> <b>black</b> otherwise |
|
||||||
|
| AIS_InteractiveObject, <br> SelectMgr_SensitiveEntity, <br> SelectBasics_EntityOwner| 1 | Background | <b>dark blue</b>, if there is a selected owner under the item, <br> <b>black</b> otherwise |
|
||||||
|
| SelectMgr_Selection,<br> SelectMgr_SensitiveEntity,<br> SelectBasics_EntityOwner| all | Text | <b>dark gray</b>, if *SelectionState* of SelectMgr_Selection is not *SelectMgr_SOS_Activated*,<br> <b>black</b> otherwise |
|
||||||
|
|
||||||
|
|
||||||
|
Context popup menu in tree view:
|
||||||
|
| Action | Item | Functionality |
|
||||||
|
| :----- | :----- | :----- |
|
||||||
|
| Export to ShapeView | AIS_InteractiveObject | Exports TopoDS_Shape of AIS_Interactive presentation to ShapeView plugin. <br> It should be AIS_Shape presentation and ShapeView plugin should be registered in Inspector<br> Dialog about exporting element to ShapeView is shown with a possibility to activate this plugin immediatelly. |
|
||||||
|
| Show | AIS_InteractiveObject | *Display* presentation in AIS_InteractiveContext |
|
||||||
|
| Hide | AIS_InteractiveObject | *Erase* presentation from AIS_InteractiveContext |
|
||||||
|
|
||||||
|
<b>Update</b>
|
||||||
|
|
||||||
|
It synchronizes content of the plugin to the current state of AIS_InteractiveContext.
|
||||||
|
It updates the presence of items and the current selection for the items.
|
||||||
|
|
||||||
|
<b>Selection controls</b>
|
||||||
|
|
||||||
|
Selection controls switch on/off the posibility to set selection in the context from VInspector plugin.
|
||||||
|
|
||||||
|
| Action | Tree view item | Functionality |
|
||||||
|
| :----- | :----- | :----- |
|
||||||
|
| Select Presentations | AIS_InteractiveObject | Calls *AddOrRemoveSelected* of interactive object for the selected item |
|
||||||
|
| Select Owners | SelectMgr_EntityOwner or <br> SelectMgr_SensitiveEntity | Calls *AddOrRemoveSelected* of SelectMgr_EntityOwner for the selected item |
|
||||||
|
|
||||||
|
Please note, that the initial selection in context will be cleared.
|
||||||
|
If the button is toggled, the button selection is active. Only one button may be toggled at the moment.
|
||||||
|
|
||||||
|
|
||||||
|
<b>History view</b>
|
||||||
|
|
||||||
|
At present the History view is under implementation and may be used only in a custom application where Inspector is loaded.
|
||||||
|
|
||||||
|
To fill this view, VInspectorAPI_CallBack should be redefined in the application and send signals about some actions applyed to context.
|
||||||
|
After, the call back should be given as parameter in the plugin.
|
||||||
|
If done, new items will be created in the history view for each action.
|
||||||
|
|
||||||
|
@subsubsection occt_inspector_2_3_3 Elements cooperation
|
||||||
|
|
||||||
|
Vinspector markes current selected presentations in AIS_InteractiveContext with blue background in tree items. Use "Update" button to synchronize VInspector selected items state to the context.
|
||||||
|
|
||||||
|
It is also possible to perform selection in context using "Selection controls" VInspector. However, it should be performed carefully as
|
||||||
|
it clears the current selection in AIS_InteractiveContext.
|
||||||
|
|
||||||
|
Selection change:
|
||||||
|
| From | To | Action | Result |
|
||||||
|
| :----- | :----- | :----- | :----- |
|
||||||
|
| AIS_InteractiveContext | VInspector | perform selection in AIS_InteractiveContext | Click "Update" button in VInspector and check "Selection" column: <br> AIS_InteractiveContext item has anount of selected objects,<br> some of AIS_InteractiveObject have filled value if it selection happens for this presentation or entity owner of it |
|
||||||
|
| VInspector | AIS_InteractiveContext | activate one of Selection controls and select one or several elements in tree view | The objects become selected in AIS_InteractiveContext |
|
||||||
|
|
||||||
|
@subsection occt_inspector_2_4 ShapeView Plugin
|
||||||
|
|
||||||
|
@subsubsection occt_inspector_2_4_1 Overview
|
||||||
|
|
||||||
|
@figure{shapeview.png, "ShapeView"}
|
||||||
|
|
||||||
|
This plugin visualizes content of TopoDS_Shape in a tree view.
|
||||||
|
|
||||||
|
@subsubsection occt_inspector_2_4_2 Elements
|
||||||
|
|
||||||
|
@figure{shapeview_elements.svg,"ShapeView Elements",360}
|
||||||
|
|
||||||
|
<b>TopoDS_Shape View</b>
|
||||||
|
|
||||||
|
Elements of the view are TopoDS_Shape objects.
|
||||||
|
This shape is exploded into sub-shapes using TopoDS_Iterator of the TopoDS_Shape.
|
||||||
|
Child sub-shapes are presented in the view as children of the initial shape.
|
||||||
|
Iterating recursively by all shapes we obtain a tree view of items shown in the ShapeView.
|
||||||
|
|
||||||
|
|
||||||
|
Columns of the View show some information about TopoDS_Shape of the item.
|
||||||
|
The most informative column is the last column of TopoDS_Vertex and TopoDS_Edge shape types.
|
||||||
|
|
||||||
|
For TopoDS_Vertex it contains the point coordinates,
|
||||||
|
|
||||||
|
for TopoDS_Edge it contains the first and the last point coordinates, the edge length and some other parameters.
|
||||||
|
|
||||||
|
|
||||||
|
Context popup menu in tree view:
|
||||||
|
| Action | Functionality |
|
||||||
|
| :----- | :----- |
|
||||||
|
| Load BREP file | Opens selected file and appends the result TopoDS_Shape into tree view |
|
||||||
|
| Remove all shape items | Clears tree view |
|
||||||
|
| BREP view | Shows text view with BREP content of the selected item. It creates BREP file in temporary directory of the plugin. |
|
||||||
|
| Close All BREP views | Closes all opened text views |
|
||||||
|
| BREP directory | Displays folder where temporary BREP files have been stored. |
|
||||||
|
|
||||||
|
@subsubsection occt_inspector_2_4_3 Elements cooperation
|
||||||
|
|
||||||
|
Selection of one or several items in TopoDS_Shape View creates AIS_Shape presentation for it and displays it in the 3D View.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@section occt_inspector_3 Common controls
|
||||||
|
@subsection occt_inspector_3_1 3D View
|
||||||
|
|
||||||
|
@subsubsection occt_inspector_3_1_1 Overview
|
||||||
|
|
||||||
|
@figure{3DView.png, "3D View"}
|
||||||
|
|
||||||
|
Control for OCCT 3D viewer. It creates visualization view components with possibilities to perform some
|
||||||
|
user actions for the view.
|
||||||
|
|
||||||
|
|
||||||
|
@subsubsection occt_inspector_3_1_2 Elements
|
||||||
|
|
||||||
|
@figure{3DView_elements.svg,"3DView Elements"}
|
||||||
|
|
||||||
|
3D View contains:
|
||||||
|
| Element | Functionality |
|
||||||
|
| :----- | :----- |
|
||||||
|
| 3D view | V3d viewer with mouse events processing |
|
||||||
|
| Context | choice of another context that should be used in the plugin. <br> It is possible to use the next contexts:<br> Own - context of this view, <br> External - context come in parameters which intializes plugin, <br> None - do not perform visualization at all |
|
||||||
|
| Multi/Single | Buttons defined what to do with the previous displayed objects: <br> Multi displays new presentations in additional to already displayed, <br> Single removes all previuos displayed presentations |
|
||||||
|
| Clean | Removes all displayed presentations |
|
||||||
|
| Fit All,<br> Fit Area,<br> Zoom,<br> Pan,<br> Rotation | Scene manipulation actions |
|
||||||
|
| Display Mode | Sets *AIS_Shading* or *AIS_WireFrame* display mode for all presentations |
|
||||||
|
|
||||||
|
|
||||||
|
@section occt_inspector_6 TInspectorEXE sample
|
||||||
|
|
||||||
|
Inspector functionality can be tried using this sample.
|
||||||
|
|
||||||
|
Use *inspector.bat* script file placed in binary directory of OCCT to launch it.
|
||||||
|
|
||||||
|
This script accepts the names of plugin's DLL that should be loaded. By default it loads all described above plugins.
|
||||||
|
|
||||||
|
|
||||||
|
@figure{TStandaloneEXE.png, "TStandaloneEXE"}
|
||||||
|
|
||||||
|
Click on the Open button shows the dialog to select a file. The user is able to select one of the sample files or load own one.
|
||||||
|
@figure{TStandaloneEXE_open.png, ""}
|
||||||
|
|
||||||
|
Depending on the active plugin, the following files should be selected in the dialog:
|
||||||
|
OCAF document or STEP files for DFBRowser and BREP files for VInspector and ShapeView plugins.
|
||||||
|
|
||||||
|
It is possible to click the file name in the proposed directory, enter it manually or using Browser button.
|
||||||
|
The last Loading icon becomes enabled if file name is correct.
|
||||||
|
|
||||||
|
|
||||||
|
By default TInspectorEXE opens the next files for plugins:
|
||||||
|
| Plugin DLL library name | Files |
|
||||||
|
| :----- | :----- |
|
||||||
|
| TKDFBrowser | step/screw.step |
|
||||||
|
| TKVInspector | occ/hammer.brep |
|
||||||
|
| TKShapeView | occ/face1.brep, <br> occ/face2.brep |
|
||||||
|
|
||||||
|
These files are found relatively *CSF_OCCTDataPath*.
|
||||||
|
|
||||||
|
|
||||||
|
Source code of TIspectorEXE is a good sample for @ref occt_inspector_8 "Using Inspector in a custom application".
|
||||||
|
|
||||||
|
|
||||||
|
@section occt_inspector_7 Launch in DRAW Test Harness
|
||||||
|
|
||||||
|
TKToolsDraw plugin is created to provide DRAW commands for Qt tools. Use INSPECTOR parameter of @ref occt_draw_1_3_3 "pload"
|
||||||
|
command to download commands of this library. It contains tinspector command to start Inspector under DRAW.
|
||||||
|
See more detailed description of the @ref occt_draw_13_1 "tinspector" command.
|
||||||
|
|
||||||
|
The simple code to start Inspector with all plugins loaded:
|
||||||
|
|
||||||
|
~~~~~
|
||||||
|
pload INSPECTOR
|
||||||
|
tinspector
|
||||||
|
~~~~~
|
||||||
|
|
||||||
|
@figure{drawexe_tinspector.png,"tinspector"}
|
||||||
|
|
||||||
|
Result of this command is the next:
|
||||||
|
- all available Plugins are presented in the Inspector. These are @ref occt_inspector_2_2 "DFBrowser", @ref occt_inspector_2_3 "VInspector" and @ref occt_inspector_2_4 "ShapeView".
|
||||||
|
- DFBrowser is an active plugin
|
||||||
|
- tree of OCAF is empty.
|
||||||
|
|
||||||
|
After, we should create objects in DRAW and update tinspector.
|
||||||
|
|
||||||
|
@section occt_inspector_8 Using in a custom application
|
||||||
|
|
||||||
|
To use Inspector in an application, the next steps should be done:
|
||||||
|
* Set dependencies to OCCT and Qt in application (Header and Link)
|
||||||
|
* Create an instance of TInspector_Communicator.
|
||||||
|
* Register plugins of interest in the communicator by DLL library name
|
||||||
|
* Initialize communicator with objects that will be investigated
|
||||||
|
* Set visible true for commumicator
|
||||||
|
|
||||||
|
|
||||||
|
C++ code is similar:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
|
||||||
|
|
||||||
|
#include <inspector/TInspector_Communicator.hxx>
|
||||||
|
|
||||||
|
static TInspector_Communicator* MyTCommunicator;
|
||||||
|
|
||||||
|
void CreateInspector()
|
||||||
|
{
|
||||||
|
NCollection_List<Handle(Standard_Transient)> aParameters;
|
||||||
|
//... append parameters in the list
|
||||||
|
|
||||||
|
if (!MyTCommunicator)
|
||||||
|
{
|
||||||
|
MyTCommunicator = new TInspector_Communicator();
|
||||||
|
|
||||||
|
MyTCommunicator->RegisterPlugin ("TKDFBrowser");
|
||||||
|
MyTCommunicator->RegisterPlugin ("TKVInspector");
|
||||||
|
MyTCommunicator->RegisterPlugin ("TKShapeView");
|
||||||
|
|
||||||
|
MyTCommunicator->Init (aParameters);
|
||||||
|
MyTCommunicator->Activate ("TKDFBrowser");
|
||||||
|
}
|
||||||
|
MyTCommunicator->SetVisible (true);
|
||||||
|
}
|
||||||
|
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
| Plugin | to be initialized by |
|
||||||
|
| :----- | :----- |
|
||||||
|
| TKDFBrowser | TDocStd_Application |
|
||||||
|
| TKVInspector | AIS_InteractiveContext |
|
||||||
|
| TKShapeView | TopoDS_TShape |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@section occt_inspector_4 Build procedure
|
||||||
|
|
||||||
|
By default the Inspector compilation is off.
|
||||||
|
To compile it, set the <b>BUILD_Inspector</b> flag to "ON". See @ref build_cmake_conf "Configuration process".
|
||||||
|
|
||||||
|
When this option is switched On, MS Visual Studio project has an additional tree of folders:
|
||||||
|
|
||||||
|
@figure{VStudio_projects.png,"Inspector packages in MS Visual Studio"}
|
||||||
|
|
||||||
|
|
||||||
|
@section occt_inspector_5 Sources and packaging
|
||||||
|
|
||||||
|
OCCT sources are extended by the /tools directory.
|
||||||
|
|
||||||
|
Distribution of packages participated in plugins:
|
||||||
|
| Sources packages| Plugin |
|
||||||
|
| :----- | :----- |
|
||||||
|
| DFBrowser, <br> DFBrowserPane, <br> DFBrowserPaneXDE, <br> TKDFBrowser | DFBrowser |
|
||||||
|
| VInspector, <br> TKVInspector | VInspector |
|
||||||
|
| ShapeView, <br> TKShapeView | ShapeView |
|
||||||
|
|
||||||
|
Other packages:
|
||||||
|
| Sources packages| Used in |
|
||||||
|
| :----- | :----- |
|
||||||
|
| TInspectorAPI, <br> TKInspectorAPI | Iterface for connection to plugin. |
|
||||||
|
| TreeModel, <br> TKTreeView | Items-oriented model to simplify work with GUI tree control. |
|
||||||
|
| View, <br> TKView | 3D View component |
|
||||||
|
| TInspector, <br> TKTInspector | Inspector window where plugins are placed |
|
||||||
|
| ToolsDraw, <br> TKToolsDraw | Plugin for DRAW to start Inspector |
|
||||||
|
|
||||||
|
|
||||||
|
In MSVC studio the separate folder contains Inspector projects.
|
||||||
|
|
||||||
|
@section occt_inspector_9 Glossary
|
||||||
|
* **Component** -- OCCT part, e.g. OCAF, VISUALIZATION, MODELING and others.
|
||||||
|
* **Plugin** -- library that is loaded in some executable/library. Here, the plugins are:
|
||||||
|
* DFBrowser,
|
||||||
|
* ShapeView,
|
||||||
|
* VInspector.
|
||||||
|
|
||||||
|
@subsection occt_attribute_simple_types TDF_Attribute Simple types
|
||||||
|
Types where the content is a single value
|
||||||
|
|
||||||
|
| Type | Kind of value |
|
||||||
|
| :----- | :----- |
|
||||||
|
| TDataStd_AsciiString | TDataStd_AsciiString |
|
||||||
|
| TDataStd_Comment | TCollection_ExtendedString |
|
||||||
|
| TDataStd_Integer | Standard_Integer |
|
||||||
|
| TDataStd_Name | TCollection_ExtendedString |
|
||||||
|
| TDataStd_Real | Standard_Real |
|
||||||
|
| TDF_Reference | TDF_Label |
|
||||||
|
| TDF_TagSource | Standard_Integer |
|
||||||
|
|
||||||
|
|
||||||
|
@subsection occt_attribute_list_types TDF_Attribute List types
|
||||||
|
|
||||||
|
| Type | Kind of value (container of) |
|
||||||
|
| :----- | :----- |
|
||||||
|
| TDataStd_BooleanList | Standard_Boolean |
|
||||||
|
| TDataStd_ExtStringList | TCollection_ExtendedString |
|
||||||
|
| TDataStd_IntegerList | Standard_Integer |
|
||||||
|
| TDataStd_RealList | Standard_Real |
|
||||||
|
| TDataStd_ReferenceList | TDF_Label |
|
||||||
|
|
||||||
|
@subsection occt_attribute_array_types TDF_Attribute Array types
|
||||||
|
|
||||||
|
| Type | Kind of value (container of) |
|
||||||
|
| :----- | :----- |
|
||||||
|
| TDataStd_BooleanArray | Standard_Boolean |
|
||||||
|
| TDataStd_ByteArray | Standard_Byte |
|
||||||
|
| TDataStd_ExtStringArray | TCollection_ExtendedString |
|
||||||
|
| TDataStd_IntegerArray | Standard_Integer |
|
||||||
|
| TDataStd_RealArray | Standard_Real |
|
||||||
|
| TDataStd_ReferenceArray | TDF_Label |
|
||||||
|
|
||||||
|
@subsection occt_attribute_xde_tree_node_id XDE tree node ID description
|
||||||
|
| GUID | Text |
|
||||||
|
| :----- | :----- |
|
||||||
|
| XCAFDoc::ShapeRefGUID() | Shape Instance Link |
|
||||||
|
| XCAFDoc::ColorRefGUID (XCAFDoc_ColorGen) | Generic Color Link |
|
||||||
|
| XCAFDoc::ColorRefGUID (XCAFDoc_ColorSurf) | Surface Color Link |
|
||||||
|
| XCAFDoc::ColorRefGUID (XCAFDoc_ColorCurv) | Curve Color Link |
|
||||||
|
| XCAFDoc::DimTolRefGUID() | DGT Link |
|
||||||
|
| XCAFDoc::DatumRefGUID() | Datum Link |
|
||||||
|
| XCAFDoc::MaterialRefGUID() | Material Link |
|
||||||
|
|
@@ -18,3 +18,4 @@ OCCT User Guides are organized by OCCT modules:
|
|||||||
* @subpage occt_user_guides__ocaf "Open CASCADE Application Framework (OCAF)"
|
* @subpage occt_user_guides__ocaf "Open CASCADE Application Framework (OCAF)"
|
||||||
* @subpage occt_user_guides__tobj "TObj package"
|
* @subpage occt_user_guides__tobj "TObj package"
|
||||||
* @subpage occt_user_guides__test_harness "DRAW Test Harness"
|
* @subpage occt_user_guides__test_harness "DRAW Test Harness"
|
||||||
|
* @subpage occt_user_guides__inspector "Inspector"
|
BIN
dox/user_guides/xde/images/xde_notes001.png
Normal file
After Width: | Height: | Size: 77 KiB |
@@ -91,6 +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}
|
@figure{/user_guides/xde/images/xde_image006.png,"Colors and Layers",240}
|
||||||
|
|
||||||
|
@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 created it.
|
||||||
|
|
||||||
|
Notes API provides the following functionality:
|
||||||
|
* 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
|
||||||
|
* 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
|
@section occt_xde_2 Working with XDE
|
||||||
|
|
||||||
@@ -607,6 +627,136 @@ To remove a Color and all the references to it (so that the related shapes will
|
|||||||
myColors->RemoveColor(ColLabel);
|
myColors->RemoveColor(ColLabel);
|
||||||
~~~~~
|
~~~~~
|
||||||
|
|
||||||
|
@subsection occt_xde_2_7 Custom notes
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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_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 the following notes calls and will not be repeated for these.
|
||||||
|
|
||||||
|
@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
|
||||||
|
|
||||||
|
Both methods return an instance of *XCAFDoc_Note* class.
|
||||||
|
~~~~~
|
||||||
|
Handle(XCAFDoc_NotesTool) myNotes = ...
|
||||||
|
Handle(XCAFDoc_Note) myNote = myNotes->CreateComment("User", "Timestamp", "Hello, World!");
|
||||||
|
~~~~~
|
||||||
|
This code adds a child label to label 0.1.9.1 with *XCAFDoc_NoteComment* attribute.
|
||||||
|
|
||||||
|
@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 need to down cast *myNote* handle to the appropriate sub-class:
|
||||||
|
~~~~~
|
||||||
|
Handle(XCAFDoc_NoteComment) myCommentNote = Handle(XCAFDoc_NoteComment)::DownCast(myNote);
|
||||||
|
if (!myCommentNote.IsNull()) {
|
||||||
|
myCommentNote->Set("New comment");
|
||||||
|
}
|
||||||
|
~~~~~
|
||||||
|
|
||||||
|
@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
|
||||||
|
|
||||||
|
All methods return a pointer to *XCAFDoc_AssemblyItemRef* attribute identifying the annotated item.
|
||||||
|
~~~~~
|
||||||
|
Handle(XCAFDoc_NotesTool) myNotes = ...
|
||||||
|
Handle(XCAFDoc_Note) myNote = ...
|
||||||
|
TDF_Label theLabel; ...
|
||||||
|
Handle(XCAFDoc_AssemblyItemRef) myRef = myNotes->AddNote(myNote->Label(), theLabel);
|
||||||
|
Standard_GUID theAttrGUID; ...
|
||||||
|
Handle(XCAFDoc_AssemblyItemRef) myRefAttr = myNotes->AddNoteToAttr(myNote->Label(), theAttrGUID);
|
||||||
|
Standard_Integer theSubshape = 1;
|
||||||
|
Handle(XCAFDoc_AssemblyItemRef) myRefSubshape = myNotes->AddNoteToSubshape(myNote->Label(), theSubshape);
|
||||||
|
~~~~~
|
||||||
|
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_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
|
||||||
|
|
||||||
|
~~~~~
|
||||||
|
Handle(XCAFDoc_NotesTool) myNotes = ...
|
||||||
|
TDF_Label theLabel; ...
|
||||||
|
TDF_Label myLabel = myNotes->FindAnnotatedItem(theLabel);
|
||||||
|
Standard_GUID theAttrGUID; ...
|
||||||
|
TDF_Label myLabelAttr = myNotes->FindAnnotatedItemAttr(theLabel, theAttrGUID);
|
||||||
|
Standard_Integer theSubshape = 1;
|
||||||
|
TDF_Label myLabelSubshape = myNotes->FindAnnotatedItemSubshape(theLabel, theSubshape);
|
||||||
|
~~~~~
|
||||||
|
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
|
||||||
|
|
||||||
|
All these methods return the number of notes.
|
||||||
|
~~~~~
|
||||||
|
Handle(XCAFDoc_NotesTool) myNotes = ...
|
||||||
|
TDF_Label theLabel; ...
|
||||||
|
TDF_LabelSequence theNotes;
|
||||||
|
myNotes->GetNotes(theLabel, theNotes);
|
||||||
|
Standard_GUID theAttrGUID; ...
|
||||||
|
TDF_LabelSequence theNotesAttr;
|
||||||
|
myNotes->GetAttrNotes(theLabel, theAttrGUID, theNotesAttr);
|
||||||
|
Standard_Integer theSubshape = 1;
|
||||||
|
TDF_LabelSequence theNotesSubshape;
|
||||||
|
myNotes->GetAttrSubshape(theLabel, theSubshape, theNotesSubshape);
|
||||||
|
~~~~~
|
||||||
|
|
||||||
|
@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
|
||||||
|
|
||||||
|
~~~~~
|
||||||
|
Handle(XCAFDoc_Note) myNote = ...
|
||||||
|
TDF_Label theLabel; ...
|
||||||
|
myNotes->RemoveNote(myNote->Label(), theLabel);
|
||||||
|
Standard_GUID theAttrGUID; ...
|
||||||
|
myRefAttr = myNotes->RemoveAttrNote(myNote->Label(), theAttrGUID);
|
||||||
|
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.
|
||||||
|
|
||||||
|
@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
|
||||||
|
|
||||||
|
All these methods excepting the last one break all links with Document items as well.
|
||||||
|
|
||||||
@subsection occt_xde_2_8 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.
|
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.
|
||||||
|
@@ -1,4 +1,11 @@
|
|||||||
// This file contains a description of the UIKitSample and step-by-step instructions how to build and run it.
|
OCCT sample for iOS {#occt_samples_ios_uikit}
|
||||||
|
==================
|
||||||
|
|
||||||
|
UIKitSample consists of the Open CASCADE 3D Viewer which provides import of STEP files and toolbar with three buttons.
|
||||||
|
|
||||||
|
The first and second buttons serve for import hardcoded STEP files. The third button displays "About" dialog.
|
||||||
|
|
||||||
|
The viewer supports zoom, pan and rotate actions. The viewer supports selection of solids as well.
|
||||||
|
|
||||||
Installation and configuration:
|
Installation and configuration:
|
||||||
1. Make sure you are running Mac OS version 10.12.1 or above and properly installed XCode version 8.1 or above.
|
1. Make sure you are running Mac OS version 10.12.1 or above and properly installed XCode version 8.1 or above.
|
||||||
@@ -9,8 +16,3 @@ Installation and configuration:
|
|||||||
6. Select the UIKitSample and go to the "Build Settings" tab. After go to the section "Search Paths" and in the field "Header Search Paths" specify a path to the OCCT inc folder. Next in the field "Library Search Paths" specify a path/paths to the OCCT static libraries and Freetype2 static library folders.
|
6. Select the UIKitSample and go to the "Build Settings" tab. After go to the section "Search Paths" and in the field "Header Search Paths" specify a path to the OCCT inc folder. Next in the field "Library Search Paths" specify a path/paths to the OCCT static libraries and Freetype2 static library folders.
|
||||||
7. Connect device and build sample for device or choose simulator as a target and build for simulator.
|
7. Connect device and build sample for device or choose simulator as a target and build for simulator.
|
||||||
8. Run sample.
|
8. Run sample.
|
||||||
|
|
||||||
Description:
|
|
||||||
UIKitSample consists of the Open CASCADE 3D Viewer which provides import of STEP files and toolbar with three buttons.
|
|
||||||
The first and second buttons serve for import hardcoded STEP files. The third button displays "About" dialog.
|
|
||||||
The viewer supports zoom, pan and rotate actions. The viewer supports selection of solids as well.
|
|
||||||
|
@@ -101,7 +101,7 @@ set (BUILD_TOOLKITS
|
|||||||
string(TIMESTAMP CURRENT_TIME "%H:%M:%S")
|
string(TIMESTAMP CURRENT_TIME "%H:%M:%S")
|
||||||
message (STATUS "\nInfo: \(${CURRENT_TIME}\) Start collecting all header files into ${CMAKE_BINARY_DIR}/inc ...")
|
message (STATUS "\nInfo: \(${CURRENT_TIME}\) Start collecting all header files into ${CMAKE_BINARY_DIR}/inc ...")
|
||||||
# collect all the headers to <binary dir>/inc folder
|
# collect all the headers to <binary dir>/inc folder
|
||||||
COLLECT_AND_INSTALL_OCCT_HEADER_FILES ("${CMAKE_BINARY_DIR}" "${BUILD_TOOLKITS}" "${CASROOT_SOURCE_FILES}/tools" "${INSTALL_DIR_INCLUDE}")
|
COLLECT_AND_INSTALL_OCCT_HEADER_FILES ("${CMAKE_BINARY_DIR}" "${BUILD_TOOLKITS}" "${CASROOT_SOURCE_FILES}/tools" "${INSTALL_DIR_INCLUDE}/inspector")
|
||||||
|
|
||||||
OCCT_INCLUDE_CMAKE_FILE_STANDALONE ("adm/cmake/standalone_macros")
|
OCCT_INCLUDE_CMAKE_FILE_STANDALONE ("adm/cmake/standalone_macros")
|
||||||
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/qt_macro")
|
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/qt_macro")
|
||||||
|
@@ -18,6 +18,7 @@
|
|||||||
#include <AIS_InteractiveContext.hxx>
|
#include <AIS_InteractiveContext.hxx>
|
||||||
#include <BRep_Builder.hxx>
|
#include <BRep_Builder.hxx>
|
||||||
#include <BRepTools.hxx>
|
#include <BRepTools.hxx>
|
||||||
|
#include <BRepMesh_IncrementalMesh.hxx>
|
||||||
#include <gp_Pnt2d.hxx>
|
#include <gp_Pnt2d.hxx>
|
||||||
#include <Graphic3d_AspectFillArea3d.hxx>
|
#include <Graphic3d_AspectFillArea3d.hxx>
|
||||||
#include <Graphic3d_AspectLine3d.hxx>
|
#include <Graphic3d_AspectLine3d.hxx>
|
||||||
@@ -35,6 +36,7 @@
|
|||||||
#include <Prs3d_Root.hxx>
|
#include <Prs3d_Root.hxx>
|
||||||
#include <PrsMgr_PresentationManager3d.hxx>
|
#include <PrsMgr_PresentationManager3d.hxx>
|
||||||
#include <Standard_ErrorHandler.hxx>
|
#include <Standard_ErrorHandler.hxx>
|
||||||
|
#include <StdSelect_BRepSelectionTool.hxx>
|
||||||
#include <StdPrs_ShadedShape.hxx>
|
#include <StdPrs_ShadedShape.hxx>
|
||||||
#include <StdPrs_ToolTriangulatedShape.hxx>
|
#include <StdPrs_ToolTriangulatedShape.hxx>
|
||||||
#include <StdPrs_WFShape.hxx>
|
#include <StdPrs_WFShape.hxx>
|
||||||
@@ -384,11 +386,28 @@ void AIS_ColoredShape::Compute (const Handle(PrsMgr_PresentationManager3d)& ,
|
|||||||
Prs3d::GetDeflection (myshape, myDrawer);
|
Prs3d::GetDeflection (myshape, myDrawer);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extract myShapeColors map (KeyshapeColored -> Color)
|
// Extract myShapeColors map (KeyshapeColored -> Color) to subshapes map (Subshape -> Color).
|
||||||
// to subshapes map (Subshape -> Color).
|
// This needed when colored shape is not part of BaseShape (but subshapes are) and actually container for subshapes.
|
||||||
// This needed when colored shape is not part of BaseShape
|
|
||||||
// (but subshapes are) and actually container for subshapes.
|
|
||||||
AIS_DataMapOfShapeDrawer aSubshapeDrawerMap;
|
AIS_DataMapOfShapeDrawer aSubshapeDrawerMap;
|
||||||
|
fillSubshapeDrawerMap (aSubshapeDrawerMap);
|
||||||
|
|
||||||
|
Handle(AIS_ColoredDrawer) aBaseDrawer;
|
||||||
|
myShapeColors.Find (myshape, aBaseDrawer);
|
||||||
|
|
||||||
|
// myShapeColors + anOpened --> array[TopAbs_ShapeEnum] of map of color-to-compound
|
||||||
|
DataMapOfDrawerCompd aDispatchedOpened[(size_t)TopAbs_SHAPE];
|
||||||
|
DataMapOfDrawerCompd aDispatchedClosed;
|
||||||
|
dispatchColors (aBaseDrawer, myshape,
|
||||||
|
aSubshapeDrawerMap, TopAbs_COMPOUND, Standard_False,
|
||||||
|
aDispatchedOpened, theMode == AIS_Shaded ? aDispatchedClosed : aDispatchedOpened[TopAbs_FACE]);
|
||||||
|
addShapesWithCustomProps (thePrs, aDispatchedOpened, aDispatchedClosed, theMode);
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : fillSubshapeDrawerMap
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
void AIS_ColoredShape::fillSubshapeDrawerMap (AIS_DataMapOfShapeDrawer& theSubshapeDrawerMap) const
|
||||||
{
|
{
|
||||||
// unroll compounds specified for grouping sub-shapes with the same style
|
// unroll compounds specified for grouping sub-shapes with the same style
|
||||||
// (e.g. the compounds that are not a part of the main shape)
|
// (e.g. the compounds that are not a part of the main shape)
|
||||||
@@ -413,7 +432,7 @@ void AIS_ColoredShape::Compute (const Handle(PrsMgr_PresentationManager3d)& ,
|
|||||||
const TopoDS_Shape& aShape = aChildIter.Value();
|
const TopoDS_Shape& aShape = aChildIter.Value();
|
||||||
if (!myShapeColors.IsBound (aShape))
|
if (!myShapeColors.IsBound (aShape))
|
||||||
{
|
{
|
||||||
bindSubShapes (aSubshapeDrawerMap, aShape, aKeyShapeIter.Value());
|
bindSubShapes (theSubshapeDrawerMap, aShape, aKeyShapeIter.Value());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -430,20 +449,108 @@ void AIS_ColoredShape::Compute (const Handle(PrsMgr_PresentationManager3d)& ,
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
bindSubShapes (aSubshapeDrawerMap, aKeyShape, aKeyShapeIter.Value());
|
bindSubShapes (theSubshapeDrawerMap, aKeyShape, aKeyShapeIter.Value());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : ComputeSelection
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
void AIS_ColoredShape::ComputeSelection (const Handle(SelectMgr_Selection)& theSelection,
|
||||||
|
const Standard_Integer theMode)
|
||||||
|
{
|
||||||
|
if (myshape.IsNull())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (isShapeEntirelyVisible())
|
||||||
|
{
|
||||||
|
base_type::ComputeSelection (theSelection, theMode);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const TopAbs_ShapeEnum aTypOfSel = AIS_Shape::SelectionType (theMode);
|
||||||
|
const Standard_Real aDeflection = Prs3d::GetDeflection (myshape, myDrawer);
|
||||||
|
const Standard_Real aDeviationAngle = myDrawer->HLRAngle();
|
||||||
|
const Standard_Integer aPriority = StdSelect_BRepSelectionTool::GetStandardPriority (myshape, aTypOfSel);
|
||||||
|
if (myDrawer->IsAutoTriangulation()
|
||||||
|
&& !BRepTools::Triangulation (myshape, Precision::Infinite()))
|
||||||
|
{
|
||||||
|
BRepMesh_IncrementalMesh aMesher (myshape, aDeflection, Standard_False, aDeviationAngle);
|
||||||
|
}
|
||||||
|
|
||||||
|
AIS_DataMapOfShapeDrawer aSubshapeDrawerMap;
|
||||||
|
fillSubshapeDrawerMap (aSubshapeDrawerMap);
|
||||||
|
|
||||||
|
Handle(StdSelect_BRepOwner) aBrepOwner = new StdSelect_BRepOwner (myshape, aPriority);
|
||||||
|
if (aTypOfSel == TopAbs_SHAPE)
|
||||||
|
{
|
||||||
|
aBrepOwner = new StdSelect_BRepOwner (myshape, aPriority);
|
||||||
|
}
|
||||||
|
|
||||||
Handle(AIS_ColoredDrawer) aBaseDrawer;
|
Handle(AIS_ColoredDrawer) aBaseDrawer;
|
||||||
myShapeColors.Find (myshape, aBaseDrawer);
|
myShapeColors.Find (myshape, aBaseDrawer);
|
||||||
|
computeSubshapeSelection (aBaseDrawer, aSubshapeDrawerMap, myshape, aBrepOwner, theSelection,
|
||||||
|
aTypOfSel, aPriority, aDeflection, aDeviationAngle);
|
||||||
|
|
||||||
// myShapeColors + anOpened --> array[TopAbs_ShapeEnum] of map of color-to-compound
|
Handle(SelectMgr_SelectableObject) aThis (this);
|
||||||
DataMapOfDrawerCompd aDispatchedOpened[(size_t)TopAbs_SHAPE];
|
for (theSelection->Init(); theSelection->More(); theSelection->Next())
|
||||||
DataMapOfDrawerCompd aDispatchedClosed;
|
{
|
||||||
dispatchColors (aBaseDrawer, myshape,
|
Handle(SelectMgr_EntityOwner) anOwner = Handle(SelectMgr_EntityOwner)::DownCast (theSelection->Sensitive()->BaseSensitive()->OwnerId());
|
||||||
aSubshapeDrawerMap, TopAbs_COMPOUND, Standard_False,
|
anOwner->Set (aThis);
|
||||||
aDispatchedOpened, theMode == AIS_Shaded ? aDispatchedClosed : aDispatchedOpened[TopAbs_FACE]);
|
}
|
||||||
addShapesWithCustomProps (thePrs, aDispatchedOpened, aDispatchedClosed, theMode);
|
|
||||||
|
StdSelect_BRepSelectionTool::PreBuildBVH (theSelection);
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : computeSubshapeSelection
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
void AIS_ColoredShape::computeSubshapeSelection (const Handle(AIS_ColoredDrawer)& theParentDrawer,
|
||||||
|
const AIS_DataMapOfShapeDrawer& theShapeDrawerMap,
|
||||||
|
const TopoDS_Shape& theShape,
|
||||||
|
const Handle(StdSelect_BRepOwner)& theOwner,
|
||||||
|
const Handle(SelectMgr_Selection)& theSelection,
|
||||||
|
const TopAbs_ShapeEnum theTypOfSel,
|
||||||
|
const Standard_Integer thePriority,
|
||||||
|
const Standard_Real theDeflection,
|
||||||
|
const Standard_Real theDeflAngle)
|
||||||
|
{
|
||||||
|
Handle(AIS_ColoredDrawer) aDrawer = theParentDrawer;
|
||||||
|
theShapeDrawerMap.Find (theShape, aDrawer);
|
||||||
|
if (!aDrawer.IsNull()
|
||||||
|
&& aDrawer->IsHidden())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const Standard_Integer aNbPOnEdge = 9;
|
||||||
|
const Standard_Real aMaximalParameter = 500.0;
|
||||||
|
if (theTypOfSel == TopAbs_SHAPE
|
||||||
|
&& theShape.ShapeType() >= TopAbs_FACE)
|
||||||
|
{
|
||||||
|
StdSelect_BRepSelectionTool::ComputeSensitive (theShape, theOwner, theSelection,
|
||||||
|
theDeflection, theDeflAngle, aNbPOnEdge, aMaximalParameter, myDrawer->IsAutoTriangulation());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (theShape.ShapeType() == theTypOfSel)
|
||||||
|
{
|
||||||
|
const Standard_Boolean isComesFromDecomposition = !theShape.IsEqual (myshape);
|
||||||
|
Handle(StdSelect_BRepOwner) aBrepOwner = new StdSelect_BRepOwner (theShape, thePriority, isComesFromDecomposition);
|
||||||
|
StdSelect_BRepSelectionTool::ComputeSensitive (theShape, aBrepOwner, theSelection,
|
||||||
|
theDeflection, theDeflAngle, aNbPOnEdge, aMaximalParameter, myDrawer->IsAutoTriangulation());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (TopoDS_Iterator aSubShapeIter (theShape); aSubShapeIter.More(); aSubShapeIter.Next())
|
||||||
|
{
|
||||||
|
const TopoDS_Shape& aSubShape = aSubShapeIter.Value();
|
||||||
|
computeSubshapeSelection (aDrawer, theShapeDrawerMap, aSubShape,
|
||||||
|
theOwner, theSelection, theTypOfSel, thePriority,
|
||||||
|
theDeflection, theDeflAngle);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@@ -683,7 +790,7 @@ Standard_Boolean AIS_ColoredShape::isShapeEntirelyVisible() const
|
|||||||
//=======================================================================
|
//=======================================================================
|
||||||
void AIS_ColoredShape::bindSubShapes (AIS_DataMapOfShapeDrawer& theShapeDrawerMap,
|
void AIS_ColoredShape::bindSubShapes (AIS_DataMapOfShapeDrawer& theShapeDrawerMap,
|
||||||
const TopoDS_Shape& theKeyShape,
|
const TopoDS_Shape& theKeyShape,
|
||||||
const Handle(AIS_ColoredDrawer)& theDrawer)
|
const Handle(AIS_ColoredDrawer)& theDrawer) const
|
||||||
{
|
{
|
||||||
TopAbs_ShapeEnum aShapeWithColorType = theKeyShape.ShapeType();
|
TopAbs_ShapeEnum aShapeWithColorType = theKeyShape.ShapeType();
|
||||||
if (aShapeWithColorType == TopAbs_COMPOUND)
|
if (aShapeWithColorType == TopAbs_COMPOUND)
|
||||||
|
@@ -24,6 +24,8 @@
|
|||||||
#include <TopTools_MapOfShape.hxx>
|
#include <TopTools_MapOfShape.hxx>
|
||||||
#include <TColStd_MapTransientHasher.hxx>
|
#include <TColStd_MapTransientHasher.hxx>
|
||||||
|
|
||||||
|
class StdSelect_BRepOwner;
|
||||||
|
|
||||||
//! Presentation of the shape with customizable sub-shapes properties.
|
//! Presentation of the shape with customizable sub-shapes properties.
|
||||||
class AIS_ColoredShape : public AIS_Shape
|
class AIS_ColoredShape : public AIS_Shape
|
||||||
{
|
{
|
||||||
@@ -83,10 +85,15 @@ public: //! @name global aspects
|
|||||||
|
|
||||||
protected: //! @name override presentation computation
|
protected: //! @name override presentation computation
|
||||||
|
|
||||||
|
//! Compute presentation considering sub-shape color map.
|
||||||
Standard_EXPORT virtual void Compute (const Handle(PrsMgr_PresentationManager3d)& thePrsMgr,
|
Standard_EXPORT virtual void Compute (const Handle(PrsMgr_PresentationManager3d)& thePrsMgr,
|
||||||
const Handle(Prs3d_Presentation)& thePrs,
|
const Handle(Prs3d_Presentation)& thePrs,
|
||||||
const Standard_Integer theMode) Standard_OVERRIDE;
|
const Standard_Integer theMode) Standard_OVERRIDE;
|
||||||
|
|
||||||
|
//! Compute selection considering sub-shape hidden state.
|
||||||
|
Standard_EXPORT virtual void ComputeSelection (const Handle(SelectMgr_Selection)& theSelection,
|
||||||
|
const Standard_Integer theMode) Standard_OVERRIDE;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
typedef NCollection_IndexedDataMap<Handle(AIS_ColoredDrawer), TopoDS_Compound, TColStd_MapTransientHasher> DataMapOfDrawerCompd;
|
typedef NCollection_IndexedDataMap<Handle(AIS_ColoredDrawer), TopoDS_Compound, TColStd_MapTransientHasher> DataMapOfDrawerCompd;
|
||||||
@@ -110,6 +117,10 @@ protected:
|
|||||||
DataMapOfDrawerCompd& theDrawerClosedFaces);
|
DataMapOfDrawerCompd& theDrawerClosedFaces);
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
|
//! Extract myShapeColors map (KeyshapeColored -> Color) to subshapes map (Subshape -> Color).
|
||||||
|
//! This needed when colored shape is not part of BaseShape (but subshapes are) and actually container for subshapes.
|
||||||
|
Standard_EXPORT void fillSubshapeDrawerMap (AIS_DataMapOfShapeDrawer& theSubshapeDrawerMap) const;
|
||||||
|
|
||||||
//! Add shape to presentation
|
//! Add shape to presentation
|
||||||
//! @param thePrs the presentation
|
//! @param thePrs the presentation
|
||||||
//! @param theDrawerOpenedShapePerType the shapes map with unique attributes
|
//! @param theDrawerOpenedShapePerType the shapes map with unique attributes
|
||||||
@@ -131,7 +142,26 @@ protected:
|
|||||||
//! @param theDrawer assigned drawer
|
//! @param theDrawer assigned drawer
|
||||||
Standard_EXPORT void bindSubShapes (AIS_DataMapOfShapeDrawer& theShapeDrawerMap,
|
Standard_EXPORT void bindSubShapes (AIS_DataMapOfShapeDrawer& theShapeDrawerMap,
|
||||||
const TopoDS_Shape& theKeyShape,
|
const TopoDS_Shape& theKeyShape,
|
||||||
const Handle(AIS_ColoredDrawer)& theDrawer);
|
const Handle(AIS_ColoredDrawer)& theDrawer) const;
|
||||||
|
|
||||||
|
//! Add sub-shape to selection considering hidden state (recursively).
|
||||||
|
//! @param theParentDrawer drawer of parent shape
|
||||||
|
//! @param theShapeDrawerMap shapes map
|
||||||
|
//! @param theShape shape to compute sensitive entities
|
||||||
|
//! @param theOwner selectable owner object
|
||||||
|
//! @param theSelection selection to append new sensitive entities
|
||||||
|
//! @param theTypOfSel type of selection
|
||||||
|
//! @param theDeflection linear deflection
|
||||||
|
//! @param theDeflAngle angular deflection
|
||||||
|
Standard_EXPORT void computeSubshapeSelection (const Handle(AIS_ColoredDrawer)& theParentDrawer,
|
||||||
|
const AIS_DataMapOfShapeDrawer& theShapeDrawerMap,
|
||||||
|
const TopoDS_Shape& theShape,
|
||||||
|
const Handle(StdSelect_BRepOwner)& theOwner,
|
||||||
|
const Handle(SelectMgr_Selection)& theSelection,
|
||||||
|
const TopAbs_ShapeEnum theTypOfSel,
|
||||||
|
const Standard_Integer thePriority,
|
||||||
|
const Standard_Real theDeflection,
|
||||||
|
const Standard_Real theDeflAngle);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
|
@@ -321,8 +321,23 @@ Handle(Geom2d_Curve) BRep_Tool::CurveOnSurface(const TopoDS_Edge& E,
|
|||||||
itcr.Next();
|
itcr.Next();
|
||||||
}
|
}
|
||||||
|
|
||||||
// for planar surface and 3d curve try a projection
|
// Curve is not found. Try projection on plane
|
||||||
// modif 21-05-97 : for RectangularTrimmedSurface, try a projection
|
return CurveOnPlane(E, S, L, First, Last);
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : CurveOnPlane
|
||||||
|
//purpose : For planar surface returns projection of the edge on the plane
|
||||||
|
//=======================================================================
|
||||||
|
Handle(Geom2d_Curve) BRep_Tool::CurveOnPlane(const TopoDS_Edge& E,
|
||||||
|
const Handle(Geom_Surface)& S,
|
||||||
|
const TopLoc_Location& L,
|
||||||
|
Standard_Real& First,
|
||||||
|
Standard_Real& Last)
|
||||||
|
{
|
||||||
|
First = Last = 0.;
|
||||||
|
|
||||||
|
// Check if the surface is planar
|
||||||
Handle(Geom_Plane) GP;
|
Handle(Geom_Plane) GP;
|
||||||
Handle(Geom_RectangularTrimmedSurface) GRTS;
|
Handle(Geom_RectangularTrimmedSurface) GRTS;
|
||||||
GRTS = Handle(Geom_RectangularTrimmedSurface)::DownCast(S);
|
GRTS = Handle(Geom_RectangularTrimmedSurface)::DownCast(S);
|
||||||
@@ -330,66 +345,53 @@ Handle(Geom2d_Curve) BRep_Tool::CurveOnSurface(const TopoDS_Edge& E,
|
|||||||
GP = Handle(Geom_Plane)::DownCast(GRTS->BasisSurface());
|
GP = Handle(Geom_Plane)::DownCast(GRTS->BasisSurface());
|
||||||
else
|
else
|
||||||
GP = Handle(Geom_Plane)::DownCast(S);
|
GP = Handle(Geom_Plane)::DownCast(S);
|
||||||
//fin modif du 21-05-97
|
|
||||||
|
|
||||||
if (!GP.IsNull())
|
if (GP.IsNull())
|
||||||
{
|
// not a plane
|
||||||
Handle(GeomAdaptor_HCurve) HC;
|
return nullPCurve;
|
||||||
Handle(GeomAdaptor_HSurface) HS;
|
|
||||||
|
// Check existence of 3d curve in edge
|
||||||
HC = new GeomAdaptor_HCurve();
|
Standard_Real f, l;
|
||||||
HS = new GeomAdaptor_HSurface();
|
TopLoc_Location aCurveLocation;
|
||||||
|
Handle(Geom_Curve) C3D = BRep_Tool::Curve(E, aCurveLocation, f, l);
|
||||||
TopLoc_Location aCurveLocation;
|
|
||||||
|
if (C3D.IsNull())
|
||||||
Standard_Real f, l;// for those who call with (u,u).
|
// no 3d curve
|
||||||
Handle(Geom_Curve) C3d = BRep_Tool::Curve(E, aCurveLocation, f, l);
|
|
||||||
|
|
||||||
if (C3d.IsNull())
|
|
||||||
{
|
|
||||||
First = Last = 0.;
|
|
||||||
return nullPCurve;
|
return nullPCurve;
|
||||||
}
|
|
||||||
|
|
||||||
aCurveLocation = aCurveLocation.Predivided(L);
|
aCurveLocation = aCurveLocation.Predivided(L);
|
||||||
First = f; Last = l; //Range of edge must not be modified
|
First = f; Last = l;
|
||||||
|
|
||||||
|
// Transform curve and update parameters in account of scale factor
|
||||||
if (!aCurveLocation.IsIdentity())
|
if (!aCurveLocation.IsIdentity())
|
||||||
{
|
{
|
||||||
const gp_Trsf& T = aCurveLocation.Transformation();
|
const gp_Trsf& aTrsf = aCurveLocation.Transformation();
|
||||||
Handle(Geom_Geometry) GC3d = C3d->Transformed(T);
|
C3D = Handle(Geom_Curve)::DownCast(C3D->Transformed(aTrsf));
|
||||||
C3d = Handle(Geom_Curve)::DownCast (GC3d);
|
f = C3D->TransformedParameter(f, aTrsf);
|
||||||
f = C3d->TransformedParameter(f, T);
|
l = C3D->TransformedParameter(l, aTrsf);
|
||||||
l = C3d->TransformedParameter(l, T);
|
|
||||||
}
|
}
|
||||||
GeomAdaptor_Surface& GAS = HS->ChangeSurface();
|
|
||||||
GAS.Load(GP);
|
|
||||||
|
|
||||||
|
// Perform projection
|
||||||
Handle(Geom_Curve) ProjOnPlane =
|
Handle(Geom_Curve) ProjOnPlane =
|
||||||
GeomProjLib::ProjectOnPlane(new Geom_TrimmedCurve(C3d,f,l,Standard_True,Standard_False),
|
GeomProjLib::ProjectOnPlane(new Geom_TrimmedCurve(C3D, f, l, Standard_True, Standard_False),
|
||||||
GP,
|
GP,
|
||||||
GP->Position().Direction(),
|
GP->Position().Direction(),
|
||||||
Standard_True);
|
Standard_True);
|
||||||
|
|
||||||
GeomAdaptor_Curve& GAC = HC->ChangeCurve();
|
Handle(GeomAdaptor_HSurface) HS = new GeomAdaptor_HSurface(GP);
|
||||||
GAC.Load(ProjOnPlane);
|
Handle(GeomAdaptor_HCurve) HC = new GeomAdaptor_HCurve(ProjOnPlane);
|
||||||
|
|
||||||
ProjLib_ProjectedCurve Proj(HS, HC);
|
ProjLib_ProjectedCurve Proj(HS, HC);
|
||||||
Handle(Geom2d_Curve) pc = Geom2dAdaptor::MakeCurve(Proj);
|
Handle(Geom2d_Curve) pc = Geom2dAdaptor::MakeCurve(Proj);
|
||||||
|
|
||||||
if (pc->DynamicType() == STANDARD_TYPE(Geom2d_TrimmedCurve)) {
|
if (pc->DynamicType() == STANDARD_TYPE(Geom2d_TrimmedCurve)) {
|
||||||
Handle(Geom2d_TrimmedCurve) TC =
|
Handle(Geom2d_TrimmedCurve) TC = Handle(Geom2d_TrimmedCurve)::DownCast(pc);
|
||||||
Handle(Geom2d_TrimmedCurve)::DownCast (pc);
|
|
||||||
pc = TC->BasisCurve();
|
pc = TC->BasisCurve();
|
||||||
}
|
}
|
||||||
|
|
||||||
return pc;
|
return pc;
|
||||||
}
|
}
|
||||||
|
|
||||||
First = Last = 0.;
|
|
||||||
return nullPCurve;
|
|
||||||
}
|
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : CurveOnSurface
|
//function : CurveOnSurface
|
||||||
//purpose :
|
//purpose :
|
||||||
@@ -438,36 +440,35 @@ void BRep_Tool::CurveOnSurface(const TopoDS_Edge& E,
|
|||||||
Standard_Real& Last,
|
Standard_Real& Last,
|
||||||
const Standard_Integer Index)
|
const Standard_Integer Index)
|
||||||
{
|
{
|
||||||
Standard_Integer i = 0;
|
if (Index < 1)
|
||||||
Standard_Boolean Eisreversed = (E.Orientation() == TopAbs_REVERSED);
|
return;
|
||||||
|
|
||||||
|
Standard_Integer i = 0;
|
||||||
// find the representation
|
// find the representation
|
||||||
const BRep_TEdge* TE = static_cast<const BRep_TEdge*>(E.TShape().get());
|
const BRep_TEdge* TE = static_cast<const BRep_TEdge*>(E.TShape().get());
|
||||||
BRep_ListIteratorOfListOfCurveRepresentation itcr(TE->Curves());
|
BRep_ListIteratorOfListOfCurveRepresentation itcr(TE->Curves());
|
||||||
|
for (; itcr.More(); itcr.Next())
|
||||||
while (itcr.More()) {
|
{
|
||||||
const Handle(BRep_CurveRepresentation)& cr = itcr.Value();
|
const Handle(BRep_CurveRepresentation)& cr = itcr.Value();
|
||||||
if (cr->IsCurveOnSurface()) {
|
if (cr->IsCurveOnSurface())
|
||||||
|
{
|
||||||
const BRep_GCurve* GC = static_cast<const BRep_GCurve*>(cr.get());
|
const BRep_GCurve* GC = static_cast<const BRep_GCurve*>(cr.get());
|
||||||
i++;
|
++i;
|
||||||
if (i > Index) break;
|
// Compare index taking into account the fact that for the curves on
|
||||||
if (i == Index) {
|
// closed surfaces there are two PCurves
|
||||||
// JMB le 21 Mai 1999
|
if (i == Index)
|
||||||
// it is done as in the other CurveOnSurface methods, ie. take into account
|
C = GC->PCurve();
|
||||||
// the orientation in case of cut edges (return PCurve2)
|
else if (GC->IsCurveOnClosedSurface() && (++i == Index))
|
||||||
// otherwise there is a risk to loop curves or to not get the prover one.
|
|
||||||
if (GC->IsCurveOnClosedSurface() && Eisreversed)
|
|
||||||
C = GC->PCurve2();
|
C = GC->PCurve2();
|
||||||
else
|
else
|
||||||
C = GC->PCurve();
|
continue;
|
||||||
|
|
||||||
S = GC->Surface();
|
S = GC->Surface();
|
||||||
L = E.Location() * GC->Location();
|
L = E.Location() * GC->Location();
|
||||||
GC->Range(First, Last);
|
GC->Range(First, Last);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
itcr.Next();
|
|
||||||
}
|
|
||||||
|
|
||||||
C.Nullify();
|
C.Nullify();
|
||||||
S.Nullify();
|
S.Nullify();
|
||||||
|
@@ -104,6 +104,16 @@ public:
|
|||||||
//! <First> and <Last> the parameter range.
|
//! <First> and <Last> the parameter range.
|
||||||
Standard_EXPORT static Handle(Geom2d_Curve) CurveOnSurface (const TopoDS_Edge& E, const Handle(Geom_Surface)& S, const TopLoc_Location& L, Standard_Real& First, Standard_Real& Last);
|
Standard_EXPORT static Handle(Geom2d_Curve) CurveOnSurface (const TopoDS_Edge& E, const Handle(Geom_Surface)& S, const TopLoc_Location& L, Standard_Real& First, Standard_Real& Last);
|
||||||
|
|
||||||
|
//! For the planar surface builds the 2d curve for the edge
|
||||||
|
//! by projection of the edge on plane.
|
||||||
|
//! Returns a NULL handle if the surface is not planar or
|
||||||
|
//! the projection failed.
|
||||||
|
Standard_EXPORT static Handle(Geom2d_Curve) CurveOnPlane (const TopoDS_Edge& E,
|
||||||
|
const Handle(Geom_Surface)& S,
|
||||||
|
const TopLoc_Location& L,
|
||||||
|
Standard_Real& First,
|
||||||
|
Standard_Real& Last);
|
||||||
|
|
||||||
//! Returns in <C>, <S>, <L> a 2d curve, a surface and
|
//! Returns in <C>, <S>, <L> a 2d curve, a surface and
|
||||||
//! a location for the edge <E>. <C> and <S> are null
|
//! a location for the edge <E>. <C> and <S> are null
|
||||||
//! if the edge has no curve on surface. Returns in
|
//! if the edge has no curve on surface. Returns in
|
||||||
|
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
|
|
||||||
#include <BRepOffset.hxx>
|
#include <BRepOffset.hxx>
|
||||||
|
#include <BRep_Tool.hxx>
|
||||||
#include <Geom_BSplineSurface.hxx>
|
#include <Geom_BSplineSurface.hxx>
|
||||||
#include <Geom_ConicalSurface.hxx>
|
#include <Geom_ConicalSurface.hxx>
|
||||||
#include <Geom_CylindricalSurface.hxx>
|
#include <Geom_CylindricalSurface.hxx>
|
||||||
@@ -31,7 +32,15 @@
|
|||||||
#include <gp_Ax3.hxx>
|
#include <gp_Ax3.hxx>
|
||||||
#include <gp_Dir.hxx>
|
#include <gp_Dir.hxx>
|
||||||
#include <gp_Vec.hxx>
|
#include <gp_Vec.hxx>
|
||||||
|
#include <NCollection_LocalArray.hxx>
|
||||||
#include <Precision.hxx>
|
#include <Precision.hxx>
|
||||||
|
#include <TopExp.hxx>
|
||||||
|
#include <TopExp_Explorer.hxx>
|
||||||
|
#include <TopoDS.hxx>
|
||||||
|
#include <TopoDS_Edge.hxx>
|
||||||
|
#include <TopoDS_Face.hxx>
|
||||||
|
#include <TopoDS_ListOfShape.hxx>
|
||||||
|
#include <TopoDS_Vertex.hxx>
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : Surface
|
//function : Surface
|
||||||
@@ -39,7 +48,8 @@
|
|||||||
//=======================================================================
|
//=======================================================================
|
||||||
Handle(Geom_Surface) BRepOffset::Surface(const Handle(Geom_Surface)& Surface,
|
Handle(Geom_Surface) BRepOffset::Surface(const Handle(Geom_Surface)& Surface,
|
||||||
const Standard_Real Offset,
|
const Standard_Real Offset,
|
||||||
BRepOffset_Status& theStatus)
|
BRepOffset_Status& theStatus,
|
||||||
|
Standard_Boolean allowC0)
|
||||||
{
|
{
|
||||||
Standard_Real Tol = Precision::Confusion();
|
Standard_Real Tol = Precision::Confusion();
|
||||||
|
|
||||||
@@ -152,17 +162,158 @@ Handle(Geom_Surface) BRepOffset::Surface(const Handle(Geom_Surface)& Surface,
|
|||||||
Handle(Geom_RectangularTrimmedSurface)::DownCast(Surface);
|
Handle(Geom_RectangularTrimmedSurface)::DownCast(Surface);
|
||||||
Standard_Real U1,U2,V1,V2;
|
Standard_Real U1,U2,V1,V2;
|
||||||
S->Bounds(U1,U2,V1,V2);
|
S->Bounds(U1,U2,V1,V2);
|
||||||
Handle(Geom_Surface) Off = BRepOffset::Surface (S->BasisSurface(), Offset, theStatus);
|
Handle(Geom_Surface) Off = BRepOffset::Surface (S->BasisSurface(), Offset, theStatus, allowC0);
|
||||||
Result = new Geom_RectangularTrimmedSurface (Off,U1,U2,V1,V2);
|
Result = new Geom_RectangularTrimmedSurface (Off,U1,U2,V1,V2);
|
||||||
}
|
}
|
||||||
else if (TheType == STANDARD_TYPE(Geom_OffsetSurface)) {
|
else if (TheType == STANDARD_TYPE(Geom_OffsetSurface)) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( Result.IsNull()) {
|
if ( Result.IsNull()) {
|
||||||
Result = new Geom_OffsetSurface( Surface, Offset);
|
Result = new Geom_OffsetSurface( Surface, Offset, allowC0);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : CollapseSingularities
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Handle(Geom_Surface) BRepOffset::CollapseSingularities (const Handle(Geom_Surface)& theSurface,
|
||||||
|
const TopoDS_Face& theFace,
|
||||||
|
Standard_Real thePrecision)
|
||||||
|
{
|
||||||
|
// check surface type to see if it can be processed
|
||||||
|
Handle(Standard_Type) aType = theSurface->DynamicType();
|
||||||
|
if (aType != STANDARD_TYPE(Geom_BSplineSurface))
|
||||||
|
{
|
||||||
|
// for the moment, only bspline surfaces are treated;
|
||||||
|
// in the future, bezier surfaces and surfaces of revolution can be also handled
|
||||||
|
return theSurface;
|
||||||
|
}
|
||||||
|
|
||||||
|
// find singularities (vertices of degenerated edges)
|
||||||
|
NCollection_List<gp_Pnt> aDegenPnt;
|
||||||
|
NCollection_List<Standard_Real> aDegenTol;
|
||||||
|
for (TopExp_Explorer anExp (theFace, TopAbs_EDGE); anExp.More(); anExp.Next())
|
||||||
|
{
|
||||||
|
TopoDS_Edge anEdge = TopoDS::Edge (anExp.Current());
|
||||||
|
if (! BRep_Tool::Degenerated (anEdge))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
TopoDS_Vertex aV1, aV2;
|
||||||
|
TopExp::Vertices (anEdge, aV1, aV2);
|
||||||
|
if (! aV1.IsSame (aV2))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
aDegenPnt.Append (BRep_Tool::Pnt (aV1));
|
||||||
|
aDegenTol.Append (BRep_Tool::Tolerance (aV1));
|
||||||
|
}
|
||||||
|
|
||||||
|
// iterate by sides of the surface
|
||||||
|
if (aType == STANDARD_TYPE(Geom_BSplineSurface))
|
||||||
|
{
|
||||||
|
Handle(Geom_BSplineSurface) aBSpline = Handle(Geom_BSplineSurface)::DownCast (theSurface);
|
||||||
|
const TColgp_Array2OfPnt& aPoles = aBSpline->Poles();
|
||||||
|
|
||||||
|
Handle(Geom_BSplineSurface) aCopy;
|
||||||
|
|
||||||
|
// iterate by sides: {U=0; V=0; U=1; V=1}
|
||||||
|
Standard_Integer RowStart[4] = {aPoles.LowerRow(), aPoles.LowerRow(), aPoles.UpperRow(), aPoles.LowerRow()};
|
||||||
|
Standard_Integer ColStart[4] = {aPoles.LowerCol(), aPoles.LowerCol(), aPoles.LowerCol(), aPoles.UpperCol()};
|
||||||
|
Standard_Integer RowStep[4] = {0, 1, 0, 1};
|
||||||
|
Standard_Integer ColStep[4] = {1, 0, 1, 0};
|
||||||
|
Standard_Integer NbSteps[4] = {aPoles.RowLength(), aPoles.ColLength(), aPoles.RowLength(), aPoles.ColLength()};
|
||||||
|
for (Standard_Integer iSide = 0; iSide < 4; iSide++)
|
||||||
|
{
|
||||||
|
// compute center of gravity of side poles
|
||||||
|
gp_XYZ aSum;
|
||||||
|
for (int iPole = 0; iPole < NbSteps[iSide]; iPole++)
|
||||||
|
{
|
||||||
|
aSum += aPoles (RowStart[iSide] + iPole * RowStep[iSide], ColStart[iSide] + iPole * ColStep[iSide]).XYZ();
|
||||||
|
}
|
||||||
|
gp_Pnt aCenter (aSum / NbSteps[iSide]);
|
||||||
|
|
||||||
|
// determine if all poles of the side fit into:
|
||||||
|
Standard_Boolean isCollapsed = Standard_True; // aCenter precisely (with gp::Resolution())
|
||||||
|
Standard_Boolean isSingular = Standard_True; // aCenter with thePrecision
|
||||||
|
NCollection_LocalArray<Standard_Boolean,4> isDegenerated (aDegenPnt.Extent()); // degenerated vertex
|
||||||
|
for (size_t iDegen = 0; iDegen < isDegenerated.Size(); ++iDegen) isDegenerated[iDegen] = Standard_True;
|
||||||
|
for (int iPole = 0; iPole < NbSteps[iSide]; iPole++)
|
||||||
|
{
|
||||||
|
const gp_Pnt& aPole = aPoles (RowStart[iSide] + iPole * RowStep[iSide], ColStart[iSide] + iPole * ColStep[iSide]);
|
||||||
|
|
||||||
|
// distance from CG
|
||||||
|
Standard_Real aDistCG = aCenter.Distance (aPole);
|
||||||
|
if (aDistCG > gp::Resolution())
|
||||||
|
isCollapsed = Standard_False;
|
||||||
|
if (aDistCG > thePrecision)
|
||||||
|
isSingular = Standard_False;
|
||||||
|
|
||||||
|
// distances from degenerated points
|
||||||
|
NCollection_List<gp_Pnt>::Iterator aDegPntIt (aDegenPnt);
|
||||||
|
NCollection_List<Standard_Real>::Iterator aDegTolIt(aDegenTol);
|
||||||
|
for (size_t iDegen = 0; iDegen < isDegenerated.Size(); aDegPntIt.Next(), aDegTolIt.Next(), ++iDegen)
|
||||||
|
{
|
||||||
|
if (isDegenerated[iDegen] && aDegPntIt.Value().Distance (aPole) >= aDegTolIt.Value())
|
||||||
|
{
|
||||||
|
isDegenerated[iDegen] = Standard_False;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (isCollapsed)
|
||||||
|
{
|
||||||
|
continue; // already Ok, nothing to be done
|
||||||
|
}
|
||||||
|
|
||||||
|
// decide to collapse the side: either if it is singular with thePrecision,
|
||||||
|
// or if it fits into one (and only one) degenerated point
|
||||||
|
if (! isSingular)
|
||||||
|
{
|
||||||
|
Standard_Integer aNbFit = 0;
|
||||||
|
NCollection_List<gp_Pnt>::Iterator aDegPntIt (aDegenPnt);
|
||||||
|
NCollection_List<Standard_Real>::Iterator aDegTolIt(aDegenTol);
|
||||||
|
for (size_t iDegen = 0; iDegen < isDegenerated.Size(); ++iDegen)
|
||||||
|
{
|
||||||
|
if (isDegenerated[iDegen])
|
||||||
|
{
|
||||||
|
// remove degenerated point as soon as it fits at least one side, to prevent total collapse
|
||||||
|
aDegenPnt.Remove (aDegPntIt);
|
||||||
|
aDegenTol.Remove (aDegTolIt);
|
||||||
|
aNbFit++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
aDegPntIt.Next();
|
||||||
|
aDegTolIt.Next();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// if side fits more than one degenerated vertex, do not collapse it
|
||||||
|
// to be on the safe side
|
||||||
|
isSingular = (aNbFit == 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// do collapse
|
||||||
|
if (isSingular)
|
||||||
|
{
|
||||||
|
if (aCopy.IsNull())
|
||||||
|
{
|
||||||
|
aCopy = Handle(Geom_BSplineSurface)::DownCast (theSurface->Copy());
|
||||||
|
}
|
||||||
|
for (int iPole = 0; iPole < NbSteps[iSide]; iPole++)
|
||||||
|
{
|
||||||
|
aCopy->SetPole (RowStart[iSide] + iPole * RowStep[iSide], ColStart[iSide] + iPole * ColStep[iSide], aCenter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! aCopy.IsNull())
|
||||||
|
return aCopy;
|
||||||
|
}
|
||||||
|
|
||||||
|
return theSurface;
|
||||||
|
}
|
||||||
|
@@ -21,27 +21,17 @@
|
|||||||
#include <Standard_DefineAlloc.hxx>
|
#include <Standard_DefineAlloc.hxx>
|
||||||
#include <Standard_Handle.hxx>
|
#include <Standard_Handle.hxx>
|
||||||
|
|
||||||
#include <Standard_Real.hxx>
|
|
||||||
#include <BRepOffset_Status.hxx>
|
#include <BRepOffset_Status.hxx>
|
||||||
|
|
||||||
class Geom_Surface;
|
class Geom_Surface;
|
||||||
class BRepOffset_MakeOffset;
|
class TopoDS_Face;
|
||||||
class BRepOffset_Inter3d;
|
|
||||||
class BRepOffset_Inter2d;
|
|
||||||
class BRepOffset_Offset;
|
|
||||||
class BRepOffset_Analyse;
|
|
||||||
class BRepOffset_MakeLoops;
|
|
||||||
class BRepOffset_Tool;
|
|
||||||
class BRepOffset_Interval;
|
|
||||||
|
|
||||||
|
|
||||||
|
//! Auxiliary tools for offset algorithms
|
||||||
|
|
||||||
class BRepOffset
|
class BRepOffset
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
DEFINE_STANDARD_ALLOC
|
|
||||||
|
|
||||||
|
|
||||||
//! returns the Offset surface computed from the
|
//! returns the Offset surface computed from the
|
||||||
//! surface <Surface> at an OffsetDistance <Offset>.
|
//! surface <Surface> at an OffsetDistance <Offset>.
|
||||||
//!
|
//!
|
||||||
@@ -50,37 +40,29 @@ public:
|
|||||||
//!
|
//!
|
||||||
//! If no particular case is detected, the returned
|
//! If no particular case is detected, the returned
|
||||||
//! surface will have the Type Geom_OffsetSurface.
|
//! surface will have the Type Geom_OffsetSurface.
|
||||||
Standard_EXPORT static Handle(Geom_Surface) Surface (const Handle(Geom_Surface)& Surface, const Standard_Real Offset, BRepOffset_Status& theStatus);
|
//! Parameter allowC0 is then passed as last argument to
|
||||||
|
//! constructor of Geom_OffsetSurface.
|
||||||
|
Standard_EXPORT static Handle(Geom_Surface) Surface (const Handle(Geom_Surface)& Surface,
|
||||||
|
const Standard_Real Offset,
|
||||||
|
BRepOffset_Status& theStatus,
|
||||||
|
Standard_Boolean allowC0 = Standard_False);
|
||||||
|
|
||||||
|
//! Preprocess surface to be offset (bspline, bezier, or revolution based on
|
||||||
|
//! bspline or bezier curve), by collapsing each singular side to single point.
|
||||||
|
//!
|
||||||
protected:
|
//! This is to avoid possible flipping of normal at the singularity
|
||||||
|
//! of the surface due to non-zero distance between the poles that
|
||||||
|
//! logically should be in one point (singularity).
|
||||||
|
//!
|
||||||
|
//! The (parametric) side of the surface is considered to be singularity if face
|
||||||
|
//! has degenerated edge whose vertex encompasses (by its tolerance) all points on that side,
|
||||||
private:
|
//! or if all poles defining that side fit into sphere with radius thePrecision.
|
||||||
|
//!
|
||||||
|
//! Returns either original surface or its modified copy (if some poles have been moved).
|
||||||
|
Standard_EXPORT static Handle(Geom_Surface) CollapseSingularities (const Handle(Geom_Surface)& theSurface,
|
||||||
|
const TopoDS_Face& theFace,
|
||||||
friend class BRepOffset_MakeOffset;
|
Standard_Real thePrecision);
|
||||||
friend class BRepOffset_Inter3d;
|
|
||||||
friend class BRepOffset_Inter2d;
|
|
||||||
friend class BRepOffset_Offset;
|
|
||||||
friend class BRepOffset_Analyse;
|
|
||||||
friend class BRepOffset_MakeLoops;
|
|
||||||
friend class BRepOffset_Tool;
|
|
||||||
friend class BRepOffset_Interval;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif // _BRepOffset_HeaderFile
|
#endif // _BRepOffset_HeaderFile
|
||||||
|
@@ -50,7 +50,9 @@
|
|||||||
//purpose : Constructor
|
//purpose : Constructor
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
BRepOffset_MakeSimpleOffset::BRepOffset_MakeSimpleOffset()
|
BRepOffset_MakeSimpleOffset::BRepOffset_MakeSimpleOffset()
|
||||||
: myIsBuildSolid(Standard_False),
|
: myOffsetValue(0.),
|
||||||
|
myTolerance(Precision::Confusion()),
|
||||||
|
myIsBuildSolid(Standard_False),
|
||||||
myMaxAngle(0.0),
|
myMaxAngle(0.0),
|
||||||
myError(BRepOffsetSimple_OK),
|
myError(BRepOffsetSimple_OK),
|
||||||
myIsDone(Standard_False)
|
myIsDone(Standard_False)
|
||||||
@@ -66,6 +68,7 @@ BRepOffset_MakeSimpleOffset::BRepOffset_MakeSimpleOffset(const TopoDS_Shape& the
|
|||||||
const Standard_Real theOffsetValue)
|
const Standard_Real theOffsetValue)
|
||||||
: myInputShape(theInputShape),
|
: myInputShape(theInputShape),
|
||||||
myOffsetValue(theOffsetValue),
|
myOffsetValue(theOffsetValue),
|
||||||
|
myTolerance(Precision::Confusion()),
|
||||||
myIsBuildSolid(Standard_False),
|
myIsBuildSolid(Standard_False),
|
||||||
myMaxAngle(0.0),
|
myMaxAngle(0.0),
|
||||||
myError(BRepOffsetSimple_OK),
|
myError(BRepOffsetSimple_OK),
|
||||||
@@ -177,7 +180,7 @@ void BRepOffset_MakeSimpleOffset::Perform()
|
|||||||
ComputeMaxAngle();
|
ComputeMaxAngle();
|
||||||
|
|
||||||
myBuilder.Init(myInputShape);
|
myBuilder.Init(myInputShape);
|
||||||
Handle(BRepOffset_SimpleOffset) aMapper = new BRepOffset_SimpleOffset(myInputShape, myOffsetValue);
|
Handle(BRepOffset_SimpleOffset) aMapper = new BRepOffset_SimpleOffset(myInputShape, myOffsetValue, myTolerance);
|
||||||
myBuilder.Perform(aMapper);
|
myBuilder.Perform(aMapper);
|
||||||
|
|
||||||
if (!myBuilder.IsDone())
|
if (!myBuilder.IsDone())
|
||||||
|
@@ -95,6 +95,12 @@ public:
|
|||||||
//! Sets offset value.
|
//! Sets offset value.
|
||||||
void SetOffsetValue(const Standard_Real theOffsetValue) { myOffsetValue = theOffsetValue; }
|
void SetOffsetValue(const Standard_Real theOffsetValue) { myOffsetValue = theOffsetValue; }
|
||||||
|
|
||||||
|
//! Gets tolerance (used for handling singularities).
|
||||||
|
Standard_Real GetTolerance() const { return myTolerance; }
|
||||||
|
|
||||||
|
//! Sets tolerance (used for handling singularities).
|
||||||
|
void SetTolerance (const Standard_Real theValue) { myTolerance = theValue; }
|
||||||
|
|
||||||
//! Gets done state.
|
//! Gets done state.
|
||||||
Standard_Boolean IsDone() const { return myIsDone; }
|
Standard_Boolean IsDone() const { return myIsDone; }
|
||||||
|
|
||||||
@@ -134,6 +140,9 @@ private:
|
|||||||
//! Offset value.
|
//! Offset value.
|
||||||
Standard_Real myOffsetValue;
|
Standard_Real myOffsetValue;
|
||||||
|
|
||||||
|
//! Tolerance (for singularities)
|
||||||
|
Standard_Real myTolerance;
|
||||||
|
|
||||||
//! Solid building flag. True means solid construction.
|
//! Solid building flag. True means solid construction.
|
||||||
Standard_Boolean myIsBuildSolid;
|
Standard_Boolean myIsBuildSolid;
|
||||||
|
|
||||||
|
@@ -21,6 +21,7 @@
|
|||||||
#include <BRepBuilderAPI_MakeEdge.hxx>
|
#include <BRepBuilderAPI_MakeEdge.hxx>
|
||||||
#include <BRepLib.hxx>
|
#include <BRepLib.hxx>
|
||||||
#include <BRep_Tool.hxx>
|
#include <BRep_Tool.hxx>
|
||||||
|
#include <BRepOffset.hxx>
|
||||||
#include <Geom_OffsetSurface.hxx>
|
#include <Geom_OffsetSurface.hxx>
|
||||||
#include <GeomAdaptor_Curve.hxx>
|
#include <GeomAdaptor_Curve.hxx>
|
||||||
#include <Geom2dAdaptor_HCurve.hxx>
|
#include <Geom2dAdaptor_HCurve.hxx>
|
||||||
@@ -42,8 +43,10 @@ static const Standard_Integer NCONTROL=22;
|
|||||||
//purpose : Constructor
|
//purpose : Constructor
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
BRepOffset_SimpleOffset::BRepOffset_SimpleOffset(const TopoDS_Shape& theInputShape,
|
BRepOffset_SimpleOffset::BRepOffset_SimpleOffset(const TopoDS_Shape& theInputShape,
|
||||||
const Standard_Real theOffsetValue)
|
const Standard_Real theOffsetValue,
|
||||||
: myOffsetValue(theOffsetValue)
|
const Standard_Real theTolerance)
|
||||||
|
: myOffsetValue(theOffsetValue),
|
||||||
|
myTolerance(theTolerance)
|
||||||
{
|
{
|
||||||
FillOffsetData(theInputShape);
|
FillOffsetData(theInputShape);
|
||||||
}
|
}
|
||||||
@@ -223,6 +226,7 @@ void BRepOffset_SimpleOffset::FillFaceData(const TopoDS_Face& theFace)
|
|||||||
// Any existing transformation is applied to the surface.
|
// Any existing transformation is applied to the surface.
|
||||||
// New face will have null transformation.
|
// New face will have null transformation.
|
||||||
Handle(Geom_Surface) aS = BRep_Tool::Surface(theFace);
|
Handle(Geom_Surface) aS = BRep_Tool::Surface(theFace);
|
||||||
|
aS = BRepOffset::CollapseSingularities (aS, theFace, myTolerance);
|
||||||
|
|
||||||
// Take into account face orientation.
|
// Take into account face orientation.
|
||||||
Standard_Real aMult = 1.0;
|
Standard_Real aMult = 1.0;
|
||||||
|
@@ -46,8 +46,12 @@ public:
|
|||||||
DEFINE_STANDARD_RTTI_INLINE(BRepOffset_SimpleOffset, BRepTools_Modification)
|
DEFINE_STANDARD_RTTI_INLINE(BRepOffset_SimpleOffset, BRepTools_Modification)
|
||||||
|
|
||||||
//! Constructor.
|
//! Constructor.
|
||||||
|
//! @param theInputShape shape to be offset
|
||||||
|
//! @param theOffsetValue offset distance (signed)
|
||||||
|
//! @param theTolerance tolerance for handling singular points
|
||||||
Standard_EXPORT BRepOffset_SimpleOffset(const TopoDS_Shape& theInputShape,
|
Standard_EXPORT BRepOffset_SimpleOffset(const TopoDS_Shape& theInputShape,
|
||||||
const Standard_Real theOffsetValue);
|
const Standard_Real theOffsetValue,
|
||||||
|
const Standard_Real theTolerance);
|
||||||
|
|
||||||
//! Returns Standard_True if the face <F> has been
|
//! Returns Standard_True if the face <F> has been
|
||||||
//! modified. In this case, <S> is the new geometric
|
//! modified. In this case, <S> is the new geometric
|
||||||
@@ -178,6 +182,9 @@ private:
|
|||||||
|
|
||||||
//! Offset value.
|
//! Offset value.
|
||||||
Standard_Real myOffsetValue;
|
Standard_Real myOffsetValue;
|
||||||
|
|
||||||
|
//! Tolerance.
|
||||||
|
Standard_Real myTolerance;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // _BRepOffset_SimpleOffset_HeaderFile
|
#endif // _BRepOffset_SimpleOffset_HeaderFile
|
||||||
|
@@ -2247,9 +2247,9 @@ static Standard_Integer ComputeSimpleOffset(Draw_Interpretor& theCommands,
|
|||||||
Standard_Integer narg,
|
Standard_Integer narg,
|
||||||
const char** a)
|
const char** a)
|
||||||
{
|
{
|
||||||
if (narg != 4 && narg != 5)
|
if (narg < 4)
|
||||||
{
|
{
|
||||||
theCommands << "offsetshapesimple result shape offsetvalue [solid]\n";
|
theCommands << "offsetshapesimple result shape offsetvalue [solid] [tolerance=1e-7]\n";
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2267,12 +2267,13 @@ static Standard_Integer ComputeSimpleOffset(Draw_Interpretor& theCommands,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
BRepOffset_MakeSimpleOffset aMaker(aShape, anOffsetValue);
|
Standard_Boolean makeSolid = (narg > 4 && !strcasecmp(a[4],"solid"));
|
||||||
if (narg == 5 && !strcasecmp(a[4],"solid") )
|
int iTolArg = (makeSolid ? 5 : 4);
|
||||||
{
|
Standard_Real aTol = (narg > iTolArg ? Draw::Atof(a[iTolArg]) : Precision::Confusion());
|
||||||
aMaker.SetBuildSolidFlag(Standard_True);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
BRepOffset_MakeSimpleOffset aMaker(aShape, anOffsetValue);
|
||||||
|
aMaker.SetTolerance (aTol);
|
||||||
|
aMaker.SetBuildSolidFlag(makeSolid);
|
||||||
aMaker.Perform();
|
aMaker.Perform();
|
||||||
|
|
||||||
if (!aMaker.IsDone())
|
if (!aMaker.IsDone())
|
||||||
@@ -2432,6 +2433,6 @@ void BRepTest::FeatureCommands (Draw_Interpretor& theCommands)
|
|||||||
__FILE__,BOSS);
|
__FILE__,BOSS);
|
||||||
|
|
||||||
theCommands.Add("offsetshapesimple",
|
theCommands.Add("offsetshapesimple",
|
||||||
"offsetshapesimple result shape offsetvalue [solid]",
|
"offsetshapesimple result shape offsetvalue [solid] [tolerance=1e-7]",
|
||||||
__FILE__, ComputeSimpleOffset);
|
__FILE__, ComputeSimpleOffset);
|
||||||
}
|
}
|
||||||
|
@@ -72,7 +72,6 @@
|
|||||||
|
|
||||||
#include <BRepTools.hxx>
|
#include <BRepTools.hxx>
|
||||||
#include <BRepIntCurveSurface_Inter.hxx>
|
#include <BRepIntCurveSurface_Inter.hxx>
|
||||||
#include <BRepOffset.hxx>
|
|
||||||
#include <BRepOffset_MakeOffset.hxx>
|
#include <BRepOffset_MakeOffset.hxx>
|
||||||
#include <BRepClass3d_SolidClassifier.hxx>
|
#include <BRepClass3d_SolidClassifier.hxx>
|
||||||
#include <GeomAdaptor_Curve.hxx>
|
#include <GeomAdaptor_Curve.hxx>
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
#include <BinMDF_ADriverTable.hxx>
|
#include <BinMDF_ADriverTable.hxx>
|
||||||
#include <BinMNaming_NamedShapeDriver.hxx>
|
#include <BinMNaming_NamedShapeDriver.hxx>
|
||||||
#include <BinMXCAFDoc.hxx>
|
#include <BinMXCAFDoc.hxx>
|
||||||
|
#include <BinMXCAFDoc_AssemblyItemRefDriver.hxx>
|
||||||
#include <BinMXCAFDoc_AreaDriver.hxx>
|
#include <BinMXCAFDoc_AreaDriver.hxx>
|
||||||
#include <BinMXCAFDoc_CentroidDriver.hxx>
|
#include <BinMXCAFDoc_CentroidDriver.hxx>
|
||||||
#include <BinMXCAFDoc_ColorDriver.hxx>
|
#include <BinMXCAFDoc_ColorDriver.hxx>
|
||||||
@@ -32,6 +33,11 @@
|
|||||||
#include <BinMXCAFDoc_LocationDriver.hxx>
|
#include <BinMXCAFDoc_LocationDriver.hxx>
|
||||||
#include <BinMXCAFDoc_MaterialDriver.hxx>
|
#include <BinMXCAFDoc_MaterialDriver.hxx>
|
||||||
#include <BinMXCAFDoc_MaterialToolDriver.hxx>
|
#include <BinMXCAFDoc_MaterialToolDriver.hxx>
|
||||||
|
#include <BinMXCAFDoc_NoteDriver.hxx>
|
||||||
|
#include <BinMXCAFDoc_NoteBalloonDriver.hxx>
|
||||||
|
#include <BinMXCAFDoc_NoteBinDataDriver.hxx>
|
||||||
|
#include <BinMXCAFDoc_NoteCommentDriver.hxx>
|
||||||
|
#include <BinMXCAFDoc_NotesToolDriver.hxx>
|
||||||
#include <BinMXCAFDoc_ShapeToolDriver.hxx>
|
#include <BinMXCAFDoc_ShapeToolDriver.hxx>
|
||||||
#include <BinMXCAFDoc_ViewDriver.hxx>
|
#include <BinMXCAFDoc_ViewDriver.hxx>
|
||||||
#include <BinMXCAFDoc_ViewToolDriver.hxx>
|
#include <BinMXCAFDoc_ViewToolDriver.hxx>
|
||||||
@@ -44,7 +50,8 @@
|
|||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
void BinMXCAFDoc::AddDrivers(const Handle(BinMDF_ADriverTable)& theDriverTable,
|
void BinMXCAFDoc::AddDrivers(const Handle(BinMDF_ADriverTable)& theDriverTable,
|
||||||
const Handle(CDM_MessageDriver)& theMsgDrv) {
|
const Handle(CDM_MessageDriver)& theMsgDrv)
|
||||||
|
{
|
||||||
theDriverTable->AddDriver( new BinMXCAFDoc_AreaDriver (theMsgDrv));
|
theDriverTable->AddDriver( new BinMXCAFDoc_AreaDriver (theMsgDrv));
|
||||||
theDriverTable->AddDriver( new BinMXCAFDoc_CentroidDriver (theMsgDrv));
|
theDriverTable->AddDriver( new BinMXCAFDoc_CentroidDriver (theMsgDrv));
|
||||||
theDriverTable->AddDriver( new BinMXCAFDoc_ColorDriver (theMsgDrv));
|
theDriverTable->AddDriver( new BinMXCAFDoc_ColorDriver (theMsgDrv));
|
||||||
@@ -63,12 +70,16 @@ void BinMXCAFDoc::AddDrivers(const Handle(BinMDF_ADriverTable)& theDriverTable,
|
|||||||
}
|
}
|
||||||
|
|
||||||
theDriverTable->AddDriver( aLocationDriver);
|
theDriverTable->AddDriver( aLocationDriver);
|
||||||
|
theDriverTable->AddDriver( new BinMXCAFDoc_AssemblyItemRefDriver(theMsgDrv));
|
||||||
theDriverTable->AddDriver( new BinMXCAFDoc_VolumeDriver (theMsgDrv));
|
theDriverTable->AddDriver( new BinMXCAFDoc_VolumeDriver (theMsgDrv));
|
||||||
theDriverTable->AddDriver( new BinMXCAFDoc_DatumDriver (theMsgDrv));
|
theDriverTable->AddDriver( new BinMXCAFDoc_DatumDriver (theMsgDrv));
|
||||||
theDriverTable->AddDriver( new BinMXCAFDoc_GeomToleranceDriver (theMsgDrv));
|
theDriverTable->AddDriver( new BinMXCAFDoc_GeomToleranceDriver (theMsgDrv));
|
||||||
theDriverTable->AddDriver( new BinMXCAFDoc_DimensionDriver (theMsgDrv));
|
theDriverTable->AddDriver( new BinMXCAFDoc_DimensionDriver (theMsgDrv));
|
||||||
theDriverTable->AddDriver( new BinMXCAFDoc_DimTolDriver (theMsgDrv));
|
theDriverTable->AddDriver( new BinMXCAFDoc_DimTolDriver (theMsgDrv));
|
||||||
theDriverTable->AddDriver( new BinMXCAFDoc_MaterialDriver (theMsgDrv));
|
theDriverTable->AddDriver( new BinMXCAFDoc_MaterialDriver (theMsgDrv));
|
||||||
|
theDriverTable->AddDriver( new BinMXCAFDoc_NoteBalloonDriver (theMsgDrv));
|
||||||
|
theDriverTable->AddDriver( new BinMXCAFDoc_NoteBinDataDriver (theMsgDrv));
|
||||||
|
theDriverTable->AddDriver( new BinMXCAFDoc_NoteCommentDriver (theMsgDrv));
|
||||||
theDriverTable->AddDriver( new BinMXCAFDoc_ViewDriver (theMsgDrv));
|
theDriverTable->AddDriver( new BinMXCAFDoc_ViewDriver (theMsgDrv));
|
||||||
|
|
||||||
theDriverTable->AddDriver( new BinMXCAFDoc_ColorToolDriver (theMsgDrv));
|
theDriverTable->AddDriver( new BinMXCAFDoc_ColorToolDriver (theMsgDrv));
|
||||||
@@ -77,5 +88,6 @@ void BinMXCAFDoc::AddDrivers(const Handle(BinMDF_ADriverTable)& theDriverTable,
|
|||||||
theDriverTable->AddDriver( new BinMXCAFDoc_ShapeToolDriver (theMsgDrv));
|
theDriverTable->AddDriver( new BinMXCAFDoc_ShapeToolDriver (theMsgDrv));
|
||||||
theDriverTable->AddDriver( new BinMXCAFDoc_DimTolToolDriver (theMsgDrv));
|
theDriverTable->AddDriver( new BinMXCAFDoc_DimTolToolDriver (theMsgDrv));
|
||||||
theDriverTable->AddDriver( new BinMXCAFDoc_MaterialToolDriver(theMsgDrv));
|
theDriverTable->AddDriver( new BinMXCAFDoc_MaterialToolDriver(theMsgDrv));
|
||||||
|
theDriverTable->AddDriver( new BinMXCAFDoc_NotesToolDriver (theMsgDrv));
|
||||||
theDriverTable->AddDriver( new BinMXCAFDoc_ViewToolDriver (theMsgDrv));
|
theDriverTable->AddDriver( new BinMXCAFDoc_ViewToolDriver (theMsgDrv));
|
||||||
}
|
}
|
||||||
|
111
src/BinMXCAFDoc/BinMXCAFDoc_AssemblyItemRefDriver.cxx
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
// Created on: 2017-02-16
|
||||||
|
// Created by: Eugeny NIKONOV
|
||||||
|
// Copyright (c) 2005-2017 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#include <BinObjMgt_Persistent.hxx>
|
||||||
|
#include <CDM_MessageDriver.hxx>
|
||||||
|
#include <Standard_Type.hxx>
|
||||||
|
#include <TDF_Attribute.hxx>
|
||||||
|
#include <BinMXCAFDoc_AssemblyItemRefDriver.hxx>
|
||||||
|
#include <XCAFDoc_AssemblyItemRef.hxx>
|
||||||
|
|
||||||
|
IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_AssemblyItemRefDriver, BinMDF_ADriver)
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function :
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
BinMXCAFDoc_AssemblyItemRefDriver::BinMXCAFDoc_AssemblyItemRefDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
|
||||||
|
: BinMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_AssemblyItemRef)->Name())
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function :
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Handle(TDF_Attribute) BinMXCAFDoc_AssemblyItemRefDriver::NewEmpty() const
|
||||||
|
{
|
||||||
|
return new XCAFDoc_AssemblyItemRef();
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function :
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean BinMXCAFDoc_AssemblyItemRefDriver::Paste(const BinObjMgt_Persistent& theSource,
|
||||||
|
const Handle(TDF_Attribute)& theTarget,
|
||||||
|
BinObjMgt_RRelocationTable& /*theRelocTable*/) const
|
||||||
|
{
|
||||||
|
Handle(XCAFDoc_AssemblyItemRef) aThis = Handle(XCAFDoc_AssemblyItemRef)::DownCast(theTarget);
|
||||||
|
if (aThis.IsNull())
|
||||||
|
return Standard_False;
|
||||||
|
|
||||||
|
TCollection_AsciiString aPathStr;
|
||||||
|
if (!(theSource >> aPathStr))
|
||||||
|
return Standard_False;
|
||||||
|
|
||||||
|
aThis->SetItem(aPathStr);
|
||||||
|
|
||||||
|
Standard_Integer anExtraRef = 0;
|
||||||
|
if (!(theSource >> anExtraRef))
|
||||||
|
return Standard_False;
|
||||||
|
|
||||||
|
if (anExtraRef == 1)
|
||||||
|
{
|
||||||
|
Standard_GUID aGUID;
|
||||||
|
if (!(theSource >> aGUID))
|
||||||
|
return Standard_False;
|
||||||
|
|
||||||
|
aThis->SetGUID(aGUID);
|
||||||
|
}
|
||||||
|
else if (anExtraRef == 2)
|
||||||
|
{
|
||||||
|
Standard_Integer aSubshapeIndex;
|
||||||
|
if (!(theSource >> aSubshapeIndex))
|
||||||
|
return Standard_False;
|
||||||
|
|
||||||
|
aThis->SetSubshapeIndex(aSubshapeIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function :
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
void BinMXCAFDoc_AssemblyItemRefDriver::Paste(const Handle(TDF_Attribute)& theSource,
|
||||||
|
BinObjMgt_Persistent& theTarget,
|
||||||
|
BinObjMgt_SRelocationTable& /*theRelocTable*/) const
|
||||||
|
{
|
||||||
|
Handle(XCAFDoc_AssemblyItemRef) aThis = Handle(XCAFDoc_AssemblyItemRef)::DownCast(theSource);
|
||||||
|
if (!aThis.IsNull())
|
||||||
|
{
|
||||||
|
theTarget << aThis->GetItem().ToString();
|
||||||
|
if (aThis->IsGUID())
|
||||||
|
{
|
||||||
|
theTarget << Standard_Integer(1);
|
||||||
|
theTarget << aThis->GetGUID();
|
||||||
|
}
|
||||||
|
else if (aThis->IsSubshapeIndex())
|
||||||
|
{
|
||||||
|
theTarget << Standard_Integer(2);
|
||||||
|
theTarget << aThis->GetSubshapeIndex();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
theTarget << Standard_Integer(0);
|
||||||
|
}
|
||||||
|
}
|
54
src/BinMXCAFDoc/BinMXCAFDoc_AssemblyItemRefDriver.hxx
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
// Created on: 2017-02-16
|
||||||
|
// Created by: Sergey NIKONOV
|
||||||
|
// Copyright (c) 2005-2017 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#ifndef _BinMXCAFDoc_AssemblyItemRefDriver_HeaderFile
|
||||||
|
#define _BinMXCAFDoc_AssemblyItemRefDriver_HeaderFile
|
||||||
|
|
||||||
|
#include <Standard.hxx>
|
||||||
|
#include <Standard_Type.hxx>
|
||||||
|
|
||||||
|
#include <BinMDF_ADriver.hxx>
|
||||||
|
#include <Standard_Boolean.hxx>
|
||||||
|
#include <BinObjMgt_RRelocationTable.hxx>
|
||||||
|
#include <BinObjMgt_SRelocationTable.hxx>
|
||||||
|
|
||||||
|
class CDM_MessageDriver;
|
||||||
|
class TDF_Attribute;
|
||||||
|
class BinObjMgt_Persistent;
|
||||||
|
|
||||||
|
class BinMXCAFDoc_AssemblyItemRefDriver;
|
||||||
|
DEFINE_STANDARD_HANDLE(BinMXCAFDoc_AssemblyItemRefDriver, BinMDF_ADriver)
|
||||||
|
|
||||||
|
class BinMXCAFDoc_AssemblyItemRefDriver : public BinMDF_ADriver
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
Standard_EXPORT BinMXCAFDoc_AssemblyItemRefDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
|
||||||
|
|
||||||
|
Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
|
||||||
|
|
||||||
|
Standard_EXPORT Standard_Boolean Paste (const BinObjMgt_Persistent& theSource,
|
||||||
|
const Handle(TDF_Attribute)& theTarget,
|
||||||
|
BinObjMgt_RRelocationTable& theRelocTable) const Standard_OVERRIDE;
|
||||||
|
|
||||||
|
Standard_EXPORT void Paste (const Handle(TDF_Attribute)& theSource,
|
||||||
|
BinObjMgt_Persistent& theTarget,
|
||||||
|
BinObjMgt_SRelocationTable& theRelocTable) const Standard_OVERRIDE;
|
||||||
|
|
||||||
|
DEFINE_STANDARD_RTTIEXT(BinMXCAFDoc_AssemblyItemRefDriver, BinMDF_ADriver)
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _BinMXCAFDoc_AssemblyItemRefDriver_HeaderFile
|
52
src/BinMXCAFDoc/BinMXCAFDoc_NoteBalloonDriver.cxx
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
// Created on: 2017-08-10
|
||||||
|
// Created by: Eugeny NIKONOV
|
||||||
|
// Copyright (c) 2005-2017 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#include <BinObjMgt_Persistent.hxx>
|
||||||
|
#include <CDM_MessageDriver.hxx>
|
||||||
|
#include <Standard_Type.hxx>
|
||||||
|
#include <TDF_Attribute.hxx>
|
||||||
|
#include <BinMXCAFDoc_NoteBalloonDriver.hxx>
|
||||||
|
#include <XCAFDoc_NoteBalloon.hxx>
|
||||||
|
|
||||||
|
IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_NoteBalloonDriver, BinMXCAFDoc_NoteCommentDriver)
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function :
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
BinMXCAFDoc_NoteBalloonDriver::BinMXCAFDoc_NoteBalloonDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
|
||||||
|
: BinMXCAFDoc_NoteCommentDriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_NoteBalloon)->Name())
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function :
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Handle(TDF_Attribute) BinMXCAFDoc_NoteBalloonDriver::NewEmpty() const
|
||||||
|
{
|
||||||
|
return new XCAFDoc_NoteBalloon();
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function :
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
BinMXCAFDoc_NoteBalloonDriver::BinMXCAFDoc_NoteBalloonDriver(const Handle(CDM_MessageDriver)& theMsgDriver,
|
||||||
|
Standard_CString theName)
|
||||||
|
: BinMXCAFDoc_NoteCommentDriver(theMsgDriver, theName)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
42
src/BinMXCAFDoc/BinMXCAFDoc_NoteBalloonDriver.hxx
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
// Created on: 2017-08-10
|
||||||
|
// Created by: Sergey NIKONOV
|
||||||
|
// Copyright (c) 2005-2017 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#ifndef _BinMXCAFDoc_NoteBalloonDriver_HeaderFile
|
||||||
|
#define _BinMXCAFDoc_NoteBalloonDriver_HeaderFile
|
||||||
|
|
||||||
|
#include <BinMXCAFDoc_NoteCommentDriver.hxx>
|
||||||
|
|
||||||
|
class BinMXCAFDoc_NoteBalloonDriver;
|
||||||
|
DEFINE_STANDARD_HANDLE(BinMXCAFDoc_NoteBalloonDriver, BinMXCAFDoc_NoteCommentDriver)
|
||||||
|
|
||||||
|
class BinMXCAFDoc_NoteBalloonDriver : public BinMXCAFDoc_NoteCommentDriver
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
Standard_EXPORT BinMXCAFDoc_NoteBalloonDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
|
||||||
|
|
||||||
|
Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
|
||||||
|
|
||||||
|
DEFINE_STANDARD_RTTIEXT(BinMXCAFDoc_NoteBalloonDriver, BinMXCAFDoc_NoteCommentDriver)
|
||||||
|
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
BinMXCAFDoc_NoteBalloonDriver(const Handle(CDM_MessageDriver)& theMsgDriver,
|
||||||
|
Standard_CString theName);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _BinMXCAFDoc_NoteCommentDriver_HeaderFile
|
96
src/BinMXCAFDoc/BinMXCAFDoc_NoteBinDataDriver.cxx
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
// Created on: 2017-02-13
|
||||||
|
// Created by: Eugeny NIKONOV
|
||||||
|
// Copyright (c) 2005-2017 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#include <BinObjMgt_Persistent.hxx>
|
||||||
|
#include <CDM_MessageDriver.hxx>
|
||||||
|
#include <Standard_Type.hxx>
|
||||||
|
#include <TDF_Attribute.hxx>
|
||||||
|
#include <TColStd_HArray1OfByte.hxx>
|
||||||
|
#include <TCollection_AsciiString.hxx>
|
||||||
|
#include <TCollection_ExtendedString.hxx>
|
||||||
|
#include <BinMXCAFDoc_NoteBinDataDriver.hxx>
|
||||||
|
#include <XCAFDoc_NoteBinData.hxx>
|
||||||
|
|
||||||
|
IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_NoteBinDataDriver, BinMXCAFDoc_NoteDriver)
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function :
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
BinMXCAFDoc_NoteBinDataDriver::BinMXCAFDoc_NoteBinDataDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
|
||||||
|
: BinMXCAFDoc_NoteDriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_NoteBinData)->Name())
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function :
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Handle(TDF_Attribute) BinMXCAFDoc_NoteBinDataDriver::NewEmpty() const
|
||||||
|
{
|
||||||
|
return new XCAFDoc_NoteBinData();
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function :
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean BinMXCAFDoc_NoteBinDataDriver::Paste(const BinObjMgt_Persistent& theSource,
|
||||||
|
const Handle(TDF_Attribute)& theTarget,
|
||||||
|
BinObjMgt_RRelocationTable& theRelocTable) const
|
||||||
|
{
|
||||||
|
if (!BinMXCAFDoc_NoteDriver::Paste(theSource, theTarget, theRelocTable))
|
||||||
|
return Standard_False;
|
||||||
|
|
||||||
|
Handle(XCAFDoc_NoteBinData) aNote = Handle(XCAFDoc_NoteBinData)::DownCast(theTarget);
|
||||||
|
if (aNote.IsNull())
|
||||||
|
return Standard_False;
|
||||||
|
|
||||||
|
TCollection_ExtendedString aTitle;
|
||||||
|
TCollection_AsciiString aMIMEtype;
|
||||||
|
Standard_Integer nbSize;
|
||||||
|
if (!(theSource >> aTitle >> aMIMEtype >> nbSize))
|
||||||
|
return Standard_False;
|
||||||
|
|
||||||
|
Handle(TColStd_HArray1OfByte) aData;
|
||||||
|
if (nbSize > 0)
|
||||||
|
{
|
||||||
|
aData.reset(new TColStd_HArray1OfByte(1, nbSize));
|
||||||
|
theSource.GetByteArray(&aData->ChangeFirst(), nbSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
aNote->Set(aTitle, aMIMEtype, aData);
|
||||||
|
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function :
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
void BinMXCAFDoc_NoteBinDataDriver::Paste(const Handle(TDF_Attribute)& theSource,
|
||||||
|
BinObjMgt_Persistent& theTarget,
|
||||||
|
BinObjMgt_SRelocationTable& theRelocTable) const
|
||||||
|
{
|
||||||
|
BinMXCAFDoc_NoteDriver::Paste(theSource, theTarget, theRelocTable);
|
||||||
|
|
||||||
|
Handle(XCAFDoc_NoteBinData) aNote = Handle(XCAFDoc_NoteBinData)::DownCast(theSource);
|
||||||
|
if (!aNote.IsNull())
|
||||||
|
{
|
||||||
|
theTarget << aNote->Title() << aNote->MIMEtype() << aNote->Size();
|
||||||
|
if (aNote->Size() > 0)
|
||||||
|
theTarget.PutByteArray(&aNote->Data()->ChangeFirst(), aNote->Size());
|
||||||
|
}
|
||||||
|
}
|
44
src/BinMXCAFDoc/BinMXCAFDoc_NoteBinDataDriver.hxx
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
// Created on: 2017-02-13
|
||||||
|
// Created by: Sergey NIKONOV
|
||||||
|
// Copyright (c) 2005-2017 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#ifndef _BinMXCAFDoc_NoteBinDataDriver_HeaderFile
|
||||||
|
#define _BinMXCAFDoc_NoteBinDataDriver_HeaderFile
|
||||||
|
|
||||||
|
#include <BinMXCAFDoc_NoteDriver.hxx>
|
||||||
|
|
||||||
|
class BinMXCAFDoc_NoteBinDataDriver;
|
||||||
|
DEFINE_STANDARD_HANDLE(BinMXCAFDoc_NoteBinDataDriver, BinMXCAFDoc_NoteDriver)
|
||||||
|
|
||||||
|
class BinMXCAFDoc_NoteBinDataDriver : public BinMXCAFDoc_NoteDriver
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
Standard_EXPORT BinMXCAFDoc_NoteBinDataDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
|
||||||
|
|
||||||
|
Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
|
||||||
|
|
||||||
|
Standard_EXPORT Standard_Boolean Paste (const BinObjMgt_Persistent& theSource,
|
||||||
|
const Handle(TDF_Attribute)& theTarget,
|
||||||
|
BinObjMgt_RRelocationTable& theRelocTable) const Standard_OVERRIDE;
|
||||||
|
|
||||||
|
Standard_EXPORT void Paste (const Handle(TDF_Attribute)& theSource,
|
||||||
|
BinObjMgt_Persistent& theTarget,
|
||||||
|
BinObjMgt_SRelocationTable& theRelocTable) const Standard_OVERRIDE;
|
||||||
|
|
||||||
|
DEFINE_STANDARD_RTTIEXT(BinMXCAFDoc_NoteBinDataDriver, BinMXCAFDoc_NoteDriver)
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _BinMXCAFDoc_NoteBinDataDriver_HeaderFile
|
91
src/BinMXCAFDoc/BinMXCAFDoc_NoteCommentDriver.cxx
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
// Created on: 2017-02-13
|
||||||
|
// Created by: Eugeny NIKONOV
|
||||||
|
// Copyright (c) 2005-2017 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#include <BinObjMgt_Persistent.hxx>
|
||||||
|
#include <CDM_MessageDriver.hxx>
|
||||||
|
#include <Standard_Type.hxx>
|
||||||
|
#include <TDF_Attribute.hxx>
|
||||||
|
#include <BinMXCAFDoc_NoteCommentDriver.hxx>
|
||||||
|
#include <XCAFDoc_NoteComment.hxx>
|
||||||
|
|
||||||
|
IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_NoteCommentDriver, BinMXCAFDoc_NoteDriver)
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function :
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
BinMXCAFDoc_NoteCommentDriver::BinMXCAFDoc_NoteCommentDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
|
||||||
|
: BinMXCAFDoc_NoteDriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_NoteComment)->Name())
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function :
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Handle(TDF_Attribute) BinMXCAFDoc_NoteCommentDriver::NewEmpty() const
|
||||||
|
{
|
||||||
|
return new XCAFDoc_NoteComment();
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function :
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean BinMXCAFDoc_NoteCommentDriver::Paste(const BinObjMgt_Persistent& theSource,
|
||||||
|
const Handle(TDF_Attribute)& theTarget,
|
||||||
|
BinObjMgt_RRelocationTable& theRelocTable) const
|
||||||
|
{
|
||||||
|
if (!BinMXCAFDoc_NoteDriver::Paste(theSource, theTarget, theRelocTable))
|
||||||
|
return Standard_False;
|
||||||
|
|
||||||
|
Handle(XCAFDoc_NoteComment) aNote = Handle(XCAFDoc_NoteComment)::DownCast(theTarget);
|
||||||
|
if (aNote.IsNull())
|
||||||
|
return Standard_False;
|
||||||
|
|
||||||
|
TCollection_ExtendedString aComment;
|
||||||
|
if (!(theSource >> aComment))
|
||||||
|
return Standard_False;
|
||||||
|
|
||||||
|
aNote->Set(aComment);
|
||||||
|
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function :
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
void BinMXCAFDoc_NoteCommentDriver::Paste(const Handle(TDF_Attribute)& theSource,
|
||||||
|
BinObjMgt_Persistent& theTarget,
|
||||||
|
BinObjMgt_SRelocationTable& theRelocTable) const
|
||||||
|
{
|
||||||
|
BinMXCAFDoc_NoteDriver::Paste(theSource, theTarget, theRelocTable);
|
||||||
|
|
||||||
|
Handle(XCAFDoc_NoteComment) aNote = Handle(XCAFDoc_NoteComment)::DownCast(theSource);
|
||||||
|
if (!aNote.IsNull())
|
||||||
|
theTarget << aNote->Comment();
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function :
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
BinMXCAFDoc_NoteCommentDriver::BinMXCAFDoc_NoteCommentDriver(const Handle(CDM_MessageDriver)& theMsgDriver,
|
||||||
|
Standard_CString theName)
|
||||||
|
: BinMXCAFDoc_NoteDriver(theMsgDriver, theName)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
49
src/BinMXCAFDoc/BinMXCAFDoc_NoteCommentDriver.hxx
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
// Created on: 2017-02-13
|
||||||
|
// Created by: Sergey NIKONOV
|
||||||
|
// Copyright (c) 2005-2017 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#ifndef _BinMXCAFDoc_NoteCommentDriver_HeaderFile
|
||||||
|
#define _BinMXCAFDoc_NoteCommentDriver_HeaderFile
|
||||||
|
|
||||||
|
#include <BinMXCAFDoc_NoteDriver.hxx>
|
||||||
|
|
||||||
|
class BinMXCAFDoc_NoteCommentDriver;
|
||||||
|
DEFINE_STANDARD_HANDLE(BinMXCAFDoc_NoteCommentDriver, BinMXCAFDoc_NoteDriver)
|
||||||
|
|
||||||
|
class BinMXCAFDoc_NoteCommentDriver : public BinMXCAFDoc_NoteDriver
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
Standard_EXPORT BinMXCAFDoc_NoteCommentDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
|
||||||
|
|
||||||
|
Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
|
||||||
|
|
||||||
|
Standard_EXPORT Standard_Boolean Paste (const BinObjMgt_Persistent& theSource,
|
||||||
|
const Handle(TDF_Attribute)& theTarget,
|
||||||
|
BinObjMgt_RRelocationTable& theRelocTable) const Standard_OVERRIDE;
|
||||||
|
|
||||||
|
Standard_EXPORT void Paste (const Handle(TDF_Attribute)& theSource,
|
||||||
|
BinObjMgt_Persistent& theTarget,
|
||||||
|
BinObjMgt_SRelocationTable& theRelocTable) const Standard_OVERRIDE;
|
||||||
|
|
||||||
|
DEFINE_STANDARD_RTTIEXT(BinMXCAFDoc_NoteCommentDriver, BinMXCAFDoc_NoteDriver)
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
BinMXCAFDoc_NoteCommentDriver(const Handle(CDM_MessageDriver)& theMsgDriver,
|
||||||
|
Standard_CString theName);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _BinMXCAFDoc_NoteCommentDriver_HeaderFile
|
68
src/BinMXCAFDoc/BinMXCAFDoc_NoteDriver.cxx
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
// Created on: 2017-02-10
|
||||||
|
// Created by: Eugeny NIKONOV
|
||||||
|
// Copyright (c) 2005-2017 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#include <BinObjMgt_Persistent.hxx>
|
||||||
|
#include <CDM_MessageDriver.hxx>
|
||||||
|
#include <Standard_Type.hxx>
|
||||||
|
#include <TDF_Attribute.hxx>
|
||||||
|
#include <BinMXCAFDoc_NoteDriver.hxx>
|
||||||
|
#include <XCAFDoc_Note.hxx>
|
||||||
|
|
||||||
|
IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_NoteDriver, BinMDF_ADriver)
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function :
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
BinMXCAFDoc_NoteDriver::BinMXCAFDoc_NoteDriver(const Handle(CDM_MessageDriver)& theMsgDriver,
|
||||||
|
Standard_CString theName)
|
||||||
|
: BinMDF_ADriver(theMsgDriver, theName)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function :
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean BinMXCAFDoc_NoteDriver::Paste(const BinObjMgt_Persistent& theSource,
|
||||||
|
const Handle(TDF_Attribute)& theTarget,
|
||||||
|
BinObjMgt_RRelocationTable& /*theRelocTable*/) const
|
||||||
|
{
|
||||||
|
Handle(XCAFDoc_Note) aNote = Handle(XCAFDoc_Note)::DownCast(theTarget);
|
||||||
|
if (aNote.IsNull())
|
||||||
|
return Standard_False;
|
||||||
|
|
||||||
|
TCollection_ExtendedString aUserName, aTimeStamp;
|
||||||
|
if (!(theSource >> aUserName >> aTimeStamp))
|
||||||
|
return Standard_False;
|
||||||
|
|
||||||
|
aNote->Set(aUserName, aTimeStamp);
|
||||||
|
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function :
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
void BinMXCAFDoc_NoteDriver::Paste(const Handle(TDF_Attribute)& theSource,
|
||||||
|
BinObjMgt_Persistent& theTarget,
|
||||||
|
BinObjMgt_SRelocationTable& /*theRelocTable*/) const
|
||||||
|
{
|
||||||
|
Handle(XCAFDoc_Note) aNote = Handle(XCAFDoc_Note)::DownCast(theSource);
|
||||||
|
if (!aNote.IsNull())
|
||||||
|
theTarget << aNote->UserName() << aNote->TimeStamp();
|
||||||
|
}
|
55
src/BinMXCAFDoc/BinMXCAFDoc_NoteDriver.hxx
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
// Created on: 2017-02-10
|
||||||
|
// Created by: Sergey NIKONOV
|
||||||
|
// Copyright (c) 2005-2017 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#ifndef _BinMXCAFDoc_NoteDriver_HeaderFile
|
||||||
|
#define _BinMXCAFDoc_NoteDriver_HeaderFile
|
||||||
|
|
||||||
|
#include <Standard.hxx>
|
||||||
|
#include <Standard_Type.hxx>
|
||||||
|
|
||||||
|
#include <BinMDF_ADriver.hxx>
|
||||||
|
#include <Standard_Boolean.hxx>
|
||||||
|
#include <BinObjMgt_RRelocationTable.hxx>
|
||||||
|
#include <BinObjMgt_SRelocationTable.hxx>
|
||||||
|
|
||||||
|
class CDM_MessageDriver;
|
||||||
|
class TDF_Attribute;
|
||||||
|
class BinObjMgt_Persistent;
|
||||||
|
|
||||||
|
class BinMXCAFDoc_NoteDriver;
|
||||||
|
DEFINE_STANDARD_HANDLE(BinMXCAFDoc_NoteDriver, BinMDF_ADriver)
|
||||||
|
|
||||||
|
class BinMXCAFDoc_NoteDriver : public BinMDF_ADriver
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
Standard_EXPORT Standard_Boolean Paste (const BinObjMgt_Persistent& theSource,
|
||||||
|
const Handle(TDF_Attribute)& theTarget,
|
||||||
|
BinObjMgt_RRelocationTable& theRelocTable) const Standard_OVERRIDE;
|
||||||
|
|
||||||
|
Standard_EXPORT void Paste (const Handle(TDF_Attribute)& theSource,
|
||||||
|
BinObjMgt_Persistent& theTarget,
|
||||||
|
BinObjMgt_SRelocationTable& theRelocTable) const Standard_OVERRIDE;
|
||||||
|
|
||||||
|
DEFINE_STANDARD_RTTIEXT(BinMXCAFDoc_NoteDriver, BinMDF_ADriver)
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
BinMXCAFDoc_NoteDriver(const Handle(CDM_MessageDriver)& theMsgDriver,
|
||||||
|
Standard_CString theName);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _BinMXCAFDoc_NoteDriver_HeaderFile
|
62
src/BinMXCAFDoc/BinMXCAFDoc_NotesToolDriver.cxx
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
// Created on: 2017-02-10
|
||||||
|
// Created by: Eugeny NIKONOV
|
||||||
|
// Copyright (c) 2005-2017 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#include <BinObjMgt_Persistent.hxx>
|
||||||
|
#include <CDM_MessageDriver.hxx>
|
||||||
|
#include <Standard_Type.hxx>
|
||||||
|
#include <TDF_Attribute.hxx>
|
||||||
|
#include <BinMXCAFDoc_NotesToolDriver.hxx>
|
||||||
|
#include <XCAFDoc_NotesTool.hxx>
|
||||||
|
|
||||||
|
IMPLEMENT_STANDARD_RTTIEXT(BinMXCAFDoc_NotesToolDriver, BinMDF_ADriver)
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function :
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
BinMXCAFDoc_NotesToolDriver::BinMXCAFDoc_NotesToolDriver(const Handle(CDM_MessageDriver)& theMsgDriver)
|
||||||
|
: BinMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_NotesTool)->Name())
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function :
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Handle(TDF_Attribute) BinMXCAFDoc_NotesToolDriver::NewEmpty() const
|
||||||
|
{
|
||||||
|
return new XCAFDoc_NotesTool();
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function :
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
Standard_Boolean BinMXCAFDoc_NotesToolDriver::Paste(const BinObjMgt_Persistent& /*theSource*/,
|
||||||
|
const Handle(TDF_Attribute)& /*theTarget*/,
|
||||||
|
BinObjMgt_RRelocationTable& /*theRelocTable*/) const
|
||||||
|
{
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function :
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
void BinMXCAFDoc_NotesToolDriver::Paste(const Handle(TDF_Attribute)& /*theSource*/,
|
||||||
|
BinObjMgt_Persistent& /*theTarget*/,
|
||||||
|
BinObjMgt_SRelocationTable& /*theRelocTable*/) const
|
||||||
|
{
|
||||||
|
}
|
54
src/BinMXCAFDoc/BinMXCAFDoc_NotesToolDriver.hxx
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
// Created on: 2017-02-10
|
||||||
|
// Created by: Sergey NIKONOV
|
||||||
|
// Copyright (c) 2005-2017 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#ifndef _BinMXCAFDoc_NotesToolDriver_HeaderFile
|
||||||
|
#define _BinMXCAFDoc_NotesToolDriver_HeaderFile
|
||||||
|
|
||||||
|
#include <Standard.hxx>
|
||||||
|
#include <Standard_Type.hxx>
|
||||||
|
|
||||||
|
#include <BinMDF_ADriver.hxx>
|
||||||
|
#include <Standard_Boolean.hxx>
|
||||||
|
#include <BinObjMgt_RRelocationTable.hxx>
|
||||||
|
#include <BinObjMgt_SRelocationTable.hxx>
|
||||||
|
|
||||||
|
class CDM_MessageDriver;
|
||||||
|
class TDF_Attribute;
|
||||||
|
class BinObjMgt_Persistent;
|
||||||
|
|
||||||
|
class BinMXCAFDoc_NotesToolDriver;
|
||||||
|
DEFINE_STANDARD_HANDLE(BinMXCAFDoc_NotesToolDriver, BinMDF_ADriver)
|
||||||
|
|
||||||
|
class BinMXCAFDoc_NotesToolDriver : public BinMDF_ADriver
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
Standard_EXPORT BinMXCAFDoc_NotesToolDriver(const Handle(CDM_MessageDriver)& theMsgDriver);
|
||||||
|
|
||||||
|
Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
|
||||||
|
|
||||||
|
Standard_EXPORT Standard_Boolean Paste (const BinObjMgt_Persistent& theSource,
|
||||||
|
const Handle(TDF_Attribute)& theTarget,
|
||||||
|
BinObjMgt_RRelocationTable& theRelocTable) const Standard_OVERRIDE;
|
||||||
|
|
||||||
|
Standard_EXPORT void Paste (const Handle(TDF_Attribute)& theSource,
|
||||||
|
BinObjMgt_Persistent& theTarget,
|
||||||
|
BinObjMgt_SRelocationTable& theRelocTable) const Standard_OVERRIDE;
|
||||||
|
|
||||||
|
DEFINE_STANDARD_RTTIEXT(BinMXCAFDoc_NotesToolDriver, BinMDF_ADriver)
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _BinMXCAFDoc_NotesToolDriver_HeaderFile
|
@@ -1,5 +1,7 @@
|
|||||||
BinMXCAFDoc.cxx
|
BinMXCAFDoc.cxx
|
||||||
BinMXCAFDoc.hxx
|
BinMXCAFDoc.hxx
|
||||||
|
BinMXCAFDoc_AssemblyItemRefDriver.cxx
|
||||||
|
BinMXCAFDoc_AssemblyItemRefDriver.hxx
|
||||||
BinMXCAFDoc_AreaDriver.cxx
|
BinMXCAFDoc_AreaDriver.cxx
|
||||||
BinMXCAFDoc_AreaDriver.hxx
|
BinMXCAFDoc_AreaDriver.hxx
|
||||||
BinMXCAFDoc_CentroidDriver.cxx
|
BinMXCAFDoc_CentroidDriver.cxx
|
||||||
@@ -33,6 +35,16 @@ BinMXCAFDoc_MaterialDriver.cxx
|
|||||||
BinMXCAFDoc_MaterialDriver.hxx
|
BinMXCAFDoc_MaterialDriver.hxx
|
||||||
BinMXCAFDoc_MaterialToolDriver.cxx
|
BinMXCAFDoc_MaterialToolDriver.cxx
|
||||||
BinMXCAFDoc_MaterialToolDriver.hxx
|
BinMXCAFDoc_MaterialToolDriver.hxx
|
||||||
|
BinMXCAFDoc_NoteDriver.cxx
|
||||||
|
BinMXCAFDoc_NoteDriver.hxx
|
||||||
|
BinMXCAFDoc_NoteBalloonDriver.cxx
|
||||||
|
BinMXCAFDoc_NoteBalloonDriver.hxx
|
||||||
|
BinMXCAFDoc_NoteCommentDriver.cxx
|
||||||
|
BinMXCAFDoc_NoteCommentDriver.hxx
|
||||||
|
BinMXCAFDoc_NoteBinDataDriver.cxx
|
||||||
|
BinMXCAFDoc_NoteBinDataDriver.hxx
|
||||||
|
BinMXCAFDoc_NotesToolDriver.cxx
|
||||||
|
BinMXCAFDoc_NotesToolDriver.hxx
|
||||||
BinMXCAFDoc_ShapeToolDriver.cxx
|
BinMXCAFDoc_ShapeToolDriver.cxx
|
||||||
BinMXCAFDoc_ShapeToolDriver.hxx
|
BinMXCAFDoc_ShapeToolDriver.hxx
|
||||||
BinMXCAFDoc_ViewDriver.cxx
|
BinMXCAFDoc_ViewDriver.cxx
|
||||||
|
@@ -943,9 +943,11 @@ void Draw::BasicCommands(Draw_Interpretor& theCommands)
|
|||||||
__FILE__,Draw_wait,g);
|
__FILE__,Draw_wait,g);
|
||||||
theCommands.Add("cpulimit","cpulimit [nbseconds], no args remove limits",
|
theCommands.Add("cpulimit","cpulimit [nbseconds], no args remove limits",
|
||||||
__FILE__,cpulimit,g);
|
__FILE__,cpulimit,g);
|
||||||
theCommands.Add("chrono","chrono [ name start/stop/reset/show]",
|
theCommands.Add("chrono","chrono [name action [action...]] \n Operates named timer.\n"
|
||||||
|
" Supported actions: reset, start, stop, restart, show, counter [text].\n"
|
||||||
|
" Without arguments enables / disables global timer for all DRAW commands.",
|
||||||
__FILE__,chronom,g);
|
__FILE__,chronom,g);
|
||||||
theCommands.Add("dchrono","dchrono [ name start/stop/reset/show]",
|
theCommands.Add("dchrono","see help of chrono command",
|
||||||
__FILE__,dchronom,g);
|
__FILE__,dchronom,g);
|
||||||
theCommands.Add("mallochook",
|
theCommands.Add("mallochook",
|
||||||
"debug memory allocation/deallocation, w/o args for help",
|
"debug memory allocation/deallocation, w/o args for help",
|
||||||
|
@@ -28,24 +28,24 @@ IMPLEMENT_STANDARD_RTTIEXT(Draw_ProgressIndicator,Message_ProgressIndicator)
|
|||||||
//function : Draw_ProgressIndicator
|
//function : Draw_ProgressIndicator
|
||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
Draw_ProgressIndicator::Draw_ProgressIndicator(const Draw_Interpretor &di,
|
Draw_ProgressIndicator::Draw_ProgressIndicator (const Draw_Interpretor &di, Standard_Real theUpdateThreshold)
|
||||||
const Standard_Integer updateTime) :
|
: myTextMode ( DefaultTextMode() ),
|
||||||
myTextMode ( DefaultTextMode() ),
|
|
||||||
myGraphMode ( DefaultGraphMode() ),
|
myGraphMode ( DefaultGraphMode() ),
|
||||||
myDraw ( (Standard_Address)&di ),
|
myDraw ( (Standard_Address)&di ),
|
||||||
myShown ( Standard_False ),
|
myShown ( Standard_False ),
|
||||||
myBreak ( Standard_False ),
|
myBreak ( Standard_False ),
|
||||||
myUpdateTime ( updateTime ),
|
myUpdateThreshold ( 0.01 * theUpdateThreshold ),
|
||||||
myLastUpdate ( 0 ), myStartTime ( 0 )
|
myLastPosition ( -1. ),
|
||||||
|
myStartTime ( 0 )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : Destroy
|
//function : ~Draw_ProgressIndicator
|
||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
|
|
||||||
void Draw_ProgressIndicator::Destroy()
|
Draw_ProgressIndicator::~Draw_ProgressIndicator()
|
||||||
{
|
{
|
||||||
Reset();
|
Reset();
|
||||||
}
|
}
|
||||||
@@ -63,7 +63,8 @@ void Draw_ProgressIndicator::Reset()
|
|||||||
myShown = Standard_False;
|
myShown = Standard_False;
|
||||||
}
|
}
|
||||||
myBreak = Standard_False;
|
myBreak = Standard_False;
|
||||||
myLastUpdate = myStartTime = 0;
|
myLastPosition = -1.;
|
||||||
|
myStartTime = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@@ -73,14 +74,22 @@ void Draw_ProgressIndicator::Reset()
|
|||||||
|
|
||||||
Standard_Boolean Draw_ProgressIndicator::Show(const Standard_Boolean force)
|
Standard_Boolean Draw_ProgressIndicator::Show(const Standard_Boolean force)
|
||||||
{
|
{
|
||||||
if ( ! myGraphMode && ! myTextMode ) return Standard_False;
|
if ( ! myGraphMode && ! myTextMode )
|
||||||
|
return Standard_False;
|
||||||
|
|
||||||
|
// remember time of the first call to Show as process start time
|
||||||
|
if ( ! myStartTime )
|
||||||
|
{
|
||||||
time_t aTimeT;
|
time_t aTimeT;
|
||||||
time ( &aTimeT );
|
time ( &aTimeT );
|
||||||
Standard_Size aTime = (Standard_Size)aTimeT;
|
myStartTime = (Standard_Size)aTimeT;
|
||||||
if ( ! myStartTime ) myStartTime = aTime;
|
}
|
||||||
if ( ! force && myUpdateTime >0 && aTime < myLastUpdate + myUpdateTime && GetPosition() < 1. )
|
|
||||||
|
// unless show is forced, show updated state only if at least 1% progress has been reached since the last update
|
||||||
|
Standard_Real aPosition = GetPosition();
|
||||||
|
if ( ! force && aPosition < 1. && Abs (aPosition - myLastPosition) < myUpdateThreshold)
|
||||||
return Standard_False; // return if update interval has not elapsed
|
return Standard_False; // return if update interval has not elapsed
|
||||||
myLastUpdate = aTime;
|
myLastPosition = aPosition;
|
||||||
|
|
||||||
// Prepare textual progress info
|
// Prepare textual progress info
|
||||||
char text[2048];
|
char text[2048];
|
||||||
@@ -100,14 +109,18 @@ Standard_Boolean Draw_ProgressIndicator::Show(const Standard_Boolean force)
|
|||||||
scale.BaseToLocal ( locPos ), scale.GetMax() );
|
scale.BaseToLocal ( locPos ), scale.GetMax() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Show graphic progress bar
|
||||||
|
if ( myGraphMode ) {
|
||||||
|
|
||||||
// In addition, write elapsed/estimated/remaining time
|
// In addition, write elapsed/estimated/remaining time
|
||||||
if ( GetPosition() > 0.01 ) {
|
if ( GetPosition() > 0.01 ) {
|
||||||
|
time_t aTimeT;
|
||||||
|
time ( &aTimeT );
|
||||||
|
Standard_Size aTime = (Standard_Size)aTimeT;
|
||||||
n += Sprintf ( &text[n], "\nElapsed/estimated time: %ld/%.0f sec",
|
n += Sprintf ( &text[n], "\nElapsed/estimated time: %ld/%.0f sec",
|
||||||
(long)(aTime - myStartTime), ( aTime - myStartTime ) / GetPosition() );
|
(long)(aTime - myStartTime), ( aTime - myStartTime ) / GetPosition() );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Show graphic progress bar
|
|
||||||
if ( myGraphMode ) {
|
|
||||||
if ( ! myShown ) {
|
if ( ! myShown ) {
|
||||||
char command[1024];
|
char command[1024];
|
||||||
Sprintf ( command, "toplevel .xprogress -height 100 -width 410;"
|
Sprintf ( command, "toplevel .xprogress -height 100 -width 410;"
|
||||||
|
@@ -33,18 +33,15 @@ class Draw_ProgressIndicator : public Message_ProgressIndicator
|
|||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
||||||
//! Creates a progress indicator and remembers pointer to
|
//! Creates a progress indicator and remembers pointer to Draw_Interpretor
|
||||||
//! Draw_Interpretor
|
//!
|
||||||
//! The updateTime, if given, defines time interval between
|
//! @param theUpdateThreshold defines minimal progress (in percents) between
|
||||||
//! updates of the indicator (in seconds)
|
//! updates of the indicator (non-forced updates of the progress bar will be
|
||||||
Standard_EXPORT Draw_ProgressIndicator(const Draw_Interpretor& di, const Standard_Integer updateTime = 0);
|
//! disabled until that progress is reached since last update).
|
||||||
|
Standard_EXPORT Draw_ProgressIndicator(const Draw_Interpretor& di, Standard_Real theUpdateThreshold = 1.);
|
||||||
|
|
||||||
//! Destructor; calls Reset()
|
//! Destructor; calls Reset()
|
||||||
Standard_EXPORT void Destroy();
|
Standard_EXPORT ~Draw_ProgressIndicator();
|
||||||
~Draw_ProgressIndicator()
|
|
||||||
{
|
|
||||||
Destroy();
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Sets text output mode (on/off)
|
//! Sets text output mode (on/off)
|
||||||
Standard_EXPORT void SetTextMode (const Standard_Boolean theTextMode);
|
Standard_EXPORT void SetTextMode (const Standard_Boolean theTextMode);
|
||||||
@@ -85,8 +82,8 @@ private:
|
|||||||
Standard_Address myDraw;
|
Standard_Address myDraw;
|
||||||
Standard_Boolean myShown;
|
Standard_Boolean myShown;
|
||||||
Standard_Boolean myBreak;
|
Standard_Boolean myBreak;
|
||||||
Standard_Integer myUpdateTime;
|
Standard_Real myUpdateThreshold;
|
||||||
Standard_Size myLastUpdate;
|
Standard_Real myLastPosition;
|
||||||
Standard_Size myStartTime;
|
Standard_Size myStartTime;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -359,15 +359,18 @@ proc checkfreebounds {shape ref_value args} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
help checkmaxtol {
|
help checkmaxtol {
|
||||||
Compare max tolerance of shape with reference value.
|
Returns max tolerance of the shape and prints error message if specified
|
||||||
Command returns max tolerance of the shape.
|
criteria are not satisfied.
|
||||||
|
|
||||||
Use: checkmaxtol shape [options...]
|
Use: checkmaxtol shape [options...]
|
||||||
Allowed options are:
|
|
||||||
-ref: reference value of maximum tolerance.
|
Options specify criteria for checking the maximal tolerance value:
|
||||||
-source: list of shapes to compare with, e.g.: -source {shape1 shape2 shape3}
|
-ref <value>: check it to be equal to reference value.
|
||||||
-min_tol: minimum tolerance for comparison.
|
-min_tol <value>: check it to be not greater than specified value.
|
||||||
-multi_tol: tolerance multiplier.
|
-source <list of shapes>: check it to be not greater than
|
||||||
|
maximal tolerance of specified shape(s)
|
||||||
|
-multi_tol <value>: additional multiplier for value specified by -min_tol
|
||||||
|
or -shapes options.
|
||||||
}
|
}
|
||||||
|
|
||||||
proc checkmaxtol {shape args} {
|
proc checkmaxtol {shape args} {
|
||||||
@@ -764,9 +767,10 @@ help checkview {
|
|||||||
-display shapename: display shape with name 'shapename'
|
-display shapename: display shape with name 'shapename'
|
||||||
-3d: display shape in 3d viewer
|
-3d: display shape in 3d viewer
|
||||||
-2d [ v2d / smallview ]: display shape in 2d viewer (default viewer is a 'smallview')
|
-2d [ v2d / smallview ]: display shape in 2d viewer (default viewer is a 'smallview')
|
||||||
-path PATH: location of saved screenshot of viewer
|
|
||||||
-vdispmode N: it is possible to set vdispmode for 3d viewer (default value is 1)
|
-vdispmode N: it is possible to set vdispmode for 3d viewer (default value is 1)
|
||||||
-screenshot: procedure will try to make screenshot of already created viewer
|
-screenshot: procedure will try to make screenshot of already created viewer
|
||||||
|
-path <path>: location of saved screenshot of viewer
|
||||||
|
|
||||||
Procedure can check some property of shape (length, area or volume) and compare it with some value N:
|
Procedure can check some property of shape (length, area or volume) and compare it with some value N:
|
||||||
-l [N]
|
-l [N]
|
||||||
-s [N]
|
-s [N]
|
||||||
|
@@ -59,18 +59,12 @@ if { [file isdirectory $dir] } {
|
|||||||
puts "Warning: could not find DRAW directory"
|
puts "Warning: could not find DRAW directory"
|
||||||
}
|
}
|
||||||
|
|
||||||
# set default testing environment
|
# set default testing environment (unless already defined before)
|
||||||
|
if { ! [info exists env(CSF_TestScriptsPath)] } {
|
||||||
if {[info exists ::env(CSF_OCCTTestsPath)] && [file isdirectory $env(CSF_OCCTTestsPath)]} {
|
if {[info exists ::env(CSF_OCCTTestsPath)] && [file isdirectory $env(CSF_OCCTTestsPath)]} {
|
||||||
if { ! [info exists env(CSF_TestScriptsPath)] } {
|
|
||||||
set env(CSF_TestScriptsPath) $env(CSF_OCCTTestsPath)
|
set env(CSF_TestScriptsPath) $env(CSF_OCCTTestsPath)
|
||||||
} else {
|
|
||||||
set env(CSF_TestScriptsPath) $env(CSF_TestScriptsPath)[_path_separator]$env(CSF_OCCTTestsPath)
|
|
||||||
}
|
|
||||||
} elseif { [info exists env(CASROOT)] && [file isdirectory $env(CASROOT)/tests] } {
|
} elseif { [info exists env(CASROOT)] && [file isdirectory $env(CASROOT)/tests] } {
|
||||||
if { ! [info exists env(CSF_TestScriptsPath)] } {
|
|
||||||
set env(CSF_TestScriptsPath) $env(CASROOT)/tests
|
set env(CSF_TestScriptsPath) $env(CASROOT)/tests
|
||||||
} else {
|
|
||||||
set env(CSF_TestScriptsPath) $env(CSF_TestScriptsPath)[_path_separator]$env(CASROOT)/tests
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if {[info exists ::env(CSF_OCCTDataPath)] && [file isdirectory $env(CSF_OCCTDataPath)]} {
|
if {[info exists ::env(CSF_OCCTDataPath)] && [file isdirectory $env(CSF_OCCTDataPath)]} {
|
||||||
|
@@ -2162,10 +2162,10 @@ proc _log_html_diff {file log dir1 dir2 highlight_percent} {
|
|||||||
puts $fd "<script type=\"text/javascript\">"
|
puts $fd "<script type=\"text/javascript\">"
|
||||||
puts $fd " function diffimage_toggle(img,url1,url2)"
|
puts $fd " function diffimage_toggle(img,url1,url2)"
|
||||||
puts $fd " {"
|
puts $fd " {"
|
||||||
puts $fd " if (img.src.match(url2)) img.src = url1;"
|
puts $fd " if (img.show2nd) { img.src = url1; img.show2nd = false; }"
|
||||||
puts $fd " else img.src = url2;"
|
puts $fd " else { img.src = url2; img.show2nd = true; }"
|
||||||
puts $fd " }"
|
puts $fd " }"
|
||||||
puts $fd " function diffimage_reset(img,url) { img.src = url; }"
|
puts $fd " function diffimage_reset(img,url) { img.src = url; img.show2nd = true; }"
|
||||||
puts $fd "</script>"
|
puts $fd "</script>"
|
||||||
puts $fd ""
|
puts $fd ""
|
||||||
|
|
||||||
|
75
src/DsgPrs/DsgPrs_DatumPrs.cxx
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
// Copyright (c) 2013-2014 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#include <DsgPrs_DatumPrs.hxx>
|
||||||
|
#include <DsgPrs_XYZAxisPresentation.hxx>
|
||||||
|
#include <gp_Dir.hxx>
|
||||||
|
#include <gp_Pnt.hxx>
|
||||||
|
#include <gp_Ax2.hxx>
|
||||||
|
#include <Graphic3d_Group.hxx>
|
||||||
|
#include <Graphic3d_AspectLine3d.hxx>
|
||||||
|
#include <Graphic3d_ArrayOfSegments.hxx>
|
||||||
|
#include <Prs3d_Arrow.hxx>
|
||||||
|
#include <Prs3d_LineAspect.hxx>
|
||||||
|
#include <Prs3d_DatumAspect.hxx>
|
||||||
|
#include <Prs3d_TextAspect.hxx>
|
||||||
|
#include <Prs3d_ArrowAspect.hxx>
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : Add
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
void DsgPrs_DatumPrs::Add (const Handle(Prs3d_Presentation)& thePresentation,
|
||||||
|
const gp_Ax2& theDatum,
|
||||||
|
const Handle(Prs3d_Drawer)& theDrawer)
|
||||||
|
{
|
||||||
|
Handle(Prs3d_DatumAspect) aDatumAspect = theDrawer->DatumAspect();
|
||||||
|
Handle(Graphic3d_Group) aGroup = Prs3d_Root::CurrentGroup (thePresentation);
|
||||||
|
|
||||||
|
gp_Ax2 anAxis (theDatum);
|
||||||
|
gp_Pnt anOrigin = anAxis.Location();
|
||||||
|
gp_Dir aXDir = anAxis.XDirection();
|
||||||
|
gp_Dir aYDir = anAxis.YDirection();
|
||||||
|
gp_Dir aZDir = anAxis.Direction();
|
||||||
|
|
||||||
|
Standard_Real anAxisLength;
|
||||||
|
const Standard_Boolean toDrawLabels = theDrawer->DatumAspect()->ToDrawLabels();
|
||||||
|
|
||||||
|
Prs3d_DatumAxes anAxes = aDatumAspect->DatumAxes();
|
||||||
|
Handle(Prs3d_ArrowAspect) anArrowAspect = aDatumAspect->ArrowAspect();
|
||||||
|
Handle(Prs3d_TextAspect) aTextAspect = theDrawer->TextAspect();
|
||||||
|
|
||||||
|
if ((anAxes & Prs3d_DA_XAxis) != 0)
|
||||||
|
{
|
||||||
|
anAxisLength = aDatumAspect->Attribute (Prs3d_DA_XAxisLength);
|
||||||
|
const gp_Pnt aPoint1 (anOrigin.XYZ() + aXDir.XYZ()*anAxisLength);
|
||||||
|
DsgPrs_XYZAxisPresentation::Add (thePresentation, aDatumAspect->LineAspect(Prs3d_DP_XAxis), anArrowAspect,
|
||||||
|
aTextAspect, aXDir, anAxisLength, toDrawLabels ? "X" : "", anOrigin, aPoint1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((anAxes & Prs3d_DA_YAxis) != 0)
|
||||||
|
{
|
||||||
|
anAxisLength = aDatumAspect->Attribute (Prs3d_DA_YAxisLength);
|
||||||
|
const gp_Pnt aPoint2 (anOrigin.XYZ() + aYDir.XYZ()*anAxisLength);
|
||||||
|
DsgPrs_XYZAxisPresentation::Add (thePresentation, aDatumAspect->LineAspect(Prs3d_DP_YAxis), anArrowAspect,
|
||||||
|
aTextAspect, aYDir, anAxisLength, toDrawLabels ? "Y" : "", anOrigin, aPoint2);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((anAxes & Prs3d_DA_ZAxis) != 0)
|
||||||
|
{
|
||||||
|
anAxisLength = aDatumAspect->Attribute (Prs3d_DA_ZAxisLength);
|
||||||
|
const gp_Pnt aPoint3 (anOrigin.XYZ() + aZDir.XYZ()*anAxisLength);
|
||||||
|
DsgPrs_XYZAxisPresentation::Add (thePresentation, aDatumAspect->LineAspect(Prs3d_DP_ZAxis), anArrowAspect,
|
||||||
|
aTextAspect, aZDir, anAxisLength, toDrawLabels ? "Z" : "", anOrigin, aPoint3);
|
||||||
|
}
|
||||||
|
}
|
42
src/DsgPrs/DsgPrs_DatumPrs.hxx
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
// Copyright (c) 2013-2014 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#ifndef _DsgPrs_DatumPrs_H__
|
||||||
|
#define _DsgPrs_DatumPrs_H__
|
||||||
|
|
||||||
|
#include <gp_Ax2.hxx>
|
||||||
|
#include <Prs3d_Drawer.hxx>
|
||||||
|
#include <Prs3d_Presentation.hxx>
|
||||||
|
#include <Prs3d_Root.hxx>
|
||||||
|
|
||||||
|
//! A framework for displaying an XYZ trihedron.
|
||||||
|
class DsgPrs_DatumPrs : public Prs3d_Root
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
DEFINE_STANDARD_ALLOC
|
||||||
|
|
||||||
|
//! Draw XYZ axes at specified location with attributes defined by the attribute manager theDrawer:
|
||||||
|
//! - Prs3d_DatumAspect defines arrow, line and lenght trihedron axis parameters,
|
||||||
|
//! - Prs3d_TextAspect defines displayed text.
|
||||||
|
//! The thihedron origin and axis directions are defined by theDatum coordinate system.
|
||||||
|
//! DsgPrs_XYZAxisPresentation framework is used to create graphical primitives for each axis.
|
||||||
|
//! Axes are marked with "X", "Y", "Z" text.
|
||||||
|
//! @param thePresentation [out] the modified presentation
|
||||||
|
//! @param theDatum [in] the source of trihedron position
|
||||||
|
//! @param theDrawer [in] the provider of display attributes
|
||||||
|
Standard_EXPORT static void Add (const Handle(Prs3d_Presentation)& thePresentation, const gp_Ax2& theDatum,
|
||||||
|
const Handle(Prs3d_Drawer)& theDrawer);
|
||||||
|
|
||||||
|
};
|
||||||
|
#endif
|
@@ -50,9 +50,12 @@ void DsgPrs_XYZAxisPresentation::Add(
|
|||||||
|
|
||||||
Prs3d_Arrow::Draw (Prs3d_Root::CurrentGroup (aPresentation), aPlast,aDir, M_PI/180.*10., aVal/10.);
|
Prs3d_Arrow::Draw (Prs3d_Root::CurrentGroup (aPresentation), aPlast,aDir, M_PI/180.*10., aVal/10.);
|
||||||
|
|
||||||
|
if (*aText != '\0')
|
||||||
|
{
|
||||||
Graphic3d_Vertex a2(aPlast.X(),aPlast.Y(),aPlast.Z());
|
Graphic3d_Vertex a2(aPlast.X(),aPlast.Y(),aPlast.Z());
|
||||||
Prs3d_Root::CurrentGroup(aPresentation)->Text(aText,a2,1./81.);
|
Prs3d_Root::CurrentGroup(aPresentation)->Text(aText,a2,1./81.);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void DsgPrs_XYZAxisPresentation::Add(const Handle(Prs3d_Presentation)& aPresentation,
|
void DsgPrs_XYZAxisPresentation::Add(const Handle(Prs3d_Presentation)& aPresentation,
|
||||||
@@ -74,9 +77,13 @@ void DsgPrs_XYZAxisPresentation::Add(const Handle(Prs3d_Presentation)& aPresenta
|
|||||||
G->AddPrimitiveArray(aPrims);
|
G->AddPrimitiveArray(aPrims);
|
||||||
|
|
||||||
G->SetPrimitivesAspect( anArrowAspect->Aspect() );
|
G->SetPrimitivesAspect( anArrowAspect->Aspect() );
|
||||||
Prs3d_Arrow::Draw (Prs3d_Root::CurrentGroup (aPresentation), aPlast, aDir, M_PI/180.*10., aVal/10.);
|
Prs3d_Arrow::Draw (Prs3d_Root::CurrentGroup (aPresentation), aPlast, aDir, anArrowAspect->Angle(), aVal/10.);
|
||||||
|
|
||||||
G->SetPrimitivesAspect(aTextAspect->Aspect());
|
G->SetPrimitivesAspect(aTextAspect->Aspect());
|
||||||
|
|
||||||
|
if (*aText != '\0')
|
||||||
|
{
|
||||||
Graphic3d_Vertex a2(aPlast.X(),aPlast.Y(),aPlast.Z());
|
Graphic3d_Vertex a2(aPlast.X(),aPlast.Y(),aPlast.Z());
|
||||||
Prs3d_Root::CurrentGroup(aPresentation)->Text(aText,a2,1./81.);
|
Prs3d_Root::CurrentGroup(aPresentation)->Text(aText,a2,1./81.);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
@@ -7,6 +7,8 @@ DsgPrs_Chamf2dPresentation.cxx
|
|||||||
DsgPrs_Chamf2dPresentation.hxx
|
DsgPrs_Chamf2dPresentation.hxx
|
||||||
DsgPrs_ConcentricPresentation.cxx
|
DsgPrs_ConcentricPresentation.cxx
|
||||||
DsgPrs_ConcentricPresentation.hxx
|
DsgPrs_ConcentricPresentation.hxx
|
||||||
|
DsgPrs_DatumPrs.cxx
|
||||||
|
DsgPrs_DatumPrs.hxx
|
||||||
DsgPrs_DiameterPresentation.cxx
|
DsgPrs_DiameterPresentation.cxx
|
||||||
DsgPrs_DiameterPresentation.hxx
|
DsgPrs_DiameterPresentation.hxx
|
||||||
DsgPrs_EllipseRadiusPresentation.cxx
|
DsgPrs_EllipseRadiusPresentation.cxx
|
||||||
|
@@ -345,27 +345,15 @@ void HLRBRep_Curve::D1 (const Standard_Real U,
|
|||||||
// 1 - ---- f (1 - ----)
|
// 1 - ---- f (1 - ----)
|
||||||
// f f
|
// f f
|
||||||
|
|
||||||
/* gp_Pnt P3D;
|
|
||||||
gp_Vec V13D;
|
|
||||||
HLRBRep_BCurveTool::D1(myCurve,U,P3D,V13D);
|
|
||||||
P3D .Transform(((HLRAlgo_Projector*) myProj)->Transformation());
|
|
||||||
V13D.Transform(((HLRAlgo_Projector*) myProj)->Transformation());
|
|
||||||
if (((HLRAlgo_Projector*) myProj)->Perspective()) {
|
|
||||||
Standard_Real f = ((HLRAlgo_Projector*) myProj)->Focus();
|
|
||||||
Standard_Real R = 1. - P3D.Z()/f;
|
|
||||||
Standard_Real e = V13D.Z()/(f*R*R);
|
|
||||||
P.SetCoord(P3D .X()/R , P3D .Y()/R );
|
|
||||||
V.SetCoord(V13D.X()/R + P3D.X()*e, V13D.Y()/R + P3D.Y()*e);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
P.SetCoord(P3D .X(),P3D .Y());
|
|
||||||
V.SetCoord(V13D.X(),V13D.Y());
|
|
||||||
} */
|
|
||||||
gp_Pnt P3D;
|
gp_Pnt P3D;
|
||||||
gp_Vec V13D;
|
gp_Vec V13D;
|
||||||
HLRBRep_BCurveTool::D1(myCurve,U,P3D,V13D);
|
HLRBRep_BCurveTool::D1(myCurve,U,P3D,V13D);
|
||||||
if (((HLRAlgo_Projector*) myProj)->Perspective()) {
|
if (myProj->Perspective())
|
||||||
Standard_Real f = ((HLRAlgo_Projector*) myProj)->Focus();
|
{
|
||||||
|
P3D .Transform(myProj->Transformation());
|
||||||
|
V13D.Transform(myProj->Transformation());
|
||||||
|
|
||||||
|
Standard_Real f = myProj->Focus();
|
||||||
Standard_Real R = 1. - P3D.Z()/f;
|
Standard_Real R = 1. - P3D.Z()/f;
|
||||||
Standard_Real e = V13D.Z()/(f*R*R);
|
Standard_Real e = V13D.Z()/(f*R*R);
|
||||||
P.SetCoord(P3D .X()/R , P3D .Y()/R );
|
P.SetCoord(P3D .X()/R , P3D .Y()/R );
|
||||||
@@ -373,12 +361,7 @@ void HLRBRep_Curve::D1 (const Standard_Real U,
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
//OCC155
|
//OCC155
|
||||||
((HLRAlgo_Projector*) myProj)->Project(P3D,V13D,P,V);
|
myProj->Project(P3D,V13D,P,V);
|
||||||
/* ((HLRAlgo_Projector*) myProj)->Project(P3D,P);
|
|
||||||
gp_Pnt2d opop;
|
|
||||||
gp_Pnt uiui(V13D.X(),V13D.Y(),V13D.Z());
|
|
||||||
((HLRAlgo_Projector*) myProj)->Project(uiui,opop);
|
|
||||||
V.SetCoord(opop.X(),opop.Y()); */
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -402,11 +385,12 @@ void HLRBRep_Curve::D2 (const Standard_Real U,
|
|||||||
gp_Pnt P3D;
|
gp_Pnt P3D;
|
||||||
gp_Vec V13D,V23D;
|
gp_Vec V13D,V23D;
|
||||||
HLRBRep_BCurveTool::D2(myCurve,U,P3D,V13D,V23D);
|
HLRBRep_BCurveTool::D2(myCurve,U,P3D,V13D,V23D);
|
||||||
P3D .Transform(((HLRAlgo_Projector*) myProj)->Transformation());
|
P3D .Transform(myProj->Transformation());
|
||||||
V13D.Transform(((HLRAlgo_Projector*) myProj)->Transformation());
|
V13D.Transform(myProj->Transformation());
|
||||||
V23D.Transform(((HLRAlgo_Projector*) myProj)->Transformation());
|
V23D.Transform(myProj->Transformation());
|
||||||
if (((HLRAlgo_Projector*) myProj)->Perspective()) {
|
if (myProj->Perspective())
|
||||||
Standard_Real f = ((HLRAlgo_Projector*) myProj)->Focus();
|
{
|
||||||
|
Standard_Real f = myProj->Focus();
|
||||||
Standard_Real R = 1. - P3D.Z() / f;
|
Standard_Real R = 1. - P3D.Z() / f;
|
||||||
Standard_Real q = f*R*R;
|
Standard_Real q = f*R*R;
|
||||||
Standard_Real e = V13D.Z()/q;
|
Standard_Real e = V13D.Z()/q;
|
||||||
|
@@ -13,12 +13,21 @@
|
|||||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
// commercial license or contractual agreement.
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#if !defined(HAVE_FREEIMAGE) && defined(_WIN32)
|
||||||
|
#define HAVE_WINCODEC
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_FREEIMAGE
|
#ifdef HAVE_FREEIMAGE
|
||||||
#include <FreeImage.h>
|
#include <FreeImage.h>
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
#pragma comment( lib, "FreeImage.lib" )
|
#pragma comment( lib, "FreeImage.lib" )
|
||||||
#endif
|
#endif
|
||||||
|
#elif defined(HAVE_WINCODEC)
|
||||||
|
//#include <initguid.h>
|
||||||
|
#include <wincodec.h>
|
||||||
|
#undef min
|
||||||
|
#undef max
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <Image_AlienPixMap.hxx>
|
#include <Image_AlienPixMap.hxx>
|
||||||
@@ -33,9 +42,9 @@
|
|||||||
|
|
||||||
IMPLEMENT_STANDARD_RTTIEXT(Image_AlienPixMap,Image_PixMap)
|
IMPLEMENT_STANDARD_RTTIEXT(Image_AlienPixMap,Image_PixMap)
|
||||||
|
|
||||||
#ifdef HAVE_FREEIMAGE
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
|
#ifdef HAVE_FREEIMAGE
|
||||||
static Image_Format convertFromFreeFormat (FREE_IMAGE_TYPE theFormatFI,
|
static Image_Format convertFromFreeFormat (FREE_IMAGE_TYPE theFormatFI,
|
||||||
FREE_IMAGE_COLOR_TYPE theColorTypeFI,
|
FREE_IMAGE_COLOR_TYPE theColorTypeFI,
|
||||||
unsigned theBitsPerPixel)
|
unsigned theBitsPerPixel)
|
||||||
@@ -101,9 +110,112 @@ namespace
|
|||||||
return FIT_UNKNOWN;
|
return FIT_UNKNOWN;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
#elif defined(HAVE_WINCODEC)
|
||||||
#endif
|
|
||||||
|
|
||||||
|
//! Return a zero GUID
|
||||||
|
static GUID getNullGuid()
|
||||||
|
{
|
||||||
|
GUID aGuid = { 0, 0, 0, { 0, 0, 0, 0, 0, 0, 0, 0 } };
|
||||||
|
return aGuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Sentry over IUnknown pointer.
|
||||||
|
template<class T> class Image_ComPtr
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
//! Empty constructor.
|
||||||
|
Image_ComPtr()
|
||||||
|
: myPtr (NULL) {}
|
||||||
|
|
||||||
|
//! Destructor.
|
||||||
|
~Image_ComPtr()
|
||||||
|
{
|
||||||
|
Nullify();
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Return TRUE if pointer is NULL.
|
||||||
|
bool IsNull() const { return myPtr == NULL; }
|
||||||
|
|
||||||
|
//! Release the pointer.
|
||||||
|
void Nullify()
|
||||||
|
{
|
||||||
|
if (myPtr != NULL)
|
||||||
|
{
|
||||||
|
myPtr->Release();
|
||||||
|
myPtr = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Return pointer for initialization.
|
||||||
|
T*& ChangePtr()
|
||||||
|
{
|
||||||
|
Standard_ASSERT_RAISE (myPtr == NULL, "Pointer cannot be initialized twice!");
|
||||||
|
return myPtr;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Return pointer.
|
||||||
|
T* get() { return myPtr; }
|
||||||
|
|
||||||
|
//! Return pointer.
|
||||||
|
T* operator->() { return get(); }
|
||||||
|
|
||||||
|
//! Cast handle to contained type
|
||||||
|
T& operator*() { return *get(); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
T* myPtr;
|
||||||
|
};
|
||||||
|
|
||||||
|
//! Convert WIC GUID to Image_Format.
|
||||||
|
static Image_Format convertFromWicFormat (const WICPixelFormatGUID& theFormat)
|
||||||
|
{
|
||||||
|
if (theFormat == GUID_WICPixelFormat32bppBGRA)
|
||||||
|
{
|
||||||
|
return Image_Format_BGRA;
|
||||||
|
}
|
||||||
|
else if (theFormat == GUID_WICPixelFormat32bppBGR)
|
||||||
|
{
|
||||||
|
return Image_Format_BGR32;
|
||||||
|
}
|
||||||
|
else if (theFormat == GUID_WICPixelFormat24bppRGB)
|
||||||
|
{
|
||||||
|
return Image_Format_RGB;
|
||||||
|
}
|
||||||
|
else if (theFormat == GUID_WICPixelFormat24bppBGR)
|
||||||
|
{
|
||||||
|
return Image_Format_BGR;
|
||||||
|
}
|
||||||
|
else if (theFormat == GUID_WICPixelFormat8bppGray)
|
||||||
|
{
|
||||||
|
return Image_Format_Gray;
|
||||||
|
}
|
||||||
|
return Image_Format_UNKNOWN;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Convert Image_Format to WIC GUID.
|
||||||
|
static WICPixelFormatGUID convertToWicFormat (Image_Format theFormat)
|
||||||
|
{
|
||||||
|
switch (theFormat)
|
||||||
|
{
|
||||||
|
case Image_Format_BGRA: return GUID_WICPixelFormat32bppBGRA;
|
||||||
|
case Image_Format_BGR32: return GUID_WICPixelFormat32bppBGR;
|
||||||
|
case Image_Format_RGB: return GUID_WICPixelFormat24bppRGB;
|
||||||
|
case Image_Format_BGR: return GUID_WICPixelFormat24bppBGR;
|
||||||
|
case Image_Format_Gray: return GUID_WICPixelFormat8bppGray;
|
||||||
|
case Image_Format_Alpha: return GUID_WICPixelFormat8bppGray; // GUID_WICPixelFormat8bppAlpha
|
||||||
|
case Image_Format_GrayF: // GUID_WICPixelFormat32bppGrayFloat
|
||||||
|
case Image_Format_AlphaF:
|
||||||
|
case Image_Format_RGBAF: // GUID_WICPixelFormat128bppRGBAFloat
|
||||||
|
case Image_Format_RGBF: // GUID_WICPixelFormat96bppRGBFloat
|
||||||
|
case Image_Format_RGBA: // GUID_WICPixelFormat32bppRGBA
|
||||||
|
case Image_Format_RGB32: // GUID_WICPixelFormat32bppRGB
|
||||||
|
default:
|
||||||
|
return getNullGuid();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
// function : Image_AlienPixMap
|
// function : Image_AlienPixMap
|
||||||
@@ -176,6 +288,36 @@ bool Image_AlienPixMap::InitTrash (Image_Format thePixelFormat,
|
|||||||
myLibImage = anImage;
|
myLibImage = anImage;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
#elif defined(HAVE_WINCODEC)
|
||||||
|
bool Image_AlienPixMap::InitTrash (Image_Format thePixelFormat,
|
||||||
|
const Standard_Size theSizeX,
|
||||||
|
const Standard_Size theSizeY,
|
||||||
|
const Standard_Size theSizeRowBytes)
|
||||||
|
{
|
||||||
|
Clear();
|
||||||
|
Image_Format aFormat = thePixelFormat;
|
||||||
|
switch (aFormat)
|
||||||
|
{
|
||||||
|
case Image_Format_RGB:
|
||||||
|
aFormat = Image_Format_BGR;
|
||||||
|
break;
|
||||||
|
case Image_Format_RGB32:
|
||||||
|
aFormat = Image_Format_BGR32;
|
||||||
|
break;
|
||||||
|
case Image_Format_RGBA:
|
||||||
|
aFormat = Image_Format_BGRA;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Image_PixMap::InitTrash (aFormat, theSizeX, theSizeY, theSizeRowBytes))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
SetTopDown (true);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
bool Image_AlienPixMap::InitTrash (Image_Format thePixelFormat,
|
bool Image_AlienPixMap::InitTrash (Image_Format thePixelFormat,
|
||||||
const Standard_Size theSizeX,
|
const Standard_Size theSizeX,
|
||||||
@@ -252,7 +394,7 @@ bool Image_AlienPixMap::Load (const TCollection_AsciiString& theImagePath)
|
|||||||
Clear();
|
Clear();
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
const TCollection_ExtendedString aFileNameW (theImagePath.ToCString(), Standard_True);
|
const TCollection_ExtendedString aFileNameW (theImagePath);
|
||||||
FREE_IMAGE_FORMAT aFIF = FreeImage_GetFileTypeU (aFileNameW.ToWideString(), 0);
|
FREE_IMAGE_FORMAT aFIF = FreeImage_GetFileTypeU (aFileNameW.ToWideString(), 0);
|
||||||
#else
|
#else
|
||||||
FREE_IMAGE_FORMAT aFIF = FreeImage_GetFileType (theImagePath.ToCString(), 0);
|
FREE_IMAGE_FORMAT aFIF = FreeImage_GetFileType (theImagePath.ToCString(), 0);
|
||||||
@@ -318,6 +460,73 @@ bool Image_AlienPixMap::Load (const TCollection_AsciiString& theImagePath)
|
|||||||
myLibImage = anImage;
|
myLibImage = anImage;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
#elif defined(HAVE_WINCODEC)
|
||||||
|
bool Image_AlienPixMap::Load (const TCollection_AsciiString& theImagePath)
|
||||||
|
{
|
||||||
|
Clear();
|
||||||
|
|
||||||
|
IWICImagingFactory* aWicImgFactory = NULL;
|
||||||
|
CoInitializeEx (NULL, COINIT_MULTITHREADED);
|
||||||
|
if (CoCreateInstance (CLSID_WICImagingFactory, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&aWicImgFactory)) != S_OK)
|
||||||
|
{
|
||||||
|
Message::DefaultMessenger()->Send ("Error: cannot initialize WIC Imaging Factory", Message_Fail);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Image_ComPtr<IWICBitmapDecoder> aWicDecoder;
|
||||||
|
const TCollection_ExtendedString aFileNameW (theImagePath);
|
||||||
|
if (aWicImgFactory->CreateDecoderFromFilename (aFileNameW.ToWideString(), NULL, GENERIC_READ, WICDecodeMetadataCacheOnDemand, &aWicDecoder.ChangePtr()) != S_OK)
|
||||||
|
{
|
||||||
|
Message::DefaultMessenger()->Send ("Error: cannot create WIC Image Decoder", Message_Fail);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
UINT aFrameCount = 0, aFrameSizeX = 0, aFrameSizeY = 0;
|
||||||
|
WICPixelFormatGUID aWicPixelFormat = getNullGuid();
|
||||||
|
Image_ComPtr<IWICBitmapFrameDecode> aWicFrameDecode;
|
||||||
|
if (aWicDecoder->GetFrameCount (&aFrameCount) != S_OK
|
||||||
|
|| aFrameCount < 1
|
||||||
|
|| aWicDecoder->GetFrame (0, &aWicFrameDecode.ChangePtr()) != S_OK
|
||||||
|
|| aWicFrameDecode->GetSize (&aFrameSizeX, &aFrameSizeY) != S_OK
|
||||||
|
|| aWicFrameDecode->GetPixelFormat (&aWicPixelFormat))
|
||||||
|
{
|
||||||
|
Message::DefaultMessenger()->Send ("Error: cannot get WIC Image Frame", Message_Fail);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Image_ComPtr<IWICFormatConverter> aWicConvertedFrame;
|
||||||
|
Image_Format aPixelFormat = convertFromWicFormat (aWicPixelFormat);
|
||||||
|
if (aPixelFormat == Image_Format_UNKNOWN)
|
||||||
|
{
|
||||||
|
aPixelFormat = Image_Format_RGB;
|
||||||
|
if (aWicImgFactory->CreateFormatConverter (&aWicConvertedFrame.ChangePtr()) != S_OK
|
||||||
|
|| aWicConvertedFrame->Initialize (aWicFrameDecode.get(), convertToWicFormat (aPixelFormat), WICBitmapDitherTypeNone, NULL, 0.0f, WICBitmapPaletteTypeCustom) != S_OK)
|
||||||
|
{
|
||||||
|
Message::DefaultMessenger()->Send ("Error: cannot convert WIC Image Frame to RGB format", Message_Fail);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
aWicFrameDecode.Nullify();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Image_PixMap::InitTrash (aPixelFormat, aFrameSizeX, aFrameSizeY))
|
||||||
|
{
|
||||||
|
Message::DefaultMessenger()->Send ("Error: cannot initialize memory for image", Message_Fail);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
IWICBitmapSource* aWicSrc = aWicFrameDecode.get();
|
||||||
|
if(!aWicConvertedFrame.IsNull())
|
||||||
|
{
|
||||||
|
aWicSrc = aWicConvertedFrame.get();
|
||||||
|
}
|
||||||
|
if (aWicSrc->CopyPixels (NULL, (UINT )SizeRowBytes(), (UINT )SizeBytes(), ChangeData()) != S_OK)
|
||||||
|
{
|
||||||
|
Message::DefaultMessenger()->Send ("Error: cannot copy pixels from WIC Image", Message_Fail);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
SetTopDown (true);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
bool Image_AlienPixMap::Load (const TCollection_AsciiString&)
|
bool Image_AlienPixMap::Load (const TCollection_AsciiString&)
|
||||||
{
|
{
|
||||||
@@ -527,6 +736,124 @@ bool Image_AlienPixMap::Save (const TCollection_AsciiString& theFileName)
|
|||||||
FreeImage_Unload (anImageToDump);
|
FreeImage_Unload (anImageToDump);
|
||||||
}
|
}
|
||||||
return isSaved;
|
return isSaved;
|
||||||
|
|
||||||
|
#elif defined(HAVE_WINCODEC)
|
||||||
|
|
||||||
|
TCollection_AsciiString aFileNameLower = theFileName;
|
||||||
|
aFileNameLower.LowerCase();
|
||||||
|
GUID aFileFormat = getNullGuid();
|
||||||
|
if (aFileNameLower.EndsWith (".ppm"))
|
||||||
|
{
|
||||||
|
return savePPM (theFileName);
|
||||||
|
}
|
||||||
|
else if (aFileNameLower.EndsWith (".bmp"))
|
||||||
|
{
|
||||||
|
aFileFormat = GUID_ContainerFormatBmp;
|
||||||
|
}
|
||||||
|
else if (aFileNameLower.EndsWith (".png"))
|
||||||
|
{
|
||||||
|
aFileFormat = GUID_ContainerFormatPng;
|
||||||
|
}
|
||||||
|
else if (aFileNameLower.EndsWith (".jpg")
|
||||||
|
|| aFileNameLower.EndsWith (".jpeg"))
|
||||||
|
{
|
||||||
|
aFileFormat = GUID_ContainerFormatJpeg;
|
||||||
|
}
|
||||||
|
else if (aFileNameLower.EndsWith (".tiff"))
|
||||||
|
{
|
||||||
|
aFileFormat = GUID_ContainerFormatTiff;
|
||||||
|
}
|
||||||
|
else if (aFileNameLower.EndsWith (".gif"))
|
||||||
|
{
|
||||||
|
aFileFormat = GUID_ContainerFormatGif;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (aFileFormat == getNullGuid())
|
||||||
|
{
|
||||||
|
Message::DefaultMessenger()->Send ("Error: unsupported image format", Message_Fail);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
IWICImagingFactory* aWicImgFactory = NULL;
|
||||||
|
CoInitializeEx (NULL, COINIT_MULTITHREADED);
|
||||||
|
if (CoCreateInstance (CLSID_WICImagingFactory, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&aWicImgFactory)) != S_OK)
|
||||||
|
{
|
||||||
|
Message::DefaultMessenger()->Send ("Error: cannot initialize WIC Imaging Factory", Message_Fail);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Image_ComPtr<IWICStream> aWicFileStream;
|
||||||
|
Image_ComPtr<IWICBitmapEncoder> aWicEncoder;
|
||||||
|
const TCollection_ExtendedString aFileNameW (theFileName);
|
||||||
|
if (aWicImgFactory->CreateStream (&aWicFileStream.ChangePtr()) != S_OK
|
||||||
|
|| aWicFileStream->InitializeFromFilename (aFileNameW.ToWideString(), GENERIC_WRITE) != S_OK)
|
||||||
|
{
|
||||||
|
Message::DefaultMessenger()->Send ("Error: cannot create WIC File Stream", Message_Fail);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (aWicImgFactory->CreateEncoder (aFileFormat, NULL, &aWicEncoder.ChangePtr()) != S_OK
|
||||||
|
|| aWicEncoder->Initialize (aWicFileStream.get(), WICBitmapEncoderNoCache) != S_OK)
|
||||||
|
{
|
||||||
|
Message::DefaultMessenger()->Send ("Error: cannot create WIC Encoder", Message_Fail);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const WICPixelFormatGUID aWicPixelFormat = convertToWicFormat (myImgFormat);
|
||||||
|
if (aWicPixelFormat == getNullGuid())
|
||||||
|
{
|
||||||
|
Message::DefaultMessenger()->Send ("Error: unsupported pixel format", Message_Fail);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
WICPixelFormatGUID aWicPixelFormatRes = aWicPixelFormat;
|
||||||
|
Image_ComPtr<IWICBitmapFrameEncode> aWicFrameEncode;
|
||||||
|
if (aWicEncoder->CreateNewFrame (&aWicFrameEncode.ChangePtr(), NULL) != S_OK
|
||||||
|
|| aWicFrameEncode->Initialize (NULL) != S_OK
|
||||||
|
|| aWicFrameEncode->SetSize ((UINT )SizeX(), (UINT )SizeY()) != S_OK
|
||||||
|
|| aWicFrameEncode->SetPixelFormat (&aWicPixelFormatRes) != S_OK)
|
||||||
|
{
|
||||||
|
Message::DefaultMessenger()->Send ("Error: cannot create WIC Frame", Message_Fail);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (aWicPixelFormatRes != aWicPixelFormat)
|
||||||
|
{
|
||||||
|
Message::DefaultMessenger()->Send ("Error: pixel format is unsupported by image format", Message_Fail);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsTopDown())
|
||||||
|
{
|
||||||
|
if (aWicFrameEncode->WritePixels ((UINT )SizeY(), (UINT )SizeRowBytes(), (UINT )SizeBytes(), (BYTE* )Data()) != S_OK)
|
||||||
|
{
|
||||||
|
Message::DefaultMessenger()->Send ("Error: cannot write pixels to WIC Frame", Message_Fail);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (Standard_Size aRow = 0; aRow < SizeY(); ++aRow)
|
||||||
|
{
|
||||||
|
if (aWicFrameEncode->WritePixels (1, (UINT )SizeRowBytes(), (UINT )SizeRowBytes(), (BYTE* )Row (aRow)) != S_OK)
|
||||||
|
{
|
||||||
|
Message::DefaultMessenger()->Send ("Error: cannot write pixels to WIC Frame", Message_Fail);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (aWicFrameEncode->Commit() != S_OK
|
||||||
|
|| aWicEncoder->Commit() != S_OK)
|
||||||
|
{
|
||||||
|
Message::DefaultMessenger()->Send ("Error: cannot commit data to WIC Frame", Message_Fail);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (aWicFileStream->Commit (STGC_DEFAULT) != S_OK)
|
||||||
|
{
|
||||||
|
//Message::DefaultMessenger()->Send ("Error: cannot commit data to WIC File Stream", Message_Fail);
|
||||||
|
//return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
#else
|
#else
|
||||||
const Standard_Integer aLen = theFileName.Length();
|
const Standard_Integer aLen = theFileName.Length();
|
||||||
if ((aLen >= 4) && (theFileName.Value (aLen - 3) == '.')
|
if ((aLen >= 4) && (theFileName.Value (aLen - 3) == '.')
|
||||||
|
@@ -33,50 +33,45 @@ class Message_ProgressIndicator;
|
|||||||
DEFINE_STANDARD_HANDLE(Message_ProgressIndicator, Standard_Transient)
|
DEFINE_STANDARD_HANDLE(Message_ProgressIndicator, Standard_Transient)
|
||||||
|
|
||||||
//! Defines abstract interface from program to the "user".
|
//! Defines abstract interface from program to the "user".
|
||||||
//! That includes progress indication and user break mechanisms
|
//! This includes progress indication and user break mechanisms.
|
||||||
//!
|
//!
|
||||||
//! The interface to progress indicator represents it as a scale
|
//! The process that uses the progress indicator interacts with it as
|
||||||
//! for each range and step can be defined by the program that uses it.
|
//! with a scale whose range and step can be configured according to
|
||||||
|
//! the nature of the process.
|
||||||
//! The scale can be made "infinite", which means it will grow
|
//! The scale can be made "infinite", which means it will grow
|
||||||
//! non-linearly, end of scale will be approached asymptotically at
|
//! non-linearly, and end of scale will be approached asymptotically at
|
||||||
//! infinite number of steps. In that case value of scale range
|
//! infinite number of steps. In that case the range defines
|
||||||
//! gives a number of steps corresponding to position at 1/2 of scale.
|
//! a number of steps corresponding to position at 1/2 of scale.
|
||||||
//! The current position can be either set directly (in a range from
|
//! The current position can be either set directly (in a range from
|
||||||
//! current position to maximum scale value), or incremented step
|
//! current position to maximum scale value), or incremented step
|
||||||
//! by step.
|
//! by step.
|
||||||
//!
|
//!
|
||||||
//! Progress indication mechanism is adapted for convenient
|
//! Progress indication mechanism is adapted for convenient
|
||||||
//! usage in hiererchical processes that require indication of
|
//! usage in hiererchical processes that require indication of
|
||||||
//! progress at several (sub)levels of the process.
|
//! progress at several levels of the process nesting.
|
||||||
//! For that purpose, it is possible to create restricted sub-scope of
|
//! For that purpose, it is possible to create restricted sub-scope of
|
||||||
//! indication by specifying part of a current scale that is to be
|
//! indication by specifying part of a current scale to be
|
||||||
//! used by the subprocess.
|
//! used by the subprocess.
|
||||||
//! When subprocess works with progress indicator in the restricted
|
//! When subprocess works with progress indicator in the restricted
|
||||||
//! scope, it has the same interface to a scale, while actually it
|
//! scope, it has the same interface to a scale, while actually it
|
||||||
//! deals only with part of the whole scale.
|
//! deals only with part of the whole scale.
|
||||||
//!
|
//!
|
||||||
|
//! The recommended way to implement progress indication in the algorithm
|
||||||
|
//! is to use class Message_ProgressSentry that provides iterator-like
|
||||||
|
//! interface for incrementing progress and opening nested scopes.
|
||||||
|
//!
|
||||||
//! NOTE:
|
//! NOTE:
|
||||||
//! Currently there is no support for concurrent progress
|
//! Currently there is no support for concurrent progress
|
||||||
//! indicator that could be useful in multithreaded applications.
|
//! indicator that could be useful in multithreaded applications.
|
||||||
//! The main reason for this is that such implementation would be
|
|
||||||
//! too complex regarding forecasted lack of real need for such
|
|
||||||
//! support.
|
|
||||||
//! To support this it would require that ProgressScale keep its
|
|
||||||
//! own position and take care of incrementing main ProgressIndicator
|
|
||||||
//! in destructor. This would also require having cross-references
|
|
||||||
//! between nested instances of ProgressScale, ie. potential
|
|
||||||
//! problems with memory management.
|
|
||||||
//! In case of need of concurrent progress indicator two things can
|
|
||||||
//! be suggested: either creation of single spane with summary number
|
|
||||||
//! of steps, or usage of infinite scale.
|
|
||||||
//!
|
//!
|
||||||
//! The user break is implemented as virtual function that might
|
//! The user break is implemented as virtual function that should
|
||||||
//! return True in case if break signal from the user is obtained.
|
//! return True in case if break signal from the user is received.
|
||||||
//!
|
//!
|
||||||
//! The derived classes should take care of visualisation of the
|
//! The derived class should take care of visualisation of the
|
||||||
//! progress indicator (e.g. show total position at the graphical bar,
|
//! progress indicator (e.g. show total position at the graphical bar,
|
||||||
//! and/or print all scopes in text mode), and for implementation
|
//! print scopes in text mode, or else), and for implementation
|
||||||
//! of user break mechanism (if defined).
|
//! of user break mechanism (if necessary).
|
||||||
|
|
||||||
class Message_ProgressIndicator : public Standard_Transient
|
class Message_ProgressIndicator : public Standard_Transient
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@@ -37,6 +37,25 @@ class TCollection_HAsciiString;
|
|||||||
//! check for user break
|
//! check for user break
|
||||||
//! - Automatic scope closing in destructor
|
//! - Automatic scope closing in destructor
|
||||||
//! - Safe for NULL ProgressIndicator (just does nothing)
|
//! - Safe for NULL ProgressIndicator (just does nothing)
|
||||||
|
//!
|
||||||
|
//! Example of usage in nested process:
|
||||||
|
//!
|
||||||
|
//! @code{.cpp}
|
||||||
|
//! Handle(Draw_ProgressIndicator) aProgress = ...;
|
||||||
|
//!
|
||||||
|
//! // Outer cycle
|
||||||
|
//! Message_ProgressSentry anOuter (aProgress, "Outer", 0, nbOuter, 1);
|
||||||
|
//! for (int i = 0; i < nbOuter && anOuter.More(); i++, anOuter.Next())
|
||||||
|
//! {
|
||||||
|
//! // Inner cycle
|
||||||
|
//! Message_ProgressSentry anInner (aProgress, "Inner", 0, nbInner, 1);
|
||||||
|
//! for (int j = 0; j < nbInner && anInner.More(); j++, anInner.Next())
|
||||||
|
//! {
|
||||||
|
//! // Cycle body
|
||||||
|
//! }
|
||||||
|
//! }
|
||||||
|
//! @endcode
|
||||||
|
|
||||||
class Message_ProgressSentry
|
class Message_ProgressSentry
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@@ -205,7 +205,7 @@ void OSD_Chronometer::Reset ()
|
|||||||
//=======================================================================
|
//=======================================================================
|
||||||
void OSD_Chronometer::Restart ()
|
void OSD_Chronometer::Restart ()
|
||||||
{
|
{
|
||||||
Stopped = Standard_True;
|
Reset();
|
||||||
Start();
|
Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -616,141 +616,114 @@ void FreeAce ( PVOID pACE ) {
|
|||||||
/* Returns : TRUE on success, FALSE otherwise */
|
/* Returns : TRUE on success, FALSE otherwise */
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
/***/
|
/***/
|
||||||
static BOOL MoveDirectory ( LPCWSTR oldDir, LPCWSTR newDir, DWORD& theRecurseLevel ) {
|
static BOOL MoveDirectory (const wchar_t* oldDir, const wchar_t* newDir, DWORD& theRecurseLevel)
|
||||||
|
{
|
||||||
PWIN32_FIND_DATAW pFD;
|
wchar_t* driveSrc = NULL;
|
||||||
LPWSTR pName;
|
wchar_t* driveDst = NULL;
|
||||||
LPWSTR pFullNameSrc;
|
wchar_t* pathSrc = NULL;
|
||||||
LPWSTR pFullNameDst;
|
wchar_t* pathDst = NULL;
|
||||||
LPWSTR driveSrc, driveDst;
|
|
||||||
LPWSTR pathSrc, pathDst;
|
|
||||||
HANDLE hFindFile;
|
|
||||||
BOOL fFind;
|
|
||||||
BOOL retVal = FALSE;
|
BOOL retVal = FALSE;
|
||||||
DIR_RESPONSE response;
|
if (theRecurseLevel == 0)
|
||||||
|
{
|
||||||
if (theRecurseLevel == 0) {
|
|
||||||
|
|
||||||
++theRecurseLevel;
|
++theRecurseLevel;
|
||||||
|
BOOL fFind = FALSE;
|
||||||
fFind = FALSE;
|
if ((driveSrc = (wchar_t* )HeapAlloc (hHeap, 0, _MAX_DRIVE * sizeof(wchar_t))) != NULL
|
||||||
driveSrc = driveDst = pathSrc = pathDst = NULL;
|
&& (driveDst = (wchar_t* )HeapAlloc (hHeap, 0, _MAX_DRIVE * sizeof(wchar_t))) != NULL
|
||||||
|
&& (pathSrc = (wchar_t* )HeapAlloc (hHeap, 0, _MAX_DIR * sizeof(wchar_t))) != NULL
|
||||||
if ( ( driveSrc = ( LPWSTR )HeapAlloc ( hHeap, 0, _MAX_DRIVE * sizeof(WCHAR) ) ) != NULL &&
|
&& (pathDst = (wchar_t* )HeapAlloc (hHeap, 0, _MAX_DIR * sizeof(wchar_t))) != NULL)
|
||||||
( driveDst = ( LPWSTR )HeapAlloc ( hHeap, 0, _MAX_DRIVE * sizeof(WCHAR) ) ) != NULL &&
|
{
|
||||||
( pathSrc = ( LPWSTR )HeapAlloc ( hHeap, 0, _MAX_DIR * sizeof(WCHAR) ) ) != NULL &&
|
|
||||||
( pathDst = ( LPWSTR )HeapAlloc ( hHeap, 0, _MAX_DIR * sizeof(WCHAR) ) ) != NULL
|
|
||||||
) {
|
|
||||||
|
|
||||||
_wsplitpath (oldDir, driveSrc, pathSrc, NULL, NULL);
|
_wsplitpath (oldDir, driveSrc, pathSrc, NULL, NULL);
|
||||||
_wsplitpath (newDir, driveDst, pathDst, NULL, NULL);
|
_wsplitpath (newDir, driveDst, pathDst, NULL, NULL);
|
||||||
|
if (wcscmp (driveSrc, driveDst) == 0
|
||||||
if ( wcscmp ( driveSrc, driveDst ) == 0 &&
|
&& wcscmp (pathSrc, pathDst ) == 0)
|
||||||
wcscmp ( pathSrc, pathDst ) == 0
|
{
|
||||||
) {
|
|
||||||
retry:
|
retry:
|
||||||
retVal = MoveFileExW (
|
retVal = MoveFileExW (oldDir, newDir, MOVEFILE_REPLACE_EXISTING | MOVEFILE_COPY_ALLOWED);
|
||||||
oldDir, newDir, MOVEFILE_REPLACE_EXISTING | MOVEFILE_COPY_ALLOWED
|
|
||||||
);
|
|
||||||
fFind = TRUE;
|
fFind = TRUE;
|
||||||
|
if (!retVal)
|
||||||
if ( !retVal ) {
|
{
|
||||||
|
if (_response_dir_proc != NULL)
|
||||||
if ( _response_dir_proc != NULL ) {
|
{
|
||||||
|
const DIR_RESPONSE response = _response_dir_proc (oldDir);
|
||||||
response = ( *_response_dir_proc ) ( oldDir );
|
|
||||||
|
|
||||||
if (response == DIR_RETRY)
|
if (response == DIR_RETRY)
|
||||||
|
{
|
||||||
goto retry;
|
goto retry;
|
||||||
|
}
|
||||||
else if (response == DIR_IGNORE)
|
else if (response == DIR_IGNORE)
|
||||||
|
{
|
||||||
retVal = TRUE;
|
retVal = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (_move_dir_proc != NULL)
|
||||||
|
{
|
||||||
|
_move_dir_proc (oldDir, newDir);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} /* end if */
|
if (pathDst != NULL)
|
||||||
|
{
|
||||||
} else if ( _move_dir_proc != NULL )
|
HeapFree (hHeap, 0, pathDst);
|
||||||
|
}
|
||||||
( *_move_dir_proc ) ( oldDir, newDir );
|
if (pathSrc != NULL)
|
||||||
|
{
|
||||||
} /* end if */
|
HeapFree (hHeap, 0, pathSrc);
|
||||||
|
}
|
||||||
} /* end if */
|
if (driveDst != NULL)
|
||||||
|
{
|
||||||
if ( pathDst != NULL ) HeapFree ( hHeap, 0, pathDst );
|
HeapFree (hHeap, 0, driveDst);
|
||||||
if ( pathSrc != NULL ) HeapFree ( hHeap, 0, pathSrc );
|
}
|
||||||
if ( driveDst != NULL ) HeapFree ( hHeap, 0, driveDst );
|
if (driveSrc != NULL)
|
||||||
if ( driveSrc != NULL ) HeapFree ( hHeap, 0, driveSrc );
|
{
|
||||||
|
HeapFree (hHeap, 0, driveSrc);
|
||||||
if ( fFind ) {
|
}
|
||||||
|
|
||||||
|
if (fFind)
|
||||||
|
{
|
||||||
--theRecurseLevel;
|
--theRecurseLevel;
|
||||||
return retVal;
|
return retVal;
|
||||||
|
}
|
||||||
} // end if
|
}
|
||||||
|
else
|
||||||
} else {
|
{
|
||||||
|
|
||||||
++theRecurseLevel;
|
++theRecurseLevel;
|
||||||
|
}
|
||||||
|
|
||||||
} // end else
|
WIN32_FIND_DATAW* pFD = NULL;
|
||||||
|
wchar_t* pName = NULL;
|
||||||
pFD = NULL;
|
wchar_t* pFullNameSrc = NULL;
|
||||||
pName = NULL;
|
wchar_t* pFullNameDst = NULL;
|
||||||
pFullNameSrc = pFullNameDst = NULL;
|
HANDLE hFindFile = INVALID_HANDLE_VALUE;
|
||||||
hFindFile = INVALID_HANDLE_VALUE;
|
|
||||||
retVal = FALSE;
|
|
||||||
|
|
||||||
retVal = CreateDirectoryW (newDir, NULL);
|
retVal = CreateDirectoryW (newDir, NULL);
|
||||||
|
if (retVal || (!retVal && GetLastError() == ERROR_ALREADY_EXISTS))
|
||||||
if ( retVal || ( !retVal && GetLastError () == ERROR_ALREADY_EXISTS ) ) {
|
{
|
||||||
size_t anOldDirLength;
|
size_t anOldDirLength;
|
||||||
StringCchLengthW (oldDir, sizeof(oldDir) / sizeof(oldDir[0]), &anOldDirLength);
|
StringCchLengthW (oldDir, sizeof(oldDir) / sizeof(oldDir[0]), &anOldDirLength);
|
||||||
if ( ( pFD = ( PWIN32_FIND_DATAW )HeapAlloc (
|
if ((pFD = (WIN32_FIND_DATAW* )HeapAlloc (hHeap, 0, sizeof(WIN32_FIND_DATAW))) != NULL
|
||||||
hHeap, 0, sizeof ( WIN32_FIND_DATAW )
|
&& (pName = (wchar_t* )HeapAlloc (hHeap, 0, anOldDirLength + WILD_CARD_LEN + sizeof(L'\x00'))) != NULL)
|
||||||
)
|
{
|
||||||
) != NULL &&
|
|
||||||
(
|
|
||||||
pName = (LPWSTR)HeapAlloc(
|
|
||||||
hHeap, 0, anOldDirLength + WILD_CARD_LEN +
|
|
||||||
sizeof(L'\x00')
|
|
||||||
)
|
|
||||||
) != NULL
|
|
||||||
) {
|
|
||||||
StringCchCopyW (pName, sizeof(pName) / sizeof(pName[0]), oldDir);
|
StringCchCopyW (pName, sizeof(pName) / sizeof(pName[0]), oldDir);
|
||||||
StringCchCatW (pName, sizeof(pName), WILD_CARD);
|
StringCchCatW (pName, sizeof(pName), WILD_CARD);
|
||||||
|
|
||||||
retVal = TRUE;
|
retVal = TRUE;
|
||||||
fFind = ( hFindFile = FindFirstFileExW(pName, FindExInfoStandard, pFD, FindExSearchNameMatch, NULL, 0) ) != INVALID_HANDLE_VALUE;
|
hFindFile = FindFirstFileExW (pName, FindExInfoStandard, pFD, FindExSearchNameMatch, NULL, 0);
|
||||||
|
for (BOOL fFind = hFindFile != INVALID_HANDLE_VALUE; fFind; fFind = FindNextFileW (hFindFile, pFD))
|
||||||
while ( fFind ) {
|
{
|
||||||
|
if ((pFD->cFileName[0] == L'.' && pFD->cFileName[1] == L'\0')
|
||||||
if ( pFD -> cFileName[ 0 ] != L'.' ||
|
|| (pFD->cFileName[0] == L'.' && pFD->cFileName[1] == L'.' && pFD->cFileName[2] == L'\0'))
|
||||||
pFD -> cFileName[ 0 ] != L'.' &&
|
{
|
||||||
pFD -> cFileName[ 1 ] != L'.'
|
continue;
|
||||||
) {
|
}
|
||||||
size_t anOldDirLength2;
|
|
||||||
size_t aNewDirLength;
|
|
||||||
size_t aFileNameLength;
|
|
||||||
|
|
||||||
|
size_t anOldDirLength2 = 0, aNewDirLength = 0, aFileNameLength = 0;
|
||||||
StringCchLengthW (oldDir, sizeof(oldDir) / sizeof(oldDir[0]), &anOldDirLength2);
|
StringCchLengthW (oldDir, sizeof(oldDir) / sizeof(oldDir[0]), &anOldDirLength2);
|
||||||
StringCchLengthW (newDir, sizeof(newDir) / sizeof(newDir[0]), &aNewDirLength);
|
StringCchLengthW (newDir, sizeof(newDir) / sizeof(newDir[0]), &aNewDirLength);
|
||||||
StringCchLengthW (pFD->cFileName, sizeof(pFD->cFileName) / sizeof(pFD->cFileName[0]), &aFileNameLength);
|
StringCchLengthW (pFD->cFileName, sizeof(pFD->cFileName) / sizeof(pFD->cFileName[0]), &aFileNameLength);
|
||||||
|
if ((pFullNameSrc = (wchar_t* )HeapAlloc (hHeap, 0, anOldDirLength2 + aFileNameLength + sizeof(L'/') + sizeof(L'\x00'))) == NULL
|
||||||
if ( (pFullNameSrc = (LPWSTR)HeapAlloc(
|
|| (pFullNameDst = (wchar_t* )HeapAlloc (hHeap, 0, aNewDirLength + aFileNameLength + sizeof(L'/') + sizeof(L'\x00'))) == NULL)
|
||||||
hHeap, 0,
|
{
|
||||||
anOldDirLength2 + aFileNameLength +
|
break;
|
||||||
sizeof(L'/') + sizeof(L'\x00')
|
}
|
||||||
)
|
|
||||||
) == NULL ||
|
|
||||||
(pFullNameDst = (LPWSTR)HeapAlloc(
|
|
||||||
hHeap, 0,
|
|
||||||
aNewDirLength + aFileNameLength +
|
|
||||||
sizeof(L'/') + sizeof(L'\x00')
|
|
||||||
)
|
|
||||||
) == NULL
|
|
||||||
) break;
|
|
||||||
|
|
||||||
StringCchCopyW (pFullNameSrc, sizeof(pFullNameSrc) / sizeof(pFullNameSrc[0]), oldDir);
|
StringCchCopyW (pFullNameSrc, sizeof(pFullNameSrc) / sizeof(pFullNameSrc[0]), oldDir);
|
||||||
StringCchCatW (pFullNameSrc, sizeof(pFullNameSrc) / sizeof(pFullNameSrc[0]), L"/");
|
StringCchCatW (pFullNameSrc, sizeof(pFullNameSrc) / sizeof(pFullNameSrc[0]), L"/");
|
||||||
@@ -760,97 +733,102 @@ retry:
|
|||||||
StringCchCatW (pFullNameDst, sizeof(pFullNameDst) / sizeof(pFullNameDst[0]), L"/");
|
StringCchCatW (pFullNameDst, sizeof(pFullNameDst) / sizeof(pFullNameDst[0]), L"/");
|
||||||
StringCchCatW (pFullNameDst, sizeof(pFullNameDst) / sizeof(pFullNameDst[0]), pFD->cFileName);
|
StringCchCatW (pFullNameDst, sizeof(pFullNameDst) / sizeof(pFullNameDst[0]), pFD->cFileName);
|
||||||
|
|
||||||
if ( pFD -> dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) {
|
if ((pFD->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0)
|
||||||
|
{
|
||||||
retVal = MoveDirectory (pFullNameSrc, pFullNameDst, theRecurseLevel);
|
retVal = MoveDirectory (pFullNameSrc, pFullNameDst, theRecurseLevel);
|
||||||
if (!retVal) break;
|
if (!retVal)
|
||||||
|
{
|
||||||
} else {
|
|
||||||
retry_1:
|
|
||||||
retVal = MoveFileExW (pFullNameSrc, pFullNameDst,
|
|
||||||
MOVEFILE_REPLACE_EXISTING | MOVEFILE_COPY_ALLOWED);
|
|
||||||
if (! retVal) {
|
|
||||||
|
|
||||||
if ( _response_dir_proc != NULL ) {
|
|
||||||
|
|
||||||
response = ( *_response_dir_proc ) ( pFullNameSrc );
|
|
||||||
|
|
||||||
if ( response == DIR_ABORT )
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
else if ( response == DIR_RETRY )
|
}
|
||||||
|
|
||||||
goto retry_1;
|
|
||||||
|
|
||||||
else if ( response == DIR_IGNORE )
|
|
||||||
|
|
||||||
retVal = TRUE;
|
|
||||||
|
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
retry_1:
|
||||||
|
retVal = MoveFileExW (pFullNameSrc, pFullNameDst, MOVEFILE_REPLACE_EXISTING | MOVEFILE_COPY_ALLOWED);
|
||||||
|
if (!retVal)
|
||||||
|
{
|
||||||
|
if (_response_dir_proc != NULL)
|
||||||
|
{
|
||||||
|
const DIR_RESPONSE response = _response_dir_proc (pFullNameSrc);
|
||||||
|
if (response == DIR_ABORT)
|
||||||
|
{
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
} /* end if */
|
else if (response == DIR_RETRY)
|
||||||
|
{
|
||||||
} else if ( _move_dir_proc != NULL )
|
goto retry_1;
|
||||||
|
}
|
||||||
( *_move_dir_proc ) ( pFullNameSrc, pFullNameDst );
|
else if (response == DIR_IGNORE)
|
||||||
|
{
|
||||||
} /* end else */
|
retVal = TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (_move_dir_proc != NULL)
|
||||||
|
{
|
||||||
|
_move_dir_proc (pFullNameSrc, pFullNameDst);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
HeapFree (hHeap, 0, pFullNameDst);
|
HeapFree (hHeap, 0, pFullNameDst);
|
||||||
HeapFree (hHeap, 0, pFullNameSrc);
|
HeapFree (hHeap, 0, pFullNameSrc);
|
||||||
pFullNameSrc = pFullNameDst = NULL;
|
pFullNameSrc = pFullNameDst = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} /* end if */
|
if (hFindFile != INVALID_HANDLE_VALUE)
|
||||||
|
{
|
||||||
|
FindClose (hFindFile);
|
||||||
|
}
|
||||||
|
|
||||||
fFind = FindNextFileW ( hFindFile, pFD );
|
if (pFullNameSrc != NULL)
|
||||||
|
{
|
||||||
|
HeapFree (hHeap, 0, pFullNameSrc);
|
||||||
|
}
|
||||||
|
if (pFullNameDst != NULL)
|
||||||
|
{
|
||||||
|
HeapFree (hHeap, 0, pFullNameDst);
|
||||||
|
}
|
||||||
|
if (pName != NULL)
|
||||||
|
{
|
||||||
|
HeapFree (hHeap, 0, pName);
|
||||||
|
}
|
||||||
|
if (pFD != NULL)
|
||||||
|
{
|
||||||
|
HeapFree (hHeap, 0, pFD);
|
||||||
|
}
|
||||||
|
|
||||||
} /* end while */
|
if (retVal)
|
||||||
|
{
|
||||||
} /* end if */
|
|
||||||
|
|
||||||
} /* end if ( error creating directory ) */
|
|
||||||
|
|
||||||
if ( hFindFile != INVALID_HANDLE_VALUE ) FindClose ( hFindFile );
|
|
||||||
|
|
||||||
if ( pFullNameSrc != NULL ) HeapFree ( hHeap, 0, pFullNameSrc );
|
|
||||||
if ( pFullNameDst != NULL ) HeapFree ( hHeap, 0, pFullNameDst );
|
|
||||||
if ( pName != NULL ) HeapFree ( hHeap, 0, pName );
|
|
||||||
if ( pFD != NULL ) HeapFree ( hHeap, 0, pFD );
|
|
||||||
|
|
||||||
if ( retVal ) {
|
|
||||||
retry_2:
|
retry_2:
|
||||||
retVal = RemoveDirectoryW (oldDir);
|
retVal = RemoveDirectoryW (oldDir);
|
||||||
|
if (!retVal)
|
||||||
if ( !retVal ) {
|
{
|
||||||
|
if (_response_dir_proc != NULL)
|
||||||
if ( _response_dir_proc != NULL ) {
|
{
|
||||||
|
const DIR_RESPONSE response = _response_dir_proc (oldDir);
|
||||||
response = ( *_response_dir_proc ) ( oldDir );
|
|
||||||
|
|
||||||
if (response == DIR_RETRY)
|
if (response == DIR_RETRY)
|
||||||
|
{
|
||||||
goto retry_2;
|
goto retry_2;
|
||||||
|
}
|
||||||
else if (response == DIR_IGNORE)
|
else if (response == DIR_IGNORE)
|
||||||
|
{
|
||||||
retVal = TRUE;
|
retVal = TRUE;
|
||||||
|
}
|
||||||
} /* end if */
|
}
|
||||||
|
}
|
||||||
} /* end if */
|
}
|
||||||
|
|
||||||
} /* end if */
|
|
||||||
|
|
||||||
--theRecurseLevel;
|
--theRecurseLevel;
|
||||||
|
|
||||||
return retVal;
|
return retVal;
|
||||||
|
}
|
||||||
|
|
||||||
} /* end MoveDirectory */
|
BOOL MoveDirectory (const wchar_t* oldDir, const wchar_t* newDir)
|
||||||
|
|
||||||
BOOL MoveDirectory (LPCWSTR oldDir, LPCWSTR newDir)
|
|
||||||
{
|
{
|
||||||
DWORD aRecurseLevel = 0;
|
DWORD aRecurseLevel = 0;
|
||||||
return MoveDirectory (oldDir, newDir, aRecurseLevel);
|
return MoveDirectory (oldDir, newDir, aRecurseLevel);
|
||||||
@@ -863,68 +841,44 @@ BOOL MoveDirectory (LPCWSTR oldDir, LPCWSTR newDir)
|
|||||||
/* Returns : TRUE on success, FALSE otherwise */
|
/* Returns : TRUE on success, FALSE otherwise */
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
/***/
|
/***/
|
||||||
BOOL CopyDirectory ( LPCWSTR dirSrc, LPCWSTR dirDst ) {
|
BOOL CopyDirectory (const wchar_t* dirSrc, const wchar_t* dirDst)
|
||||||
|
{
|
||||||
PWIN32_FIND_DATAW pFD = NULL;
|
WIN32_FIND_DATAW* pFD = NULL;
|
||||||
LPWSTR pName = NULL;
|
wchar_t* pName = NULL;
|
||||||
LPWSTR pFullNameSrc = NULL;
|
wchar_t* pFullNameSrc = NULL;
|
||||||
LPWSTR pFullNameDst = NULL;
|
wchar_t* pFullNameDst = NULL;
|
||||||
HANDLE hFindFile = INVALID_HANDLE_VALUE;
|
HANDLE hFindFile = INVALID_HANDLE_VALUE;
|
||||||
BOOL fFind;
|
|
||||||
BOOL retVal = FALSE;
|
|
||||||
DIR_RESPONSE response;
|
|
||||||
|
|
||||||
retVal = CreateDirectoryW ( dirDst, NULL );
|
BOOL retVal = CreateDirectoryW (dirDst, NULL);
|
||||||
|
if (retVal || (!retVal && GetLastError() == ERROR_ALREADY_EXISTS))
|
||||||
if ( retVal || ( !retVal && GetLastError () == ERROR_ALREADY_EXISTS ) ) {
|
{
|
||||||
|
size_t aDirSrcLength = 0;
|
||||||
size_t aDirSrcLength;
|
|
||||||
StringCchLengthW (dirSrc, sizeof(dirSrc) / sizeof(dirSrc[0]), &aDirSrcLength);
|
StringCchLengthW (dirSrc, sizeof(dirSrc) / sizeof(dirSrc[0]), &aDirSrcLength);
|
||||||
|
if ((pFD = (WIN32_FIND_DATAW* )HeapAlloc (hHeap, 0, sizeof(WIN32_FIND_DATAW))) != NULL
|
||||||
if ( ( pFD = ( PWIN32_FIND_DATAW )HeapAlloc (
|
&& (pName = (wchar_t* )HeapAlloc (hHeap, 0, aDirSrcLength + WILD_CARD_LEN + sizeof(L'\x00'))) != NULL)
|
||||||
hHeap, 0, sizeof ( WIN32_FIND_DATAW )
|
{
|
||||||
)
|
|
||||||
) != NULL &&
|
|
||||||
( pName = ( LPWSTR )HeapAlloc (
|
|
||||||
hHeap, 0, aDirSrcLength + WILD_CARD_LEN +
|
|
||||||
sizeof ( L'\x00' )
|
|
||||||
)
|
|
||||||
) != NULL
|
|
||||||
) {
|
|
||||||
StringCchCopyW(pName, sizeof(pName) / sizeof(pName[0]), dirSrc);
|
StringCchCopyW(pName, sizeof(pName) / sizeof(pName[0]), dirSrc);
|
||||||
StringCchCatW (pName, sizeof(pName) / sizeof(pName[0]), WILD_CARD);
|
StringCchCatW (pName, sizeof(pName) / sizeof(pName[0]), WILD_CARD);
|
||||||
|
|
||||||
retVal = TRUE;
|
retVal = TRUE;
|
||||||
fFind = (hFindFile = FindFirstFileExW(pName, FindExInfoStandard, pFD, FindExSearchNameMatch, NULL, 0)) != INVALID_HANDLE_VALUE;
|
hFindFile = FindFirstFileExW (pName, FindExInfoStandard, pFD, FindExSearchNameMatch, NULL, 0);
|
||||||
|
for (BOOL fFind = hFindFile != INVALID_HANDLE_VALUE; fFind; fFind = FindNextFileW (hFindFile, pFD))
|
||||||
while ( fFind ) {
|
{
|
||||||
|
if ((pFD->cFileName[0] == L'.' && pFD->cFileName[1] == L'\0')
|
||||||
if ( pFD -> cFileName[ 0 ] != L'.' ||
|
|| (pFD->cFileName[0] == L'.' && pFD->cFileName[1] == L'.' && pFD->cFileName[2] == L'\0'))
|
||||||
pFD -> cFileName[ 0 ] != L'.' &&
|
{
|
||||||
pFD -> cFileName[ 1 ] != L'.'
|
continue;
|
||||||
) {
|
}
|
||||||
size_t aDirSrcLength2;
|
|
||||||
size_t aDirDstLength;
|
|
||||||
size_t aFileNameLength;
|
|
||||||
|
|
||||||
|
size_t aDirSrcLength2 = 0, aDirDstLength = 0, aFileNameLength = 0;
|
||||||
StringCchLengthW (dirSrc, sizeof(dirSrc) / sizeof(dirSrc[0]), &aDirSrcLength2);
|
StringCchLengthW (dirSrc, sizeof(dirSrc) / sizeof(dirSrc[0]), &aDirSrcLength2);
|
||||||
StringCchLengthW (dirDst, sizeof(dirDst) / sizeof(dirDst[0]), &aDirDstLength);
|
StringCchLengthW (dirDst, sizeof(dirDst) / sizeof(dirDst[0]), &aDirDstLength);
|
||||||
StringCchLengthW (pFD->cFileName, sizeof(pFD->cFileName) / sizeof(pFD->cFileName[0]), &aFileNameLength);
|
StringCchLengthW (pFD->cFileName, sizeof(pFD->cFileName) / sizeof(pFD->cFileName[0]), &aFileNameLength);
|
||||||
|
if ((pFullNameSrc = (wchar_t* )HeapAlloc (hHeap, 0, aDirSrcLength2 + aFileNameLength + sizeof(L'/') + sizeof(L'\x00'))) == NULL
|
||||||
if ( ( pFullNameSrc = ( LPWSTR )HeapAlloc (
|
|| (pFullNameDst = (wchar_t* )HeapAlloc (hHeap, 0, aDirDstLength + aFileNameLength + sizeof(L'/') + sizeof(L'\x00'))) == NULL)
|
||||||
hHeap, 0,
|
{
|
||||||
aDirSrcLength2 + aFileNameLength +
|
break;
|
||||||
sizeof ( L'/' ) + sizeof ( L'\x00' )
|
}
|
||||||
)
|
|
||||||
) == NULL ||
|
|
||||||
( pFullNameDst = ( LPWSTR )HeapAlloc (
|
|
||||||
hHeap, 0,
|
|
||||||
aDirDstLength + aFileNameLength +
|
|
||||||
sizeof ( L'/' ) + sizeof ( L'\x00' )
|
|
||||||
)
|
|
||||||
) == NULL
|
|
||||||
) break;
|
|
||||||
|
|
||||||
|
|
||||||
StringCchCopyW (pFullNameSrc, sizeof(pFullNameSrc) / sizeof(pFullNameSrc[0]), dirSrc);
|
StringCchCopyW (pFullNameSrc, sizeof(pFullNameSrc) / sizeof(pFullNameSrc[0]), dirSrc);
|
||||||
StringCchCatW (pFullNameSrc, sizeof(pFullNameSrc) / sizeof(pFullNameSrc[0]), L"/");
|
StringCchCatW (pFullNameSrc, sizeof(pFullNameSrc) / sizeof(pFullNameSrc[0]), L"/");
|
||||||
@@ -933,72 +887,81 @@ BOOL CopyDirectory ( LPCWSTR dirSrc, LPCWSTR dirDst ) {
|
|||||||
StringCchCopyW (pFullNameDst, sizeof(pFullNameDst) / sizeof(pFullNameDst[0]), dirDst);
|
StringCchCopyW (pFullNameDst, sizeof(pFullNameDst) / sizeof(pFullNameDst[0]), dirDst);
|
||||||
StringCchCatW (pFullNameDst, sizeof(pFullNameDst) / sizeof(pFullNameDst[0]), L"/");
|
StringCchCatW (pFullNameDst, sizeof(pFullNameDst) / sizeof(pFullNameDst[0]), L"/");
|
||||||
StringCchCatW (pFullNameDst, sizeof(pFullNameDst) / sizeof(pFullNameDst[0]), pFD->cFileName);
|
StringCchCatW (pFullNameDst, sizeof(pFullNameDst) / sizeof(pFullNameDst[0]), pFD->cFileName);
|
||||||
|
if ((pFD->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0)
|
||||||
if ( pFD -> dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) {
|
{
|
||||||
|
|
||||||
retVal = CopyDirectory (pFullNameSrc, pFullNameDst);
|
retVal = CopyDirectory (pFullNameSrc, pFullNameDst);
|
||||||
if ( ! retVal ) break;
|
if (!retVal)
|
||||||
|
{
|
||||||
} else {
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
retry:
|
retry:
|
||||||
#ifndef OCCT_UWP
|
#ifndef OCCT_UWP
|
||||||
retVal = CopyFileW (pFullNameSrc, pFullNameDst, FALSE);
|
retVal = CopyFileW (pFullNameSrc, pFullNameDst, FALSE);
|
||||||
#else
|
#else
|
||||||
retVal = (CopyFile2 (pFullNameSrc, pFullNameDst, FALSE) == S_OK) ? TRUE : FALSE;
|
retVal = (CopyFile2 (pFullNameSrc, pFullNameDst, FALSE) == S_OK) ? TRUE : FALSE;
|
||||||
#endif
|
#endif
|
||||||
if ( ! retVal ) {
|
if (!retVal)
|
||||||
|
{
|
||||||
if ( _response_dir_proc != NULL ) {
|
if (_response_dir_proc != NULL)
|
||||||
|
{
|
||||||
response = ( *_response_dir_proc ) ( pFullNameSrc );
|
const DIR_RESPONSE response = _response_dir_proc (pFullNameSrc);
|
||||||
|
|
||||||
if (response == DIR_ABORT)
|
if (response == DIR_ABORT)
|
||||||
|
{
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
else if (response == DIR_RETRY)
|
else if (response == DIR_RETRY)
|
||||||
|
{
|
||||||
goto retry;
|
goto retry;
|
||||||
|
}
|
||||||
else if (response == DIR_IGNORE)
|
else if (response == DIR_IGNORE)
|
||||||
|
{
|
||||||
retVal = TRUE;
|
retVal = TRUE;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
} /* end if */
|
}
|
||||||
|
}
|
||||||
} else if ( _copy_dir_proc != NULL )
|
else if (_copy_dir_proc != NULL)
|
||||||
|
{
|
||||||
( *_copy_dir_proc ) ( pFullNameSrc, pFullNameDst );
|
_copy_dir_proc (pFullNameSrc, pFullNameDst);
|
||||||
|
}
|
||||||
} /* end else */
|
}
|
||||||
|
|
||||||
HeapFree (hHeap, 0, pFullNameDst);
|
HeapFree (hHeap, 0, pFullNameDst);
|
||||||
HeapFree (hHeap, 0, pFullNameSrc);
|
HeapFree (hHeap, 0, pFullNameSrc);
|
||||||
pFullNameSrc = pFullNameDst = NULL;
|
pFullNameSrc = pFullNameDst = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} /* end if */
|
if (hFindFile != INVALID_HANDLE_VALUE)
|
||||||
|
{
|
||||||
|
FindClose (hFindFile);
|
||||||
|
}
|
||||||
|
|
||||||
fFind = FindNextFileW ( hFindFile, pFD );
|
if (pFullNameSrc != NULL)
|
||||||
|
{
|
||||||
} /* end while */
|
HeapFree (hHeap, 0, pFullNameSrc);
|
||||||
|
}
|
||||||
} /* end if */
|
if (pFullNameDst != NULL)
|
||||||
|
{
|
||||||
} /* end if ( error creating directory ) */
|
HeapFree (hHeap, 0, pFullNameDst);
|
||||||
|
}
|
||||||
if ( hFindFile != INVALID_HANDLE_VALUE ) FindClose ( hFindFile );
|
if (pName != NULL)
|
||||||
|
{
|
||||||
if ( pFullNameSrc != NULL ) HeapFree ( hHeap, 0, pFullNameSrc );
|
HeapFree (hHeap, 0, pName);
|
||||||
if ( pFullNameDst != NULL ) HeapFree ( hHeap, 0, pFullNameDst );
|
}
|
||||||
if ( pName != NULL ) HeapFree ( hHeap, 0, pName );
|
if (pFD != NULL)
|
||||||
if ( pFD != NULL ) HeapFree ( hHeap, 0, pFD );
|
{
|
||||||
|
HeapFree (hHeap, 0, pFD);
|
||||||
|
}
|
||||||
|
|
||||||
return retVal;
|
return retVal;
|
||||||
|
|
||||||
} /* end CopyDirectory */
|
} /* end CopyDirectory */
|
||||||
/***/
|
/***/
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
@@ -840,36 +840,7 @@ void OpenGl_PrimitiveArray::Render (const Handle(OpenGl_Workspace)& theWorkspace
|
|||||||
const Graphic3d_Vec4* aFaceColors = !myBounds.IsNull() && !toHilight && anAspectFace->Aspect()->InteriorStyle() != Aspect_IS_HIDDENLINE
|
const Graphic3d_Vec4* aFaceColors = !myBounds.IsNull() && !toHilight && anAspectFace->Aspect()->InteriorStyle() != Aspect_IS_HIDDENLINE
|
||||||
? myBounds->Colors
|
? myBounds->Colors
|
||||||
: NULL;
|
: NULL;
|
||||||
|
|
||||||
const Standard_Boolean isHighlightWithTransparency = toHilight &&
|
|
||||||
myDrawMode > GL_LINE_STRIP &&
|
|
||||||
theWorkspace->InteriorColor().a() > 0.05f;
|
|
||||||
GLint aPrevBlendSrc = GL_SRC_ALPHA, aPrevBlendDst = GL_ONE_MINUS_SRC_ALPHA;
|
|
||||||
GLboolean wasBlendEnabled = GL_FALSE;
|
|
||||||
if (isHighlightWithTransparency)
|
|
||||||
{
|
|
||||||
wasBlendEnabled = glIsEnabled (GL_BLEND);
|
|
||||||
#if !defined(GL_ES_VERSION_2_0)
|
|
||||||
glGetIntegerv (GL_BLEND_SRC, &aPrevBlendSrc);
|
|
||||||
glGetIntegerv (GL_BLEND_DST, &aPrevBlendDst);
|
|
||||||
#endif
|
|
||||||
if (!wasBlendEnabled)
|
|
||||||
{
|
|
||||||
glEnable (GL_BLEND);
|
|
||||||
}
|
|
||||||
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
|
||||||
}
|
|
||||||
|
|
||||||
drawArray (theWorkspace, aFaceColors, hasColorAttrib);
|
drawArray (theWorkspace, aFaceColors, hasColorAttrib);
|
||||||
|
|
||||||
if (isHighlightWithTransparency)
|
|
||||||
{
|
|
||||||
glBlendFunc (aPrevBlendSrc, aPrevBlendDst);
|
|
||||||
if (!wasBlendEnabled)
|
|
||||||
{
|
|
||||||
glDisable (GL_BLEND);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (myDrawMode <= GL_LINE_STRIP)
|
if (myDrawMode <= GL_LINE_STRIP)
|
||||||
|