mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-09 13:22:24 +03:00
Compare commits
44 Commits
CR0_fix_se
...
V7_9_1
Author | SHA1 | Date | |
---|---|---|---|
|
36c80dbe7b | ||
|
4e8cf250ea | ||
|
7e71e01dc4 | ||
|
f7dbf42d49 | ||
|
86c72171bf | ||
|
bdad8f51b4 | ||
|
275a072169 | ||
|
784bf6d4b9 | ||
|
f95594f475 | ||
|
7e2c56ec46 | ||
|
ead9d038fe | ||
|
8bbfddfacf | ||
|
442c58a2d1 | ||
|
ff6f6ca8ff | ||
|
51b0bdc47c | ||
|
0deb581ba2 | ||
|
abd027bb57 | ||
|
b7858dc463 | ||
|
5569f0ac07 | ||
|
b4ed551f13 | ||
|
882d7b580e | ||
|
6c179e9b63 | ||
|
4c9aaf2300 | ||
|
556fb47854 | ||
|
653bb48aca | ||
|
eab678df86 | ||
|
d521ba8eaa | ||
|
73031c926f | ||
|
2524448f0a | ||
|
7009880a14 | ||
|
39d0d1c65c | ||
|
91d6f207ba | ||
|
fbe07bd763 | ||
|
ad110c5b01 | ||
|
858dd02fed | ||
|
7f7e7df782 | ||
|
20c7202089 | ||
|
8fb662b0aa | ||
|
e375bd7c3e | ||
|
4c5f9c77cb | ||
|
ed6005b75a | ||
|
04a15e36f7 | ||
|
0a73cac759 | ||
|
6f42ada2e6 |
2
.github/actions/build-tinspector/action.yml
vendored
2
.github/actions/build-tinspector/action.yml
vendored
@@ -48,6 +48,7 @@ runs:
|
||||
-D 3RDPARTY_DIR=${{ github.workspace }}//3rdparty-vc14-64 `
|
||||
-D OpenCASCADE_DIR=${{ github.workspace }}/occt-install `
|
||||
-D INSTALL_DIR=${{ github.workspace }}/tools/install `
|
||||
-D CMAKE_POLICY_VERSION_MINIMUM=3.5 `
|
||||
..
|
||||
|
||||
- name: Configure TInspector - Linux
|
||||
@@ -62,6 +63,7 @@ runs:
|
||||
-D BUILD_SHARED_LIBS=ON \
|
||||
-D OpenCASCADE_DIR=${{ github.workspace }}/occt-install \
|
||||
-D INSTALL_DIR=${{ github.workspace }}/tools/install \
|
||||
-D CMAKE_POLICY_VERSION_MINIMUM=3.5 \
|
||||
..
|
||||
|
||||
- name: Build TInspector - Windows
|
||||
|
130
.github/workflows/build-and-test-multiplatform.yml
vendored
130
.github/workflows/build-and-test-multiplatform.yml
vendored
@@ -534,12 +534,6 @@ jobs:
|
||||
.\systemwidedeploy.cmd 5
|
||||
shell: cmd
|
||||
|
||||
- name: Install Visual C++ 2010 Redistributable
|
||||
run: |
|
||||
choco install -y vcredist2010
|
||||
refreshenv
|
||||
shell: cmd
|
||||
|
||||
- name: Install CJK Fonts
|
||||
run: |
|
||||
Invoke-WebRequest -Uri https://noto-website-2.storage.googleapis.com/pkgs/Noto-hinted.zip -OutFile Noto-hinted.zip
|
||||
@@ -651,13 +645,6 @@ jobs:
|
||||
.\systemwidedeploy.cmd 5
|
||||
shell: cmd
|
||||
|
||||
- name: Install Visual C++ 2010 Redistributable
|
||||
if: steps.check_failures.outputs.failed_count > 0
|
||||
run: |
|
||||
choco install -y vcredist2010
|
||||
refreshenv
|
||||
shell: cmd
|
||||
|
||||
- name: Install CJK Fonts
|
||||
if: steps.check_failures.outputs.failed_count > 0
|
||||
run: |
|
||||
@@ -678,6 +665,22 @@ jobs:
|
||||
CSF_TestScriptsPath: ${{ github.workspace }}/tests
|
||||
CSF_TestDataPath: ${{ github.workspace }}/data
|
||||
|
||||
- name: Repeating failed tests
|
||||
if: steps.check_failures.outputs.failed_count > 0 && steps.check_failures.outputs.failed_count < 20
|
||||
run: |
|
||||
cd install
|
||||
call env.bat vc14 win64 release
|
||||
# Repeat failed tests for 10 times
|
||||
for /l %%i in (1,1,10) do (
|
||||
DRAWEXE.exe -v -c testgrid -regress results/windows-x64-retest -outdir results/windows-x64-retest -parallel 0 -overwrite
|
||||
DRAWEXE.exe -v -c "testsummarize results/windows-x64-retest"
|
||||
)
|
||||
shell: cmd
|
||||
env:
|
||||
LIBGL_ALWAYS_SOFTWARE: 1
|
||||
CSF_TestScriptsPath: ${{ github.workspace }}/tests
|
||||
CSF_TestDataPath: ${{ github.workspace }}/data
|
||||
|
||||
- name: Upload regression test results
|
||||
if: steps.check_failures.outputs.failed_count > 0
|
||||
uses: actions/upload-artifact@v4.4.3
|
||||
@@ -775,12 +778,6 @@ jobs:
|
||||
.\systemwidedeploy.cmd 5
|
||||
shell: cmd
|
||||
|
||||
- name: Install Visual C++ 2010 Redistributable
|
||||
run: |
|
||||
choco install -y vcredist2010
|
||||
refreshenv
|
||||
shell: cmd
|
||||
|
||||
- name: Install CJK Fonts
|
||||
run: |
|
||||
Invoke-WebRequest -Uri https://noto-website-2.storage.googleapis.com/pkgs/Noto-hinted.zip -OutFile Noto-hinted.zip
|
||||
@@ -892,13 +889,6 @@ jobs:
|
||||
.\systemwidedeploy.cmd 5
|
||||
shell: cmd
|
||||
|
||||
- name: Install Visual C++ 2010 Redistributable
|
||||
if: steps.check_failures.outputs.failed_count > 0
|
||||
run: |
|
||||
choco install -y vcredist2010
|
||||
refreshenv
|
||||
shell: cmd
|
||||
|
||||
- name: Install CJK Fonts
|
||||
if: steps.check_failures.outputs.failed_count > 0
|
||||
run: |
|
||||
@@ -919,6 +909,22 @@ jobs:
|
||||
CSF_TestScriptsPath: ${{ github.workspace }}/tests
|
||||
CSF_TestDataPath: ${{ github.workspace }}/data
|
||||
|
||||
- name: Repeating failed tests
|
||||
if: steps.check_failures.outputs.failed_count > 0 && steps.check_failures.outputs.failed_count < 20
|
||||
run: |
|
||||
cd install
|
||||
call env.bat clang win64 release
|
||||
# Repeat failed tests for 10 times
|
||||
for /l %%i in (1,1,10) do (
|
||||
DRAWEXE.exe -v -c testgrid -regress results/windows-clang-x64-retest -outdir results/windows-clang-x64-retest -parallel 0 -overwrite
|
||||
DRAWEXE.exe -v -c "testsummarize results/windows-clang-x64-retest"
|
||||
)
|
||||
shell: cmd
|
||||
env:
|
||||
LIBGL_ALWAYS_SOFTWARE: 1
|
||||
CSF_TestScriptsPath: ${{ github.workspace }}/tests
|
||||
CSF_TestDataPath: ${{ github.workspace }}/data
|
||||
|
||||
- name: Upload regression test results
|
||||
if: steps.check_failures.outputs.failed_count > 0
|
||||
uses: actions/upload-artifact@v4.4.3
|
||||
@@ -1117,6 +1123,23 @@ jobs:
|
||||
CSF_TestScriptsPath: ${{ github.workspace }}/tests
|
||||
CSF_TestDataPath: ${{ github.workspace }}/data
|
||||
|
||||
- name: Repeating failed tests
|
||||
if: steps.check_failures.outputs.failed_count > 0 && steps.check_failures.outputs.failed_count < 20
|
||||
run: |
|
||||
cd install
|
||||
cd bin
|
||||
source env.sh
|
||||
# Repeat failed tests for 10 times
|
||||
for i in {1..10}; do
|
||||
./DRAWEXE -v -c testgrid -regress results/macos-x64-retest -outdir results/macos-x64-retest -parallel 0 -overwrite
|
||||
./DRAWEXE -v -c "testsummarize results/macos-x64-retest"
|
||||
done
|
||||
shell: bash
|
||||
env:
|
||||
LIBGL_ALWAYS_SOFTWARE: 1
|
||||
CSF_TestScriptsPath: ${{ github.workspace }}/tests
|
||||
CSF_TestDataPath: ${{ github.workspace }}/data
|
||||
|
||||
- name: Copy retest results back to original location
|
||||
if: steps.check_failures.outputs.failed_count > 0
|
||||
run: |
|
||||
@@ -1308,6 +1331,23 @@ jobs:
|
||||
CSF_TestScriptsPath: ${{ github.workspace }}/tests
|
||||
CSF_TestDataPath: ${{ github.workspace }}/data
|
||||
|
||||
- name: Repeating failed tests
|
||||
if: steps.check_failures.outputs.failed_count > 0 && steps.check_failures.outputs.failed_count < 20
|
||||
run: |
|
||||
cd install
|
||||
cd bin
|
||||
source env.sh
|
||||
# Repeat failed tests for 10 times
|
||||
for i in {1..10}; do
|
||||
./DRAWEXE -v -c testgrid -regress results/macos-gcc-x64-retest -outdir results/macos-gcc-x64-retest -parallel 0 -overwrite
|
||||
./DRAWEXE -v -c "testsummarize results/macos-gcc-x64-retest"
|
||||
done
|
||||
shell: bash
|
||||
env:
|
||||
LIBGL_ALWAYS_SOFTWARE: 1
|
||||
CSF_TestScriptsPath: ${{ github.workspace }}/tests
|
||||
CSF_TestDataPath: ${{ github.workspace }}/data
|
||||
|
||||
- name: Upload regression test results
|
||||
if: steps.check_failures.outputs.failed_count > 0
|
||||
uses: actions/upload-artifact@v4.4.3
|
||||
@@ -1494,6 +1534,24 @@ jobs:
|
||||
CSF_TestScriptsPath: ${{ github.workspace }}/tests
|
||||
CSF_TestDataPath: ${{ github.workspace }}/data
|
||||
|
||||
- name: Repeating failed tests
|
||||
if: steps.check_failures.outputs.failed_count > 0 && steps.check_failures.outputs.failed_count < 20
|
||||
run: |
|
||||
cd install
|
||||
cd bin
|
||||
source env.sh
|
||||
# Repeat failed tests for 10 times
|
||||
for i in {1..10}; do
|
||||
./DRAWEXE -v -c testgrid -regress results/linux-clang-x64-retest -outdir results/linux-clang-x64-retest -parallel 0 -overwrite
|
||||
./DRAWEXE -v -c "testsummarize results/linux-clang-x64-retest"
|
||||
done
|
||||
shell: bash
|
||||
env:
|
||||
DISPLAY: :99
|
||||
LIBGL_ALWAYS_SOFTWARE: 1
|
||||
CSF_TestScriptsPath: ${{ github.workspace }}/tests
|
||||
CSF_TestDataPath: ${{ github.workspace }}/data
|
||||
|
||||
- name: Upload regression test results
|
||||
if: steps.check_failures.outputs.failed_count > 0
|
||||
uses: actions/upload-artifact@v4.4.3
|
||||
@@ -1680,6 +1738,24 @@ jobs:
|
||||
CSF_TestScriptsPath: ${{ github.workspace }}/tests
|
||||
CSF_TestDataPath: ${{ github.workspace }}/data
|
||||
|
||||
- name: Repeating failed tests
|
||||
if: steps.check_failures.outputs.failed_count > 0 && steps.check_failures.outputs.failed_count < 20
|
||||
run: |
|
||||
cd install
|
||||
cd bin
|
||||
source env.sh
|
||||
# Repeat failed tests for 10 times
|
||||
for i in {1..10}; do
|
||||
./DRAWEXE -v -c testgrid -regress results/linux-gcc-x64-retest -outdir results/linux-gcc-x64-retest -parallel 0 -overwrite
|
||||
./DRAWEXE -v -c "testsummarize results/linux-gcc-x64-retest"
|
||||
done
|
||||
shell: bash
|
||||
env:
|
||||
DISPLAY: :99
|
||||
LIBGL_ALWAYS_SOFTWARE: 1
|
||||
CSF_TestScriptsPath: ${{ github.workspace }}/tests
|
||||
CSF_TestDataPath: ${{ github.workspace }}/data
|
||||
|
||||
- name: Upload regression test results
|
||||
if: steps.check_failures.outputs.failed_count > 0
|
||||
uses: actions/upload-artifact@v4.4.3
|
||||
@@ -1761,7 +1837,7 @@ jobs:
|
||||
run: |
|
||||
response=$(curl -s \
|
||||
-H "Accept: application/vnd.github.v3+json" \
|
||||
"https://api.github.com/repos/${{ github.repository }}/actions/runs?branch=${{ github.event.pull_request.base.ref }}&status=completed")
|
||||
"https://api.github.com/repos/${{ github.repository }}/actions/runs?branch=${{ github.event.pull_request.base.ref }}&status=success")
|
||||
latest_run_id=$(echo "$response" | jq -r '.workflow_runs[] | select(.name=="Build and Test OCCT on Multiple Platforms") | .id' | head -n 1)
|
||||
echo "latest_run_id=$latest_run_id" >> $GITHUB_ENV
|
||||
|
||||
|
1
.github/workflows/build-occt-with-vcpkg.yml
vendored
1
.github/workflows/build-occt-with-vcpkg.yml
vendored
@@ -114,6 +114,7 @@ jobs:
|
||||
-DUSE_TK=OFF \
|
||||
-DBUILD_USE_PCH=ON \
|
||||
-DBUILD_INCLUDE_SYMLINK=ON \
|
||||
-DBUILD_LIBRARY_TYPE="Static" \
|
||||
-DINSTALL_DIR=${{ github.workspace }}/install-${{ matrix.build_type }} \
|
||||
-DUSE_DRACO=ON \
|
||||
-DUSE_FFMPEG=ON \
|
||||
|
@@ -84,13 +84,9 @@ else ()
|
||||
endif()
|
||||
set (CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
# macro: include patched file if it exists
|
||||
# include cmake file
|
||||
macro (OCCT_INCLUDE_CMAKE_FILE BEING_INCLUDED_FILE)
|
||||
if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${BEING_INCLUDED_FILE}.cmake")
|
||||
include (${BUILD_PATCH}/${BEING_INCLUDED_FILE}.cmake)
|
||||
else()
|
||||
include (${CMAKE_SOURCE_DIR}/${BEING_INCLUDED_FILE}.cmake)
|
||||
endif()
|
||||
include (${CMAKE_SOURCE_DIR}/${BEING_INCLUDED_FILE}.cmake)
|
||||
endmacro()
|
||||
|
||||
# set using memory manager option for TKernel
|
||||
@@ -322,9 +318,6 @@ elseif ("${CMAKE_BUILD_TYPE}" STREQUAL "RelWithDebInfo")
|
||||
set (BIN_LETTER "i")
|
||||
endif()
|
||||
|
||||
# a directory recognized as a 'patch' for OCCT
|
||||
set (BUILD_PATCH "" CACHE PATH "${BUILD_PATCH_DESCR}")
|
||||
|
||||
# the list of being built toolkits
|
||||
set (BUILD_ADDITIONAL_TOOLKITS "" CACHE STRING "${BUILD_ADDITIONAL_TOOLKITS_DESCR}")
|
||||
separate_arguments (BUILD_ADDITIONAL_TOOLKITS)
|
||||
@@ -390,7 +383,7 @@ else()
|
||||
set (USE_GLES2 OFF CACHE BOOL "${USE_GLES2_DESCR}")
|
||||
endif()
|
||||
|
||||
# include the patched or original list of modules
|
||||
# include original list of modules
|
||||
# list <MODULENAME>_TOOLKITS is created foreach module and contains its toolkits
|
||||
# list <OCCT_MODULES> will contain all modules
|
||||
OCCT_MODULES_AND_TOOLKITS (MODULES "TOOLKITS" OCCT_MODULES)
|
||||
@@ -912,7 +905,7 @@ if(APPLE)
|
||||
set (INSTALL_NAME_DIR "" CACHE STRING "install_name library suffix on OS X (e.g. @executable_path/../Frameworks)")
|
||||
endif()
|
||||
|
||||
# include the patched or original list of definitions and flags
|
||||
# include original list of definitions and flags
|
||||
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_defs_flags")
|
||||
|
||||
foreach (OCCT_3RDPARTY_LIST ${OCCT_3RDPARTY_CMAKE_LIST})
|
||||
@@ -1029,7 +1022,7 @@ else()
|
||||
endif()
|
||||
|
||||
# OCCT tools
|
||||
# include the patched or original list of tools
|
||||
# include original list of tools
|
||||
# list <TOOLNAME>_TOOLKITS is created foreach tool and contains its toolkits
|
||||
# list <OCCT_TOOLS> will contain all tools
|
||||
if (BUILD_Inspector)
|
||||
@@ -1092,14 +1085,8 @@ if (${DRAWEXE_INDEX} GREATER -1)
|
||||
OCCT_INSTALL_FILE_OR_DIR ("data/" "${INSTALL_DIR_DATA}")
|
||||
OCCT_INSTALL_FILE_OR_DIR ("samples/tcl" "${INSTALL_DIR_SAMPLES}")
|
||||
|
||||
# copy draw script to install script folder
|
||||
if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/adm/templates/draw.${SCRIPT_EXT}")
|
||||
install (FILES "${BUILD_PATCH}/adm/templates/draw.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SCRIPT}"
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
|
||||
else()
|
||||
install (FILES "${CMAKE_SOURCE_DIR}/adm/templates/draw.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SCRIPT}"
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
|
||||
endif()
|
||||
install (FILES "${CMAKE_SOURCE_DIR}/adm/templates/draw.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SCRIPT}"
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
|
||||
|
||||
# copy draw script to CMake binary folder
|
||||
OCCT_COPY_FILE_OR_DIR ("adm/templates/draw.${SCRIPT_EXT}" "${CMAKE_BINARY_DIR}")
|
||||
@@ -1298,14 +1285,8 @@ if (BUILD_MODULE_UwpSample)
|
||||
endif()
|
||||
|
||||
if (BUILD_TOOL_TOOLKITS)
|
||||
# copy tinspector script to install script folder
|
||||
if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/adm/templates/inspector.${SCRIPT_EXT}")
|
||||
install (FILES "${BUILD_PATCH}/adm/templates/inspector.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SCRIPT}"
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
|
||||
else()
|
||||
install (FILES "${CMAKE_SOURCE_DIR}/adm/templates/inspector.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SCRIPT}"
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
|
||||
endif()
|
||||
install (FILES "${CMAKE_SOURCE_DIR}/adm/templates/inspector.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SCRIPT}"
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
|
||||
|
||||
set (OpenCASCADE_BINARY_DIR "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
|
||||
# patch TInspectorEXE
|
||||
|
@@ -82,6 +82,25 @@ else()
|
||||
set (CSF_Draco)
|
||||
endif()
|
||||
|
||||
# VTK
|
||||
if (USE_VTK)
|
||||
# the variable must to be empty, but keep there the list of libs
|
||||
# that is used in the VTK component.
|
||||
set (CSF_VTK
|
||||
# vtkCommonCore
|
||||
# vtkRenderingCore
|
||||
# vtkRenderingFreeType
|
||||
# vtkFiltersGeneral
|
||||
# vtkIOImage
|
||||
# vtkImagingCore
|
||||
# vtkInteractionStyle
|
||||
# vtkRenderingOpenGL
|
||||
# vtkRenderingFreeTypeOpenGL
|
||||
)
|
||||
else()
|
||||
set (CSF_VTK)
|
||||
endif()
|
||||
|
||||
if (WIN32)
|
||||
set (CSF_advapi32 "advapi32.lib")
|
||||
set (CSF_gdi32 "gdi32.lib")
|
||||
|
@@ -26,7 +26,7 @@ endif()
|
||||
|
||||
if (MSVC)
|
||||
# suppress C26812 on VS2019/C++20 (prefer 'enum class' over 'enum')
|
||||
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fp:precise /wd\"26812\"")
|
||||
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fp:precise /wd26812")
|
||||
# suppress warning on using portable non-secure functions in favor of non-portable secure ones
|
||||
add_definitions (-D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE)
|
||||
else()
|
||||
@@ -151,15 +151,27 @@ elseif (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX OR (CMAKE_CXX_COMPIL
|
||||
# /GL (whole program optimization) is similar to -flto (Link Time Optimization) in GCC/Clang.
|
||||
# /GF (eliminate duplicate strings) doesn't have a direct equivalent in GCC/Clang, but the compilers do string pooling automatically.
|
||||
# /Gy (enable function-level linking) is similar to -ffunction-sections in GCC/Clang.
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -fomit-frame-pointer -flto -ffunction-sections")
|
||||
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 -fomit-frame-pointer -flto -ffunction-sections")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -fomit-frame-pointer")
|
||||
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 -fomit-frame-pointer")
|
||||
|
||||
# Apply LTO optimization on all platforms
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -flto")
|
||||
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -flto")
|
||||
|
||||
# Apply function sections only on non-macOS platforms
|
||||
if (NOT APPLE)
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ffunction-sections")
|
||||
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ffunction-sections")
|
||||
endif()
|
||||
|
||||
# Link-Time Code Generation(LTCG) is requared for Whole Program Optimisation(GL)
|
||||
# Link-Time Code Generation (LTCG) is required for Whole Program Optimization
|
||||
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -flto")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} -flto")
|
||||
set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "${CMAKE_STATIC_LINKER_FLAGS_RELEASE} -flto")
|
||||
set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} -flto")
|
||||
if (NOT WIN32)
|
||||
|
||||
# Add garbage collection sections only on Linux (not on macOS or Windows)
|
||||
if (NOT WIN32 AND NOT APPLE)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} -Wl,--gc-sections")
|
||||
set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "${CMAKE_STATIC_LINKER_FLAGS_RELEASE} -Wl,--gc-sections")
|
||||
set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} -Wl,--gc-sections")
|
||||
@@ -172,7 +184,7 @@ elseif (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX OR (CMAKE_CXX_COMPIL
|
||||
if (APPLE)
|
||||
set (CMAKE_SHARED_LINKER_FLAGS "-lm ${CMAKE_SHARED_LINKER_FLAGS}")
|
||||
elseif(NOT WIN32)
|
||||
set (CMAKE_SHARED_LINKER_FLAGS "-lm -Wl,-Bsymbolic ${CMAKE_SHARED_LINKER_FLAGS}")
|
||||
set (CMAKE_SHARED_LINKER_FLAGS "-lm ${CMAKE_SHARED_LINKER_FLAGS}")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
@@ -34,9 +34,7 @@ endmacro()
|
||||
|
||||
function (FILE_TO_LIST FILE_NAME FILE_CONTENT)
|
||||
set (LOCAL_FILE_CONTENT)
|
||||
if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${FILE_NAME}")
|
||||
file (STRINGS "${BUILD_PATCH}/${FILE_NAME}" LOCAL_FILE_CONTENT)
|
||||
elseif (EXISTS "${CMAKE_SOURCE_DIR}/${FILE_NAME}")
|
||||
if (EXISTS "${CMAKE_SOURCE_DIR}/${FILE_NAME}")
|
||||
file (STRINGS "${CMAKE_SOURCE_DIR}/${FILE_NAME}" LOCAL_FILE_CONTENT)
|
||||
endif()
|
||||
|
||||
@@ -44,9 +42,7 @@ function (FILE_TO_LIST FILE_NAME FILE_CONTENT)
|
||||
endfunction()
|
||||
|
||||
function(FIND_FOLDER_OR_FILE FILE_OR_FOLDER_NAME RESULT_PATH)
|
||||
if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${FILE_OR_FOLDER_NAME}")
|
||||
set (${RESULT_PATH} "${BUILD_PATCH}/${FILE_OR_FOLDER_NAME}" PARENT_SCOPE)
|
||||
elseif (EXISTS "${CMAKE_SOURCE_DIR}/${FILE_OR_FOLDER_NAME}")
|
||||
if (EXISTS "${CMAKE_SOURCE_DIR}/${FILE_OR_FOLDER_NAME}")
|
||||
set (${RESULT_PATH} "${CMAKE_SOURCE_DIR}/${FILE_OR_FOLDER_NAME}" PARENT_SCOPE)
|
||||
else()
|
||||
set (${RESULT_PATH} "" PARENT_SCOPE)
|
||||
@@ -175,25 +171,8 @@ function (FIND_SUBDIRECTORY ROOT_DIRECTORY DIRECTORY_SUFFIX SUBDIRECTORY_NAME)
|
||||
endfunction()
|
||||
|
||||
function (OCCT_ORIGIN_AND_PATCHED_FILES RELATIVE_PATH SEARCH_TEMPLATE RESULT)
|
||||
|
||||
if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${RELATIVE_PATH}")
|
||||
file (GLOB FOUND_FILES "${BUILD_PATCH}/${RELATIVE_PATH}/${SEARCH_TEMPLATE}")
|
||||
endif()
|
||||
|
||||
file (GLOB ORIGIN_FILES "${CMAKE_SOURCE_DIR}/${RELATIVE_PATH}/${SEARCH_TEMPLATE}")
|
||||
foreach (ORIGIN_FILE ${ORIGIN_FILES})
|
||||
# check for existence of patched version of current file
|
||||
if (NOT BUILD_PATCH OR NOT EXISTS "${BUILD_PATCH}/${RELATIVE_PATH}")
|
||||
list (APPEND FOUND_FILES ${ORIGIN_FILE})
|
||||
else()
|
||||
get_filename_component (ORIGIN_FILE_NAME "${ORIGIN_FILE}" NAME)
|
||||
if (NOT EXISTS "${BUILD_PATCH}/${RELATIVE_PATH}/${ORIGIN_FILE_NAME}")
|
||||
list (APPEND FOUND_FILES ${ORIGIN_FILE})
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
set (${RESULT} ${FOUND_FILES} PARENT_SCOPE)
|
||||
set (${RESULT} ${ORIGIN_FILES} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
function (FILLUP_PRODUCT_SEARCH_TEMPLATE PRODUCT_NAME COMPILER COMPILER_BITNESS SEARCH_TEMPLATES)
|
||||
@@ -249,32 +228,15 @@ function (FIND_PRODUCT_DIR ROOT_DIR PRODUCT_NAME RESULT)
|
||||
endfunction()
|
||||
|
||||
macro (OCCT_INSTALL_FILE_OR_DIR BEING_INSTALLED_OBJECT DESTINATION_PATH)
|
||||
if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${BEING_INSTALLED_OBJECT}")
|
||||
if (IS_DIRECTORY "${BUILD_PATCH}/${BEING_INSTALLED_OBJECT}")
|
||||
# first of all, install original files
|
||||
install (DIRECTORY "${CMAKE_SOURCE_DIR}/${BEING_INSTALLED_OBJECT}" DESTINATION "${DESTINATION_PATH}")
|
||||
|
||||
# secondly, rewrite original files with patched ones
|
||||
install (DIRECTORY "${BUILD_PATCH}/${BEING_INSTALLED_OBJECT}" DESTINATION "${DESTINATION_PATH}")
|
||||
else()
|
||||
install (FILES "${BUILD_PATCH}/${BEING_INSTALLED_OBJECT}" DESTINATION "${DESTINATION_PATH}")
|
||||
endif()
|
||||
if (IS_DIRECTORY "${CMAKE_SOURCE_DIR}/${BEING_INSTALLED_OBJECT}")
|
||||
install (DIRECTORY "${CMAKE_SOURCE_DIR}/${BEING_INSTALLED_OBJECT}" DESTINATION "${DESTINATION_PATH}")
|
||||
else()
|
||||
if (IS_DIRECTORY "${CMAKE_SOURCE_DIR}/${BEING_INSTALLED_OBJECT}")
|
||||
install (DIRECTORY "${CMAKE_SOURCE_DIR}/${BEING_INSTALLED_OBJECT}" DESTINATION "${DESTINATION_PATH}")
|
||||
else()
|
||||
install (FILES "${CMAKE_SOURCE_DIR}/${BEING_INSTALLED_OBJECT}" DESTINATION "${DESTINATION_PATH}")
|
||||
endif()
|
||||
install (FILES "${CMAKE_SOURCE_DIR}/${BEING_INSTALLED_OBJECT}" DESTINATION "${DESTINATION_PATH}")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro (OCCT_CONFIGURE_AND_INSTALL BEING_CONGIRUGED_FILE BUILD_NAME INSTALL_NAME DESTINATION_PATH)
|
||||
if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${BEING_CONGIRUGED_FILE}")
|
||||
configure_file("${BUILD_PATCH}/${BEING_CONGIRUGED_FILE}" "${BUILD_NAME}" @ONLY)
|
||||
else()
|
||||
configure_file("${CMAKE_SOURCE_DIR}/${BEING_CONGIRUGED_FILE}" "${BUILD_NAME}" @ONLY)
|
||||
endif()
|
||||
|
||||
configure_file("${CMAKE_SOURCE_DIR}/${BEING_CONGIRUGED_FILE}" "${BUILD_NAME}" @ONLY)
|
||||
install(FILES "${OCCT_BINARY_DIR}/${BUILD_NAME}" DESTINATION "${DESTINATION_PATH}" RENAME ${INSTALL_NAME})
|
||||
endmacro()
|
||||
|
||||
@@ -314,10 +276,7 @@ function (EXTRACT_PACKAGE_FILES RELATIVE_PATH OCCT_PACKAGE RESULT_FILES RESULT_I
|
||||
return()
|
||||
endif()
|
||||
|
||||
if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${RELATIVE_PATH}/${OCCT_PACKAGE}/FILES")
|
||||
file (STRINGS "${BUILD_PATCH}/${RELATIVE_PATH}/${OCCT_PACKAGE}/FILES" OCCT_PACKAGE_FILES)
|
||||
set (OCCT_PACKAGE_INCLUDE_DIR "${BUILD_PATCH}/${RELATIVE_PATH}/${OCCT_PACKAGE}")
|
||||
elseif (EXISTS "${CMAKE_SOURCE_DIR}/${RELATIVE_PATH}/${OCCT_PACKAGE}/FILES")
|
||||
if (EXISTS "${CMAKE_SOURCE_DIR}/${RELATIVE_PATH}/${OCCT_PACKAGE}/FILES")
|
||||
file (STRINGS "${CMAKE_SOURCE_DIR}/${RELATIVE_PATH}/${OCCT_PACKAGE}/FILES" OCCT_PACKAGE_FILES)
|
||||
set (OCCT_PACKAGE_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/${RELATIVE_PATH}/${OCCT_PACKAGE}")
|
||||
endif()
|
||||
@@ -331,15 +290,13 @@ function (EXTRACT_PACKAGE_FILES RELATIVE_PATH OCCT_PACKAGE RESULT_FILES RESULT_I
|
||||
FIND_FOLDER_OR_FILE ("${RELATIVE_PATH}/${OCCT_PACKAGE}/${OCCT_FILE}" CUSTOM_FILE_PATH)
|
||||
if (CUSTOM_FILE_PATH)
|
||||
list (APPEND FILE_PATH_LIST "${CUSTOM_FILE_PATH}")
|
||||
else()
|
||||
message(WARNING "File ${OCCT_FILE} has not been found in ${CMAKE_SOURCE_DIR}/${RELATIVE_PATH}/${OCCT_PACKAGE}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if (NOT FILE_PATH_LIST)
|
||||
if(BUILD_PATH)
|
||||
message (WARNING "FILES has not been found in ${BUILD_PATCH}/${RELATIVE_PATH}/${OCCT_PACKAGE}")
|
||||
else()
|
||||
message (WARNING "FILES has not been found in ${CMAKE_SOURCE_DIR}/${RELATIVE_PATH}/${OCCT_PACKAGE}")
|
||||
endif()
|
||||
message (WARNING "FILES has not been found in ${CMAKE_SOURCE_DIR}/${RELATIVE_PATH}/${OCCT_PACKAGE}")
|
||||
endif()
|
||||
|
||||
set (${RESULT_FILES} ${FILE_PATH_LIST} PARENT_SCOPE)
|
||||
@@ -412,9 +369,7 @@ endfunction()
|
||||
|
||||
function (FILE_TO_LIST FILE_NAME FILE_CONTENT)
|
||||
set (LOCAL_FILE_CONTENT)
|
||||
if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${FILE_NAME}")
|
||||
file (STRINGS "${BUILD_PATCH}/${FILE_NAME}" LOCAL_FILE_CONTENT)
|
||||
elseif (EXISTS "${CMAKE_SOURCE_DIR}/${FILE_NAME}")
|
||||
if (EXISTS "${CMAKE_SOURCE_DIR}/${FILE_NAME}")
|
||||
file (STRINGS "${CMAKE_SOURCE_DIR}/${FILE_NAME}" LOCAL_FILE_CONTENT)
|
||||
endif()
|
||||
|
||||
@@ -426,9 +381,6 @@ function (COLLECT_AND_INSTALL_OCCT_HEADER_FILES THE_ROOT_TARGET_OCCT_DIR THE_OCC
|
||||
|
||||
# consider patched header.in template
|
||||
set (TEMPLATE_HEADER_PATH "${CMAKE_SOURCE_DIR}/adm/templates/header.in")
|
||||
if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/adm/templates/header.in")
|
||||
set (TEMPLATE_HEADER_PATH "${BUILD_PATCH}/adm/templates/header.in")
|
||||
endif()
|
||||
|
||||
set (OCCT_HEADER_FILES_COMPLETE)
|
||||
foreach(OCCT_TOOLKIT ${THE_OCCT_BUILD_TOOLKITS})
|
||||
@@ -437,9 +389,14 @@ function (COLLECT_AND_INSTALL_OCCT_HEADER_FILES THE_ROOT_TARGET_OCCT_DIR THE_OCC
|
||||
foreach(OCCT_PACKAGE ${USED_PACKAGES})
|
||||
EXTRACT_PACKAGE_FILES (${THE_RELATIVE_PATH} ${OCCT_PACKAGE} ALL_FILES _)
|
||||
set (HEADER_FILES_FILTERING ${ALL_FILES})
|
||||
list (FILTER HEADER_FILES_FILTERING INCLUDE REGEX ".+[.](h|g|p|lxx)")
|
||||
list (FILTER HEADER_FILES_FILTERING INCLUDE REGEX ".+[.](h|g|p|lxx|hxx|pxx|hpp|gxx)$")
|
||||
list (APPEND OCCT_HEADER_FILES_COMPLETE ${HEADER_FILES_FILTERING})
|
||||
endforeach()
|
||||
# parse root of the toolkit file
|
||||
EXTRACT_PACKAGE_FILES (${THE_RELATIVE_PATH} ${OCCT_TOOLKIT} ALL_FILES _)
|
||||
set (HEADER_FILES_FILTERING ${ALL_FILES})
|
||||
list (FILTER HEADER_FILES_FILTERING INCLUDE REGEX ".+[.](h|g|p|lxx|hxx|pxx|hpp|gxx)$")
|
||||
list (APPEND OCCT_HEADER_FILES_COMPLETE ${HEADER_FILES_FILTERING})
|
||||
endforeach()
|
||||
|
||||
# Check that copying is done and match the include installation type.
|
||||
@@ -477,7 +434,7 @@ function (COLLECT_AND_INSTALL_OCCT_HEADER_FILES THE_ROOT_TARGET_OCCT_DIR THE_OCC
|
||||
endforeach()
|
||||
|
||||
set (OCCT_HEADER_FILES_INSTALLATION ${OCCT_HEADER_FILES_COMPLETE})
|
||||
list (FILTER OCCT_HEADER_FILES_INSTALLATION INCLUDE REGEX ".*[.](h|lxx)")
|
||||
list (FILTER OCCT_HEADER_FILES_INSTALLATION INCLUDE REGEX ".*[.](h|hxx|lxx)$")
|
||||
install (FILES ${OCCT_HEADER_FILES_INSTALLATION} DESTINATION "${INSTALL_DIR}/${THE_OCCT_INSTALL_DIR_PREFIX}")
|
||||
endfunction()
|
||||
|
||||
@@ -497,10 +454,12 @@ function(ADD_PRECOMPILED_HEADER INPUT_TARGET PRECOMPILED_HEADER THE_IS_PRIVATE)
|
||||
if (NOT BUILD_USE_PCH)
|
||||
return()
|
||||
endif()
|
||||
|
||||
# Angular bracket syntax is achieved using $<ANGLE-R> for closing bracket
|
||||
if (${THE_IS_PRIVATE})
|
||||
target_precompile_headers(${INPUT_TARGET} PRIVATE "$<$<COMPILE_LANGUAGE:CXX>:${PRECOMPILED_HEADER}>")
|
||||
target_precompile_headers(${INPUT_TARGET} PRIVATE "$<$<COMPILE_LANGUAGE:CXX>:<${PRECOMPILED_HEADER}$<ANGLE-R>>")
|
||||
else()
|
||||
target_precompile_headers(${INPUT_TARGET} PUBLIC "$<$<COMPILE_LANGUAGE:CXX>:${PRECOMPILED_HEADER}>")
|
||||
target_precompile_headers(${INPUT_TARGET} PUBLIC "$<$<COMPILE_LANGUAGE:CXX>:<${PRECOMPILED_HEADER}$<ANGLE-R>>")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
@@ -509,25 +468,14 @@ macro (OCCT_COPY_FILE_OR_DIR BEING_COPIED_OBJECT DESTINATION_PATH)
|
||||
if (EXISTS "${CMAKE_SOURCE_DIR}/${BEING_COPIED_OBJECT}")
|
||||
file (COPY "${CMAKE_SOURCE_DIR}/${BEING_COPIED_OBJECT}" DESTINATION "${DESTINATION_PATH}")
|
||||
endif()
|
||||
|
||||
if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${BEING_COPIED_OBJECT}")
|
||||
# secondly, rewrite original files with patched ones
|
||||
file (COPY "${BUILD_PATCH}/${BEING_COPIED_OBJECT}" DESTINATION "${DESTINATION_PATH}")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro (OCCT_CONFIGURE BEING_CONGIRUGED_FILE FINAL_NAME)
|
||||
if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${BEING_CONGIRUGED_FILE}")
|
||||
configure_file("${BUILD_PATCH}/${BEING_CONGIRUGED_FILE}" "${FINAL_NAME}" @ONLY)
|
||||
else()
|
||||
configure_file("${CMAKE_SOURCE_DIR}/${BEING_CONGIRUGED_FILE}" "${FINAL_NAME}" @ONLY)
|
||||
endif()
|
||||
configure_file("${CMAKE_SOURCE_DIR}/${BEING_CONGIRUGED_FILE}" "${FINAL_NAME}" @ONLY)
|
||||
endmacro()
|
||||
|
||||
macro (OCCT_ADD_SUBDIRECTORY BEING_ADDED_DIRECTORY)
|
||||
if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${BEING_ADDED_DIRECTORY}/CMakeLists.txt")
|
||||
add_subdirectory(${BUILD_PATCH}/${BEING_ADDED_DIRECTORY})
|
||||
elseif (EXISTS "${CMAKE_SOURCE_DIR}/${BEING_ADDED_DIRECTORY}/CMakeLists.txt")
|
||||
if (EXISTS "${CMAKE_SOURCE_DIR}/${BEING_ADDED_DIRECTORY}/CMakeLists.txt")
|
||||
add_subdirectory (${CMAKE_SOURCE_DIR}/${BEING_ADDED_DIRECTORY})
|
||||
else()
|
||||
message (STATUS "${BEING_ADDED_DIRECTORY} directory is not included")
|
||||
@@ -762,7 +710,7 @@ macro (OCCT_UPDATE_TARGET_FILE)
|
||||
|
||||
install (CODE
|
||||
"string (TOLOWER \"\${CMAKE_INSTALL_CONFIG_NAME}\" CMAKE_INSTALL_CONFIG_NAME_LOWERCASE)
|
||||
file (GLOB ALL_OCCT_TARGET_FILES \"${INSTALL_DIR}/${INSTALL_DIR_CMAKE}/OpenCASCADE*Targets-\${CMAKE_INSTALL_CONFIG_NAME_LOWERCASE}.cmake\")
|
||||
file (GLOB ALL_OCCT_TARGET_FILES \"\$ENV{DESTDIR}${INSTALL_DIR}/${INSTALL_DIR_CMAKE}/OpenCASCADE*Targets-\${CMAKE_INSTALL_CONFIG_NAME_LOWERCASE}.cmake\")
|
||||
foreach(TARGET_FILENAME \${ALL_OCCT_TARGET_FILES})
|
||||
file (STRINGS \"\${TARGET_FILENAME}\" TARGET_FILE_CONTENT)
|
||||
file (REMOVE \"\${TARGET_FILENAME}\")
|
||||
@@ -906,12 +854,12 @@ function (PROCESS_CSF_LIBRARIES CURRENT_CSF LIST_NAME TARGET_NAME)
|
||||
|
||||
foreach (RELEASE_DIR ${FOUND_RELEASE_DIRS})
|
||||
get_filename_component(RELEASE_DIR_ABS "${RELEASE_DIR}" ABSOLUTE)
|
||||
target_link_directories(${TARGET_NAME} PUBLIC "$<$<CONFIG:RELEASE>:${RELEASE_DIR_ABS}>;$<$<CONFIG:RELWITHDEBINFO>:${RELEASE_DIR_ABS}>")
|
||||
target_link_directories(${TARGET_NAME} PRIVATE "$<$<CONFIG:RELEASE>:${RELEASE_DIR_ABS}>;$<$<CONFIG:RELWITHDEBINFO>:${RELEASE_DIR_ABS}>")
|
||||
endforeach()
|
||||
|
||||
foreach (DEBUG_DIR ${FOUND_DEBUG_DIRS})
|
||||
get_filename_component(DEBUG_DIR_ABS "${DEBUG_DIR}" ABSOLUTE)
|
||||
target_link_directories(${TARGET_NAME} PUBLIC "$<$<CONFIG:DEBUG>:${DEBUG_DIR_ABS}>")
|
||||
target_link_directories(${TARGET_NAME} PRIVATE "$<$<CONFIG:DEBUG>:${DEBUG_DIR_ABS}>")
|
||||
endforeach()
|
||||
endfunction()
|
||||
macro(OCCT_ADD_VCPKG_FEATURE THE_FEATURE)
|
||||
|
@@ -63,13 +63,13 @@ foreach (OCCT_PACKAGE ${USED_PACKAGES})
|
||||
|
||||
set (HEADER_FILES_FILTERING ${ALL_FILES})
|
||||
set (SOURCE_FILES_FILTERING ${ALL_FILES})
|
||||
|
||||
list (FILTER HEADER_FILES_FILTERING INCLUDE REGEX ".+[.](h|p|g|lxx)")
|
||||
|
||||
|
||||
list (FILTER HEADER_FILES_FILTERING INCLUDE REGEX ".+[.](h|p|g|lxx|hxx|pxx|hpp|gxx)$")
|
||||
|
||||
if(APPLE)
|
||||
list (FILTER SOURCE_FILES_FILTERING INCLUDE REGEX ".+[.](c|mm)")
|
||||
list (FILTER SOURCE_FILES_FILTERING INCLUDE REGEX ".+[.](c|cxx|cpp|mm)$")
|
||||
else()
|
||||
list (FILTER SOURCE_FILES_FILTERING INCLUDE REGEX ".+[.](c)")
|
||||
list (FILTER SOURCE_FILES_FILTERING INCLUDE REGEX ".+[.](c|cpp|cxx)$")
|
||||
endif()
|
||||
|
||||
list (APPEND HEADER_FILES ${HEADER_FILES_FILTERING})
|
||||
@@ -96,12 +96,7 @@ string (REGEX REPLACE ";" " " PRECOMPILED_DEFS "${PRECOMPILED_DEFS}")
|
||||
set (USED_RCFILE "")
|
||||
if (MSVC)
|
||||
set (USED_RCFILE "${CMAKE_BINARY_DIR}/resources/${PROJECT_NAME}.rc")
|
||||
|
||||
if (APPLY_OCCT_PATCH_DIR AND EXISTS "${APPLY_OCCT_PATCH_DIR}/adm/templates/occt_toolkit.rc.in")
|
||||
configure_file("${APPLY_OCCT_PATCH_DIR}/adm/templates/occt_toolkit.rc.in" "${USED_RCFILE}" @ONLY)
|
||||
else()
|
||||
configure_file("${CMAKE_SOURCE_DIR}/adm/templates/occt_toolkit.rc.in" "${USED_RCFILE}" @ONLY)
|
||||
endif()
|
||||
configure_file("${CMAKE_SOURCE_DIR}/adm/templates/occt_toolkit.rc.in" "${USED_RCFILE}" @ONLY)
|
||||
endif()
|
||||
|
||||
set (CURRENT_MODULE)
|
||||
@@ -134,7 +129,7 @@ if (EXECUTABLE_PROJECT)
|
||||
else()
|
||||
add_library (${PROJECT_NAME} ${USED_SRCFILES} ${USED_INCFILES} ${USED_RCFILE} ${RESOURCE_FILES} ${${PROJECT_NAME}_MOC_FILES})
|
||||
|
||||
if (MSVC)
|
||||
if (MSVC AND BUILD_SHARED_LIBS)
|
||||
if (BUILD_FORCE_RelWithDebInfo)
|
||||
set (aReleasePdbConf "Release")
|
||||
else()
|
||||
@@ -281,19 +276,18 @@ else()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (BUILD_SHARED_LIBS OR EXECUTABLE_PROJECT)
|
||||
if(IS_VTK_9XX)
|
||||
string (REGEX REPLACE "vtk" "VTK::" USED_TOOLKITS_BY_CURRENT_PROJECT "${USED_TOOLKITS_BY_CURRENT_PROJECT}")
|
||||
endif()
|
||||
if(IS_VTK_9XX)
|
||||
string (REGEX REPLACE "vtk" "VTK::" USED_TOOLKITS_BY_CURRENT_PROJECT "${USED_TOOLKITS_BY_CURRENT_PROJECT}")
|
||||
endif()
|
||||
target_link_libraries (${PROJECT_NAME} ${USED_TOOLKITS_BY_CURRENT_PROJECT} ${USED_EXTERNAL_LIBS_BY_CURRENT_PROJECT})
|
||||
|
||||
target_link_libraries (${PROJECT_NAME} PUBLIC ${USED_TOOLKITS_BY_CURRENT_PROJECT} PRIVATE ${USED_EXTERNAL_LIBS_BY_CURRENT_PROJECT})
|
||||
|
||||
if (USE_QT)
|
||||
foreach (PROJECT_LIBRARY_DEBUG ${PROJECT_LIBRARIES_DEBUG})
|
||||
target_link_libraries (${PROJECT_NAME} debug ${PROJECT_LIBRARY_DEBUG})
|
||||
target_link_libraries (${PROJECT_NAME} PRIVATE debug ${PROJECT_LIBRARY_DEBUG})
|
||||
endforeach()
|
||||
foreach (PROJECT_LIBRARY_RELEASE ${PROJECT_LIBRARIES_RELEASE})
|
||||
target_link_libraries (${PROJECT_NAME} optimized ${PROJECT_LIBRARY_RELEASE})
|
||||
target_link_libraries (${PROJECT_NAME} PRIVATE optimized ${PROJECT_LIBRARY_RELEASE})
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
|
@@ -31,13 +31,26 @@ if (NOT ${Qt5_FOUND})
|
||||
# Now we can apply standard CMake finder for Qt. We do this mostly
|
||||
# to have qt4_wrap_cpp() function available
|
||||
find_package(Qt4)
|
||||
else()
|
||||
set (3RDPARTY_QT_DIR ${Qt5_DIR} CACHE PATH "The directory containing Qt" FORCE)
|
||||
elseif(NOT ${USE_QT_FROM_3RDPARTY_DIR} AND WIN32)
|
||||
# Qt5_DIR typically points to lib/cmake/Qt5, need to go up to Qt root
|
||||
get_filename_component(QT_CMAKE_DIR "${Qt5_DIR}" DIRECTORY)
|
||||
get_filename_component(QT_LIB_DIR "${QT_CMAKE_DIR}" DIRECTORY)
|
||||
get_filename_component(QT_ROOT_DIR "${QT_LIB_DIR}" DIRECTORY)
|
||||
|
||||
# Verify this is indeed the Qt root by checking for bin and packages directories
|
||||
if(EXISTS "${QT_ROOT_DIR}/bin")
|
||||
set(3RDPARTY_QT_DIR ${QT_ROOT_DIR} CACHE PATH "The directory containing Qt" FORCE)
|
||||
else()
|
||||
message(WARNING "Found Qt5 at ${Qt5_DIR} but could not determine Qt root directory with bin/ and plugins/ folders")
|
||||
set(3RDPARTY_QT_DIR ${Qt5_DIR} CACHE PATH "The directory containing Qt" FORCE)
|
||||
endif()
|
||||
elseif(NOT ${USE_QT_FROM_3RDPARTY_DIR})
|
||||
set(3RDPARTY_QT_DIR ${Qt5_DIR} CACHE PATH "The directory containing Qt" FORCE)
|
||||
endif()
|
||||
|
||||
set (USED_3RDPARTY_QT_DIR "${3RDPARTY_QT_DIR}")
|
||||
|
||||
if (3RDPARTY_QT_DIR OR EXISTS "${3RDPARTY_QT_DIR}")
|
||||
if (3RDPARTY_QT_DIR OR EXISTS "${3RDPARTY_QT_DIR}/bin")
|
||||
list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_QT_DIR}/bin")
|
||||
else()
|
||||
list (APPEND 3RDPARTY_NO_DLLS 3RDPARTY_QT_DLL_DIR)
|
||||
|
@@ -71,7 +71,12 @@ if (WIN32)
|
||||
|
||||
# Get installed configuration of tbb
|
||||
get_target_property (TARGET_TBB_IMPORT_CONFS TBB::tbb IMPORTED_CONFIGURATIONS)
|
||||
list (GET TARGET_TBB_IMPORT_CONFS 0 CHOSEN_IMPORT_CONF)
|
||||
# Prioritize RELEASE configuration if available
|
||||
if (";${TARGET_TBB_IMPORT_CONFS};" MATCHES ";RELEASE;")
|
||||
set (CHOSEN_IMPORT_CONF "RELEASE")
|
||||
else()
|
||||
list (GET TARGET_TBB_IMPORT_CONFS 0 CHOSEN_IMPORT_CONF)
|
||||
endif()
|
||||
|
||||
separate_arguments (CSF_TBB)
|
||||
foreach (LIB IN LISTS CSF_TBB)
|
||||
@@ -204,7 +209,12 @@ else ()
|
||||
|
||||
# Get installed configuration of tbb
|
||||
get_target_property (TARGET_TBB_IMPORT_CONFS TBB::tbb IMPORTED_CONFIGURATIONS)
|
||||
list (GET TARGET_TBB_IMPORT_CONFS 0 CHOSEN_IMPORT_CONF)
|
||||
# Prioritize RELEASE configuration if available
|
||||
if (";${TARGET_TBB_IMPORT_CONFS};" MATCHES ";RELEASE;")
|
||||
set (CHOSEN_IMPORT_CONF "RELEASE")
|
||||
else()
|
||||
list (GET TARGET_TBB_IMPORT_CONFS 0 CHOSEN_IMPORT_CONF)
|
||||
endif()
|
||||
|
||||
separate_arguments (CSF_TBB)
|
||||
foreach (LIB IN LISTS CSF_TBB)
|
||||
|
@@ -1,13 +1,5 @@
|
||||
# variable description
|
||||
|
||||
#
|
||||
set (BUILD_PATCH_DESCR
|
||||
"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")
|
||||
|
||||
|
||||
set (BUILD_LIBRARY_TYPE_DESCR
|
||||
"Specifies the type of library to be created. 'Shared' libraries
|
||||
are linked dynamically and loaded at runtime. 'Static' libraries
|
||||
|
@@ -18,5 +18,4 @@
|
||||
|
||||
set (OCC_VERSION_MAJOR 7 )
|
||||
set (OCC_VERSION_MINOR 9 )
|
||||
set (OCC_VERSION_MAINTENANCE 0 )
|
||||
set (OCC_VERSION_DEVELOPMENT "beta2" )
|
||||
set (OCC_VERSION_MAINTENANCE 1 )
|
||||
|
@@ -2,8 +2,20 @@
|
||||
|
||||
# vcpkg processing
|
||||
if (BUILD_USE_VCPKG)
|
||||
find_package(VTK REQUIRED)
|
||||
set(CSF_VTK VTK::CommonCore)
|
||||
find_package(VTK REQUIRED
|
||||
COMPONENTS
|
||||
CommonCore
|
||||
RenderingUI
|
||||
RenderingOpenGL2
|
||||
OPTIONAL_COMPONENTS
|
||||
mpi
|
||||
utf8
|
||||
eigen
|
||||
doubleconversion
|
||||
lz4
|
||||
lzma
|
||||
expat
|
||||
)
|
||||
set(IS_VTK_9XX 1)
|
||||
if (WIN32)
|
||||
set (USED_3RDPARTY_VTK_DIR "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/bin")
|
||||
@@ -74,7 +86,20 @@ if (3RDPARTY_VTK_DIR AND EXISTS "${3RDPARTY_VTK_DIR}")
|
||||
set (ENV{VTK_DIR} "${3RDPARTY_VTK_DIR}")
|
||||
endif()
|
||||
|
||||
find_package(VTK QUIET)
|
||||
find_package(VTK QUIET
|
||||
COMPONENTS
|
||||
CommonCore
|
||||
RenderingUI
|
||||
RenderingOpenGL2
|
||||
OPTIONAL_COMPONENTS
|
||||
mpi
|
||||
utf8
|
||||
eigen
|
||||
doubleconversion
|
||||
lz4
|
||||
lzma
|
||||
expat
|
||||
)
|
||||
|
||||
if (3RDPARTY_VTK_DIR AND EXISTS "${3RDPARTY_VTK_DIR}")
|
||||
set (ENV{VTK_DIR} ${CACHED_VTK_DIR})
|
||||
|
@@ -784,7 +784,7 @@ proc OCCDoc_MakeDoxyfile {docType outDir tagFileDir {doxyFileName} {generatorMod
|
||||
puts $doxyFile "PROJECT_NUMBER = $occt_version"
|
||||
puts $doxyFile "OUTPUT_DIRECTORY = $outDir/."
|
||||
puts $doxyFile "GENERATE_TAGFILE = $outDir/${name}.tag"
|
||||
|
||||
set searchMode "local"
|
||||
if { [string tolower $searchMode] == "none" } {
|
||||
puts $doxyFile "SEARCHENGINE = NO"
|
||||
puts $doxyFile "SERVER_BASED_SEARCH = NO"
|
||||
@@ -865,6 +865,7 @@ proc OCCDoc_MakeDoxyfile {docType outDir tagFileDir {doxyFileName} {generatorMod
|
||||
puts $doxyFile "TAGFILES = $tagFileDir/OCCT.tag=../../refman/html"
|
||||
}
|
||||
}
|
||||
set searchMode "local"
|
||||
# HTML Search engine options
|
||||
if { [string tolower $searchMode] == "none" } {
|
||||
puts $doxyFile "SEARCHENGINE = NO"
|
||||
|
@@ -28,9 +28,6 @@ rem Use semicolon-separated list of toolkits if you want to disable all modules
|
||||
rem and build only some toolkits.
|
||||
rem set BUILD_ADDITIONAL_TOOLKITS=
|
||||
|
||||
rem Set a directory recognized as a patch for OCCT.
|
||||
rem set BUILD_PATCH=
|
||||
|
||||
rem set BUILD_MODULE_ApplicationFramework=ON
|
||||
rem set BUILD_MODULE_DataExchange=ON
|
||||
rem set BUILD_MODULE_DETools=OFF
|
||||
|
@@ -21,9 +21,6 @@ FREETYPE_DIR="$OCCT3RDPARTY/freetype-2.7.1"
|
||||
# and build only some toolkits.
|
||||
#BUILD_ADDITIONAL_TOOLKITS=
|
||||
|
||||
# Set a directory recognized as a patch for OCCT.
|
||||
#BUILD_PATCH=
|
||||
|
||||
#BUILD_MODULE_ApplicationFramework=ON
|
||||
#BUILD_MODULE_DataExchange=ON
|
||||
#BUILD_MODULE_DETools=OFF
|
||||
|
@@ -19,7 +19,6 @@ set BUILD_ADDITIONAL_TOOLKITS=
|
||||
set BUILD_DOC_Overview=OFF
|
||||
set BUILD_Inspector=OFF
|
||||
set BUILD_LIBRARY_TYPE=Shared
|
||||
set BUILD_PATCH=
|
||||
set BUILD_RELEASE_DISABLE_EXCEPTIONS=ON
|
||||
set BUILD_WITH_DEBUG=OFF
|
||||
set BUILD_ENABLE_FPE_SIGNAL_HANDLER=ON
|
||||
@@ -69,7 +68,6 @@ cmake -G "%arch_compile%" ^
|
||||
-D BUILD_MODULE_ModelingAlgorithms:BOOL=%BUILD_MODULE_ModelingAlgorithms% ^
|
||||
-D BUILD_MODULE_ModelingData:BOOL=%BUILD_MODULE_ModelingData% ^
|
||||
-D BUILD_MODULE_Visualization:BOOL=%BUILD_MODULE_Visualization% ^
|
||||
-D BUILD_PATCH:PATH="%BUILD_PATCH%" ^
|
||||
-D BUILD_RELEASE_DISABLE_EXCEPTIONS:BOOL=%BUILD_RELEASE_DISABLE_EXCEPTIONS% ^
|
||||
-D BUILD_WITH_DEBUG:BOOL=%BUILD_WITH_DEBUG% ^
|
||||
-D BUILD_ENABLE_FPE_SIGNAL_HANDLER:BOOL=%BUILD_ENABLE_FPE_SIGNAL_HANDLER% ^
|
||||
|
@@ -24,7 +24,6 @@ BUILD_ADDITIONAL_TOOLKITS=
|
||||
BUILD_DOC_Overview=OFF
|
||||
BUILD_Inspector=OFF
|
||||
BUILD_LIBRARY_TYPE=Shared
|
||||
BUILD_PATCH=
|
||||
BUILD_RELEASE_DISABLE_EXCEPTIONS=ON
|
||||
BUILD_WITH_DEBUG=OFF
|
||||
BUILD_ENABLE_FPE_SIGNAL_HANDLER=ON
|
||||
@@ -70,7 +69,6 @@ cmake -G "Unix Makefiles" \
|
||||
-D BUILD_MODULE_ModelingAlgorithms:BOOL=$BUILD_MODULE_ModelingAlgorithms \
|
||||
-D BUILD_MODULE_ModelingData:BOOL=$BUILD_MODULE_ModelingData \
|
||||
-D BUILD_MODULE_Visualization:BOOL=$BUILD_MODULE_Visualization \
|
||||
-D BUILD_PATCH:PATH="$BUILD_PATCH" \
|
||||
-D BUILD_RELEASE_DISABLE_EXCEPTIONS:BOOL=$BUILD_RELEASE_DISABLE_EXCEPTIONS \
|
||||
-D BUILD_WITH_DEBUG:BOOL=$BUILD_WITH_DEBUG \
|
||||
-D BUILD_ENABLE_FPE_SIGNAL_HANDLER:BOOL=$BUILD_ENABLE_FPE_SIGNAL_HANDLER \
|
||||
|
@@ -27,7 +27,7 @@ get_filename_component (OpenCASCADE_INSTALL_PREFIX "${OpenCASCADE_INSTALL_PREFIX
|
||||
if (OpenCASCADE_INSTALL_PREFIX MATCHES "/cmake$")
|
||||
get_filename_component (OpenCASCADE_INSTALL_PREFIX "${OpenCASCADE_INSTALL_PREFIX}" PATH)
|
||||
endif()
|
||||
if (OpenCASCADE_INSTALL_PREFIX MATCHES "/lib$")
|
||||
if (OpenCASCADE_INSTALL_PREFIX MATCHES "/lib(32|64)?$")
|
||||
get_filename_component (OpenCASCADE_INSTALL_PREFIX "${OpenCASCADE_INSTALL_PREFIX}" PATH)
|
||||
endif()
|
||||
if (OpenCASCADE_INSTALL_PREFIX MATCHES "/libs/${CMAKE_ANDROID_ARCH_ABI}$")
|
||||
|
@@ -12,54 +12,70 @@ The easiest way to install third-party libraries is to download archive with pre
|
||||
from [Development Portal](https://dev.opencascade.org/resources/download/3rd-party-components).
|
||||
You can also build third-party libraries from their sources, see @ref build_upgrade_building_3rdparty for instructions.
|
||||
|
||||
On Linux and macOS we recommend to use libraries maintained by distributive developers, when possible.
|
||||
On Linux and macOS we recommend using libraries maintained by distributive developers when possible.
|
||||
|
||||
@section build_occt_win_cmake Building with CMake tool
|
||||
@section build_requirements System Requirements
|
||||
|
||||
This chapter describes the [CMake](https://cmake.org/download/)-based build process, which is now suggested as a standard way to produce the binaries of Open CASCADE Technology from sources.
|
||||
OCCT requires CMake version 3.1 or later.
|
||||
* **CMake** version 3.10 or later (3.16+ recommended for precompiled headers support)
|
||||
* C++11 compliant compiler (required)
|
||||
* Supported platforms and compilers:
|
||||
* Windows:
|
||||
- Visual Studio 2015 or later
|
||||
- MinGW-w64 7.3 or later
|
||||
* Linux:
|
||||
- GCC 5.0 or later
|
||||
- Clang 3.8 or later
|
||||
* macOS:
|
||||
- Apple Clang 9.0 or later
|
||||
- Xcode 9.0 or later
|
||||
|
||||
CMake is a tool that generates the actual project files for the selected target build system (e.g. Unix makefiles) or IDE (e.g. Visual Studio 2010).
|
||||
Here we describe the build procedure on the example of Windows platform with Visual Studio 2010.
|
||||
@section build_occt_cmake Building with CMake
|
||||
|
||||
This chapter describes the [CMake](https://cmake.org/download/)-based build process, which is the standard way to produce OCCT binaries from sources.
|
||||
|
||||
CMake is a tool that generates project files for the selected target build system (e.g. Unix makefiles) or IDE (e.g. Visual Studio).
|
||||
Here we describe the build procedure using Windows platform with Visual Studio as an example.
|
||||
However, CMake is cross-platform and can be used to build OCCT on Linux and macOS in essentially the same way.
|
||||
|
||||
CMake deals with three directories: source, build or binary and installation.
|
||||
|
||||
* The source directory is where the sources of OCCT are located in your file system;
|
||||
* The build or binary directory is where all files created during CMake configuration and generation process will be located. The mentioned process will be described below.
|
||||
* The installation directory is where binaries will be installed after building the *INSTALL* project that is created by CMake generation process, along with header files and resources required for OCCT use in applications.
|
||||
* The build or binary directory is where all files created during CMake configuration and generation process will be located;
|
||||
* The installation directory is where binaries will be installed after building the *INSTALL* project, along with header files and resources required for OCCT use in applications.
|
||||
|
||||
The good practice is not to use the source directory as a build one.
|
||||
Different configurations should be built in different build directories to avoid conflicts.
|
||||
It is however possible to choose one installation directory for several configurations of OCCT (differentiated by platform, bitness, compiler and build type), for example:
|
||||
Different configurations should be built in different build directories to avoid conflicts.
|
||||
For example:
|
||||
|
||||
d:/occt/ - the source directory
|
||||
d:/tmp/occt-build-vc10-x64 - the build directory with the generated
|
||||
d:/tmp/occt-build-vc14-x64 - the build directory with the generated
|
||||
solution and other intermediate files created during a CMake tool working
|
||||
d:/occt-install - the installation directory that is
|
||||
able to contain several OCCT configurations
|
||||
d:/occt-install - the installation directory that can
|
||||
contain several OCCT configurations
|
||||
|
||||
@subsection build_cmake_conf Configuration process
|
||||
|
||||
For unexperienced users we recommend to start with *cmake-gui* -- a cross-platform GUI tool provided by CMake on Windows, Mac and Linux.
|
||||
For inexperienced users we recommend starting with *cmake-gui* -- a cross-platform GUI tool provided by CMake on Windows, Mac and Linux.
|
||||
A command-line alternative, *ccmake* can also be used.
|
||||
|
||||
If the command-line tool is used, run the tool from the build directory with a single argument indicating the source (relative or absolute path) directory, and press *c* to configure:
|
||||
If the command-line tool is used, run it from the build directory with a single argument indicating the source directory:
|
||||
|
||||
cd d:/tmp/occt-build-vc10-x64
|
||||
cd d:/tmp/occt-build-vc14-x64
|
||||
ccmake d:/occt
|
||||
|
||||
Then press *c* to configure.
|
||||
|
||||
@figure{/build/build_occt/images/cmake_image000.png}
|
||||
|
||||
If the GUI tool is used, run this tool without additional arguments and after that specify the source directory by clicking **Browse Source** and the build (binary) one by clicking **Browse Build**:
|
||||
If the GUI tool is used, run this tool without additional arguments and specify the source directory by clicking **Browse Source** and the build directory by clicking **Browse Build**:
|
||||
|
||||
@figure{/build/build_occt/images/cmake_image001.png}
|
||||
|
||||
@note Each configuration of the project should be built in its own directory.
|
||||
When building multiple configurations it is suggested to indicate in the name of build directories the system, bitness and compiler (e.g., <i>d:/occt/build/win32-vc10</i>).
|
||||
When building multiple configurations it is suggested to indicate in the name of build directories the system, bitness and compiler (e.g., <i>d:/occt/build/win32-vc14</i>).
|
||||
|
||||
Once the source and build directories are selected, "Configure" button should be pressed in order to start manual configuration process.
|
||||
It begins with selection of a target configurator. It is "Visual Studio 10 2010 Win64" in our example.
|
||||
It begins with selection of a target configurator. It is "Visual Studio 14 2015 Win64" in our example.
|
||||
|
||||
@figure{/build/build_occt/images/cmake_image002.png}
|
||||
|
||||
@@ -86,24 +102,29 @@ The following table gives the full list of environment variables used at the con
|
||||
| Variable | Type | Purpose |
|
||||
|----------|------|---------|
|
||||
| CMAKE_BUILD_TYPE | String | Specifies the build type on single-configuration generators (such as make). Possible values are Debug, Release and RelWithDebInfo |
|
||||
| USE_FREETYPE | Boolean | Indicates whether FreeType product should be used in OCCT for text rendering |
|
||||
| USE_FREEIMAGE | Boolean | Indicates whether FreeImage product should be used in OCCT visualization module for support of popular graphics image formats (PNG, BMP, etc.) |
|
||||
| USE_OPENVR | Boolean | Indicates whether OpenVR product should be used in OCCT visualization module for support of Virtual Reality |
|
||||
| USE_OPENGL | Boolean | Indicates whether TKOpenGl graphic driver using OpenGL library (desktop) should be built within OCCT visualization module |
|
||||
| USE_GLES2 | Boolean | Indicates whether TKOpenGles graphic driver using OpenGL ES library (embedded OpenGL) should be built within OCCT visualization module |
|
||||
| USE_RAPIDJSON | Boolean | Indicates whether RapidJSON product should be used in OCCT Data Exchange module for support of glTF mesh file format |
|
||||
| USE_DRACO | Boolean | Indicates whether Draco product should be used in OCCT Data Exchange module for support of Draco compression in glTF mesh file format |
|
||||
| USE_TK | Boolean | Indicates whether Tcl/Tk product should be used in OCCT Draw Harness module for user interface (in addition to Tcl, which is mandatory for Draw Harness) |
|
||||
| USE_TBB | Boolean | Indicates whether TBB (Threading Building Blocks) 3rd party is used or not. Note that OCCT remains parallel even without TBB product |
|
||||
| USE_VTK | Boolean | Indicates whether VTK 3rd party is used or not. OCCT comes with a bridge between CAD data representation and VTK by means of its dedicated VIS component (VTK Integration Services). You may skip this 3rd party unless you are planning to use VTK visualization for OCCT geometry. See the official documentation @ref occt_user_guides__vis for the details on VIS |
|
||||
| USE_FREETYPE | Boolean | Indicates whether FreeType product should be used in OCCT for text rendering |
|
||||
| USE_FREEIMAGE | Boolean | Indicates whether FreeImage product should be used in OCCT visualization module for support of popular graphics image formats |
|
||||
| USE_FFMPEG | Boolean | Indicates whether FFmpeg framework should be used for video encoding/decoding support |
|
||||
| USE_OPENVR | Boolean | Indicates whether OpenVR product should be used in OCCT visualization module for VR support |
|
||||
| USE_OPENGL | Boolean | Indicates whether TKOpenGl graphic driver using OpenGL library (desktop) should be built |
|
||||
| USE_GLES2 | Boolean | Indicates whether TKOpenGles graphic driver using OpenGL ES library should be built |
|
||||
| USE_RAPIDJSON | Boolean | Indicates whether RapidJSON product should be used for JSON format support |
|
||||
| USE_DRACO | Boolean | Indicates whether Draco mesh compression library should be used |
|
||||
| USE_TK | Boolean | Indicates whether Tcl/Tk product should be used in Draw Harness for user interface |
|
||||
| USE_TBB | Boolean | Indicates whether TBB (Threading Building Blocks) should be used for parallel computations |
|
||||
| USE_VTK | Boolean | Indicates whether VTK bridge should be built |
|
||||
| BUILD_USE_PCH | Boolean | Enable/disable use of precompiled headers. Requires CMake 3.16 or later |
|
||||
| BUILD_USE_VCPKG | Boolean | Use vcpkg for managing third-party dependencies |
|
||||
| BUILD_INCLUDE_SYMLINK | Boolean | Use symbolic links instead of copies for header files in build directory |
|
||||
| BUILD_MODULE_<MODULE>| Boolean | Indicates whether the corresponding OCCT module should be built |
|
||||
| BUILD_LIBRARY_TYPE | String | Specifies library type ("Shared" or "Static") |
|
||||
| BUILD_CPP_STANDARD | String | Select C++ standard (C++11, C++14, C++17, C++20, C++23) |
|
||||
| 3RDPARTY_DIR | Path | Defines the root directory where all required 3rd party products will be searched. Once you define this path it is very convenient to click "Configure" button in order to let CMake automatically detect all necessary products|
|
||||
| 3RDPARTY_FREETYPE_* | Path | Path to FreeType binaries |
|
||||
| 3RDPARTY_TCL_* 3RDPARTY_TK_* | Path | Path to Tcl/Tk binaries |
|
||||
| 3RDPARTY_FREEIMAGE* | Path | Path to FreeImage binaries |
|
||||
| 3RDPARTY_TBB* | Path | Path to TBB binaries |
|
||||
| 3RDPARTY_VTK_* | Path | Path to VTK binaries |
|
||||
| BUILD_MODULE_<MODULE>| Boolean | Indicates whether the corresponding OCCT module should be built or not. It should be noted that some toolkits of a module can be built even if this module is not checked (this happens if some other modules depend on these toolkits). The main modules and their descriptions can be found in @ref user_guides |
|
||||
| BUILD_LIBRARY_TYPE | String | Specifies the type of library to be created. "Shared" libraries are linked dynamically and loaded at runtime. "Static" libraries are archives of object files used when linking other targets. Note that Draw Harness plugin system is incompatible with "Static" builds, and therefore it is disabled for these builds.|
|
||||
| BUILD_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 | Enables Flex/Bison lexical analyzers. OCCT source files relating to STEP reader and ExprIntrp functionality are generated automatically with Flex/Bison. Checking this option leads to automatic search of Flex/Bison binaries and regeneration of the mentioned files |
|
||||
| BUILD_SAMPLES_MFC | Boolean | Indicates whether MFC samples should be built together with OCCT. This option is only relevant to Windows platforms |
|
||||
@@ -113,7 +134,6 @@ The following table gives the full list of environment variables used at the con
|
||||
| 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 | Enables extended messages of many OCCT algorithms, usually printed to cout. These include messages on internal errors and special cases encountered, timing, etc. |
|
||||
| BUILD_ENABLE_FPE_SIGNAL_HANDLER | Boolean | Enable/Disable the floating point exceptions (FPE) during DRAW execution only. Corresponding environment variable (CSF_FPE) can be changed manually in custom.bat/sh scripts without regeneration by CMake. |
|
||||
| BUILD_CPP_STANDARD | String | Employ corresponding c++ standard (C++11, C++14, ..C++23) for building OCCT |
|
||||
| CMAKE_CONFIGURATION_TYPES | String | Semicolon-separated CMake configurations |
|
||||
| INSTALL_DIR | Path | Points to the installation directory. *INSTALL_DIR* is a synonym of *CMAKE_INSTALL_PREFIX*. The user can specify both *INSTALL_DIR* or *CMAKE_INSTALL_PREFIX* |
|
||||
| INSTALL_DIR_BIN | Path | Relative path to the binaries installation directory (absolute path is ${INSTALL_DIR}/${INSTALL_DIR_BIN}) |
|
||||
@@ -211,7 +231,7 @@ The directory structure is as follows:
|
||||
samples - samples
|
||||
src - all required source files for OCCT
|
||||
tests - OCCT test suite
|
||||
win32\vc10\bind - binary files (installed 3rdparties and occt)
|
||||
win32\vc14\bind - binary files (installed 3rdparties and occt)
|
||||
\libd - libraries (installed 3rdparties and occt)
|
||||
|
||||
@note The above example is given for debug configuration.
|
||||
@@ -219,7 +239,7 @@ However, it is generally safe to use the same installation directory for the rel
|
||||
In the latter case the contents of install directory will be enriched with subdirectories and files related to the release configuration.
|
||||
In particular, the binaries directory win64 will be expanded as follows:
|
||||
|
||||
\win32\vc10\bind
|
||||
\win32\vc14\bind
|
||||
\libd
|
||||
\bin
|
||||
\lib
|
||||
@@ -235,10 +255,11 @@ This section describes the steps to build OCCT libraries for Android from a comp
|
||||
The steps on Windows 7 and Ubuntu 15.10 are similar. There is the only one difference: makefiles are built with mingw32-make on Windows and native GNU make on Ubuntu.
|
||||
|
||||
Required tools (download and install if it is required):
|
||||
- CMake 3.0+
|
||||
- [Cross-compilation toolchain for CMake](https://github.com/taka-no-me/android-cmake)
|
||||
- [Android NDK r12+](https://developer.android.com/ndk/downloads)
|
||||
- GNU Make: MinGW v4.82+ for [Windows](https://www.mingw-w64.org/), GNU Make 4.0 for Ubuntu.
|
||||
- CMake 3.10+ (3.16+ recommended)
|
||||
- Android NDK r19+
|
||||
- Android SDK API level 21+
|
||||
- For Windows: MinGW-w64 7.3+ or Visual Studio 2015+
|
||||
- For Linux/macOS: GNU Make 4.0+
|
||||
|
||||
Run GUI tool provided by CMake and:
|
||||
- Specify the root folder of OCCT (`$CASROOT`, which contains *CMakelists.txt* file) by clicking **Browse Source**.
|
||||
@@ -263,9 +284,9 @@ specify `CMAKE_MAKE_PROGRAM` to mingw32-make executable.
|
||||
@figure{/build/build_occt/images/android_image005.png}
|
||||
|
||||
How to configure OCCT, see @ref build_cmake_conf "Configure" section taking into account the specific configuration variables for Android:
|
||||
- `ANDROID_ABI` = `armeabi-v7a`
|
||||
- `ANDROID_NATIVE_API_LEVEL` = `15`
|
||||
- `ANDROID_NDK_LAYOUT` is equal to `CMAKE_BUILD_TYPE` variable
|
||||
- `ANDROID_ABI` = `armeabi-v7a`, `arm64-v8a`, `x86`, or `x86_64`
|
||||
- `ANDROID_PLATFORM` = `android-21` (minimum supported API level)
|
||||
- `ANDROID_STL` = `c++_shared` (recommended)
|
||||
- `BUILD_MODULE_Draw` = `OFF`
|
||||
|
||||
@figure{/build/build_occt/images/android_image006.png}
|
||||
|
@@ -233,13 +233,18 @@ void Average (const Standard_Real** theArray,
|
||||
|
||||
To improve the open source readability and, consequently, maintainability, the following set of rules is applied.
|
||||
|
||||
### Clang-format [MANDATORY]
|
||||
|
||||
The source code should be formatted using the clang-format tool with the configuration file provided in the OCCT repository.
|
||||
The version of clang-format should be 18.1.8 or higher.
|
||||
|
||||
### International language [MANDATORY]
|
||||
|
||||
All comments in all sources must be in English.
|
||||
|
||||
### Line length
|
||||
|
||||
Try to stay within the limit of 120 characters per line in all sources.
|
||||
Try to stay within the limit of 100 characters per line in all sources.
|
||||
|
||||
### C++ style comments
|
||||
|
||||
@@ -254,49 +259,6 @@ Delete unused code instead of commenting it or using \#define.
|
||||
Indentation in all sources should be set to two space characters.
|
||||
Use of tabulation characters for indentation is disallowed.
|
||||
|
||||
### Separating spaces
|
||||
|
||||
Punctuation rules follow the rules of the English language.
|
||||
* C/C++ reserved words, commas, colons and semicolons should be followed by a space character if they are not at the end of a line.
|
||||
* There should be no space characters after '(' and before ')'. Closing and opening brackets should be separated by a space character.
|
||||
* For better readability it is also recommended to surround conventional operators by a space character.
|
||||
Examples:
|
||||
|
||||
~~~~{.cpp}
|
||||
while (true) // NOT: while( true ) ...
|
||||
{
|
||||
DoSomething (theA, theB, theC, theD); // NOT: DoSomething(theA,theB,theC,theD);
|
||||
}
|
||||
for (anIter = 0; anIter < 10; ++anIter) // NOT: for (anIter=0;anIter<10;++anIter){
|
||||
{
|
||||
theA = (theB + theC) * theD; // NOT: theA=(theB+theC)*theD
|
||||
}
|
||||
~~~~
|
||||
|
||||
### Declaration of pointers and references
|
||||
|
||||
In declarations of simple pointers and references put asterisk (*) or ampersand (&) right after the type without extra space.
|
||||
|
||||
Since declaration of several variables with mixed pointer types contrudicts this rule, it should be avoided. Instead, declare each variable independently with fully qualified type.
|
||||
|
||||
Examples:
|
||||
|
||||
~~~~{.cpp}
|
||||
Standard_Integer *theVariable; // not recommended
|
||||
Standard_Integer * theVariable; // not recommended
|
||||
Standard_Integer* theVariable; // this is OK
|
||||
|
||||
Standard_Integer *&theVariable; // not recommended
|
||||
Standard_Integer *& theVariable; // not recommended
|
||||
Standard_Integer*& theVariable; // this is OK
|
||||
|
||||
Standard_Integer **theVariable; // not recommended
|
||||
Standard_Integer ** theVariable; // not recommended
|
||||
Standard_Integer** theVariable; // this is OK
|
||||
|
||||
Standard_Integer *theA, theB, **theC; // not recommended (declare each variable independently)
|
||||
~~~~
|
||||
|
||||
### Separate logical blocks
|
||||
|
||||
Separate logical blocks of code with one blank line and comments.
|
||||
@@ -330,19 +292,16 @@ Each descriptive block should contain at least a function name and purpose descr
|
||||
See the following example:
|
||||
|
||||
~~~~{.cpp}
|
||||
// =======================================================================
|
||||
// function : TellMeSmthGood
|
||||
// purpose : Gives me good news
|
||||
// =======================================================================
|
||||
|
||||
// ================================================================================================
|
||||
|
||||
void TellMeSmthGood()
|
||||
{
|
||||
...
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
// function : TellMeSmthBad
|
||||
// purpose : Gives me bad news
|
||||
// =======================================================================
|
||||
// ================================================================================================
|
||||
|
||||
void TellMeSmthBad()
|
||||
{
|
||||
...
|
||||
@@ -400,23 +359,6 @@ if (THE_LIMIT == theValue) // bad style (global constant vs. variable)
|
||||
if (theValue == THE_LIMIT) // OK
|
||||
~~~~
|
||||
|
||||
### Alignment
|
||||
|
||||
Use alignment wherever it enhances the readability. See the following example:
|
||||
|
||||
~~~~{.cpp}
|
||||
MyPackage_MyClass anObject;
|
||||
Standard_Real aMinimum = 0.0;
|
||||
Standard_Integer aVal = theVal;
|
||||
switch (aVal)
|
||||
{
|
||||
case 0: computeSomething(); break;
|
||||
case 12: computeSomethingElse (aMinimum); break;
|
||||
case 3:
|
||||
default: computeSomethingElseYet(); break;
|
||||
}
|
||||
~~~~
|
||||
|
||||
### Indentation of comments
|
||||
|
||||
Comments should be indented in the same way as the code to which they refer or they can be in the same line if they are short.
|
||||
|
@@ -47,6 +47,9 @@ ENUM_VALUES_PER_LINE = 8
|
||||
TREEVIEW_WIDTH = 250
|
||||
EXTERNAL_PAGES = NO
|
||||
SEARCHDATA_FILE = searchdata.xml
|
||||
SERVER_BASED_SEARCH = NO
|
||||
SEARCHENGINE = YES
|
||||
EXTERNAL_SEARCH = NO
|
||||
SKIP_FUNCTION_MACROS = YES
|
||||
FORMULA_FONTSIZE = 12
|
||||
FORMULA_TRANSPARENT = YES
|
||||
|
@@ -7,7 +7,7 @@ Upgrade from older OCCT versions {#occt__upgrade}
|
||||
|
||||
This document provides technical details on changes made in particular versions of OCCT. It can help to upgrade user applications based on previous versions of OCCT to newer ones.
|
||||
|
||||
@ref upgrade_occt780 "SEEK TO THE LAST CHAPTER (UPGRADE TO 7.8.0)"
|
||||
@ref upgrade_occt790 "SEEK TO THE LAST CHAPTER (UPGRADE TO 7.9.0)"
|
||||
|
||||
@subsection upgrade_intro_precautions Precautions
|
||||
|
||||
@@ -2409,3 +2409,77 @@ The most recommended manager is `JeMalloc`. To use it with a plugin system, like
|
||||
`BUILD_OPT_PROFILE` is a new variable to define optimization level. Available profiles:
|
||||
* `Default` - specializes only in quality-dependent parameters for the compiler.
|
||||
* `Production` - specializes in performance and quality-dependent parameters for the compiler and linker.
|
||||
|
||||
@section upgrade_occt790 Upgrade to OCCT 7.9.0
|
||||
|
||||
@subsection upgrade_790_code_formatting Code Formatting update
|
||||
|
||||
The entire code base has been formatted with `clang-format` 18.1.8 (Windows) using settings available in the root of the repository.
|
||||
Most custom patches on top of previous releases will likely have merge conflicts.
|
||||
When encountering merge conflicts, it is recommended to use `clang-format` to format the code.
|
||||
To maintain patches, it is recommended to merge them into the main repository as part of a contribution. See [Get Involved](https://dev.opencascade.org/get_involved) and [Contribution Guide](https://github.com/Open-Cascade-SAS/OCCT/discussions/36).
|
||||
|
||||
@subsection upgrade_790_migration Migration to GitHub
|
||||
|
||||
The OCCT repository has been migrated to GitHub. The new repository is available at [GitHub](https://github.com/Open-Cascade-SAS/OCCT).
|
||||
The old repository will be available for some time, but it is recommended to use the new repository for all new changes.
|
||||
Contribution to the new repository is available through the GitHub interface - see [Get Involved](https://dev.opencascade.org/get_involved) and [Contribution Guide](https://github.com/Open-Cascade-SAS/OCCT/discussions/36).
|
||||
|
||||
@subsection upgrade_790_configuration GenProj no longer supported
|
||||
|
||||
The `GenProj` tool is no longer supported. It is recommended to use CMake for building OCCT.
|
||||
In case of problems, please refer to the [CMake Guide](https://dev.opencascade.org/doc/overview/html/build_upgrade__building_occt.html).
|
||||
|
||||
@subsection upgrade_790_modeling_scale_exception Disabling exception for transformation with scale
|
||||
|
||||
The exception for transformation with scale has been disabled by default.
|
||||
These exceptions were enabled in OCCT 7.6.0 for all cases of applying a transformation on a `TopoDS_Shape` with scale or negative determinant.
|
||||
Now the exceptions are disabled by default but can be enabled by changing the parameter in the method which applies the transformation on `TopoDS_Shape`.
|
||||
|
||||
@subsection upgrade_790_de_wrapper Migration of DE_Wrapper classes
|
||||
|
||||
The DE Wrapper classes have been reorganized to follow a single style throughout the OCCT open source and commercial code.
|
||||
All DE formats starting from 7.8.0 were grouped into their own TKs with the `TKDE` prefix.
|
||||
Now all DE Wrapper interfaces have moved to their own package with the `DE` prefix.
|
||||
DE Wrapper classes follow the pattern: `DE<Format>_Parameters`, `DE<Format>_Provider`, and `DE<Format>_ConfigurationNode`.
|
||||
Example: `DESTEP_Parameters`, `DESTEP_Provider`, `DESTEP_ConfigurationNode`.
|
||||
|
||||
@subsection upgrade_790_de_shape_healing Migration of shape healing parameters
|
||||
|
||||
The shape healing parameters have migrated from the resource file to the DE interface.
|
||||
The previous implementation was based on the resource file or `Interface_Static`.
|
||||
Now the parameters are stored in the `DE_ShapeFixParameters` structure with the option to use a string-string map to store extra parameters.
|
||||
To use the previous interface, use code similar to:
|
||||
|
||||
~~~~{.cpp}
|
||||
STEPControl_Reader aReader;
|
||||
XSAlgo_ShapeProcessor::ProcessingData aProcessingData =
|
||||
XSAlgo_ShapeProcessor::ReadProcessingData("read.step.resource.name", "read.step.sequence");
|
||||
aReader.SetShapeFixParameters(std::move(aProcessingData.first));
|
||||
aReader.SetShapeProcessFlags(aProcessingData.second);
|
||||
~~~~
|
||||
|
||||
It is recommended to use the new interface to store parameters in the `DE_ShapeFixParameters` structure directly.
|
||||
|
||||
@subsection upgrade_790_de_interface_static Migration of DE parameters from Interface_Static
|
||||
|
||||
During transfer operations, all parameters that were stored in `Interface_Static` have moved to their own DE structure.
|
||||
The parameters are read only once during initialization and stored in the model.
|
||||
Parameters are now available as part of the DE Wrapper interface, for example: `DESTEP_Parameters`, `DEIGES_Parameters`.
|
||||
Code samples showing how to set the parameters can be found in `DESTEP_Provider` and `DEIGES_Provider`.
|
||||
|
||||
@subsection upgrade_790_general_handle_types Deprecated Handle types
|
||||
|
||||
The `Handle_*` type names have been deprecated in favor of directly using the macro.
|
||||
The `Handle_*` type names are still available, but it is recommended to use the macro directly.
|
||||
Example:
|
||||
|
||||
~~~~{.cpp}
|
||||
Handle(TDataStd_Application) anApp = new TDataStd_Application(); // recommended
|
||||
Handle_TDataStd_Application anApp = new TDataStd_Application(); // deprecated
|
||||
~~~~
|
||||
|
||||
@subsection upgrade_790_general_map NCollection_Map algorithm method migration
|
||||
|
||||
The `NCollection_Map` class has been reorganized to migrate extra methods to the `NCollection_MapAlgo` class.
|
||||
Boolean operations on maps are now available in the `NCollection_MapAlgo` class.
|
||||
|
@@ -24,15 +24,15 @@ This guide principally deals with the following OCCT classes:
|
||||
|
||||
| CAD format | Extensions | RW support | Thread Safety | Presentation | Package |
|
||||
| :--------- | :--------- | :--------- | :----------- | :----------- | :------ |
|
||||
| STEP | .stp, .step .stepz | RW | No | BRep, Mesh | STEPCAFControl |
|
||||
| XCAF | .xbf | RW | Yes | BRep, Mesh | DEXCAFCascade |
|
||||
| BREP | .brep | RW | Yes | BRep, Mesh | DEBRepCascade |
|
||||
| IGES | .igs, .iges | RW | No | BRep | IGESCAFControl |
|
||||
| OBJ | .obj | RW | Yes | Mesh | RWObj |
|
||||
| STL | .stl | RW | Yes | Mesh | RWStl |
|
||||
| PLY | .ply | W | Yes | Mesh | RWPly |
|
||||
| GLTF | .glTF .glb | RW | Yes | Mesh | RWGltf |
|
||||
| VRML | .wrl .vrml | RW | Yes | Mesh | Vrml |
|
||||
| STEP | .stp, .step .stepz | RW | No | BRep, Mesh | DESTEP |
|
||||
| XCAF | .xbf | RW | Yes | BRep, Mesh | DEXCAF |
|
||||
| BREP | .brep | RW | Yes | BRep, Mesh | DEBREP |
|
||||
| IGES | .igs, .iges | RW | No | BRep | DEIGES |
|
||||
| OBJ | .obj | RW | Yes | Mesh | DEOBJ |
|
||||
| STL | .stl | RW | Yes | Mesh | DESTL |
|
||||
| PLY | .ply | W | Yes | Mesh | DEPLY |
|
||||
| GLTF | .glTF .glb | RW | Yes | Mesh | DEGLTF |
|
||||
| VRML | .wrl .vrml | RW | Yes | Mesh | DEVRML |
|
||||
|
||||
**Note** :
|
||||
* The format names in the first column match the FormatName values used for configuration nodes.
|
||||
@@ -41,7 +41,7 @@ This guide principally deals with the following OCCT classes:
|
||||
@section occt_de_wrapper_3 DE Session Configuration
|
||||
|
||||
Any providers can have their own read/write parameters. The transfer process is set up using DE configuration nodes, which hold all relevant parameters. There are two ways to change the parameter values: directly from code or by an external resource file/string.
|
||||
The session is a global or static DE_Wrapper object that stores registered DE configuration nodes and wraps DE commands to work with them. It has some configuration parameters of its own and also keeps track of loaded nodes and specilal global parameters.
|
||||
The session is a global or static DE_Wrapper object that stores registered DE configuration nodes and wraps DE commands to work with them. It has some configuration parameters of its own and also keeps track of loaded nodes and special global parameters.
|
||||
|
||||
@subsection occt_de_wrapper_3_1 Getting a DE session. Code sample
|
||||
|
||||
|
@@ -65,8 +65,11 @@ AIS_SelectStatus AIS_Selection::Select(const Handle(SelectMgr_EntityOwner)& theO
|
||||
const Standard_Boolean wasSelected = theOwner->IsSelected();
|
||||
const Standard_Boolean toSelect = theOwner->Select(theSelScheme, isDetected);
|
||||
|
||||
if (toSelect && !wasSelected)
|
||||
if (!wasSelected || !myResultMap.IsBound(theOwner))
|
||||
{
|
||||
if (!toSelect)
|
||||
return AIS_SS_NotDone;
|
||||
|
||||
AIS_NListOfEntityOwner::Iterator aListIter;
|
||||
myresult.Append(theOwner, aListIter);
|
||||
myResultMap.Bind(theOwner, aListIter);
|
||||
@@ -74,11 +77,6 @@ AIS_SelectStatus AIS_Selection::Select(const Handle(SelectMgr_EntityOwner)& theO
|
||||
return AIS_SS_Added;
|
||||
}
|
||||
|
||||
if (!toSelect && !wasSelected)
|
||||
{
|
||||
return AIS_SS_NotDone;
|
||||
}
|
||||
|
||||
AIS_NListOfEntityOwner::Iterator aListIter = myResultMap.Find(theOwner);
|
||||
if (myIterator == aListIter)
|
||||
{
|
||||
|
@@ -735,6 +735,8 @@ const Bnd_Box& AIS_Shape::BoundingBox()
|
||||
|
||||
if (myCompBB)
|
||||
{
|
||||
// Clear the bounding box to re-compute it.
|
||||
myBB.SetVoid();
|
||||
BRepBndLib::Add(myshape, myBB, false);
|
||||
myCompBB = Standard_False;
|
||||
}
|
||||
|
@@ -695,8 +695,21 @@ bool AIS_ViewController::UpdateMouseButtons(const Graphic3d_Vec2i& thePoint,
|
||||
if (double(aDelta.cwiseAbs().maxComp()) < aTolClick)
|
||||
{
|
||||
++myMouseClickCounter;
|
||||
const bool isDoubleClick = myMouseClickCounter == 2 && myMouseClickTimer.IsStarted()
|
||||
&& myMouseClickTimer.ElapsedTime() <= myMouseDoubleClickInt;
|
||||
|
||||
const bool isCounterValid = myMouseClickCounter == 2;
|
||||
const bool isTimerStarted = myMouseClickTimer.IsStarted();
|
||||
const bool isTimerElapsed = myMouseClickTimer.ElapsedTime() > myMouseDoubleClickInt;
|
||||
|
||||
const bool isTimerValid = isTimerStarted && !isTimerElapsed;
|
||||
|
||||
const bool isDoubleClick = isCounterValid && isTimerValid;
|
||||
|
||||
if (!isTimerValid)
|
||||
{
|
||||
myMouseClickCounter = 1;
|
||||
}
|
||||
|
||||
myMouseClickCounter %= 2;
|
||||
|
||||
myMouseClickTimer.Stop();
|
||||
myMouseClickTimer.Reset();
|
||||
|
@@ -47,6 +47,9 @@
|
||||
#include <BRepLib.hxx>
|
||||
#include <BRepTools.hxx>
|
||||
#include <Geom_Curve.hxx>
|
||||
#include <Geom_Plane.hxx>
|
||||
#include <Geom_RectangularTrimmedSurface.hxx>
|
||||
#include <Geom_OffsetSurface.hxx>
|
||||
#include <Geom2d_Curve.hxx>
|
||||
#include <GeomAPI_ProjectPointOnCurve.hxx>
|
||||
#include <GeomAPI_ProjectPointOnSurf.hxx>
|
||||
@@ -76,11 +79,62 @@
|
||||
#include <TopTools_DataMapOfShapeInteger.hxx>
|
||||
#include <TopTools_ListOfShape.hxx>
|
||||
|
||||
//
|
||||
static Standard_Real ToleranceFF(const BRepAdaptor_Surface& aBAS1,
|
||||
const BRepAdaptor_Surface& aBAS2);
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//=================================================================================================
|
||||
|
||||
static Standard_Boolean IsPlaneFF(const Handle(Geom_Surface)& theSurface)
|
||||
{
|
||||
if (theSurface->IsKind(STANDARD_TYPE(Geom_Plane)))
|
||||
{
|
||||
return Standard_True;
|
||||
}
|
||||
else if (const Handle(Geom_OffsetSurface) anOffsetSurface =
|
||||
Handle(Geom_OffsetSurface)::DownCast(theSurface))
|
||||
{
|
||||
return anOffsetSurface->BasisSurface()->IsKind(STANDARD_TYPE(Geom_Plane));
|
||||
}
|
||||
else if (const Handle(Geom_RectangularTrimmedSurface) aTrimmedSurface =
|
||||
Handle(Geom_RectangularTrimmedSurface)::DownCast(theSurface))
|
||||
{
|
||||
return aTrimmedSurface->BasisSurface()->IsKind(STANDARD_TYPE(Geom_Plane));
|
||||
}
|
||||
|
||||
return Standard_False;
|
||||
}
|
||||
|
||||
//=================================================================================================
|
||||
|
||||
static Standard_Boolean IsClosedFF(const TopoDS_Edge& theEdge,
|
||||
const Handle(Geom_Surface)& theSurface,
|
||||
const Handle(Poly_Triangulation)& theTriangulation,
|
||||
const TopLoc_Location& theLocation,
|
||||
Standard_Boolean theIsPlane)
|
||||
{
|
||||
if (!theIsPlane)
|
||||
{
|
||||
// Check surface
|
||||
const TopLoc_Location aLocation = theLocation.Predivided(theEdge.Location());
|
||||
|
||||
// find the representation
|
||||
const BRep_TEdge* aTEdge = static_cast<const BRep_TEdge*>(theEdge.TShape().get());
|
||||
for (BRep_ListIteratorOfListOfCurveRepresentation anIter(aTEdge->Curves()); anIter.More();
|
||||
anIter.Next())
|
||||
{
|
||||
const Handle(BRep_CurveRepresentation)& aCurveRepresentation = anIter.Value();
|
||||
if (aCurveRepresentation->IsCurveOnSurface(theSurface, aLocation)
|
||||
&& aCurveRepresentation->IsCurveOnClosedSurface())
|
||||
{
|
||||
return Standard_True;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Check triangulation
|
||||
return BRep_Tool::IsClosed(theEdge, theTriangulation, theLocation);
|
||||
}
|
||||
|
||||
//=================================================================================================
|
||||
|
||||
class BOPAlgo_FaceFace : public IntTools_FaceFace, public BOPAlgo_ParallelAlgo
|
||||
@@ -225,11 +279,10 @@ protected:
|
||||
gp_Trsf myTrsf;
|
||||
};
|
||||
|
||||
//
|
||||
//=======================================================================
|
||||
//=================================================================================================
|
||||
|
||||
typedef NCollection_Vector<BOPAlgo_FaceFace> BOPAlgo_VectorOfFaceFace;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//=================================================================================================
|
||||
|
||||
void BOPAlgo_PaveFiller::PerformFF(const Message_ProgressRange& theRange)
|
||||
@@ -354,59 +407,82 @@ void BOPAlgo_PaveFiller::PerformFF(const Message_ProgressRange& theRange)
|
||||
|
||||
if (aBAS1.GetType() != GeomAbs_Plane || aBAS2.GetType() != GeomAbs_Plane)
|
||||
{
|
||||
TopLoc_Location aLocation1;
|
||||
const Handle(Geom_Surface)& aSurface1 = BRep_Tool::Surface(aF1, aLocation1);
|
||||
const Handle(Poly_Triangulation)& aTriangulation1 =
|
||||
BRep_Tool::Triangulation(aF1, aLocation1);
|
||||
const Standard_Boolean anIsPlane1 = IsPlaneFF(aSurface1);
|
||||
|
||||
Standard_Boolean isFound = Standard_False;
|
||||
for (TopExp_Explorer aExp1(aF1, TopAbs_EDGE); !isFound && aExp1.More(); aExp1.Next())
|
||||
TopLoc_Location aLocation2;
|
||||
const Handle(Geom_Surface)& aSurface2 = BRep_Tool::Surface(aF2, aLocation2);
|
||||
const Handle(Poly_Triangulation)& aTriangulation2 =
|
||||
BRep_Tool::Triangulation(aF2, aLocation2);
|
||||
const Standard_Boolean anIsPlane2 = IsPlaneFF(aSurface2);
|
||||
|
||||
Standard_Boolean anIsFound = Standard_False;
|
||||
for (TopoDS_Iterator aItW1(aF1); !anIsFound && aItW1.More(); aItW1.Next())
|
||||
{
|
||||
const TopoDS_Edge& aE1 = TopoDS::Edge(aExp1.Current());
|
||||
const Standard_Integer nE1 = myDS->Index(aE1);
|
||||
|
||||
for (TopExp_Explorer aExp2(aF2, TopAbs_EDGE); !isFound && aExp2.More(); aExp2.Next())
|
||||
for (TopoDS_Iterator aItE1(aItW1.Value()); !anIsFound && aItE1.More(); aItE1.Next())
|
||||
{
|
||||
const TopoDS_Edge& aE2 = TopoDS::Edge(aExp2.Current());
|
||||
const Standard_Integer nE2 = myDS->Index(aE2);
|
||||
const TopoDS_Edge& anEdge1 = TopoDS::Edge(aItE1.Value());
|
||||
const Standard_Integer anEdgeIndex1 = myDS->Index(anEdge1);
|
||||
|
||||
Standard_Boolean bIsClosed1 = BRep_Tool::IsClosed(aE1, aF1);
|
||||
Standard_Boolean bIsClosed2 = BRep_Tool::IsClosed(aE2, aF2);
|
||||
if (!bIsClosed1 && !bIsClosed2)
|
||||
for (TopoDS_Iterator aItW2(aF2); !anIsFound && aItW2.More(); aItW2.Next())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
const TColStd_ListOfInteger* pPoints = aEEMap.Seek(BOPDS_Pair(nE1, nE2));
|
||||
if (!pPoints)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
for (TColStd_ListOfInteger::Iterator itEEP(*pPoints); itEEP.More(); itEEP.Next())
|
||||
{
|
||||
const Standard_Integer& nVN = itEEP.Value();
|
||||
const TopoDS_Vertex& aVN = TopoDS::Vertex(myDS->Shape(nVN));
|
||||
const gp_Pnt& aPnt = BRep_Tool::Pnt(aVN);
|
||||
|
||||
// Compute points exactly on the edges
|
||||
GeomAPI_ProjectPointOnCurve& aProjPC1 = myContext->ProjPC(aE1);
|
||||
GeomAPI_ProjectPointOnCurve& aProjPC2 = myContext->ProjPC(aE2);
|
||||
aProjPC1.Perform(aPnt);
|
||||
aProjPC2.Perform(aPnt);
|
||||
if (!aProjPC1.NbPoints() && !aProjPC2.NbPoints())
|
||||
for (TopoDS_Iterator aItE2(aItW2.Value()); !anIsFound && aItE2.More(); aItE2.Next())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
gp_Pnt aP1 = aProjPC1.NbPoints() > 0 ? aProjPC1.NearestPoint() : aPnt;
|
||||
gp_Pnt aP2 = aProjPC2.NbPoints() > 0 ? aProjPC2.NearestPoint() : aPnt;
|
||||
const TopoDS_Edge& anEdge2 = TopoDS::Edge(aItE2.Value());
|
||||
const Standard_Integer anEdgeIndex2 = myDS->Index(anEdge2);
|
||||
|
||||
Standard_Real aShiftDist = aP1.Distance(aP2);
|
||||
if (aShiftDist > BRep_Tool::Tolerance(aVN))
|
||||
{
|
||||
// Move one of the faces to the point of exact intersection of edges
|
||||
gp_Trsf aTrsf;
|
||||
aTrsf.SetTranslation(bIsClosed1 ? gp_Vec(aP1, aP2) : gp_Vec(aP2, aP1));
|
||||
TopLoc_Location aLoc(aTrsf);
|
||||
(bIsClosed1 ? &aFShifted1 : &aFShifted2)->Move(aLoc);
|
||||
aShiftValue = aShiftDist;
|
||||
isFound = Standard_True;
|
||||
const Standard_Boolean anIsClosed1 =
|
||||
IsClosedFF(anEdge1, aSurface1, aTriangulation1, aLocation1, anIsPlane1);
|
||||
const Standard_Boolean anIsClosed2 =
|
||||
IsClosedFF(anEdge2, aSurface2, aTriangulation2, aLocation2, anIsPlane2);
|
||||
if (!anIsClosed1 && !anIsClosed2)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
const TColStd_ListOfInteger* aVertexIndices =
|
||||
aEEMap.Seek(BOPDS_Pair(anEdgeIndex1, anEdgeIndex2));
|
||||
if (!aVertexIndices)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
for (TColStd_ListOfInteger::Iterator itEEP(*aVertexIndices); itEEP.More();
|
||||
itEEP.Next())
|
||||
{
|
||||
const Standard_Integer aVertexIndex = itEEP.Value();
|
||||
const TopoDS_Vertex& aVertex = TopoDS::Vertex(myDS->Shape(aVertexIndex));
|
||||
const gp_Pnt& aVertexPoint = BRep_Tool::Pnt(aVertex);
|
||||
|
||||
// Compute points exactly on the edges
|
||||
GeomAPI_ProjectPointOnCurve& aProjPC1 = myContext->ProjPC(anEdge1);
|
||||
GeomAPI_ProjectPointOnCurve& aProjPC2 = myContext->ProjPC(anEdge2);
|
||||
aProjPC1.Perform(aVertexPoint);
|
||||
aProjPC2.Perform(aVertexPoint);
|
||||
if (!aProjPC1.NbPoints() && !aProjPC2.NbPoints())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
const gp_Pnt aP1 =
|
||||
aProjPC1.NbPoints() > 0 ? aProjPC1.NearestPoint() : aVertexPoint;
|
||||
const gp_Pnt aP2 =
|
||||
aProjPC2.NbPoints() > 0 ? aProjPC2.NearestPoint() : aVertexPoint;
|
||||
|
||||
const Standard_Real aShiftDist = aP1.Distance(aP2);
|
||||
if (aShiftDist > BRep_Tool::Tolerance(aVertex))
|
||||
{
|
||||
// Move one of the faces to the point of exact intersection of edges
|
||||
gp_Trsf aTrsf;
|
||||
aTrsf.SetTranslation(anIsClosed1 ? gp_Vec(aP1, aP2) : gp_Vec(aP2, aP1));
|
||||
TopLoc_Location aLoc(aTrsf);
|
||||
(anIsClosed1 ? &aFShifted1 : &aFShifted2)->Move(aLoc);
|
||||
aShiftValue = aShiftDist;
|
||||
anIsFound = Standard_True;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -277,14 +277,9 @@ const TopoDS_Shape& BOPDS_DS::Shape(const Standard_Integer theI) const
|
||||
|
||||
Standard_Integer BOPDS_DS::Index(const TopoDS_Shape& theS) const
|
||||
{
|
||||
Standard_Integer iRet;
|
||||
//
|
||||
iRet = -1;
|
||||
if (myMapShapeIndex.IsBound(theS))
|
||||
{
|
||||
iRet = myMapShapeIndex.Find(theS);
|
||||
}
|
||||
return iRet;
|
||||
Standard_Integer anIndex = -1;
|
||||
myMapShapeIndex.Find(theS, anIndex);
|
||||
return anIndex;
|
||||
}
|
||||
|
||||
//=================================================================================================
|
||||
|
@@ -795,6 +795,11 @@ Standard_Boolean BRep_Tool::IsClosed(const TopoDS_Edge& E,
|
||||
const Handle(Poly_Triangulation)& T,
|
||||
const TopLoc_Location& L)
|
||||
{
|
||||
if (T.IsNull())
|
||||
{
|
||||
return Standard_False;
|
||||
}
|
||||
|
||||
TopLoc_Location l = L.Predivided(E.Location());
|
||||
|
||||
// find the representation
|
||||
|
@@ -57,9 +57,12 @@ void BRepAdaptor_Curve2d::Initialize(const TopoDS_Edge& E, const TopoDS_Face& F)
|
||||
{
|
||||
myEdge = E;
|
||||
myFace = F;
|
||||
Standard_Real pf, pl;
|
||||
const Handle(Geom2d_Curve) PC = BRep_Tool::CurveOnSurface(E, F, pf, pl);
|
||||
Geom2dAdaptor_Curve::Load(PC, pf, pl);
|
||||
Standard_Real aFirs, aLast;
|
||||
const Handle(Geom2d_Curve) aPCurve = BRep_Tool::CurveOnSurface(E, F, aFirs, aLast);
|
||||
if (!aPCurve.IsNull())
|
||||
{
|
||||
Geom2dAdaptor_Curve::Load(aPCurve, aFirs, aLast);
|
||||
}
|
||||
}
|
||||
|
||||
//=================================================================================================
|
||||
|
@@ -70,6 +70,11 @@ Handle(Adaptor3d_Surface) BRepAdaptor_Surface::ShallowCopy() const
|
||||
|
||||
void BRepAdaptor_Surface::Initialize(const TopoDS_Face& F, const Standard_Boolean Restriction)
|
||||
{
|
||||
if (F.IsNull())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
myFace = F;
|
||||
TopLoc_Location L;
|
||||
const Handle(Geom_Surface)& aSurface = BRep_Tool::Surface(F, L);
|
||||
|
@@ -619,8 +619,13 @@ void FindExactUVBounds(const TopoDS_Face& FF,
|
||||
BndLib_Add2dCurve::AddOptimal(aC2D, aT1, aT2, TolUV, aBox);
|
||||
//
|
||||
}
|
||||
//
|
||||
aBox.Get(umin, vmin, umax, vmax);
|
||||
|
||||
// In some cases no edges are found
|
||||
if (!aBox.IsVoid())
|
||||
{
|
||||
aBox.Get(umin, vmin, umax, vmax);
|
||||
}
|
||||
|
||||
//
|
||||
TopLoc_Location aLoc;
|
||||
Handle(Geom_Surface) aS = BRep_Tool::Surface(FF, aLoc);
|
||||
|
@@ -317,6 +317,13 @@ Handle(IGESData_IGESEntity) BRepToIGESBRep_Entity::TransferShape(
|
||||
|
||||
Handle(IGESData_IGESEntity) BRepToIGESBRep_Entity::TransferEdge(const TopoDS_Edge& myedge)
|
||||
{
|
||||
Standard_Integer anInd = IndexEdge(myedge);
|
||||
if (anInd != 0)
|
||||
{
|
||||
Handle(IGESData_IGESEntity) ICurve3d = Handle(IGESData_IGESEntity)::DownCast(myCurves(anInd));
|
||||
if (!ICurve3d.IsNull())
|
||||
return ICurve3d;
|
||||
}
|
||||
BRepToIGES_BRWire BR(*this);
|
||||
BR.SetModel(GetModel());
|
||||
TopTools_DataMapOfShapeShape anEmptyMap;
|
||||
|
@@ -508,24 +508,25 @@ Standard_Boolean BRepTools_NurbsConvertModification::NewPolygon(const TopoDS_Edg
|
||||
return Standard_False;
|
||||
}
|
||||
|
||||
// update parameters of polygon
|
||||
if (thePoly->HasParameters())
|
||||
if (!thePoly->HasParameters())
|
||||
{
|
||||
Standard_Real aTol = BRep_Tool::Tolerance(theEdge);
|
||||
Standard_Real aFirst, aLast;
|
||||
Handle(Geom_Curve) aCurve = BRep_Tool::Curve(theEdge, aFirst, aLast);
|
||||
Handle(Geom_Curve) aNewCurve = newCurve(myMap, theEdge, aFirst, aLast);
|
||||
if (aCurve.IsNull() || aNewCurve.IsNull()) // skip processing degenerated edges
|
||||
{
|
||||
return Standard_False;
|
||||
}
|
||||
TColStd_Array1OfReal& aParams = thePoly->ChangeParameters();
|
||||
for (Standard_Integer anInd = aParams.Lower(); anInd <= aParams.Upper(); ++anInd)
|
||||
{
|
||||
Standard_Real& aParam = aParams(anInd);
|
||||
gp_Pnt aPoint = aCurve->Value(aParam);
|
||||
newParameter(aPoint, aNewCurve, aFirst, aLast, aTol, aParam);
|
||||
}
|
||||
return Standard_False;
|
||||
}
|
||||
// update parameters of polygon
|
||||
Standard_Real aTol = BRep_Tool::Tolerance(theEdge);
|
||||
Standard_Real aFirst, aLast;
|
||||
Handle(Geom_Curve) aCurve = BRep_Tool::Curve(theEdge, aFirst, aLast);
|
||||
Handle(Geom_Curve) aNewCurve = newCurve(myMap, theEdge, aFirst, aLast);
|
||||
if (aCurve.IsNull() || aNewCurve.IsNull()) // skip processing degenerated edges
|
||||
{
|
||||
return Standard_False;
|
||||
}
|
||||
TColStd_Array1OfReal& aParams = thePoly->ChangeParameters();
|
||||
for (Standard_Integer anInd = aParams.Lower(); anInd <= aParams.Upper(); ++anInd)
|
||||
{
|
||||
Standard_Real& aParam = aParams(anInd);
|
||||
gp_Pnt aPoint = aCurve->Value(aParam);
|
||||
newParameter(aPoint, aNewCurve, aFirst, aLast, aTol, aParam);
|
||||
}
|
||||
return Standard_True;
|
||||
}
|
||||
|
@@ -280,10 +280,6 @@ Standard_Boolean BRepTools_TrsfModification::NewCurve(const TopoDS_Edge& E,
|
||||
{
|
||||
Standard_Real f, l;
|
||||
C = BRep_Tool::Curve(E, L, f, l);
|
||||
if (C.IsNull())
|
||||
{
|
||||
return Standard_False;
|
||||
}
|
||||
|
||||
Tol = BRep_Tool::Tolerance(E);
|
||||
Tol *= Abs(myTrsf.ScaleFactor());
|
||||
|
@@ -89,13 +89,10 @@ public:
|
||||
Handle(Poly_PolygonOnTriangulation)& P)
|
||||
Standard_OVERRIDE;
|
||||
|
||||
//! Returns true if the edge E has been modified.
|
||||
//! If the edge has been modified:
|
||||
//! Always returns true indicating that the edge E is always modified.
|
||||
//! - C is the new geometric support of the edge,
|
||||
//! - L is the new location, and
|
||||
//! - Tol is the new tolerance.
|
||||
//! If the edge has not been modified, this function
|
||||
//! returns false, and the values of C, L and Tol are not significant.
|
||||
Standard_EXPORT Standard_Boolean NewCurve(const TopoDS_Edge& E,
|
||||
Handle(Geom_Curve)& C,
|
||||
TopLoc_Location& L,
|
||||
|
@@ -216,8 +216,33 @@ void BndLib_Add3dCurve::Add(const Adaptor3d_Curve& C,
|
||||
// modified by NIZHNY-EAP Fri Dec 3 14:29:18 1999 ___END___
|
||||
}
|
||||
Standard_Real aSegmentTol = 2. * Precision::PConfusion();
|
||||
if (Abs(u2 - u1) < aSegmentTol)
|
||||
|
||||
// For periodic curves, check if parameters are close in either direction
|
||||
if (Bsaux->IsPeriodic())
|
||||
{
|
||||
const Standard_Real aPeriod = Bsaux->LastParameter() - Bsaux->FirstParameter();
|
||||
|
||||
// Check direct distance between parameters
|
||||
const Standard_Real aDirectDiff = Abs(u2 - u1);
|
||||
|
||||
// Check distances across period boundary (in both directions)
|
||||
const Standard_Real aCrossPeriodDiff1 = Abs(u2 - aPeriod - u1);
|
||||
const Standard_Real aCrossPeriodDiff2 = Abs(u1 - aPeriod - u2);
|
||||
|
||||
// Find the minimum difference (closest approach)
|
||||
const Standard_Real aMinDiff =
|
||||
Min(aDirectDiff, Min(aCrossPeriodDiff1, aCrossPeriodDiff2));
|
||||
|
||||
if (aMinDiff < aSegmentTol)
|
||||
{
|
||||
aSegmentTol = aMinDiff * 0.01;
|
||||
}
|
||||
}
|
||||
// For non-periodic curves, just check direct parameter difference
|
||||
else if (Abs(u2 - u1) < aSegmentTol)
|
||||
{
|
||||
aSegmentTol = Abs(u2 - u1) * 0.01;
|
||||
}
|
||||
Bsaux->Segment(u1, u2, aSegmentTol);
|
||||
Bs = Bsaux;
|
||||
}
|
||||
|
@@ -1097,22 +1097,23 @@ static void ChFi3d_BuildPlane(TopOpeBRepDS_DataStructure& DStr,
|
||||
const Standard_Boolean isfirst,
|
||||
const Standard_Integer ons)
|
||||
{
|
||||
Handle(Geom2d_Curve) Hc;
|
||||
TopoDS_Face F = TopoDS::Face(DStr.Shape(SD->Index(ons)));
|
||||
Standard_Real u, v;
|
||||
gp_Pnt P;
|
||||
// gp_Vec V1,V2;
|
||||
const TopoDS_Face F = TopoDS::Face(DStr.Shape(SD->Index(ons)));
|
||||
if (F.IsNull())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (SD->Vertex(isfirst, ons).IsOnArc())
|
||||
{
|
||||
Hc = BRep_Tool::CurveOnSurface(SD->Vertex(isfirst, ons).Arc(), F, u, v);
|
||||
Standard_Real u, v;
|
||||
const Handle(Geom2d_Curve) Hc =
|
||||
BRep_Tool::CurveOnSurface(SD->Vertex(isfirst, ons).Arc(), F, u, v);
|
||||
Hc->Value(SD->Vertex(isfirst, ons).ParameterOnArc()).Coord(u, v);
|
||||
BRepLProp_SLProps theProp(*HS, u, v, 1, 1.e-12);
|
||||
if (theProp.IsNormalDefined())
|
||||
{
|
||||
P = theProp.Value();
|
||||
Handle(Geom_Plane) Pln = new Geom_Plane(P, theProp.Normal());
|
||||
TopoDS_Face NewF = BRepLib_MakeFace(Pln, Precision::Confusion());
|
||||
const Handle(Geom_Plane) Pln = new Geom_Plane(theProp.Value(), theProp.Normal());
|
||||
TopoDS_Face NewF = BRepLib_MakeFace(Pln, Precision::Confusion());
|
||||
NewF.Orientation(F.Orientation());
|
||||
pons.SetCoord(0., 0.);
|
||||
HS->Initialize(NewF);
|
||||
|
@@ -8,6 +8,5 @@ DE_Provider.hxx
|
||||
DE_ShapeFixConfigurationNode.cxx
|
||||
DE_ShapeFixConfigurationNode.hxx
|
||||
DE_ShapeFixParameters.hxx
|
||||
DE_ShapeFixParameters.cxx
|
||||
DE_Wrapper.cxx
|
||||
DE_Wrapper.hxx
|
||||
|
@@ -62,7 +62,7 @@ bool DEGLTF_ConfigurationNode::Load(const Handle(DE_ConfigurationContext)& theRe
|
||||
% 2);
|
||||
InternalParameters.FileCS =
|
||||
(RWMesh_CoordinateSystem)(theResource->IntegerVal("file.cs",
|
||||
(int)InternalParameters.SystemCS,
|
||||
(int)InternalParameters.FileCS,
|
||||
aScope)
|
||||
% 2);
|
||||
|
||||
|
@@ -61,7 +61,7 @@ bool DEOBJ_ConfigurationNode::Load(const Handle(DE_ConfigurationContext)& theRes
|
||||
% 2);
|
||||
InternalParameters.FileCS =
|
||||
(RWMesh_CoordinateSystem)(theResource->IntegerVal("file.cs",
|
||||
(int)InternalParameters.SystemCS,
|
||||
(int)InternalParameters.FileCS,
|
||||
aScope)
|
||||
% 2);
|
||||
|
||||
|
@@ -62,7 +62,7 @@ bool DEPLY_ConfigurationNode::Load(const Handle(DE_ConfigurationContext)& theRes
|
||||
% 2);
|
||||
InternalParameters.FileCS =
|
||||
(RWMesh_CoordinateSystem)(theResource->IntegerVal("file.cs",
|
||||
(int)InternalParameters.SystemCS,
|
||||
(int)InternalParameters.FileCS,
|
||||
aScope)
|
||||
% 2);
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
exptocas.lex
|
||||
expltocas.yacc
|
||||
exptocas.yacc
|
||||
lex.exptocas.cxx
|
||||
exptocas.tab.hxx
|
||||
exptocas.tab.cxx
|
||||
|
@@ -34,8 +34,8 @@
|
||||
//=======================================================================
|
||||
// function : Arrange
|
||||
// purpose : Internal Use Only
|
||||
// This function is used to prepare the Filling: The Curves
|
||||
// are arranged in this way:
|
||||
// This function is used to prepare the Filling: The Curves
|
||||
// are arranged in this way:
|
||||
// CC3
|
||||
// ----->-----
|
||||
// | |
|
||||
@@ -46,6 +46,10 @@
|
||||
// | |
|
||||
// ----->-----
|
||||
// CC1 = C1
|
||||
//
|
||||
// In case a curve CCx is degenerated to start and end at
|
||||
// the same point, it is inserted before the curvature leaves
|
||||
// the point.
|
||||
//=======================================================================
|
||||
static Standard_Boolean Arrange(const Handle(Geom_BSplineCurve)& C1,
|
||||
const Handle(Geom_BSplineCurve)& C2,
|
||||
@@ -70,26 +74,51 @@ static Standard_Boolean Arrange(const Handle(Geom_BSplineCurve)& C1,
|
||||
for (i = 1; i <= 3; i++)
|
||||
{
|
||||
Trouve = Standard_False;
|
||||
|
||||
// search for a degenerated curve = point, which would match first
|
||||
for (j = i; j <= 3 && !Trouve; j++)
|
||||
{
|
||||
if (GC[j]->StartPoint().Distance(GC[i - 1]->EndPoint()) < Tol)
|
||||
if (GC[j]->StartPoint().Distance(GC[j]->EndPoint()) < Tol)
|
||||
{
|
||||
Dummy = GC[i];
|
||||
GC[i] = GC[j];
|
||||
GC[j] = Dummy;
|
||||
Trouve = Standard_True;
|
||||
}
|
||||
else if (GC[j]->EndPoint().Distance(GC[i - 1]->EndPoint()) < Tol)
|
||||
{
|
||||
GC[j] = Handle(Geom_BSplineCurve)::DownCast(GC[j]->Reversed());
|
||||
Dummy = GC[i];
|
||||
GC[i] = GC[j];
|
||||
GC[j] = Dummy;
|
||||
Trouve = Standard_True;
|
||||
// this is a degenerated line, does it match the last endpoint?
|
||||
if (GC[j]->StartPoint().Distance(GC[i - 1]->EndPoint()) < Tol)
|
||||
{
|
||||
Dummy = GC[i];
|
||||
GC[i] = GC[j];
|
||||
GC[j] = Dummy;
|
||||
Trouve = Standard_True;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// if no degenerated curve matched, try an ordinary one as next curve
|
||||
if (!Trouve)
|
||||
{
|
||||
for (j = i; j <= 3 && !Trouve; j++)
|
||||
{
|
||||
if (GC[j]->StartPoint().Distance(GC[i - 1]->EndPoint()) < Tol)
|
||||
{
|
||||
Dummy = GC[i];
|
||||
GC[i] = GC[j];
|
||||
GC[j] = Dummy;
|
||||
Trouve = Standard_True;
|
||||
}
|
||||
else if (GC[j]->EndPoint().Distance(GC[i - 1]->EndPoint()) < Tol)
|
||||
{
|
||||
GC[j] = Handle(Geom_BSplineCurve)::DownCast(GC[j]->Reversed());
|
||||
Dummy = GC[i];
|
||||
GC[i] = GC[j];
|
||||
GC[j] = Dummy;
|
||||
Trouve = Standard_True;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// if still non matched -> error, the algorithm cannot finish
|
||||
if (!Trouve)
|
||||
{
|
||||
return Standard_False;
|
||||
}
|
||||
}
|
||||
|
||||
CC1 = GC[0];
|
||||
|
@@ -139,8 +139,13 @@ TCollection_AsciiString OSD_Host::InternetAddress()
|
||||
char buffer[16];
|
||||
TCollection_AsciiString result, host;
|
||||
|
||||
host = HostName();
|
||||
memcpy(&internet_address, gethostbyname(host.ToCString()), sizeof(struct hostent));
|
||||
host = HostName();
|
||||
const auto* aHostByName = gethostbyname(host.ToCString());
|
||||
if (aHostByName == nullptr)
|
||||
{
|
||||
aHostByName = gethostbyname("localhost");
|
||||
}
|
||||
memcpy(&internet_address, aHostByName, sizeof(struct hostent));
|
||||
|
||||
// Gets each bytes into integers
|
||||
a = (unsigned char)internet_address.h_addr_list[0][0];
|
||||
|
@@ -165,18 +165,23 @@ void OSD_MemInfo::Update()
|
||||
#elif (defined(__linux__) || defined(__linux))
|
||||
if (IsActive(MemHeapUsage))
|
||||
{
|
||||
#if defined(__GLIBC__) && defined(__GLIBC_PREREQ)
|
||||
#if __GLIBC_PREREQ(2, 33)
|
||||
#if defined(__GLIBC__)
|
||||
#define HAS_MALLINFO
|
||||
#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 33)
|
||||
#define HAS_MALLINFO2
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef HAS_MALLINFO2
|
||||
#ifdef HAS_MALLINFO
|
||||
#ifdef HAS_MALLINFO2
|
||||
const struct mallinfo2 aMI = mallinfo2();
|
||||
#else
|
||||
#else
|
||||
const struct mallinfo aMI = mallinfo();
|
||||
#endif
|
||||
#endif
|
||||
myCounters[MemHeapUsage] = aMI.uordblks;
|
||||
#else
|
||||
myCounters[MemHeapUsage] = 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
if (!IsActive(MemVirtual) && !IsActive(MemWorkingSet) && !IsActive(MemWorkingSetPeak)
|
||||
|
@@ -769,7 +769,7 @@ typedef void (*SIG_PFV)(int);
|
||||
|
||||
#include <signal.h>
|
||||
|
||||
#if !defined(__ANDROID__) && !defined(__QNX__) && !defined(__EMSCRIPTEN__)
|
||||
#if !defined(__ANDROID__) && !defined(__QNX__) && !defined(__EMSCRIPTEN__) && defined(__GLIBC__)
|
||||
#include <sys/signal.h>
|
||||
#endif
|
||||
|
||||
@@ -994,7 +994,7 @@ static void SegvHandler(const int theSignal,
|
||||
|
||||
void OSD::SetFloatingSignal(Standard_Boolean theFloatingSignal)
|
||||
{
|
||||
#if defined(__linux__)
|
||||
#if defined(__linux__) && defined(__GLIBC__)
|
||||
feclearexcept(FE_ALL_EXCEPT);
|
||||
if (theFloatingSignal)
|
||||
{
|
||||
@@ -1025,7 +1025,7 @@ void OSD::SetFloatingSignal(Standard_Boolean theFloatingSignal)
|
||||
|
||||
Standard_Boolean OSD::ToCatchFloatingSignals()
|
||||
{
|
||||
#if defined(__linux__)
|
||||
#if defined(__linux__) && defined(__GLIBC__)
|
||||
return (fegetexcept() & _OSD_FPX) != 0;
|
||||
#else
|
||||
return Standard_False;
|
||||
|
@@ -3286,20 +3286,11 @@ Standard_Boolean STEPCAFControl_Reader::readDatumsAP242(const Handle(Standard_Tr
|
||||
if (theGDTL.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aTol))
|
||||
{
|
||||
Handle(XCAFDimTolObjects_GeomToleranceObject) anObj = aTol->GetObject();
|
||||
Handle(TColStd_HArray1OfReal) aDirArr = anAx->Axis()->DirectionRatios();
|
||||
Handle(TColStd_HArray1OfReal) aDirRArr = anAx->RefDirection()->DirectionRatios();
|
||||
Handle(TColStd_HArray1OfReal) aLocArr = anAx->Location()->Coordinates();
|
||||
gp_Dir aDir;
|
||||
gp_Dir aDirR;
|
||||
gp_Pnt aPnt;
|
||||
if (!aDirArr.IsNull() && aDirArr->Length() > 2 && !aDirRArr.IsNull()
|
||||
&& aDirRArr->Length() > 2 && !aLocArr.IsNull() && aLocArr->Length() > 2)
|
||||
const Handle(Geom_Axis2Placement) aGeomAx2 =
|
||||
StepToGeom::MakeAxis2Placement(anAx, theLocalFactors);
|
||||
if (!aGeomAx2.IsNull())
|
||||
{
|
||||
aDir.SetCoord(aDirArr->Lower(), aDirArr->Lower() + 1, aDirArr->Lower() + 2);
|
||||
aDirR.SetCoord(aDirRArr->Lower(), aDirRArr->Lower() + 1, aDirRArr->Lower() + 2);
|
||||
aPnt.SetCoord(aLocArr->Lower(), aLocArr->Lower() + 1, aLocArr->Lower() + 2);
|
||||
gp_Ax2 anA(aPnt, aDir, aDirR);
|
||||
anObj->SetAxis(anA);
|
||||
anObj->SetAxis(aGeomAx2->Ax2());
|
||||
aTol->SetObject(anObj);
|
||||
}
|
||||
}
|
||||
|
@@ -435,9 +435,17 @@ static Standard_Boolean FindCoordBounds(const TopTools_SequenceOfShape&
|
||||
theNumberOfIntervals = aPairSeq.Length();
|
||||
|
||||
if (aPairSeq.Length() == 2)
|
||||
{
|
||||
theMinCoord = aPairSeq(2).first - thePeriod;
|
||||
else
|
||||
}
|
||||
else if (aPairSeq.Length() > 0)
|
||||
{
|
||||
theMinCoord = aPairSeq(1).first;
|
||||
}
|
||||
else
|
||||
{
|
||||
return Standard_False;
|
||||
}
|
||||
|
||||
theMaxCoord = aPairSeq(1).second;
|
||||
return Standard_True;
|
||||
@@ -1225,6 +1233,13 @@ static Standard_Boolean getCylinder(Handle(Geom_Surface)& theInSurface, gp_Cylin
|
||||
{
|
||||
Handle(Geom_SurfaceOfRevolution) aRS = Handle(Geom_SurfaceOfRevolution)::DownCast(theInSurface);
|
||||
Handle(Geom_Curve) aBasis = aRS->BasisCurve();
|
||||
|
||||
while (aBasis->IsKind(STANDARD_TYPE(Geom_TrimmedCurve)))
|
||||
{
|
||||
Handle(Geom_TrimmedCurve) aTc = Handle(Geom_TrimmedCurve)::DownCast(aBasis);
|
||||
aBasis = aTc->BasisCurve();
|
||||
}
|
||||
|
||||
if (aBasis->IsKind(STANDARD_TYPE(Geom_Line)))
|
||||
{
|
||||
Handle(Geom_Line) aBasisLine = Handle(Geom_Line)::DownCast(aBasis);
|
||||
@@ -1247,6 +1262,13 @@ static Standard_Boolean getCylinder(Handle(Geom_Surface)& theInSurface, gp_Cylin
|
||||
Handle(Geom_SurfaceOfLinearExtrusion) aLES =
|
||||
Handle(Geom_SurfaceOfLinearExtrusion)::DownCast(theInSurface);
|
||||
Handle(Geom_Curve) aBasis = aLES->BasisCurve();
|
||||
|
||||
while (aBasis->IsKind(STANDARD_TYPE(Geom_TrimmedCurve)))
|
||||
{
|
||||
Handle(Geom_TrimmedCurve) aTc = Handle(Geom_TrimmedCurve)::DownCast(aBasis);
|
||||
aBasis = aTc->BasisCurve();
|
||||
}
|
||||
|
||||
if (aBasis->IsKind(STANDARD_TYPE(Geom_Circle)))
|
||||
{
|
||||
Handle(Geom_Circle) aBasisCircle = Handle(Geom_Circle)::DownCast(aBasis);
|
||||
|
@@ -24,7 +24,7 @@ static Standard_CString schemaAP214DIS = "AUTOMOTIVE_DESIGN { 1 2 10303 214 0 1
|
||||
static Standard_CString schemaAP214IS = "AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }";
|
||||
static Standard_CString schemaAP203 = "CONFIG_CONTROL_DESIGN";
|
||||
static Standard_CString schemaAP242DIS =
|
||||
"AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF. {1 0 10303 442 1 1 4 }";
|
||||
"AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF {1 0 10303 442 1 1 4 }";
|
||||
|
||||
#include <HeaderSection_Protocol.hxx>
|
||||
#include <StepData_StepModel.hxx>
|
||||
|
@@ -33,6 +33,7 @@
|
||||
#include <StepData_SelectReal.hxx>
|
||||
#include <StepData_SelectType.hxx>
|
||||
#include <StepData_StepReaderData.hxx>
|
||||
#include <NCollection_IncAllocator.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
#include <TCollection_ExtendedString.hxx>
|
||||
#include <NCollection_UtfIterator.hxx>
|
||||
@@ -387,28 +388,11 @@ void StepData_StepReaderData::SetRecord(const Standard_Integer num,
|
||||
const Standard_Integer /* nbpar */)
|
||||
{
|
||||
Standard_Integer numlst;
|
||||
/*
|
||||
if (strcmp(type,"/ * (SUB) * /") == 0) { // defini dans recfile.pc
|
||||
thetypes.SetValue (num,sublist);
|
||||
} else {
|
||||
thenbents ++; // total de termes propres du fichier
|
||||
thetypes.SetValue(num,TCollection_AsciiString(type));
|
||||
// if (strcmp(ident,"SCOPE") != 0) thenbscop ++; // ?? a verifier
|
||||
}
|
||||
*/
|
||||
|
||||
if (type[0] != '(')
|
||||
thenbents++; // total de termes propres du fichier
|
||||
|
||||
// thetypes.ChangeValue(num).SetValue(1,type); gka memory
|
||||
//============================================
|
||||
Standard_Integer index = 0;
|
||||
TCollection_AsciiString strtype(type);
|
||||
if (thenametypes.Contains(type))
|
||||
index = thenametypes.FindIndex(strtype);
|
||||
else
|
||||
index = thenametypes.Add(strtype);
|
||||
thetypes.ChangeValue(num) = index;
|
||||
//===========================================
|
||||
thetypes.ChangeValue(num) = thenametypes.Add(TCollection_AsciiString(type));
|
||||
|
||||
if (ident[0] == '$')
|
||||
{
|
||||
@@ -1998,12 +1982,14 @@ void StepData_StepReaderData::SetEntityNumbers(const Standard_Boolean withmap)
|
||||
// Passe initiale : Resolution directe par Map
|
||||
// si tout passe (pas de collision), OK. Sinon, autres passes a prevoir
|
||||
// On resoud du meme coup les sous-listes
|
||||
Standard_Integer nbdirec = NbRecords();
|
||||
Standard_Integer nbdirec = NbRecords();
|
||||
Handle(NCollection_IncAllocator) anAlloc =
|
||||
new NCollection_IncAllocator(NCollection_IncAllocator::THE_MINIMUM_BLOCK_SIZE);
|
||||
TColStd_Array1OfInteger subn(0, thelastn);
|
||||
|
||||
Standard_Boolean pbmap = Standard_False; // au moins un conflit
|
||||
Standard_Integer nbmap = 0;
|
||||
TColStd_IndexedMapOfInteger imap(thenbents);
|
||||
TColStd_IndexedMapOfInteger imap(thenbents, anAlloc);
|
||||
TColStd_Array1OfInteger indm(0, nbdirec); // Index Map -> Record Number (seulement si map)
|
||||
|
||||
Standard_Integer num; // svv Jan11 2000 : porting on DEC
|
||||
@@ -2099,10 +2085,11 @@ void StepData_StepReaderData::SetEntityNumbers(const Standard_Boolean withmap)
|
||||
Handle(TColStd_HArray1OfInteger) indx; // pour EXPORT (silya)
|
||||
|
||||
imap.Clear();
|
||||
anAlloc->Reset();
|
||||
Standard_Boolean iamap = withmap; // (par defaut True)
|
||||
nbmap = 0;
|
||||
|
||||
TColStd_SequenceOfInteger scopile; // chainage des scopes note par pile
|
||||
TColStd_SequenceOfInteger scopile(anAlloc); // chainage des scopes note par pile
|
||||
Standard_Integer nr = 0;
|
||||
for (num = 1; num <= nbdirec; num++)
|
||||
{
|
||||
|
@@ -3,4 +3,4 @@ project(TKBRep)
|
||||
OCCT_INCLUDE_CMAKE_FILE (adm/cmake/occt_toolkit)
|
||||
|
||||
# Add the precompiled header
|
||||
ADD_PRECOMPILED_HEADER(TKBRep "${CMAKE_CURRENT_SOURCE_DIR}/TKBRep_pch.hxx" FALSE)
|
||||
ADD_PRECOMPILED_HEADER(TKBRep "TKBRep_pch.hxx" FALSE)
|
||||
|
@@ -1,2 +1,3 @@
|
||||
EXTERNLIB
|
||||
PACKAGES
|
||||
TKBRep_pch.hxx
|
||||
|
@@ -3,4 +3,4 @@ project(TKDEIGES)
|
||||
OCCT_INCLUDE_CMAKE_FILE (adm/cmake/occt_toolkit)
|
||||
|
||||
# Add the precompiled header
|
||||
ADD_PRECOMPILED_HEADER(TKDEIGES "${CMAKE_CURRENT_SOURCE_DIR}/TKDEIGES_pch.hxx" TRUE)
|
||||
ADD_PRECOMPILED_HEADER(TKDEIGES "TKDEIGES_pch.hxx" TRUE)
|
||||
|
@@ -1,2 +1,3 @@
|
||||
EXTERNLIB
|
||||
PACKAGES
|
||||
TKDEIGES_pch.hxx
|
||||
|
@@ -3,6 +3,6 @@ project(TKDESTEP)
|
||||
OCCT_INCLUDE_CMAKE_FILE (adm/cmake/occt_toolkit)
|
||||
|
||||
# Add the precompiled header
|
||||
ADD_PRECOMPILED_HEADER(TKDESTEP "${CMAKE_CURRENT_SOURCE_DIR}/TKDESTEP_pch.hxx" TRUE)
|
||||
ADD_PRECOMPILED_HEADER(TKDESTEP "TKDESTEP_pch.hxx" TRUE)
|
||||
|
||||
FLEX_AND_BISON_TARGET_APPLY ("StepFile" src)
|
||||
|
@@ -1,2 +1,3 @@
|
||||
EXTERNLIB
|
||||
PACKAGES
|
||||
TKDESTEP_pch.hxx
|
||||
|
@@ -3,4 +3,4 @@ project(TKMath)
|
||||
OCCT_INCLUDE_CMAKE_FILE (adm/cmake/occt_toolkit)
|
||||
|
||||
# Add the precompiled header
|
||||
ADD_PRECOMPILED_HEADER(TKMath "${CMAKE_CURRENT_SOURCE_DIR}/TKMath_pch.hxx" FALSE)
|
||||
ADD_PRECOMPILED_HEADER(TKMath "TKMath_pch.hxx" FALSE)
|
||||
|
@@ -1,2 +1,3 @@
|
||||
EXTERNLIB
|
||||
PACKAGES
|
||||
TKMath_pch.hxx
|
||||
|
@@ -3,4 +3,4 @@ project(TKMesh)
|
||||
OCCT_INCLUDE_CMAKE_FILE (adm/cmake/occt_toolkit)
|
||||
|
||||
# Add the precompiled header
|
||||
ADD_PRECOMPILED_HEADER(TKMesh "${CMAKE_CURRENT_SOURCE_DIR}/TKMesh_pch.hxx" TRUE)
|
||||
ADD_PRECOMPILED_HEADER(TKMesh "TKMesh_pch.hxx" TRUE)
|
||||
|
@@ -1,2 +1,3 @@
|
||||
EXTERNLIB
|
||||
PACKAGES
|
||||
TKMesh_pch.hxx
|
||||
|
@@ -3,4 +3,4 @@ project(TKV3d)
|
||||
OCCT_INCLUDE_CMAKE_FILE (adm/cmake/occt_toolkit)
|
||||
|
||||
# Add the precompiled header
|
||||
ADD_PRECOMPILED_HEADER(TKV3d "${CMAKE_CURRENT_SOURCE_DIR}/TKV3d_pch.hxx" TRUE)
|
||||
ADD_PRECOMPILED_HEADER(TKV3d "TKV3d_pch.hxx" TRUE)
|
||||
|
@@ -1,2 +1,3 @@
|
||||
EXTERNLIB
|
||||
PACKAGES
|
||||
TKV3d_pch.hxx
|
||||
|
@@ -3,4 +3,4 @@ project(TKXSBase)
|
||||
OCCT_INCLUDE_CMAKE_FILE (adm/cmake/occt_toolkit)
|
||||
|
||||
# Add the precompiled header
|
||||
ADD_PRECOMPILED_HEADER(TKXSBase "${CMAKE_CURRENT_SOURCE_DIR}/TKXSBase_pch.hxx" TRUE)
|
||||
ADD_PRECOMPILED_HEADER(TKXSBase "TKXSBase_pch.hxx" TRUE)
|
||||
|
@@ -1,2 +1,3 @@
|
||||
EXTERNLIB
|
||||
PACKAGES
|
||||
TKXSBase_pch.hxx
|
||||
|
@@ -14,4 +14,4 @@ else ()
|
||||
endif()
|
||||
|
||||
# Add the precompiled header
|
||||
ADD_PRECOMPILED_HEADER(TKernel "${CMAKE_CURRENT_SOURCE_DIR}/TKernel_pch.hxx" FALSE)
|
||||
ADD_PRECOMPILED_HEADER(TKernel "TKernel_pch.hxx" FALSE)
|
||||
|
@@ -1,2 +1,3 @@
|
||||
EXTERNLIB
|
||||
PACKAGES
|
||||
TKernel_pch.hxx
|
||||
|
@@ -1,9 +1,4 @@
|
||||
TopClass.cxx
|
||||
TopClass_Classifier2d.gxx
|
||||
TopClass_Classifier2d.lxx
|
||||
TopClass_Classifier3d.gxx
|
||||
TopClass_Classifier3d.lxx
|
||||
TopClass_FaceClassifier.gxx
|
||||
TopClass_FaceClassifier.lxx
|
||||
TopClass_SolidExplorer.cxx
|
||||
TopClass_SolidExplorer.hxx
|
||||
|
@@ -127,19 +127,30 @@ void XCAFDoc_AssemblyGraph::buildGraph(const TDF_Label& theLabel)
|
||||
{
|
||||
TDF_Label aLabel = it.Value();
|
||||
|
||||
TDF_Label anOriginal;
|
||||
TDF_Label anOriginal;
|
||||
Standard_Integer aRootId, anIdToProceed;
|
||||
if (!myShapeTool->GetReferredShape(aLabel, anOriginal))
|
||||
anOriginal = aLabel;
|
||||
{
|
||||
anOriginal = aLabel;
|
||||
aRootId = addNode(anOriginal, 0);
|
||||
anIdToProceed = aRootId;
|
||||
}
|
||||
else
|
||||
{
|
||||
aRootId = addNode(aLabel, 0);
|
||||
if (aRootId == 0)
|
||||
continue;
|
||||
anIdToProceed = addNode(anOriginal, aRootId);
|
||||
}
|
||||
|
||||
const Standard_Integer aRootId = addNode(anOriginal, 0);
|
||||
if (aRootId == 0)
|
||||
if (aRootId == 0 || anIdToProceed == 0)
|
||||
continue;
|
||||
|
||||
myRoots.Add(aRootId);
|
||||
|
||||
// Add components (the objects nested into the current one).
|
||||
if (myShapeTool->IsAssembly(anOriginal))
|
||||
addComponents(anOriginal, aRootId);
|
||||
addComponents(anOriginal, anIdToProceed);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -208,7 +219,7 @@ Standard_Integer XCAFDoc_AssemblyGraph::addNode(const TDF_Label& theLabel,
|
||||
else
|
||||
aNodeType = NodeType_Subassembly;
|
||||
}
|
||||
else if (myShapeTool->IsComponent(theLabel))
|
||||
else if (myShapeTool->IsReference(theLabel))
|
||||
{
|
||||
aNodeType = NodeType_Occurrence;
|
||||
}
|
||||
|
16
tests/bugs/modalg_8/bug33328_1
Normal file
16
tests/bugs/modalg_8/bug33328_1
Normal file
@@ -0,0 +1,16 @@
|
||||
puts "================================"
|
||||
puts "0033328: Modeling Algorithms - UnifySameDomain improvement"
|
||||
puts "================================"
|
||||
puts ""
|
||||
|
||||
restore [locate_data_file bug33328_Shell_1.brep] shell
|
||||
|
||||
numshapes shell
|
||||
|
||||
checknbshapes shell -vertex 6 -edge 7 -wire 2 -face 2 -shell 1 -solid 0
|
||||
|
||||
unifysamedom res shell
|
||||
|
||||
#Warning: BRepTools_ReShape::Replace: shape already recorded
|
||||
|
||||
checknbshapes res -vertex 4 -edge 4 -wire 1 -face 1 -shell 1 -solid 0
|
16
tests/bugs/modalg_8/bug33328_2
Normal file
16
tests/bugs/modalg_8/bug33328_2
Normal file
@@ -0,0 +1,16 @@
|
||||
puts "================================"
|
||||
puts "0033328: Modeling Algorithms - UnifySameDomain improvement"
|
||||
puts "================================"
|
||||
puts ""
|
||||
|
||||
restore [locate_data_file bug33328_Shell_2.brep] shell
|
||||
|
||||
numshapes shell
|
||||
|
||||
checknbshapes shell -vertex 6 -edge 7 -wire 2 -face 2 -shell 1 -solid 0
|
||||
|
||||
unifysamedom res shell
|
||||
|
||||
#Warning: BRepTools_ReShape::Replace: shape already recorded
|
||||
|
||||
checknbshapes res -vertex 4 -edge 4 -wire 1 -face 1 -shell 1 -solid 0
|
18
tests/bugs/modalg_8/bug33591
Normal file
18
tests/bugs/modalg_8/bug33591
Normal file
@@ -0,0 +1,18 @@
|
||||
puts "========================"
|
||||
puts "0033591: Modeling Algorithms - Regression: old surface is not removed after translation or rotation with geometry copying"
|
||||
puts "========================"
|
||||
puts ""
|
||||
|
||||
pload MODELING
|
||||
psphere Sphere_1 80
|
||||
trotate Sphere_1 0 0 0 0 1 0 90 -copy
|
||||
ttranslate Sphere_1 0 0 200 -copy
|
||||
|
||||
catch {dump Sphere_1} dumpOutput
|
||||
if {[regexp {Dump of ([0-9]+) surfaces} $dumpOutput match num]} {
|
||||
set numSurfaces $num
|
||||
}
|
||||
|
||||
if {$numSurfaces != 1} {
|
||||
puts "Error: The number of surfaces must be 1"
|
||||
}
|
10
tests/bugs/modalg_8/bug_gh466
Normal file
10
tests/bugs/modalg_8/bug_gh466
Normal file
@@ -0,0 +1,10 @@
|
||||
puts "========================================================================="
|
||||
puts "GH466: BRepBndLib::AddClose crashes"
|
||||
puts "========================================================================="
|
||||
puts ""
|
||||
|
||||
pload QAcommands
|
||||
|
||||
restore [locate_data_file bug_gh466.brep] result
|
||||
|
||||
OCC566 result
|
10
tests/bugs/modalg_8/bug_gh469
Normal file
10
tests/bugs/modalg_8/bug_gh469
Normal file
@@ -0,0 +1,10 @@
|
||||
puts "========================================================================="
|
||||
puts "GH469: Bounding box is void when using BRepBndLib::AddOptimal"
|
||||
puts "========================================================================="
|
||||
puts ""
|
||||
|
||||
pload QAcommands
|
||||
|
||||
restore [locate_data_file bug_gh469.brep] result
|
||||
|
||||
bounding result -optimal
|
96
tests/bugs/modalg_8/bug_gh501
Normal file
96
tests/bugs/modalg_8/bug_gh501
Normal file
@@ -0,0 +1,96 @@
|
||||
# This test case is to reproduce the crash during blend operation
|
||||
# Given a geometry with two curves and a "rim" at the end, performing
|
||||
# a fillet with a radius that is too large leads to a segfault.
|
||||
|
||||
dset tolerance 0.0001
|
||||
|
||||
# back edge
|
||||
dset xEdgeBackLeft -5
|
||||
vertex vEdgeBackRight 0 0 0
|
||||
vertex vEdgeBackLeft xEdgeBackLeft 0 0
|
||||
edge edgeBack vEdgeBackLeft vEdgeBackRight
|
||||
|
||||
# edge circle at the back
|
||||
dset radiusCircleBack 5.56
|
||||
dset angleCircleBackStart -0.755726
|
||||
dset xCircleBack xEdgeBackLeft-radiusCircleBack
|
||||
|
||||
circle circleBack xCircleBack 0 0 radiusCircleBack
|
||||
mkedge edgeCircleBack circleBack angleCircleBackStart 0
|
||||
settolerance edgeCircleBack tolerance
|
||||
|
||||
# edge circle at the front
|
||||
dset radiusCircleFrontBottom 8.95
|
||||
dset angleCircleFrontBottomStart 2.385867
|
||||
dset angleCircleFrontBottomEnd -2.163565
|
||||
dset yCircleFrontBottom -9.95121
|
||||
|
||||
circle circleFrontBottom 0 yCircleFrontBottom 0 radiusCircleFrontBottom
|
||||
mkedge edgeCircleFrontBottom circleFrontBottom angleCircleFrontBottomStart angleCircleFrontBottomEnd
|
||||
settolerance edgeCircleFrontBottom tolerance
|
||||
|
||||
# edge at the front and bottom
|
||||
dset yEdgeFrontBottom -17.374312
|
||||
dset xEdgeFrontBottomLeft xEdgeBackLeft
|
||||
vertex vEdgeFrontBottomLeft xEdgeFrontBottomLeft yEdgeFrontBottom 0
|
||||
vertex vEdgeFrontBottomRight 0 yEdgeFrontBottom 0
|
||||
edge edgeFrontBottom vEdgeFrontBottomLeft vEdgeFrontBottomRight
|
||||
|
||||
# edge at the right bottom
|
||||
edge edgeRightBottom vEdgeFrontBottomRight vEdgeBackRight
|
||||
|
||||
# the bottom wire
|
||||
wire wireBottom edgeBack edgeCircleBack edgeCircleFrontBottom edgeFrontBottom edgeRightBottom
|
||||
|
||||
# the bottom face
|
||||
mkplane planeBottom wireBottom
|
||||
|
||||
# the bottom solid
|
||||
dset heightBottom 10.0
|
||||
prism solidBottom planeBottom 0 0 heightBottom
|
||||
|
||||
# the top circle
|
||||
dset yCircleTop yCircleFrontBottom
|
||||
dset radiusCircleTop 8.57
|
||||
dset angleCircleTopStart pi/2
|
||||
dset angleCircleTop 2.618290
|
||||
dset angleYAxis pi-angleCircleTop
|
||||
dset angleCircleTopEnd angleCircleTopStart+angleCircleTop
|
||||
circle circleTop 0 yCircleTop heightBottom radiusCircleTop
|
||||
mkedge edgeCircleTop circleTop angleCircleTopStart angleCircleTopEnd
|
||||
settolerance edgeCircleTop tolerance
|
||||
|
||||
# edge at the front at the top
|
||||
dset yEdgeFrontTop yEdgeFrontBottom
|
||||
dset xEdgeFrontTopLeft 0-radiusCircleTop*sin(angleYAxis)
|
||||
vertex vEdgeFrontTopLeft xEdgeFrontTopLeft yEdgeFrontTop heightBottom
|
||||
vertex vEdgeFrontTopRight 0 yEdgeFrontTop heightBottom
|
||||
edge edgeFrontTop vEdgeFrontTopLeft vEdgeFrontTopRight
|
||||
settolerance edgeFrontTop tolerance
|
||||
|
||||
# edge at the right at the top
|
||||
dset yEdgeRightTopBack yCircleTop+radiusCircleTop
|
||||
dset yEdgeRightTopFront yEdgeFrontBottom
|
||||
vertex vEdgeRightTopBack 0 yEdgeRightTopBack heightBottom
|
||||
vertex vEdgeRightTopFront 0 yEdgeRightTopFront heightBottom
|
||||
edge edgeRightTop vEdgeRightTopBack vEdgeRightTopFront
|
||||
|
||||
# the top wire
|
||||
wire wireTop edgeCircleTop edgeFrontTop edgeRightTop
|
||||
|
||||
# the top face
|
||||
mkplane planeTop wireTop
|
||||
|
||||
# the top solid
|
||||
dset heightTop 10.0
|
||||
prism solidTop planeTop 0 0 heightTop
|
||||
|
||||
bop solidBottom solidTop
|
||||
bopfuse fuse
|
||||
explode fuse E
|
||||
|
||||
# Algorithm is expected to fail with a Tcl exception.
|
||||
puts "TODO ALL: Tcl Exception: tolerance ang"
|
||||
puts "TODO ALL: TEST INCOMPLETE"
|
||||
|
||||
blend b fuse 1 fuse_14
|
17
tests/bugs/xde/ar10850
Normal file
17
tests/bugs/xde/ar10850
Normal file
@@ -0,0 +1,17 @@
|
||||
puts "AR10850 - XCAFDoc_Editor::RescaleGeometry does not rescale translation of roots references"
|
||||
|
||||
pload OCAF
|
||||
Close D -silent
|
||||
XOpen [locate_data_file "ar10850_3D-EYE_chair_OCC_noscale.xbf"] D
|
||||
|
||||
XGetOneShape a D
|
||||
set ref_diag [eval distpp [bounding a]]
|
||||
|
||||
XRescaleGeometry D 0.001
|
||||
|
||||
XGetOneShape a D
|
||||
set diag [eval distpp [bounding a]]
|
||||
|
||||
checkreal "bounding box diagonal" $diag [expr $ref_diag * 0.001] 0 0.001
|
||||
|
||||
Close D
|
@@ -1,22 +0,0 @@
|
||||
puts "========"
|
||||
puts "278: Data Exchange, Fail to export to GLTF with draco buffer index out of bounds"
|
||||
puts "========"
|
||||
|
||||
vclear
|
||||
vclose ALL
|
||||
Close *
|
||||
|
||||
set aTmpGltf "${imagedir}/${casename}_tmp.glb"
|
||||
|
||||
ReadStep D [locate_data_file "bug31670_russian.stp"]
|
||||
XGetOneShape s D
|
||||
incmesh s 0.1
|
||||
|
||||
XNewDoc D
|
||||
XAddShape D s
|
||||
|
||||
WriteGltf D "$aTmpGltf" -draco -mergefaces
|
||||
|
||||
ReadGltf D1 "$aTmpGltf"
|
||||
XGetOneShape s1 D1
|
||||
checknbshapes s1 -face 11 -compound 10 -shape 21
|
13
tests/de_wrapper/configuration/A5
Normal file
13
tests/de_wrapper/configuration/A5
Normal file
@@ -0,0 +1,13 @@
|
||||
puts "============"
|
||||
puts "0032821: DEWrapper - Implementation of a common toolkit for importing and exporting CAD files"
|
||||
puts "============"
|
||||
puts ""
|
||||
|
||||
# Checking the stability of ability to change the configuration's values
|
||||
set old_conf [DumpConfiguration]
|
||||
|
||||
LoadConfiguration ""
|
||||
|
||||
set new_conf [DumpConfiguration]
|
||||
|
||||
CompareConfiguration ${old_conf} ${new_conf}
|
@@ -1,618 +1,13 @@
|
||||
# !!!! This file is generated automatically, do not edit manually! See end script
|
||||
set filename bug29525_rev_part_neu_01.prt_converted_from_datakit.stp
|
||||
set filename nist_ftc_08_asme1_ap242-2.stp
|
||||
|
||||
set ref_data {
|
||||
Property for [0:1:1:1]:
|
||||
PRO_MP_ALT_COGX : ->
|
||||
D_BASE_UNIT SOURCE : User-Defined
|
||||
PRO_MP_TRF_21 DESCRIPTION : NULL
|
||||
PRO_MP_IXY DESCRIPTION : NULL
|
||||
PRO_MP_VOLUME ACCESS : Locked
|
||||
XSEC_NAME DESCRIPTION : NULL
|
||||
MC_ERRORS DESCRIPTION : NULL
|
||||
I_CUSTOMER_PROJ ACCESS : Full
|
||||
PRO_MP_TRF_23 DESIGNATED : NO
|
||||
PRO_MP_COGY DESIGNATED : NO
|
||||
PRO_MP_COGY ACCESS : Locked
|
||||
GEWINDE_TIEFE : 16.320000
|
||||
PRO_MP_ALT_IYY ACCESS : Full
|
||||
PRO_MP_ALT_MASS SOURCE : Alternate Mass Prop
|
||||
PRO_MP_ALT_COGY DESCRIPTION : NULL
|
||||
D_DOC_CLASS DESCRIPTION : NULL
|
||||
MBD SOURCE : User-Defined
|
||||
PRO_MP_ALT_INERTIA_ORIGIN DESIGNATED : NO
|
||||
I_ECM DESCRIPTION : NULL
|
||||
D_DEPARTMENT DESIGNATED : YES
|
||||
I_3D_RELEASE DESCRIPTION : NULL
|
||||
I_APP_VERSION DESCRIPTION : NULL
|
||||
PRO_MP_ALT_INERTIA_ORIGIN : PRO_MP_ALT_CSYS
|
||||
PRO_MP_TRF_31 DESCRIPTION : NULL
|
||||
PRO_MP_AREA SOURCE : Mass Properties
|
||||
GEWINDE_DURCHM : 8.000000
|
||||
PDMREV DESIGNATED : NO
|
||||
D_LOGIN ACCESS : Full
|
||||
PRO_MP_ALT_IXY DESIGNATED : NO
|
||||
D_LOCATION SOURCE : User-Defined
|
||||
PRO_MP_ALT_VOLUME DESCRIPTION : NULL
|
||||
PDMREV DESCRIPTION : NULL
|
||||
MC_ERRORS : 0
|
||||
PRO_MP_TRF_13 DESCRIPTION : NULL
|
||||
PTC_WM_LIFECYCLE : CONTI_CAD_Lifecycle
|
||||
D_DOC_PART DESIGNATED : YES
|
||||
PRO_MP_MASS DESIGNATED : NO
|
||||
PRO_MP_COGY : ->
|
||||
PRO_MP_AREA DESCRIPTION : NULL
|
||||
PROI_REVISION ACCESS : Limited
|
||||
PRO_MP_DENSITY DESIGNATED : NO
|
||||
I_CUSTOMER_PROJ DESIGNATED : YES
|
||||
PTC_MODIFIED DESCRIPTION : NULL
|
||||
D_ECM_DESCRIPTION : -
|
||||
D_FORMAT : -
|
||||
PRO_MP_ALT_IZZ ACCESS : Full
|
||||
PRO_MP_IXX DESCRIPTION : NULL
|
||||
PROI_RELEASE ACCESS : Limited
|
||||
BOHR_DURCHM ACCESS : Locked
|
||||
PRO_MP_TRF_32 DESIGNATED : NO
|
||||
PTC_WM_MODIFIED_ON : 04-Oct-16 09:42:00 AM
|
||||
PTC_WM_VERSION ACCESS : Limited
|
||||
PRO_MP_IYZ DESIGNATED : NO
|
||||
PRO_MP_COGY SOURCE : Mass Properties
|
||||
PTC_WM_LOCATION ACCESS : Limited
|
||||
I_ADD_INFO ACCESS : Full
|
||||
PTC_WM_MODIFIED_BY : von Bernuth Constantin (uidu3660) (uidu3660: Engineering)
|
||||
PRO_MP_IZZ DESIGNATED : NO
|
||||
SCHRAUBEN_GROESSE DESIGNATED : NO
|
||||
D_WEIGHT_WEIGHED DESCRIPTION : NULL
|
||||
D_MATERIAL ACCESS : Full
|
||||
PRO_MP_TRF_42 SOURCE : Mass Properties
|
||||
PRO_MP_ALT_AREA DESIGNATED : NO
|
||||
D_DEPARTMENT DESCRIPTION : NULL
|
||||
PRO_MP_TRF_12 DESIGNATED : NO
|
||||
PTC_WM_CREATED_BY DESCRIPTION : NULL
|
||||
GEWINDEGÃNGE_PRO_INCH : 20.320000
|
||||
PRO_MP_ALT_INERTIA_ORIGIN DESCRIPTION : NULL
|
||||
PRO_MP_ALT_AREA SOURCE : Alternate Mass Prop
|
||||
D_WEIGHT_WEIGHED : -
|
||||
PROI_RELEASE DESCRIPTION : NULL
|
||||
PRO_MP_CSYS DESCRIPTION : NULL
|
||||
I_3D_RELEASE : -
|
||||
I_CUSTOMER_PROJ SOURCE : User-Defined
|
||||
PRO_MP_TRF_12 SOURCE : Mass Properties
|
||||
I_NAME_OLD : -
|
||||
MC_MODE SOURCE : User-Defined
|
||||
PRO_MP_TRF_31 DESIGNATED : NO
|
||||
METRISCH ACCESS : Locked
|
||||
PRO_MP_IYZ : ->
|
||||
I_RANGE SOURCE : User-Defined
|
||||
PRO_MP_TRF_33 : ->
|
||||
PRO_MP_ALT_COGY ACCESS : Full
|
||||
GDTA_EINHEITEN_HINWEISE : 12
|
||||
PRO_MP_ALT_COGZ : ->
|
||||
PROI_VERSION SOURCE : Alternate Mass Prop
|
||||
I_CUSTOMER_PROJ DESCRIPTION : NULL
|
||||
I_ADD_INFO DESIGNATED : YES
|
||||
D_WEIGHT_WEIGHED SOURCE : User-Defined
|
||||
PRO_MP_TRF_41 ACCESS : Locked
|
||||
KLASSE DESIGNATED : NO
|
||||
D_LAST_MODIFIED DESIGNATED : YES
|
||||
PRO_MP_TRF_23 DESCRIPTION : NULL
|
||||
PTC_WM_LOCATION DESIGNATED : NO
|
||||
D_SURFACE SOURCE : User-Defined
|
||||
PRO_MP_ALT_COGZ DESIGNATED : NO
|
||||
PROI_LOCATION SOURCE : Alternate Mass Prop
|
||||
GEWINDEGÃNGE_PRO_INCH ACCESS : Locked
|
||||
GEWINDE_DURCHM DESCRIPTION : NULL
|
||||
D_DOCNR ACCESS : Full
|
||||
D_DOC_TYPE SOURCE : User-Defined
|
||||
PRO_MP_TRF_33 ACCESS : Locked
|
||||
CONTI_CLASS ACCESS : Full
|
||||
PRO_MP_MASS DESCRIPTION : NULL
|
||||
MBD DESIGNATED : NO
|
||||
PROI_CREATED_BY DESCRIPTION : NULL
|
||||
PRO_MP_ALT_IZZ : ->
|
||||
PRO_MP_TRF_32 : ->
|
||||
PROI_BRANCH DESIGNATED : NO
|
||||
D_LOCATION DESIGNATED : YES
|
||||
D_DESCRIPTION1 SOURCE : User-Defined
|
||||
PRO_MP_TRF_22 SOURCE : Mass Properties
|
||||
GEWINDE_DURCHM SOURCE : Mass Properties
|
||||
D_WEIGHT_CALC : -
|
||||
MC_MODE DESIGNATED : YES
|
||||
D_ADD_INFORMATION SOURCE : User-Defined
|
||||
PRO_MP_ALT_INERTIA_ORIGIN ACCESS : Full
|
||||
PRO_MP_ALT_VOLUME : ->
|
||||
I_CUSTOMER_PROJ : -
|
||||
I_NAME_OLD ACCESS : Full
|
||||
PRO_MP_TRF_41 SOURCE : Mass Properties
|
||||
PTC_WM_ITERATION DESIGNATED : NO
|
||||
PROI_VERSION DESCRIPTION : NULL
|
||||
PRO_MP_ALT_CSYS : DEFAULT
|
||||
MP_DENSITY : ->
|
||||
PRO_MP_IZZ SOURCE : Mass Properties
|
||||
PTC_MODIFIED ACCESS : Limited
|
||||
PRO_MP_IYY DESCRIPTION : NULL
|
||||
D_SURFACE ACCESS : Full
|
||||
WT_EPMDOC_NUMBER ACCESS : Limited
|
||||
PRO_MP_MASS SOURCE : Mass Properties
|
||||
PDMRL DESCRIPTION : NULL
|
||||
XSEC_NAME ACCESS : Full
|
||||
PRO_MP_ALT_MASS : ->
|
||||
D_DOC_PART SOURCE : User-Defined
|
||||
PRO_MP_ALT_VOLUME SOURCE : Alternate Mass Prop
|
||||
PRO_MP_ALT_IYY DESCRIPTION : NULL
|
||||
PTC_MODIFIED SOURCE : Alternate Mass Prop
|
||||
D_DOC_TYPE ACCESS : Full
|
||||
PRO_MP_TRF_23 SOURCE : Mass Properties
|
||||
CUSTOMER DESCRIPTION : NULL
|
||||
PRO_MP_ALT_IYZ : ->
|
||||
D_WEIGHT_CALC ACCESS : Full
|
||||
D_BASE_UNIT : -
|
||||
PRO_MP_MASS : ->
|
||||
PTC_WM_MODIFIED_ON DESCRIPTION : NULL
|
||||
PRO_MP_DENSITY ACCESS : Locked
|
||||
PRO_MP_DENSITY SOURCE : Mass Properties
|
||||
GEWINDE_LÃNGE SOURCE : Mass Properties
|
||||
PTC_WM_MODIFIED_BY DESIGNATED : NO
|
||||
I_3D_RELEASE ACCESS : Full
|
||||
PRO_MP_ALT_COGZ DESCRIPTION : NULL
|
||||
PTC_WM_TEAM DESCRIPTION : NULL
|
||||
PROI_CREATED_ON DESCRIPTION : NULL
|
||||
BOHRER_SPITZENWINKEL DESCRIPTION : NULL
|
||||
PROI_RELEASE SOURCE : Alternate Mass Prop
|
||||
D_DESCRIPTION0 SOURCE : User-Defined
|
||||
PRO_MP_ALT_IXZ : ->
|
||||
D_LAST_MODIFIED DESCRIPTION : NULL
|
||||
PRO_MP_ALT_IZZ DESCRIPTION : NULL
|
||||
WT_EPMDOC_NUMBER : REV_PART_NEU_01.PRT
|
||||
PTC_WM_MODIFIED_ON DESIGNATED : NO
|
||||
D_MATERIAL SOURCE : User-Defined
|
||||
PRO_MP_ALT_IYY SOURCE : Alternate Mass Prop
|
||||
PTC_WM_CREATED_ON : 04-Oct-16 09:41:59 AM
|
||||
PRO_MP_IYZ ACCESS : Locked
|
||||
MC_CONFIG DESIGNATED : YES
|
||||
BOHR_DURCHM SOURCE : Mass Properties
|
||||
PRO_MP_ALT_IXZ DESIGNATED : NO
|
||||
GEWINDE_LÃNGE : 16.320000
|
||||
PTC_WM_MODIFIED_ON ACCESS : Limited
|
||||
PRO_MP_TRF_13 ACCESS : Locked
|
||||
PRO_MP_IXY ACCESS : Locked
|
||||
D_DEPARTMENT ACCESS : Full
|
||||
PRO_MP_DENSITY DESCRIPTION : NULL
|
||||
PRO_MP_AREA ACCESS : Locked
|
||||
PTC_WM_REVISION ACCESS : Limited
|
||||
PRO_MP_TRF_31 : ->
|
||||
PRO_MP_IYZ DESCRIPTION : NULL
|
||||
PTC_WM_TEAM SOURCE : Mass Properties
|
||||
D_MATNR ACCESS : Full
|
||||
I_ADD_INFO SOURCE : User-Defined
|
||||
KLASSE : H
|
||||
PRO_MP_IYY SOURCE : Mass Properties
|
||||
CONTI_CLASS DESCRIPTION : -
|
||||
PTC_WM_VERSION : AA.0
|
||||
D_LOGIN DESCRIPTION : NULL
|
||||
PRO_MP_COGX ACCESS : Locked
|
||||
D_ECM_DESCRIPTION SOURCE : User-Defined
|
||||
PDMDB ACCESS : Limited
|
||||
D_WEIGHT_WEIGHED ACCESS : Full
|
||||
MBD ACCESS : Full
|
||||
PRO_MP_COGZ : ->
|
||||
D_MATNR DESIGNATED : YES
|
||||
D_LOGIN SOURCE : User-Defined
|
||||
PRO_MP_IYY DESIGNATED : NO
|
||||
GDTA_STANDARD_REF_HINWEISE : 18
|
||||
PRO_MP_TRF_33 DESCRIPTION : NULL
|
||||
BOHR_TIEFE DESIGNATED : NO
|
||||
PRO_MP_ALT_IZZ SOURCE : Alternate Mass Prop
|
||||
CUSTOMER_PROJ0 : -
|
||||
GEWINDE_TIEFE SOURCE : Mass Properties
|
||||
PRO_MP_IXX : ->
|
||||
CUSTOMER_PROJ0 ACCESS : Full
|
||||
PDMRL : Planned
|
||||
D_DEPARTMENT : -
|
||||
PRO_MP_TRF_11 ACCESS : Locked
|
||||
WT_EPMDOC_NUMBER DESCRIPTION : NULL
|
||||
PRO_MP_TRF_11 DESIGNATED : NO
|
||||
PRO_MP_CSYS SOURCE : Mass Properties
|
||||
PRO_MP_ALT_COGY SOURCE : Alternate Mass Prop
|
||||
PDMREV : AA.0+
|
||||
PRO_MP_INERTIA_ORIGIN ACCESS : Locked
|
||||
PTC_WM_CREATED_BY SOURCE : Mass Properties
|
||||
D_DOC_SUBTYPE : -
|
||||
D_SURFACE_TEXT ACCESS : Full
|
||||
PTC_WM_LIFECYCLE SOURCE : Mass Properties
|
||||
PRO_MP_TRF_21 : ->
|
||||
I_USE_STATUS DESCRIPTION : NULL
|
||||
D_DOC_PART ACCESS : Full
|
||||
I_CUSTOMER_RELATION ACCESS : Full
|
||||
STEIGUNG DESIGNATED : NO
|
||||
PTC_ORGANIZATION_ID DESIGNATED : NO
|
||||
I_APP_VERSION DESIGNATED : YES
|
||||
MP_DENSITY SOURCE : Alternate Mass Prop
|
||||
PRO_MP_ALT_IYZ ACCESS : Full
|
||||
D_WEIGHT_WEIGHED DESIGNATED : YES
|
||||
PROI_BRANCH :
|
||||
PROI_RELEASE DESIGNATED : NO
|
||||
XSEC_SRF DESCRIPTION : NULL
|
||||
GDTA_STANDARD_REF_HINWEISE SOURCE : User-Defined
|
||||
PRO_MP_COGX DESIGNATED : NO
|
||||
PROI_RELEASE : Planned
|
||||
PRO_MP_TRF_41 : ->
|
||||
PTC_WM_LIFECYCLE_STATE ACCESS : Limited
|
||||
PTC_ORGANIZATION_ID DESCRIPTION : NULL
|
||||
D_SURFACE_TEXT : -
|
||||
PRO_MP_TRF_11 SOURCE : Mass Properties
|
||||
PTC_WM_LOCATION SOURCE : Mass Properties
|
||||
PTC_WM_CREATED_ON DESIGNATED : NO
|
||||
PRO_MP_TRF_32 DESCRIPTION : NULL
|
||||
BOHRER_SPITZENWINKEL DESIGNATED : NO
|
||||
SCHRAUBEN_GROESSE : M8x1.25
|
||||
METRISCH SOURCE : Mass Properties
|
||||
D_DESCRIPTION0 : -
|
||||
PRO_MP_ALT_IXX DESCRIPTION : NULL
|
||||
PRO_MP_IXX SOURCE : Mass Properties
|
||||
PRO_MP_ALT_CSYS DESCRIPTION : NULL
|
||||
PRO_MP_TRF_13 : ->
|
||||
PTC_WM_ITERATION DESCRIPTION : NULL
|
||||
KLASSE ACCESS : Locked
|
||||
SCHRAUBEN_GROESSE SOURCE : Mass Properties
|
||||
I_RANGE ACCESS : Full
|
||||
PRO_MP_TRF_21 SOURCE : Mass Properties
|
||||
PRO_MP_IYY : ->
|
||||
PDMRL SOURCE : Alternate Mass Prop
|
||||
PRO_MP_SOURCE DESCRIPTION : NULL
|
||||
D_DOC_SUBTYPE SOURCE : User-Defined
|
||||
GEWINDE_DURCHM DESIGNATED : NO
|
||||
CONTI_CLASS DESIGNATED : YES
|
||||
PRO_MP_TRF_32 SOURCE : Mass Properties
|
||||
D_DESCRIPTION1 : -
|
||||
PRO_MP_IZZ ACCESS : Locked
|
||||
PRO_MP_TRF_42 DESCRIPTION : NULL
|
||||
D_WEIGHT_CALC SOURCE : User-Defined
|
||||
PROI_REVISION : AA
|
||||
PRO_MP_ALT_COGX DESIGNATED : NO
|
||||
PTC_WM_CREATED_ON SOURCE : Mass Properties
|
||||
PRO_MP_TRF_13 SOURCE : Mass Properties
|
||||
D_DOC_SUBTYPE ACCESS : Full
|
||||
PRO_MP_ALT_IXX ACCESS : Full
|
||||
D_DESCRIPTION1 ACCESS : Full
|
||||
PRO_MP_ALT_AREA : ->
|
||||
I_ADD_INFO DESCRIPTION : NULL
|
||||
D_DOCNR SOURCE : User-Defined
|
||||
PRO_MP_ALT_COGX SOURCE : Alternate Mass Prop
|
||||
PROI_VERSION DESIGNATED : NO
|
||||
GDTA_EINHEITEN_HINWEISE DESCRIPTION : NULL
|
||||
PROI_CREATED_BY ACCESS : Limited
|
||||
PTC_MODIFIED DESIGNATED : NO
|
||||
I_RANGE DESCRIPTION : NULL
|
||||
D_FORMAT SOURCE : User-Defined
|
||||
PRO_MP_AREA DESIGNATED : NO
|
||||
PTC_WM_MODIFIED_BY SOURCE : Mass Properties
|
||||
D_ADD_INFORMATION DESIGNATED : YES
|
||||
CUSTOMER_PROJ0 DESCRIPTION : NULL
|
||||
PRO_MP_IXY SOURCE : Mass Properties
|
||||
D_DESCRIPTION0 ACCESS : Full
|
||||
PRO_MP_SOURCE DESIGNATED : NO
|
||||
PROI_BRANCH SOURCE : Alternate Mass Prop
|
||||
PTC_WM_LIFECYCLE_STATE : Planned
|
||||
D_SURFACE : -
|
||||
PRO_MP_TRF_22 ACCESS : Locked
|
||||
XSEC_NAME : C
|
||||
D_MATERIAL DESIGNATED : YES
|
||||
PRO_MP_VOLUME SOURCE : Mass Properties
|
||||
PRO_MP_IZZ DESCRIPTION : NULL
|
||||
MP_DENSITY DESIGNATED : NO
|
||||
PTC_WM_TEAM DESIGNATED : NO
|
||||
D_WEIGHT_CALC DESIGNATED : YES
|
||||
GEWINDEGÃNGE_PRO_INCH SOURCE : Mass Properties
|
||||
PRO_MP_IXX ACCESS : Locked
|
||||
GDTA_STANDARD_REF_HINWEISE DESCRIPTION : NULL
|
||||
SCHRAUBEN_GROESSE ACCESS : Locked
|
||||
D_LOCATION DESCRIPTION : NULL
|
||||
PRO_MP_TRF_31 ACCESS : Locked
|
||||
PRO_MP_AREA : ->
|
||||
MC_ERRORS SOURCE : User-Defined
|
||||
PTC_ORGANIZATION_ID SOURCE : Mass Properties
|
||||
PRO_MP_CSYS : ->
|
||||
D_SURFACE_TEXT DESCRIPTION : NULL
|
||||
XSEC_NAME DESIGNATED : NO
|
||||
PTC_WM_VERSION DESIGNATED : NO
|
||||
PRO_MP_ALT_IYZ DESIGNATED : NO
|
||||
PRO_MP_ALT_COGX ACCESS : Full
|
||||
PRO_MP_TRF_42 DESIGNATED : NO
|
||||
METRISCH DESIGNATED : NO
|
||||
PRO_MP_ALT_COGY : ->
|
||||
PTC_MODIFIED : 1
|
||||
BOHR_TIEFE ACCESS : Locked
|
||||
STEIGUNG DESCRIPTION : NULL
|
||||
PTC_WM_MODIFIED_ON SOURCE : Mass Properties
|
||||
D_LOCATION ACCESS : Full
|
||||
D_LAST_MODIFIED : jjjj-mm-dd
|
||||
PRO_MP_IXZ DESIGNATED : NO
|
||||
PROI_LOCATION DESIGNATED : NO
|
||||
GDTA_EINHEITEN_HINWEISE ACCESS : Full
|
||||
D_LOCATION : -
|
||||
D_DOC_CLASS DESIGNATED : YES
|
||||
I_CUSTOMER_RELATION : -
|
||||
PRO_MP_CSYS DESIGNATED : NO
|
||||
D_FORMAT ACCESS : Full
|
||||
MC_CONFIG ACCESS : Full
|
||||
METRISCH DESCRIPTION : NULL
|
||||
GDTA_STANDARD_REF_HINWEISE DESIGNATED : NO
|
||||
BOHR_TIEFE SOURCE : Mass Properties
|
||||
PRO_MP_IZZ : ->
|
||||
PROI_BRANCH ACCESS : Limited
|
||||
PROI_LOCATION :
|
||||
PROI_CREATED_ON : 10/28/08 14:24:55
|
||||
D_WEIGHT_CALC DESCRIPTION : NULL
|
||||
XSEC_NAME SOURCE : User-Defined
|
||||
PTC_WM_TEAM ACCESS : Limited
|
||||
I_CUSTOMER_RELATION DESIGNATED : YES
|
||||
D_DESCRIPTION1 DESCRIPTION : NULL
|
||||
PRO_MP_TRF_12 DESCRIPTION : NULL
|
||||
GEWINDE_LÃNGE ACCESS : Locked
|
||||
PRO_MP_ALT_IXZ ACCESS : Full
|
||||
I_RANGE DESIGNATED : YES
|
||||
D_DOC_PART DESCRIPTION : NULL
|
||||
D_ADD_INFORMATION DESCRIPTION : NULL
|
||||
PRO_MP_INERTIA_ORIGIN : ->
|
||||
BOHR_TIEFE DESCRIPTION : NULL
|
||||
PRO_MP_IXY DESIGNATED : NO
|
||||
PRO_MP_TRF_33 DESIGNATED : NO
|
||||
D_DOCNR DESIGNATED : YES
|
||||
PRO_MP_ALT_COGY DESIGNATED : NO
|
||||
PRO_MP_ALT_AREA DESCRIPTION : NULL
|
||||
MC_MODE DESCRIPTION : NULL
|
||||
PRO_MP_IXZ DESCRIPTION : NULL
|
||||
D_BASE_UNIT ACCESS : Full
|
||||
CUSTOMER : -
|
||||
PTC_WM_LIFECYCLE_STATE SOURCE : Mass Properties
|
||||
PDMREV ACCESS : Limited
|
||||
PRO_MP_INERTIA_ORIGIN DESCRIPTION : NULL
|
||||
PROI_VERSION ACCESS : Limited
|
||||
I_LABOR DESCRIPTION : NULL
|
||||
D_SURFACE_TEXT DESIGNATED : YES
|
||||
D_DOC_CLASS ACCESS : Full
|
||||
PTC_WM_ITERATION : 0
|
||||
D_DOC_PART : 000
|
||||
PRO_MP_ALT_IYY DESIGNATED : NO
|
||||
MC_ERRORS DESIGNATED : YES
|
||||
PRO_MP_IYY ACCESS : Locked
|
||||
PRO_MP_COGZ ACCESS : Locked
|
||||
BOHRER_SPITZENWINKEL SOURCE : Mass Properties
|
||||
METRISCH : JA
|
||||
PDMRL DESIGNATED : NO
|
||||
PRO_MP_SOURCE : GEOMETRY
|
||||
XSEC_SRF ACCESS : Full
|
||||
D_ECM_DESCRIPTION DESCRIPTION : NULL
|
||||
PRO_MP_COGX DESCRIPTION : NULL
|
||||
BOHR_TIEFE : 17.000000
|
||||
MBD : 1
|
||||
PRO_MP_ALT_IYZ DESCRIPTION : NULL
|
||||
D_LAST_MODIFIED SOURCE : User-Defined
|
||||
I_3D_RELEASE SOURCE : User-Defined
|
||||
MODEL_CHECK : -
|
||||
PTC_WM_LOCATION DESCRIPTION : NULL
|
||||
CUSTOMER ACCESS : Full
|
||||
PRO_MP_IXZ SOURCE : Mass Properties
|
||||
D_DOCNR : -
|
||||
KLASSE DESCRIPTION : NULL
|
||||
SCHRAUBEN_GROESSE DESCRIPTION : NULL
|
||||
D_DESCRIPTION0 DESCRIPTION : NULL
|
||||
D_DOC_CLASS SOURCE : User-Defined
|
||||
PRO_MP_TRF_23 ACCESS : Locked
|
||||
PTC_WM_MODIFIED_BY DESCRIPTION : NULL
|
||||
I_LABOR ACCESS : Full
|
||||
PRO_MP_ALT_IXY : ->
|
||||
D_FORMAT DESIGNATED : YES
|
||||
I_NAME_OLD DESIGNATED : YES
|
||||
PRO_MP_ALT_IYZ SOURCE : Alternate Mass Prop
|
||||
PDMDB SOURCE : Alternate Mass Prop
|
||||
I_USE_STATUS : -
|
||||
I_NAME_OLD DESCRIPTION : NULL
|
||||
XSEC_SRF SOURCE : User-Defined
|
||||
PRO_MP_ALT_INERTIA_ORIGIN SOURCE : Alternate Mass Prop
|
||||
PRO_MP_TRF_42 ACCESS : Locked
|
||||
D_LOGIN DESIGNATED : YES
|
||||
MODEL_CHECK DESCRIPTION : NULL
|
||||
MBD DESCRIPTION : NULL
|
||||
PRO_MP_ALT_IXY ACCESS : Full
|
||||
XSEC_SRF DESIGNATED : NO
|
||||
CUSTOMER_PROJ0 SOURCE : User-Defined
|
||||
GEWINDEGÃNGE_PRO_INCH DESCRIPTION : NULL
|
||||
PTC_WM_CREATED_BY ACCESS : Limited
|
||||
MC_MODE ACCESS : Full
|
||||
GDTA_EINHEITEN_HINWEISE SOURCE : User-Defined
|
||||
PTC_WM_VERSION DESCRIPTION : NULL
|
||||
D_LAST_MODIFIED ACCESS : Full
|
||||
PTC_WM_LIFECYCLE DESCRIPTION : NULL
|
||||
PRO_MP_TRF_22 DESCRIPTION : NULL
|
||||
BOHR_DURCHM DESCRIPTION : NULL
|
||||
PTC_ORGANIZATION_ID ACCESS : Limited
|
||||
PROI_CREATED_BY SOURCE : Alternate Mass Prop
|
||||
I_USE_STATUS ACCESS : Full
|
||||
PROI_CREATED_ON SOURCE : Alternate Mass Prop
|
||||
PRO_MP_TRF_12 ACCESS : Locked
|
||||
PROI_REVISION SOURCE : Alternate Mass Prop
|
||||
PRO_MP_SOURCE ACCESS : Full
|
||||
PDMDB DESIGNATED : NO
|
||||
D_DESCRIPTION0 DESIGNATED : YES
|
||||
GDTA_STANDARD_REF_HINWEISE ACCESS : Full
|
||||
PRO_MP_TRF_43 DESCRIPTION : NULL
|
||||
PRO_MP_IXZ ACCESS : Locked
|
||||
PRO_MP_COGY DESCRIPTION : NULL
|
||||
PDMDB :
|
||||
CONTI_CLASS : RD_AUXPART
|
||||
PRO_MP_INERTIA_ORIGIN DESIGNATED : NO
|
||||
PROI_CREATED_ON DESIGNATED : NO
|
||||
PRO_MP_TRF_12 : ->
|
||||
I_APP_VERSION : CREO2 M210
|
||||
PTC_WM_ITERATION ACCESS : Limited
|
||||
I_USE_STATUS DESIGNATED : YES
|
||||
D_BASE_UNIT DESIGNATED : YES
|
||||
PTC_WM_MODIFIED_BY ACCESS : Limited
|
||||
PTC_WM_VERSION SOURCE : Mass Properties
|
||||
I_CUSTOMER_RELATION SOURCE : User-Defined
|
||||
D_FORMAT DESCRIPTION : NULL
|
||||
PRO_MP_ALT_IXY SOURCE : Alternate Mass Prop
|
||||
PRO_MP_TRF_11 DESCRIPTION : NULL
|
||||
PTC_WM_ITERATION SOURCE : Mass Properties
|
||||
PRO_MP_TRF_11 : ->
|
||||
PRO_MP_ALT_MASS DESIGNATED : NO
|
||||
PRO_MP_TRF_43 SOURCE : Mass Properties
|
||||
PRO_MP_VOLUME DESCRIPTION : NULL
|
||||
STEIGUNG ACCESS : Locked
|
||||
MC_MODE : -
|
||||
PROI_REVISION DESIGNATED : NO
|
||||
I_APP_VERSION SOURCE : User-Defined
|
||||
GEWINDESERIE : ISO
|
||||
PTC_WM_LIFECYCLE_STATE DESIGNATED : NO
|
||||
D_SURFACE_TEXT SOURCE : User-Defined
|
||||
PRO_MP_COGZ DESCRIPTION : NULL
|
||||
PRO_MP_ALT_IXY DESCRIPTION : NULL
|
||||
PDMDB DESCRIPTION : NULL
|
||||
GEWINDESERIE DESCRIPTION : NULL
|
||||
GDTA_EINHEITEN_HINWEISE DESIGNATED : NO
|
||||
PRO_MP_COGX : ->
|
||||
I_ECM SOURCE : User-Defined
|
||||
PRO_MP_SOURCE SOURCE : Alternate Mass Prop
|
||||
PDMREV SOURCE : Alternate Mass Prop
|
||||
WT_EPMDOC_NUMBER SOURCE : Mass Properties
|
||||
PRO_MP_TRF_22 DESIGNATED : NO
|
||||
PRO_MP_ALT_IXX : ->
|
||||
D_ADD_INFORMATION : -
|
||||
PRO_MP_TRF_42 : ->
|
||||
D_DESCRIPTION1 DESIGNATED : YES
|
||||
PRO_MP_INERTIA_ORIGIN SOURCE : Mass Properties
|
||||
PRO_MP_COGZ DESIGNATED : NO
|
||||
D_LOGIN : -
|
||||
MC_CONFIG SOURCE : User-Defined
|
||||
D_ADD_INFORMATION ACCESS : Full
|
||||
I_LABOR DESIGNATED : YES
|
||||
PRO_MP_TRF_31 SOURCE : Mass Properties
|
||||
BOHR_DURCHM : 6.800000
|
||||
CUSTOMER_PROJ0 DESIGNATED : YES
|
||||
PTC_WM_LIFECYCLE ACCESS : Limited
|
||||
I_USE_STATUS SOURCE : User-Defined
|
||||
PRO_MP_COGX SOURCE : Mass Properties
|
||||
PTC_WM_TEAM :
|
||||
PDMRL ACCESS : Limited
|
||||
PRO_MP_TRF_23 : ->
|
||||
MC_ERRORS ACCESS : Full
|
||||
PRO_MP_IXX DESIGNATED : NO
|
||||
GEWINDEGÃNGE_PRO_INCH DESIGNATED : NO
|
||||
PRO_MP_ALT_CSYS ACCESS : Full
|
||||
PTC_ORGANIZATION_ID : Engineering
|
||||
PRO_MP_CSYS ACCESS : Locked
|
||||
BOHRER_SPITZENWINKEL : 118.000000
|
||||
GEWINDESERIE ACCESS : Locked
|
||||
D_BASE_UNIT DESCRIPTION : NULL
|
||||
PTC_WM_REVISION DESCRIPTION : NULL
|
||||
PROI_BRANCH DESCRIPTION : NULL
|
||||
MC_CONFIG : -
|
||||
D_MATNR DESCRIPTION : NULL
|
||||
PRO_MP_TRF_22 : ->
|
||||
PRO_MP_TRF_33 SOURCE : Mass Properties
|
||||
PRO_MP_COGZ SOURCE : Mass Properties
|
||||
PRO_MP_VOLUME DESIGNATED : NO
|
||||
I_LABOR : -
|
||||
PRO_MP_ALT_IXZ DESCRIPTION : NULL
|
||||
I_APP_VERSION ACCESS : Full
|
||||
D_SURFACE DESIGNATED : YES
|
||||
BOHR_DURCHM DESIGNATED : NO
|
||||
GEWINDE_TIEFE DESIGNATED : NO
|
||||
PTC_WM_CREATED_BY : von Bernuth Constantin (uidu3660) (uidu3660: Engineering)
|
||||
PRO_MP_TRF_32 ACCESS : Locked
|
||||
MODEL_CHECK SOURCE : User-Defined
|
||||
PTC_WM_LIFECYCLE DESIGNATED : NO
|
||||
D_MATNR : -
|
||||
BOHRER_SPITZENWINKEL ACCESS : Locked
|
||||
MODEL_CHECK ACCESS : Full
|
||||
KLASSE SOURCE : Mass Properties
|
||||
D_ECM_DESCRIPTION ACCESS : Full
|
||||
D_DOC_CLASS : -
|
||||
PRO_MP_IYZ SOURCE : Mass Properties
|
||||
MC_CONFIG DESCRIPTION : NULL
|
||||
PROI_LOCATION DESCRIPTION : NULL
|
||||
GEWINDE_TIEFE ACCESS : Locked
|
||||
PTC_WM_REVISION SOURCE : Mass Properties
|
||||
PRO_MP_TRF_43 DESIGNATED : NO
|
||||
PROI_LOCATION ACCESS : Limited
|
||||
PRO_MP_ALT_VOLUME ACCESS : Full
|
||||
PRO_MP_ALT_COGZ SOURCE : Alternate Mass Prop
|
||||
PRO_MP_TRF_21 DESIGNATED : NO
|
||||
MP_DENSITY DESCRIPTION : NULL
|
||||
GEWINDE_DURCHM ACCESS : Locked
|
||||
D_MATERIAL DESCRIPTION : NULL
|
||||
PTC_WM_CREATED_ON DESCRIPTION : NULL
|
||||
D_DEPARTMENT SOURCE : User-Defined
|
||||
I_3D_RELEASE DESIGNATED : YES
|
||||
PRO_MP_TRF_41 DESIGNATED : NO
|
||||
I_ADD_INFO : -
|
||||
GEWINDE_LÃNGE DESCRIPTION : NULL
|
||||
PRO_MP_ALT_IZZ DESIGNATED : NO
|
||||
PRO_MP_ALT_COGX DESCRIPTION : NULL
|
||||
MODEL_CHECK DESIGNATED : YES
|
||||
PRO_MP_DENSITY : 0.000000
|
||||
PROI_CREATED_ON ACCESS : Limited
|
||||
D_SURFACE DESCRIPTION : NULL
|
||||
I_RANGE : 40
|
||||
I_ECM ACCESS : Full
|
||||
D_DOC_SUBTYPE DESCRIPTION : NULL
|
||||
PRO_MP_IXY : ->
|
||||
CUSTOMER SOURCE : User-Defined
|
||||
STEIGUNG : 1.250000
|
||||
D_DOC_SUBTYPE DESIGNATED : YES
|
||||
PRO_MP_ALT_MASS ACCESS : Full
|
||||
I_CUSTOMER_RELATION DESCRIPTION : NULL
|
||||
PRO_MP_ALT_CSYS DESIGNATED : NO
|
||||
STEIGUNG SOURCE : Mass Properties
|
||||
PRO_MP_TRF_43 : ->
|
||||
CONTI_CLASS SOURCE : User-Defined
|
||||
D_ECM_DESCRIPTION DESIGNATED : YES
|
||||
PRO_MP_ALT_IXZ SOURCE : Alternate Mass Prop
|
||||
GEWINDE_LÃNGE DESIGNATED : NO
|
||||
PTC_WM_CREATED_BY DESIGNATED : NO
|
||||
D_DOC_TYPE DESCRIPTION : NULL
|
||||
PRO_MP_IXZ : ->
|
||||
I_NAME_OLD SOURCE : User-Defined
|
||||
PRO_MP_MASS ACCESS : Locked
|
||||
PRO_MP_ALT_COGZ ACCESS : Full
|
||||
PRO_MP_ALT_IXX SOURCE : Alternate Mass Prop
|
||||
GEWINDESERIE SOURCE : Mass Properties
|
||||
PTC_WM_LOCATION :
|
||||
D_DOC_TYPE DESIGNATED : YES
|
||||
PRO_MP_VOLUME : ->
|
||||
I_ECM DESIGNATED : YES
|
||||
I_ECM : -
|
||||
PRO_MP_ALT_IXX DESIGNATED : NO
|
||||
PTC_WM_REVISION : AA
|
||||
GEWINDE_TIEFE DESCRIPTION : NULL
|
||||
D_DOC_TYPE : -
|
||||
MP_DENSITY ACCESS : Full
|
||||
GEWINDESERIE DESIGNATED : NO
|
||||
D_DOCNR DESCRIPTION : NULL
|
||||
D_MATERIAL : -
|
||||
PROI_CREATED_BY :
|
||||
PRO_MP_TRF_21 ACCESS : Locked
|
||||
ProductID : REV_PART_NEU_01
|
||||
PRO_MP_ALT_IYY : ->
|
||||
PRO_MP_TRF_41 DESCRIPTION : NULL
|
||||
PTC_WM_REVISION DESIGNATED : NO
|
||||
PROI_CREATED_BY DESIGNATED : NO
|
||||
D_MATNR SOURCE : User-Defined
|
||||
PRO_MP_ALT_MASS DESCRIPTION : NULL
|
||||
PRO_MP_TRF_13 DESIGNATED : NO
|
||||
PRO_MP_ALT_CSYS SOURCE : Alternate Mass Prop
|
||||
PTC_WM_CREATED_ON ACCESS : Limited
|
||||
PRO_MP_ALT_VOLUME DESIGNATED : NO
|
||||
I_LABOR SOURCE : User-Defined
|
||||
WT_EPMDOC_NUMBER DESIGNATED : NO
|
||||
PROI_REVISION DESCRIPTION : NULL
|
||||
PRO_MP_TRF_43 ACCESS : Locked
|
||||
XSEC_SRF : XSEC_SRF
|
||||
PTC_WM_LIFECYCLE_STATE DESCRIPTION : NULL
|
||||
PROI_VERSION : 0+
|
||||
PRO_MP_ALT_AREA ACCESS : Full
|
||||
CUSTOMER DESIGNATED : YES
|
||||
ProductID : NIST PMI FTC 08 ASME1
|
||||
ProductDefinition :
|
||||
Revision : C
|
||||
PartNumber : NIST PMI FTC 08 ASME1
|
||||
DescriptionRef : NIST PMI test model downloaded from http://go.usa.gov/mGVm
|
||||
ProductName : NIST PMI FTC 08 ASME1
|
||||
|
||||
}
|
||||
|
@@ -1,13 +0,0 @@
|
||||
# !!!! This file is generated automatically, do not edit manually! See end script
|
||||
set filename nist_ftc_08_asme1_ap242-2.stp
|
||||
|
||||
set ref_data {
|
||||
Property for [0:1:1:1]:
|
||||
ProductID : NIST PMI FTC 08 ASME1
|
||||
ProductDefinition :
|
||||
Revision : C
|
||||
PartNumber : NIST PMI FTC 08 ASME1
|
||||
DescriptionRef : NIST PMI test model downloaded from http://go.usa.gov/mGVm
|
||||
ProductName : NIST PMI FTC 08 ASME1
|
||||
|
||||
}
|
20
tests/v3d/bugs/bug_gh421
Normal file
20
tests/v3d/bugs/bug_gh421
Normal file
@@ -0,0 +1,20 @@
|
||||
puts "============"
|
||||
puts "Visualization - Bounding box is not decreasing for mode 2 #421"
|
||||
puts "============"
|
||||
puts ""
|
||||
|
||||
pload MODELING VISUALIZATION
|
||||
vclear
|
||||
|
||||
box b 100 200 300
|
||||
vinit View1
|
||||
vdisplay b -dispMode 2
|
||||
# OK
|
||||
box b 10 200 300
|
||||
vdisplay b -dispMode 2
|
||||
|
||||
vfit
|
||||
|
||||
checkcolor 243 2 0 0 0
|
||||
|
||||
vdump $::imagedir/${::casename}.png
|
@@ -32,13 +32,9 @@ set (CMAKE_SUPPRESS_REGENERATION TRUE)
|
||||
|
||||
set (CMAKE_CONFIGURATION_TYPES Release Debug RelWithDebInfo CACHE INTERNAL "" FORCE)
|
||||
|
||||
# macro: include patched file if it exists
|
||||
# include cmake file
|
||||
macro (OCCT_INCLUDE_CMAKE_FILE BEING_INCLUDED_FILE)
|
||||
if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${BEING_INCLUDED_FILE}.cmake")
|
||||
include (${BUILD_PATCH}/${BEING_INCLUDED_FILE}.cmake)
|
||||
else()
|
||||
include (${CMAKE_SOURCE_DIR}/${BEING_INCLUDED_FILE}.cmake)
|
||||
endif()
|
||||
include (${CMAKE_SOURCE_DIR}/${BEING_INCLUDED_FILE}.cmake)
|
||||
endmacro()
|
||||
|
||||
macro (OCCT_INCLUDE_3RDPARTY_PRODUCT USE_PRODUCT PRODUCT_CONFIG_FILE)
|
||||
@@ -247,7 +243,7 @@ if (NOT DEFINED INSTALL_DIR_DATA)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# include the patched or original list of definitions and flags
|
||||
# include original list of definitions and flags
|
||||
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_defs_flags")
|
||||
|
||||
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/3rdparty_macro")
|
||||
@@ -334,7 +330,7 @@ if (WIN32)
|
||||
endif()
|
||||
|
||||
# OCCT tools
|
||||
# include the patched or original list of tools
|
||||
# include original list of tools
|
||||
# list <TOOLNAME>_TOOLKITS is created foreach tool and contains its toolkits
|
||||
# list <OCCT_TOOLS> will contain all tools
|
||||
OCCT_MODULES_AND_TOOLKITS (TOOLS "TOOL_TOOLKITS" OCCT_TOOLS)
|
||||
|
Reference in New Issue
Block a user