Compare commits
54 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
8edd338e20 | ||
|
0cb512c013 | ||
|
340054e17a | ||
|
c231f393d3 | ||
|
c3cca01534 | ||
|
956d63467f | ||
|
a41ccd91d9 | ||
|
5b83cdb642 | ||
|
6ca8b6144b | ||
|
f523acf0b4 | ||
|
192b22058b | ||
|
4f4b893546 | ||
|
7c42f3f48d | ||
|
fd3f6bd069 | ||
|
aa17dac878 | ||
|
41f97958c0 | ||
|
1aa738ddd6 | ||
|
569c958248 | ||
|
cba287d62a | ||
|
fe6c26dc50 | ||
|
9294c8f774 | ||
|
905b0e3175 | ||
|
a743814be9 | ||
|
efe9d99730 | ||
|
471a2ca0bf | ||
|
f97095fada | ||
|
22e7073865 | ||
|
d21ddc4f17 | ||
|
51004f1cf9 | ||
|
0ef598d064 | ||
|
fbd0023f75 | ||
|
2783b13ce6 | ||
|
cee2b5567d | ||
|
d7a28edad2 | ||
|
7337535943 | ||
|
359cdde7ed | ||
|
2bc6f71528 | ||
|
a2456ed88a | ||
|
98f5d739e3 | ||
|
dfdfa61fb5 | ||
|
d37ac0c26e | ||
|
a318d719e7 | ||
|
9d8e074451 | ||
|
cd1918d6b7 | ||
|
7379f4424d | ||
|
fdb8a039b4 | ||
|
1428d37a1a | ||
|
e40d1acc28 | ||
|
095e90a2c5 | ||
|
e2c4ce4869 | ||
|
b101eb1ff0 | ||
|
fc935b4f6b | ||
|
f7b6063134 | ||
|
e16302cee1 |
@@ -347,6 +347,8 @@ if (MSVC)
|
||||
set (BUILD_MODULE_MfcSamples OFF CACHE BOOL "${BUILD_MODULE_MfcSamples_DESCR}")
|
||||
endif()
|
||||
|
||||
set (BUILD_Inspector OFF CACHE BOOL "${BUILD_Inspector_DESCR}")
|
||||
|
||||
# uwp sample
|
||||
if (MSVC)
|
||||
if ("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore")
|
||||
@@ -365,9 +367,6 @@ if (WIN32)
|
||||
set (USE_D3D OFF CACHE BOOL "${USE_D3D_DESCR}")
|
||||
endif()
|
||||
|
||||
set (USE_QT_TOOLS OFF CACHE BOOL "${USE_QT_TOOLS_DESCR}")
|
||||
set (USE_QT4 ON CACHE BOOL "${USE_QT4}")
|
||||
|
||||
# Enable/Disable the floating point exceptions (FPE) during runtime.
|
||||
if (NOT BUILD_ENABLE_FPE_SIGNAL_HANDLER)
|
||||
set (BUILD_ENABLE_FPE_SIGNAL_HANDLER OFF CACHE BOOL "${BUILD_ENABLE_FPE_SIGNAL_HANDLER_DESCR}" FORCE)
|
||||
@@ -777,7 +776,7 @@ endif()
|
||||
# include the patched or original list of tools
|
||||
# list <TOOLNAME>_TOOLKITS is created foreach tool and contains its toolkits
|
||||
# list <OCCT_TOOLS> will contain all tools
|
||||
if (NOT USE_QT_TOOLS)
|
||||
if (NOT BUILD_Inspector)
|
||||
OCCT_CHECK_AND_UNSET_GROUP ("3RDPARTY_QT")
|
||||
OCCT_CHECK_AND_UNSET_GROUP ("3RDPARTY_TQTMALLOC")
|
||||
OCCT_CHECK_AND_UNSET ("INSTALL_QT")
|
||||
@@ -790,13 +789,12 @@ else()
|
||||
# collect all the headers to <binary dir>/inc folder
|
||||
string(TIMESTAMP CURRENT_TIME "%H:%M:%S")
|
||||
message (STATUS "\nInfo: \(${CURRENT_TIME}\) Start collecting all OCCT tool header files into ${CMAKE_BINARY_DIR}/tools/inc ...")
|
||||
COLLECT_AND_INSTALL_OCCT_HEADER_FILES ("${CMAKE_BINARY_DIR}/${INSTALL_DIR_INCLUDE}" "${BUILD_TOOL_TOOLKITS}" "${CMAKE_SOURCE_DIR}/tools" "tools")
|
||||
include_directories (${CMAKE_BINARY_DIR}/${INSTALL_DIR_INCLUDE}/tools)
|
||||
COLLECT_AND_INSTALL_OCCT_HEADER_FILES ("${CMAKE_BINARY_DIR}" "${BUILD_TOOL_TOOLKITS}" "${CMAKE_SOURCE_DIR}/tools" "${INSTALL_DIR_INCLUDE}/inspector")
|
||||
|
||||
|
||||
# check qt 3rdparty path
|
||||
add_definitions (-DHAVE_QT)
|
||||
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/qt5")
|
||||
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/qt")
|
||||
message (STATUS "Info: Qt is used by OCCT")
|
||||
endif()
|
||||
|
||||
@@ -978,11 +976,11 @@ endif()
|
||||
|
||||
if (BUILD_TOOL_TOOLKITS)
|
||||
# copy tinspector script to install script folder
|
||||
if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/adm/templates/dfbrowser.${SCRIPT_EXT}")
|
||||
install (FILES "${BUILD_PATCH}/adm/templates/dfbrowser.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SCRIPT}"
|
||||
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_WRITE GROUP_EXECUTE WORLD_READ WORLD_WRITE WORLD_EXECUTE)
|
||||
else()
|
||||
install (FILES "${CMAKE_SOURCE_DIR}/adm/templates/dfbrowser.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SCRIPT}"
|
||||
install (FILES "${CMAKE_SOURCE_DIR}/adm/templates/inspector.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SCRIPT}"
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_WRITE WORLD_EXECUTE)
|
||||
endif()
|
||||
|
||||
@@ -990,6 +988,9 @@ if (BUILD_TOOL_TOOLKITS)
|
||||
foreach (BUILD_SAMPLE_TOOL_TOOLKIT ${BUILD_SAMPLE_TOOLKITS})
|
||||
OCCT_ADD_SUBDIRECTORY ("samples/tools/${BUILD_SAMPLE_TOOL_TOOLKIT}")
|
||||
endforeach()
|
||||
|
||||
# patch TInspectorEXE
|
||||
OCCT_CONFIGURE ("adm/templates/TInspectorEXE.vcxproj.user.in" "${CMAKE_BINARY_DIR}/samples/tools/TInspectorEXE/TInspectorEXE.vcxproj.user")
|
||||
endif()
|
||||
|
||||
# Prepare variables for configuration of OpenCASCADE cmake config file
|
||||
@@ -1026,6 +1027,10 @@ foreach (OCCT_CONFIGURATION ${CMAKE_CONFIGURATION_TYPES})
|
||||
string (TOUPPER "${OCCT_CONFIGURATION}" OCCT_CONFIGURATION_UPPER)
|
||||
string (TOLOWER "${OCCT_CONFIGURATION}" OCCT_CONFIGURATION_LOWER)
|
||||
foreach(COMPILE_DEFINITION ${OCCT_COMPILE_DEFINITIONS})
|
||||
string (REGEX MATCH "^HAVE_.+" ISHAVE "${COMPILE_DEFINITION}")
|
||||
if (ISHAVE)
|
||||
set (COMPILE_DEFINITION "OPENCASCADE_${COMPILE_DEFINITION}")
|
||||
endif()
|
||||
string(REPLACE "(" "\\(" COMPILE_DEFINITION "${COMPILE_DEFINITION}")
|
||||
string(REPLACE ")" "\\)" COMPILE_DEFINITION "${COMPILE_DEFINITION}")
|
||||
set (SET_OpenCASCADE_COMPILE_DEFINITIONS "${SET_OpenCASCADE_COMPILE_DEFINITIONS}set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $<$<CONFIG:${OCCT_CONFIGURATION}>:${COMPILE_DEFINITION}>)\n")
|
||||
|
@@ -116,7 +116,7 @@ function (FIND_SUBDIRECTORY ROOT_DIRECTORY DIRECTORY_SUFFIX SUBDIRECTORY_NAME)
|
||||
foreach (SUBDIR_NAME ${SUBDIR_NAME_LIST})
|
||||
#message("Subdir: ${SUBDIR_NAME}, ${DIRECTORY_SUFFIX}")
|
||||
# REGEX failed if the directory name contains '++' combination, so we replace it
|
||||
string(REPLACE "++" "\\+\\+" SUBDIR_NAME_ESCAPED ${SUBDIR_NAME})
|
||||
string(REPLACE "+" "\\+" SUBDIR_NAME_ESCAPED ${SUBDIR_NAME})
|
||||
string (REGEX MATCH "${SUBDIR_NAME_ESCAPED}" DOES_PATH_CONTAIN "${DIRECTORY_SUFFIX}")
|
||||
if (DOES_PATH_CONTAIN)
|
||||
set(${SUBDIRECTORY_NAME} "${ROOT_DIRECTORY}/${SUBDIR_NAME}" PARENT_SCOPE)
|
||||
@@ -340,7 +340,7 @@ macro (COLLECT_AND_INSTALL_OCCT_HEADER_FILES ROOT_TARGET_OCCT_DIR OCCT_BUILD_TOO
|
||||
string(TIMESTAMP CURRENT_TIME "%H:%M:%S")
|
||||
message (STATUS "Info: \(${CURRENT_TIME}\) Checking headers in inc folder...")
|
||||
|
||||
file (GLOB OCCT_HEADER_FILES_OLD "${ROOT_TARGET_OCCT_DIR}/inc/*")
|
||||
file (GLOB OCCT_HEADER_FILES_OLD "${ROOT_TARGET_OCCT_DIR}/${OCCT_INSTALL_DIR_PREFIX}/*")
|
||||
foreach (OCCT_HEADER_FILE_OLD ${OCCT_HEADER_FILES_OLD})
|
||||
get_filename_component (HEADER_FILE_NAME ${OCCT_HEADER_FILE_OLD} NAME)
|
||||
string (REGEX MATCH "^[a-zA-Z0-9]+" PACKAGE_NAME "${HEADER_FILE_NAME}")
|
||||
|
@@ -152,8 +152,8 @@ else()
|
||||
add_library (${PROJECT_NAME} ${USED_SRCFILES} ${USED_INCFILES} ${USED_RCFILE})
|
||||
|
||||
if (MSVC)
|
||||
install (FILES ${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bind/${PROJECT_NAME}.pdb
|
||||
CONFIGURATIONS Debug
|
||||
install (FILES ${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bin\${OCCT_INSTALL_BIN_LETTER}/${PROJECT_NAME}.pdb
|
||||
CONFIGURATIONS Debug RelWithDebInfo
|
||||
DESTINATION "${INSTALL_DIR_BIN}\${OCCT_INSTALL_BIN_LETTER}")
|
||||
endif()
|
||||
|
||||
|
@@ -1,9 +1,9 @@
|
||||
# script for each OCCT tool toolkit
|
||||
|
||||
# Qt dependencies
|
||||
OCCT_INCLUDE_CMAKE_FILE (adm/cmake/qt5_macro)
|
||||
OCCT_INCLUDE_CMAKE_FILE (adm/cmake/qt_macro)
|
||||
|
||||
FIND_QT5_PACKAGE(PROJECT_LIBRARIES_DEBUG PROJECT_LIBRARIES_RELEASE PROJECT_INCLUDES)
|
||||
FIND_QT_PACKAGE(PROJECT_LIBRARIES_DEBUG PROJECT_LIBRARIES_RELEASE PROJECT_INCLUDES)
|
||||
include_directories("${PROJECT_INCLUDES}"
|
||||
"${CMAKE_BINARY_DIR}/${INSTALL_DIR_INCLUDE}/tools")
|
||||
|
||||
@@ -183,8 +183,8 @@ else()
|
||||
add_library (${PROJECT_NAME} ${USED_SRCFILES} ${USED_INCFILES} ${USED_RCFILE} ${RCC_FILES})
|
||||
|
||||
if (MSVC)
|
||||
install (FILES ${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bind/${PROJECT_NAME}.pdb
|
||||
CONFIGURATIONS Debug
|
||||
install (FILES ${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bin\${OCCT_INSTALL_BIN_LETTER}/${PROJECT_NAME}.pdb
|
||||
CONFIGURATIONS Debug RelWithDebInfo
|
||||
DESTINATION "${INSTALL_DIR_BIN}\${OCCT_INSTALL_BIN_LETTER}")
|
||||
endif()
|
||||
|
||||
|
@@ -1,13 +1,10 @@
|
||||
#qt
|
||||
|
||||
#looking for 3RDPARTY_QT_DIR variable used later in qt5_macro.cmake
|
||||
if (${USE_QT4})
|
||||
SET(CSF_QtCore "QtCore")
|
||||
THIRDPARTY_PRODUCT("QT" "" "CSF_QtCore" "d")
|
||||
else()
|
||||
SET(CSF_Qt5Core "Qt5Core")
|
||||
THIRDPARTY_PRODUCT("QT" "" "CSF_Qt5Core" "d")
|
||||
endif()
|
||||
#looking for 3RDPARTY_QT_DIR variable used later in qt_macro.cmake
|
||||
SET(CSF_QtCore "QtCore")
|
||||
THIRDPARTY_PRODUCT("QT" "" "CSF_QtCore" "d")
|
||||
|
||||
list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_QT_DIR}/bin")
|
||||
|
||||
list (REMOVE_ITEM 3RDPARTY_NOT_INCLUDED "3RDPARTY_QT_INCLUDE_DIR")
|
||||
list (REMOVE_ITEM 3RDPARTY_NOT_INCLUDED "3RDPARTY_QT_LIBRARY_DIR")
|
||||
@@ -20,3 +17,4 @@ UNSET (${3RDPARTY_QT_LIBRARY} CACHE)
|
||||
UNSET (${3RDPARTY_QT_LIBRARY_DIR} CACHE)
|
||||
|
||||
set (USED_3RDPARTY_QT_DIR "${3RDPARTY_QT_DIR}")
|
||||
message (STATUS "Info: Qt is used from folder: ${3RDPARTY_QT_DIR}")
|
@@ -1,6 +1,6 @@
|
||||
#qt
|
||||
|
||||
macro (FIND_QT5_PACKAGE PROJECT_LIBRARIES_DEBUG PROJECT_LIBRARIES_RELEASE PROJECT_INCLUDES)
|
||||
macro (FIND_QT_PACKAGE PROJECT_LIBRARIES_DEBUG PROJECT_LIBRARIES_RELEASE PROJECT_INCLUDES)
|
||||
|
||||
if ("${3RDPARTY_QT_DIR}" STREQUAL "")
|
||||
message (FATAL_ERROR "Empty Qt dir")
|
||||
@@ -9,12 +9,22 @@ macro (FIND_QT5_PACKAGE PROJECT_LIBRARIES_DEBUG PROJECT_LIBRARIES_RELEASE PROJEC
|
||||
# Now set CMAKE_PREFIX_PATH to point to local Qt installation.
|
||||
# Without this setting find_package() will not work
|
||||
set(CMAKE_PREFIX_PATH ${3RDPARTY_QT_DIR})
|
||||
if (USE_QT4)
|
||||
# Now we can apply standard CMake finder for Qt. We do this mostly
|
||||
# to have qt5_wrap_cpp() function available
|
||||
find_package(Qt4)
|
||||
#message (STATUS "Qt cmake configuration at directory ${Qt4DIR}")
|
||||
|
||||
# Now we can apply standard CMake finder for Qt5. We do this mostly
|
||||
# to have qt5_wrap_cpp() function available
|
||||
find_package(Qt5 QUIET COMPONENTS Widgets PATHS ${3RDPARTY_QT_DIR} NO_DEFAULT_PATH)
|
||||
if (${Qt5_FOUND})
|
||||
#message (STATUS "Qt5 cmake configuration")
|
||||
|
||||
set(PROJECT_INCLUDES "${Qt5Widgets_INCLUDE_DIRS}")
|
||||
set(PROJECT_LIBRARIES_DEBUG "${Qt5Widgets_LIBRARIES}")
|
||||
set(PROJECT_LIBRARIES_RELEASE "${Qt5Widgets_LIBRARIES}")
|
||||
else()
|
||||
# Now we can apply standard CMake finder for Qt. We do this mostly
|
||||
# to have qt4_wrap_cpp() function available
|
||||
find_package(Qt4)
|
||||
|
||||
#message (STATUS "Qt4 cmake configuration")
|
||||
set(PROJECT_INCLUDES ${QT_INCLUDES})
|
||||
if (WIN32)
|
||||
set(PROJECT_LIBRARIES_DEBUG "${3RDPARTY_QT_DIR}/lib/QtCored4.lib;${3RDPARTY_QT_DIR}/lib/QtGuid4.lib")
|
||||
@@ -23,29 +33,21 @@ macro (FIND_QT5_PACKAGE PROJECT_LIBRARIES_DEBUG PROJECT_LIBRARIES_RELEASE PROJEC
|
||||
set(PROJECT_LIBRARIES_DEBUG "${3RDPARTY_QT_DIR}/lib/libQtCore.so;${3RDPARTY_QT_DIR}/lib/libQtGui.so")
|
||||
set(PROJECT_LIBRARIES_RELEASE "${3RDPARTY_QT_DIR}/lib/libQtCore.so;${3RDPARTY_QT_DIR}/lib/libQtGui.so")
|
||||
endif(WIN32)
|
||||
else()
|
||||
# Now we can apply standard CMake finder for Qt4. We do this mostly
|
||||
# to have qt5_wrap_cpp() function available
|
||||
find_package(Qt5 REQUIRED COMPONENTS Widgets)
|
||||
#message (STATUS "Qt cmake configuration at directory ${Qt5DIR}")
|
||||
|
||||
set(PROJECT_INCLUDES "${Qt5Widgets_INCLUDE_DIRS}")
|
||||
set(PROJECT_LIBRARIES_DEBUG "${Qt5Widgets_LIBRARIES}")
|
||||
set(PROJECT_LIBRARIES_RELEASE "${Qt5Widgets_LIBRARIES}")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
|
||||
macro (FIND_AND_WRAP_MOC_FILES SOURCE_FILES)
|
||||
|
||||
SET(CMAKE_AUTOMOC ON)
|
||||
|
||||
foreach (FILE ${SOURCE_FILES})
|
||||
set (src_files ${src_files} ${FILE})
|
||||
unset (MOC_FILE)
|
||||
if (USE_QT4)
|
||||
qt4_wrap_cpp(MOC_FILE ${FILE})
|
||||
else()
|
||||
if (${Qt5_FOUND})
|
||||
qt5_wrap_cpp(MOC_FILE ${FILE})
|
||||
else()
|
||||
qt4_wrap_cpp(MOC_FILE ${FILE})
|
||||
endif()
|
||||
#message (STATUS "... Info: next MOC file ${MOC_FILE}")
|
||||
|
||||
@@ -55,14 +57,14 @@ endmacro()
|
||||
|
||||
macro (FIND_AND_WRAP_RESOURCE_FILE RESOURCE_FILE_NAME RCC_FILES)
|
||||
if(EXISTS "${RESOURCE_FILE_NAME}")
|
||||
if (USE_QT4)
|
||||
if (${Qt5_FOUND})
|
||||
qt5_add_resources(RCC_FILES "${RESOURCE_FILE_NAME}")
|
||||
else()
|
||||
qt4_add_resources(RCC_FILES "${RESOURCE_FILE_NAME}")
|
||||
# suppress some GCC warnings coming from source files generated from .qrc resources
|
||||
if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-variable")
|
||||
endif()
|
||||
else()
|
||||
qt5_add_resources(RCC_FILES "${RESOURCE_FILE_NAME}")
|
||||
endif()
|
||||
endif()
|
||||
endmacro()
|
@@ -122,6 +122,13 @@ set (BUILD_MODULE_MfcSamples_DESCR
|
||||
These samples show some possibilities of using OCCT and they can be executed
|
||||
with script samples.bat from the installation directory (INSTALL_DIR)")
|
||||
|
||||
set (BUILD_Inspector_DESCR
|
||||
"Indicates whether OCCT inspector should be built together with OCCT.
|
||||
This inspector provides functionality to interactively inspect low-level content
|
||||
of the OCAF data model, OCCT viewer, etc. have been introduced in OCCT.
|
||||
It can be executed with script inspector.bat from the installation directory (INSTALL_DIR) or
|
||||
using 'tinspector' command in DRAW interpretator")
|
||||
|
||||
set (BUILD_MODULE_UwpSample_DESCR
|
||||
"Indicates whether OCCT UWP sample should be built together with OCCT.")
|
||||
|
||||
@@ -172,11 +179,6 @@ set (USE_GLX_DESCR "Indicates whether X11 OpenGl on OSX is used or not")
|
||||
|
||||
set (USE_D3D_DESCR "Indicates whether optional Direct3D wrapper in OCCT visualization module should be build or not")
|
||||
|
||||
set (BUILD_QT_TOOLS_DESCR "Indicates whether OCCT tools should be build or not")
|
||||
|
||||
set (USE_QT_TOOLS_DESCR "Indicates whether OCCT tools should be used or not
|
||||
The tools will be searched in third-party directory or may be set manually")
|
||||
|
||||
macro (BUILD_MODULE MODULE_NAME)
|
||||
set (ENABLE_MODULE TRUE)
|
||||
set (BUILD_MODULE_${MODULE_NAME} ${ENABLE_MODULE} CACHE BOOL "${BUILD_MODULE_${MODULE_NAME}_DESCR}")
|
||||
|
@@ -26,7 +26,7 @@ set path [file normalize .]
|
||||
set THE_CASROOT ""
|
||||
set fBranch ""
|
||||
if { [info exists ::env(CASROOT)] } {
|
||||
set THE_CASROOT "$::env(CASROOT)"
|
||||
set THE_CASROOT [file normalize "$::env(CASROOT)"]
|
||||
}
|
||||
|
||||
proc _get_options { platform type branch } {
|
||||
@@ -344,6 +344,22 @@ proc genproj {theFormat args} {
|
||||
genAllResources
|
||||
}
|
||||
|
||||
# copy file providing warning if the target file exists and has
|
||||
# different date or size; if it is newer than source, save it as .bak
|
||||
proc copy_with_warning {from to} {
|
||||
if { [file exists "$to"] &&
|
||||
([file size "$to"] != [file size "$from"] ||
|
||||
[file mtime "$to"] != [file mtime "$from"]) } {
|
||||
puts "Warning: file $to is updated (copied from $from)!"
|
||||
if { [file mtime $to] > [file mtime $from] } {
|
||||
puts "Info: old content of file $to is saved in ${to}.bak"
|
||||
file copy -force -- "$to" "${to}.bak"
|
||||
}
|
||||
}
|
||||
|
||||
file copy -force -- "$from" "$to"
|
||||
}
|
||||
|
||||
proc genprojbat {theFormat thePlatform} {
|
||||
set aTargetPlatformExt sh
|
||||
if { $thePlatform == "wnt" || $thePlatform == "uwp" } {
|
||||
@@ -369,11 +385,11 @@ proc genprojbat {theFormat thePlatform} {
|
||||
close $anEnvFile
|
||||
}
|
||||
|
||||
file copy -force -- "$::THE_CASROOT/adm/templates/draw.${aTargetPlatformExt}" "$::path/draw.${aTargetPlatformExt}"
|
||||
copy_with_warning "$::THE_CASROOT/adm/templates/draw.${aTargetPlatformExt}" "$::path/draw.${aTargetPlatformExt}"
|
||||
}
|
||||
|
||||
if { [regexp {^vc} $theFormat] } {
|
||||
file copy -force -- "$::THE_CASROOT/adm/templates/msvc.bat" "$::path/msvc.bat"
|
||||
copy_with_warning "$::THE_CASROOT/adm/templates/msvc.bat" "$::path/msvc.bat"
|
||||
} else {
|
||||
switch -exact -- "$theFormat" {
|
||||
"cbp" {
|
||||
@@ -1345,6 +1361,7 @@ proc osutils:csfList { theOS theCsfLibsMap theCsfFrmsMap } {
|
||||
# tbb headers define different pragma lib depending on debug/release
|
||||
set aLibsMap(CSF_TBB) ""
|
||||
} else {
|
||||
set aLibsMap(CSF_dl) "dl"
|
||||
if { "$theOS" == "mac" } {
|
||||
set aLibsMap(CSF_objc) "objc"
|
||||
set aFrmsMap(CSF_Appkit) "Appkit"
|
||||
|
31
adm/svgdiff.bat
Normal file
@@ -0,0 +1,31 @@
|
||||
@echo off
|
||||
rem Script to diff SVG images visually (as PNG) in TortoiseGit client
|
||||
rem
|
||||
rem It assumes that Inkscape and TortoiseGitIDiff executables are either
|
||||
rem installed in default locations in Program Files, or are accessible by PATH
|
||||
rem
|
||||
rem To use this script for diffing SVG images, open TortoiseGit settings
|
||||
rem (Start -> Programs -> TortoiseGit -> Settings), select "Diff Viewer",
|
||||
rem click button "Advanced..." on the right tab and then add new record:
|
||||
rem - Extension: .svg
|
||||
rem - External program: <path to OCCT>\adm\svgdiff.bat %base %mine %bname %yname
|
||||
|
||||
rem Remove double quotes around arguments
|
||||
set "f1=%1"
|
||||
set "f2=%2"
|
||||
set "f1=%f1:~1,-1%.png"
|
||||
set "f2=%f2:~1,-1%.png"
|
||||
|
||||
rem Check if Inkscape and TortoiseGit are installed in default locations in
|
||||
rem ProgramFiles; if not, assume they still may be accessible by PATH
|
||||
set "inkscape=%ProgramFiles%\Inkscape\inkscape.exe"
|
||||
if not exist "%inkscape%" set inkscape=inkscape.exe
|
||||
set "tgitidiff=%ProgramFiles%\TortoiseGit\bin\TortoiseGitIDiff.exe"
|
||||
if not exist "%tgitidiff%" set tgitidiff=TortoiseGitIDiff.exe
|
||||
|
||||
rem Convert SVG to PNG using Inkscape
|
||||
"%inkscape%" -e "%f1%" %1
|
||||
"%inkscape%" -e "%f2%" %2
|
||||
|
||||
rem Call Tortoise differ
|
||||
"%tgitidiff%" /left:"%f1%" /right:"%f2%" /lefttitle:%3 /righttitle:%4
|
30
adm/templates/TInspectorEXE.vcxproj.user.in
Normal file
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|@X_COMPILER_BITNESS@'">
|
||||
<LocalDebuggerEnvironment>CASROOT=@CMAKE_SOURCE_DIR@
|
||||
CSF_OCCTDataPath=@CMAKE_SOURCE_DIR@/data
|
||||
QTDIR=@3RDPARTY_QT_DIR@
|
||||
PATH=@3RDPARTY_DLL_DIRS_FOR_PATH@;%PATH%
|
||||
</LocalDebuggerEnvironment>
|
||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||
<LocalDebuggerWorkingDirectory>@CMAKE_BINARY_DIR@</LocalDebuggerWorkingDirectory>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|@X_COMPILER_BITNESS@'">
|
||||
<LocalDebuggerEnvironment>CASROOT=@CMAKE_SOURCE_DIR@
|
||||
CSF_OCCTDataPath=@CMAKE_SOURCE_DIR@/data
|
||||
QTDIR=@3RDPARTY_QT_DIR@
|
||||
PATH=@3RDPARTY_DLL_DIRS_FOR_PATH@;%PATH%
|
||||
</LocalDebuggerEnvironment>
|
||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||
<LocalDebuggerWorkingDirectory>@CMAKE_BINARY_DIR@</LocalDebuggerWorkingDirectory>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@X_COMPILER_BITNESS@'">
|
||||
<LocalDebuggerEnvironment>CASROOT=@CMAKE_SOURCE_DIR@
|
||||
CSF_OCCTDataPath=@CMAKE_SOURCE_DIR@/data
|
||||
QTDIR=@3RDPARTY_QT_DIR@
|
||||
PATH=@3RDPARTY_DLL_DIRS_FOR_PATH@;%PATH%
|
||||
</LocalDebuggerEnvironment>
|
||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||
<LocalDebuggerWorkingDirectory>@CMAKE_BINARY_DIR@</LocalDebuggerWorkingDirectory>
|
||||
</PropertyGroup>
|
||||
</Project>
|
@@ -1,7 +0,0 @@
|
||||
@echo off
|
||||
|
||||
rem Setup environment and launch TInspector
|
||||
call "%~dp0env.bat" %1 %2 %3
|
||||
|
||||
TInspectorEXE.exe --dfbrowser
|
||||
|
17
adm/templates/inspector.bat
Normal file
@@ -0,0 +1,17 @@
|
||||
@echo off
|
||||
|
||||
rem Use:
|
||||
rem - first argument specifies version of Visual Studio (vc8, vc9, or vc10),
|
||||
rem - second argument specifies architecture (win32 or win64),
|
||||
rem - third argument specifies build mode (Debug or Release)
|
||||
rem - fourth and next arguments specify loaded tool plugins
|
||||
rem The arguments are: dfbrowser shapeview vinspector
|
||||
rem If there are no tool plugins are specified, all plugins will be loaded
|
||||
rem Default options are:
|
||||
rem vc8 win32 Release
|
||||
|
||||
rem Setup environment and launch TInspector
|
||||
call "%~dp0env.bat" %1 %2 %3
|
||||
|
||||
TInspectorEXE.exe %*
|
||||
|
@@ -6,4 +6,4 @@ aScriptPath=${BASH_SOURCE%/*}; if [ -d "${aScriptPath}" ]; then cd "$aScriptPath
|
||||
source "${aScriptPath}/env.sh" "$1"
|
||||
|
||||
cd ${aCurrentPath}
|
||||
TInspectorEXE --dfbrowser
|
||||
TInspectorEXE
|
@@ -56,6 +56,6 @@ To build all toolkits, click **Build->Build workspace** in the menu bar.
|
||||
|
||||
To start *DRAWEXE*, which has been built with **Code::Blocks** on Mac OS X, run the script
|
||||
~~~~~
|
||||
./draw_cbp.sh cbp [d]
|
||||
./draw.sh cbp [d]
|
||||
~~~~~
|
||||
Option *d* is used if OCCT has been built in **Debug** mode.
|
||||
|
@@ -204,7 +204,7 @@ In a general case, the following elements should be present:
|
||||
Example:
|
||||
|
||||
> *0026330: BRepOffsetAPI_ThruSections creates invalid shape.*
|
||||
>
|
||||
>
|
||||
> *Methods BRep_Tool::CurveOnSurface() and BRepCheck_Edge::InContext() now properly handle parametric range on a 3D curve when it is used to generate a p-curve dynamically (on a planar surface) and both the surface and the 3D curve have non-null locations.*
|
||||
|
||||
Provide sufficient context so that potential user of the affected functionality can understand what has been changed and how the algorithm works now.
|
||||
|
@@ -352,6 +352,21 @@ Smaller code blocks can be inserted by wrapping with tags <i>\@code</i> and <i>\
|
||||
|
||||
Verbatim content (same as code but without syntax highlighting) can be inserted by wrapping with tags <i>\@verbatim</i> and <i>\@endverbatim</i>.
|
||||
|
||||
@subsection OCCT_DM_SECTION_A_5a Quotes
|
||||
|
||||
Text quoted from other sources can be indented using ">" tag. For example:
|
||||
|
||||
@verbatim
|
||||
> [Regression in 6.9.0] *IGES - Export of a reversed face leads to wrong data*
|
||||
@endverbatim
|
||||
|
||||
will produce
|
||||
|
||||
> [Regression in 6.9.0] *IGES - Export of a reversed face leads to wrong data*
|
||||
|
||||
Note that this tag should prefix each line of the quoted text.
|
||||
Empty lines in the quoted text, if any, should not have trailing spaces after the ">" (lines with trailing spaces will break the quote block).
|
||||
|
||||
@subsection OCCT_DM_SECTION_A_6 References
|
||||
|
||||
To insert a reference to a website, it is sufficient to write an URL.
|
||||
|
@@ -82,7 +82,7 @@ The official repository contains:
|
||||
|
||||
@subsection occt_gitguide_1_5 Version of Git
|
||||
|
||||
The repository is tested to work with Git 1.7.6 to 1.7.9.
|
||||
The repository is tested to work with Git 1.7.6 and above.
|
||||
Please do not use versions below 1.7.1 as they are known to cause troubles.
|
||||
|
||||
@section occt_gitguide_2 Installing Tools for Work with Git
|
||||
@@ -139,6 +139,13 @@ The official repository contains:
|
||||
|
||||
@figure{OCCT_GitGuide_V2_image006.png,"",320}
|
||||
|
||||
Optionally, you can set up TortoiseGit to use visual diff utility for SVG images used in OCCT documentation.
|
||||
For that, click on item "Diff Viewer" in the Settings dialog, then click button "Advanced..." on the right tab add new record with the following parameters:
|
||||
- Extension: <code>.svg</code>
|
||||
- External program: <code><path_to_OCCT>\\adm\\svgdiff.bat %%base %%mine %%bname %%yname</code>
|
||||
|
||||
@figure{OCCT_GitGuide_V2_svgdiff.png,"",709}
|
||||
|
||||
@subsection occt_gitguide_2_2 Linux platform
|
||||
|
||||
We assume that Linux users have Git already installed and available in the *PATH*.
|
||||
|
BIN
dox/dev_guides/git_guide/images/OCCT_GitGuide_V2_svgdiff.png
Normal file
After Width: | Height: | Size: 54 KiB |
@@ -324,6 +324,15 @@ The methods *V3d_View::Convert* and *V3d_View::ConvertWithProj()* have ceased to
|
||||
|
||||
Porting of user applications from an earlier OCCT version to version 7.0.0 requires taking into account the following major changes.
|
||||
|
||||
Building OCCT now requires compiler supporting some C++11 features.
|
||||
The supported compilers are:
|
||||
- MSVC: version 10 (Visual Studio 2010) or later
|
||||
- GCC: version 4.3 or later
|
||||
- CLang: version 3.6 or later
|
||||
- ICC: version XE 2013 SP 1 or later
|
||||
|
||||
When compiling code that uses OCCT with GCC and CLang compilers, it is necessary to use compiler option -std=c++0x (or its siblings) to enable C++11 features.
|
||||
|
||||
@subsection upgrade_700_persist Removal of legacy persistence
|
||||
|
||||
Legacy persistence for shapes and OCAF data based on *Storage_Schema* (toolkits *TKPShape*, *TKPLCAF*, *TKPCAF*, *TKShapeShcema, TLStdLSchema, TKStdSchema*, and *TKXCAFSchema*) has been removed in OCCT 7.0.0.
|
||||
@@ -1195,6 +1204,9 @@ Management of highlight attributes has been revised and might require modificati
|
||||
it is now possible to customize default highlight attributes like *Display Mode* and *ZLayer*, which previously could be defined only on Object level.
|
||||
* Properties *Prs3d_Drawer::HighlightStyle()* and *Prs3d_Drawer::SelectionStyle()* have been removed.
|
||||
Instead, *AIS_InteractiveObject* now defines *DynamicHilightAttributes()* for dynamic highlighting in addition to *HilightAttributes()* used for highlighting in selected state.
|
||||
Note that *AIS_InteractiveObject::HilightAttributes()* and *AIS_InteractiveObject::DynamicHilightAttributes()* override highlighting properties for both - entire object and for part coming from decomposition.
|
||||
This includes Z-layer settings, which will be the same when overriding properties through AIS_InteractiveObject, while *AIS_InteractiveContext::HighlightStyle()* allows customizing properties for local and global selection independently
|
||||
(with Graphic3d_ZLayerId_Top used for dynamic highlighting of entire object and Graphic3d_ZLayerId_Topmost for dynamic highlighting of object part by default).
|
||||
* The following protected fields have been removed from class *AIS_InteractiveObject*:
|
||||
- *myOwnColor*, replaced by *myDrawer->Color()*
|
||||
- *myTransparency*, replaced by *myDrawer->Transparency()*
|
||||
@@ -1410,3 +1422,10 @@ The history of the changing of the initial shape was corrected:
|
||||
@subsection upgrade_720_Change_In_RWStl Changes in STL Reader / Writer
|
||||
|
||||
Class RWStl now uses class Poly_Triangulation for storing triangular mesh instead of StlMesh data classes; the latter have been removed.
|
||||
|
||||
@subsection upgrade_720_New_Error_Warning_system_in_BOA Refactoring of the Error/Warning reporting system in Boolean Component
|
||||
|
||||
The Error/Warning reporting system of the algorithms in Boolean Component (in all BOPAlgo_* and BRepAlgoAPI_* algorithms) has been refactored.
|
||||
The methods returning the status of errors and warnings of the algorithms (ErrorStatus() and WarningStatus()) have been removed.
|
||||
Instead use methods HasErrors() and HasWarnings() to check for presence of errors and warnings, respectively.
|
||||
The full list of errors and warnings, with associated data such as problematic sub-shapes, can be obtained by method GetReport().
|
||||
|
@@ -540,6 +540,23 @@ The structure *BOPDS_FaceInfo* has the following contents.
|
||||
|
||||
The objects of type *BOPDS_FaceInfo* are stored in one container of array type. The array allows getting the access to the information by index. This index (if exists) is stored in the field *myReference*.
|
||||
|
||||
@section occt_algorithms_root_classes Root Classes
|
||||
|
||||
@subsection occt_algorithms_root_classes_1 Class BOPAlgo_Options
|
||||
The class *BOPAlgo_Options* provides the following options for the algorithms:
|
||||
* Set the appropriate memory allocator;
|
||||
* Check the presence of the Errors and Warnings;
|
||||
* Turn on/off the parallel processing;
|
||||
* Set the additional tolerance for the operation;
|
||||
* Break the operations by user request.
|
||||
|
||||
@subsection occt_algorithms_root_classes_2 Class BOPAlgo_Algo
|
||||
|
||||
The class *BOPAlgo_Algo* provides the base interface for all algorithms:
|
||||
* Perform the operation;
|
||||
* Check the input data;
|
||||
* Check the result.
|
||||
|
||||
@section occt_algorithms_5 Intersection Part
|
||||
|
||||
Intersection Part (IP) is used to
|
||||
@@ -553,17 +570,7 @@ Intersection Part (IP) is used to
|
||||
|
||||
IP is implemented in the class *BOPAlgo_PaveFiller*.
|
||||
|
||||
@figure{/user_guides/boolean_operations/images/operations_image064.svg,"Diagram for Class BOPAlgo_PaveFiller",230}
|
||||
|
||||
@subsection occt_algorithms_5_1a Class BOPAlgo_Algo
|
||||
The class *BOPAlgo_Algo* provides the base interface for all algorithms to provide the possibility to:
|
||||
* Get Error status;
|
||||
* Get Warning status;
|
||||
* Turn on/off the parallel processing
|
||||
* Break the operations by user request
|
||||
* Check data;
|
||||
* Check the result;
|
||||
* Set the appropriate memory allocator.
|
||||
@figure{/user_guides/boolean_operations/images/operations_image064.png,"Diagram for Class BOPAlgo_PaveFiller",230}
|
||||
|
||||
The description provided in the next paragraphs is coherent with the implementation of the method *BOPAlgo_PaveFiller::Perform()*.
|
||||
|
||||
@@ -745,8 +752,11 @@ BP is implemented in the following classes:
|
||||
* *BOPAlgo_Builder* -- for the General Fuse operator (GFA).
|
||||
* *BOPAlgo_BOP* -- for the Boolean Operation operator (BOA).
|
||||
* *BOPAlgo_Section* -- for the Section operator (SA).
|
||||
* *BOPAlgo_MakerVolume* -- for the Volume Maker operator.
|
||||
* *BOPAlgo_Splitter* -- for the Splitter operator.
|
||||
* *BOPAlgo_CellsBuilder* -- for the Cells Builder operator.
|
||||
|
||||
@figure{/user_guides/boolean_operations/images/operations_image020.svg,"Diagram for BP classes",300}
|
||||
@figure{/user_guides/boolean_operations/images/operations_image020.png,"Diagram for BP classes",300}
|
||||
|
||||
The class *BOPAlgo_BuilderShape* provides the interface for algorithms that have:
|
||||
* A Shape as the result;
|
||||
@@ -1088,7 +1098,7 @@ aSplitter.SetNonDestructive(bSafeMode);
|
||||
aSplitter.SetGlue(aGlue);
|
||||
//
|
||||
aSplitter.Perform(); //perform the operation
|
||||
if (aSplitter.ErrorStatus()) { //check error status
|
||||
if (aSplitter.HasErrors()) { //check error status
|
||||
return;
|
||||
}
|
||||
//
|
||||
@@ -2061,7 +2071,7 @@ aMV.SetGlue(aGlue);
|
||||
aMV.SetAvoidInternalShapes(bAvoidInternalShapes);
|
||||
//
|
||||
aMV.Perform(); //perform the operation
|
||||
if (aMV.ErrorStatus()) { //check error status
|
||||
if (aMV.HasErrors()) { //check error status
|
||||
return;
|
||||
}
|
||||
//
|
||||
@@ -2151,7 +2161,7 @@ aCBuilder.SetNonDestructive(bSafeMode);
|
||||
aCBuilder.SetGlue(aGlue);
|
||||
//
|
||||
aCBuilder.Perform(); // build splits of all arguments (GF)
|
||||
if (aCBuilder.ErrorStatus()) { // check error status
|
||||
if (aCBuilder.HasErrors()) { // check error status
|
||||
return;
|
||||
}
|
||||
//
|
||||
@@ -2804,7 +2814,6 @@ The following example illustrates how to use General Fuse operator:
|
||||
#include <BRepAlgoAPI_BuilderAlgo.hxx>
|
||||
{…
|
||||
Standard_Boolean bRunParallel;
|
||||
Standard_Integer iErr;
|
||||
Standard_Real aFuzzyValue;
|
||||
BRepAlgoAPI_BuilderAlgo aBuilder;
|
||||
//
|
||||
@@ -2841,8 +2850,7 @@ The following example illustrates how to use General Fuse operator:
|
||||
//
|
||||
// run the algorithm
|
||||
aBuilder.Build();
|
||||
iErr=aBuilder.ErrorStatus();
|
||||
if (iErr) {
|
||||
if (aBuilder.HasErrors()) {
|
||||
// an error treatment
|
||||
return;
|
||||
}
|
||||
@@ -2945,7 +2953,7 @@ aSplitter.SetGlue(aGlueOpt);
|
||||
// run the algorithm
|
||||
aSplitter.Build();
|
||||
// check error status
|
||||
if (aSplitter.ErrorStatus()) {
|
||||
if (aSplitter.HasErrors()) {
|
||||
return;
|
||||
}
|
||||
//
|
||||
@@ -3012,7 +3020,6 @@ The following example illustrates how to use Common operation:
|
||||
#include < BRepAlgoAPI_Common.hxx>
|
||||
{…
|
||||
Standard_Boolean bRunParallel;
|
||||
Standard_Integer iErr;
|
||||
Standard_Real aFuzzyValue;
|
||||
BRepAlgoAPI_Common aBuilder;
|
||||
|
||||
@@ -3052,8 +3059,7 @@ The following example illustrates how to use Common operation:
|
||||
//
|
||||
// run the algorithm
|
||||
aBuilder.Build();
|
||||
iErr=aBuilder.ErrorStatus();
|
||||
if (iErr) {
|
||||
if (aBuilder.HasErrors()) {
|
||||
// an error treatment
|
||||
return;
|
||||
}
|
||||
@@ -3119,7 +3125,6 @@ The following example illustrates how to use Fuse operation:
|
||||
#include < BRepAlgoAPI_Fuse.hxx>
|
||||
{…
|
||||
Standard_Boolean bRunParallel;
|
||||
Standard_Integer iErr;
|
||||
Standard_Real aFuzzyValue;
|
||||
BRepAlgoAPI_Fuse aBuilder;
|
||||
|
||||
@@ -3159,8 +3164,7 @@ The following example illustrates how to use Fuse operation:
|
||||
//
|
||||
// run the algorithm
|
||||
aBuilder.Build();
|
||||
iErr=aBuilder.ErrorStatus();
|
||||
if (iErr) {
|
||||
if (aBuilder.HasErrors()) {
|
||||
// an error treatment
|
||||
return;
|
||||
}
|
||||
@@ -3226,7 +3230,6 @@ The following example illustrates how to use Cut operation:
|
||||
#include < BRepAlgoAPI_Cut.hxx>
|
||||
{…
|
||||
Standard_Boolean bRunParallel;
|
||||
Standard_Integer iErr;
|
||||
Standard_Real aFuzzyValue;
|
||||
BRepAlgoAPI_Cut aBuilder;
|
||||
|
||||
@@ -3266,8 +3269,7 @@ The following example illustrates how to use Cut operation:
|
||||
//
|
||||
// run the algorithm
|
||||
aBuilder.Build();
|
||||
iErr=aBuilder.ErrorStatus();
|
||||
if (iErr) {
|
||||
if (aBuilder.HasErrors()) {
|
||||
// an error treatment
|
||||
return;
|
||||
}
|
||||
@@ -3334,7 +3336,6 @@ The following example illustrates how to use Section operation:
|
||||
#include < BRepAlgoAPI_Section.hxx>
|
||||
{…
|
||||
Standard_Boolean bRunParallel;
|
||||
Standard_Integer iErr;
|
||||
Standard_Real aFuzzyValue;
|
||||
BRepAlgoAPI_Section aBuilder;
|
||||
|
||||
@@ -3374,8 +3375,7 @@ The following example illustrates how to use Section operation:
|
||||
//
|
||||
// run the algorithm
|
||||
aBuilder.Build();
|
||||
iErr=aBuilder.ErrorStatus();
|
||||
if (iErr) {
|
||||
if (aBuilder.HasErrors()) {
|
||||
// an error treatment
|
||||
return;
|
||||
}
|
||||
|
After Width: | Height: | Size: 11 KiB |
@@ -1,296 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="488.59842"
|
||||
height="239.24245"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="operations_image020.svg">
|
||||
<defs
|
||||
id="defs4">
|
||||
<marker
|
||||
inkscape:stockid="Arrow2Lstart"
|
||||
orient="auto"
|
||||
refY="0.0"
|
||||
refX="0.0"
|
||||
id="Arrow2Lstart"
|
||||
style="overflow:visible">
|
||||
<path
|
||||
id="path7116"
|
||||
style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
transform="scale(1.1) translate(1,0)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="Arrow2Mend"
|
||||
orient="auto"
|
||||
refY="0.0"
|
||||
refX="0.0"
|
||||
id="Arrow2Mend"
|
||||
style="overflow:visible;">
|
||||
<path
|
||||
id="path7125"
|
||||
style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
transform="scale(0.6) rotate(180) translate(0,0)" />
|
||||
</marker>
|
||||
<clipPath
|
||||
id="clipEmfPath1"
|
||||
clipPathUnits="userSpaceOnUse">
|
||||
<rect
|
||||
id="rect2990"
|
||||
height="19.040462"
|
||||
width="177.28004"
|
||||
y="73.463196"
|
||||
x="191.21669" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
id="clipEmfPath2"
|
||||
clipPathUnits="userSpaceOnUse">
|
||||
<rect
|
||||
id="rect2993"
|
||||
height="19.040462"
|
||||
width="176.83047"
|
||||
y="12.743616"
|
||||
x="192.41554" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
id="clipEmfPath3"
|
||||
clipPathUnits="userSpaceOnUse">
|
||||
<rect
|
||||
id="rect2996"
|
||||
height="18.890537"
|
||||
width="177.28004"
|
||||
y="133.13332"
|
||||
x="191.21669" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
id="clipEmfPath4"
|
||||
clipPathUnits="userSpaceOnUse">
|
||||
<rect
|
||||
id="rect2999"
|
||||
height="18.890537"
|
||||
width="149.10706"
|
||||
y="204.34763"
|
||||
x="130.52487" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
id="clipEmfPath5"
|
||||
clipPathUnits="userSpaceOnUse">
|
||||
<rect
|
||||
id="rect3002"
|
||||
height="18.890537"
|
||||
width="148.9572"
|
||||
y="204.34763"
|
||||
x="292.81927" />
|
||||
</clipPath>
|
||||
<marker
|
||||
inkscape:stockid="Arrow2Lstart"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="Arrow2Lstart-3"
|
||||
style="overflow:visible">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path7116-4"
|
||||
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
|
||||
transform="matrix(1.1,0,0,1.1,1.1,0)" />
|
||||
</marker>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.1979709"
|
||||
inkscape:cx="318.63273"
|
||||
inkscape:cy="137.81983"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="g3004"
|
||||
showgrid="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:window-width="1670"
|
||||
inkscape:window-height="723"
|
||||
inkscape:window-x="42"
|
||||
inkscape:window-y="158"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-153.88697,-412.74096)">
|
||||
<g
|
||||
id="g3004"
|
||||
transform="translate(153.4374,405.50687)">
|
||||
<text
|
||||
id="text3006"
|
||||
style="font-size:13.78678322px;font-style:normal;font-weight:normal;text-align:start;text-anchor:start;fill:#000000;font-family:Calibri"
|
||||
y="246.47653"
|
||||
x="0.44956902"
|
||||
xml:space="preserve"> </text>
|
||||
<path
|
||||
id="path3008"
|
||||
d="m 279.61319,66.547912 -0.0468,-23.360172 c -0.009,-0.346702 0.27162,-0.627811 0.61816,-0.627811 0.34654,0 0.62752,0.281109 0.62752,0.61844 l 0.0468,23.369543 c 0,0.337331 -0.28098,0.61844 -0.61815,0.61844 -0.34655,0.0094 -0.62753,-0.271738 -0.62753,-0.61844 z m -3.17508,-22.104551 3.73704,-7.505615 3.75578,7.486874 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.14985634px;stroke-linecap:butt;stroke-linejoin:bevel;stroke-opacity:1;stroke-dasharray:none"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3010"
|
||||
d="m 281.04619,126.53661 -0.59005,-22.61992 c 0,-0.3467 0.27161,-0.62781 0.60879,-0.63718 0.34654,-0.009 0.63689,0.26237 0.64625,0.60907 l 0.5807,22.61055 c 0.009,0.3467 -0.26225,0.62781 -0.59943,0.63718 -0.34654,0.009 -0.63689,-0.26237 -0.64626,-0.5997 z m -3.67148,-21.28933 3.54973,-7.589952 3.93373,7.393172 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.14985634px;stroke-linecap:butt;stroke-linejoin:bevel;stroke-opacity:1;stroke-dasharray:none"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3016"
|
||||
d="m 190.63599,68.421973 0,28.916764 178.32904,0 0,-28.916764 -178.32904,0 z"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3018"
|
||||
d="m 190.647,68.432978 0,28.894754 186.95136,0 0,-28.894754 z"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.95861244px;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
id="text3020"
|
||||
style="font-size:13.68622589px;font-style:normal;font-weight:bold;text-align:start;text-anchor:start;fill:#000000;font-family:Courier New"
|
||||
y="84.089729"
|
||||
x="203.04033"
|
||||
xml:space="preserve"
|
||||
transform="scale(0.99270628,1.0073473)">BOPAlgo_BuilderShape</text>
|
||||
<text
|
||||
id="text3024"
|
||||
style="font-size:13.78678322px;font-style:normal;font-weight:normal;text-align:start;text-anchor:start;fill:#000000;font-family:Courier New"
|
||||
y="102.69855"
|
||||
x="283.97775"
|
||||
xml:space="preserve"> </text>
|
||||
<path
|
||||
id="path3026"
|
||||
d="m 191.75992,7.7023914 0,28.9167636 177.9544,0 0,-28.9167636 -177.9544,0 z"
|
||||
clip-path="url(#clipEmfPath1)"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3028"
|
||||
d="m 191.7698,7.7122711 0,28.8970039 185.66905,0 0,-28.8970039 z"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.95636153px;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
id="text3030"
|
||||
style="font-size:13.78678322px;font-style:normal;font-weight:bold;text-align:start;text-anchor:start;fill:#000000;font-family:Courier New"
|
||||
y="23.987984"
|
||||
x="231.37817"
|
||||
xml:space="preserve">BOPAlgo_Algo</text>
|
||||
<text
|
||||
id="text3032"
|
||||
style="font-size:13.78678322px;font-style:normal;font-weight:normal;text-align:start;text-anchor:start;fill:#000000;font-family:Courier New"
|
||||
y="23.987984"
|
||||
x="330.28336"
|
||||
xml:space="preserve"> </text>
|
||||
<path
|
||||
id="path3034"
|
||||
d="m 190.63599,128.01712 0,28.91676 178.32904,0 0,-28.91676 -178.32904,0 z"
|
||||
clip-path="url(#clipEmfPath2)"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3036"
|
||||
d="m 190.64871,128.02984 0,28.89132 188.31283,0 0,-28.89132 z"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.96203959px;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
id="text3038"
|
||||
style="font-size:13.78678322px;font-style:normal;font-weight:bold;text-align:start;text-anchor:start;fill:#000000;font-family:Courier New"
|
||||
y="144.37767"
|
||||
x="218.04097"
|
||||
xml:space="preserve">BOPAlgo_Builder</text>
|
||||
<text
|
||||
id="text3040"
|
||||
style="font-size:13.78678322px;font-style:normal;font-weight:normal;text-align:start;text-anchor:start;fill:#000000;font-family:Courier New"
|
||||
y="144.37767"
|
||||
x="341.67245"
|
||||
xml:space="preserve"> </text>
|
||||
<path
|
||||
id="path3042"
|
||||
d="m 129.94418,199.23144 0,28.91677 150.04365,0 0,-28.91677 -150.04365,0 z"
|
||||
clip-path="url(#clipEmfPath3)"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
id="text3050"
|
||||
style="font-size:13.78678322px;font-style:normal;font-weight:normal;text-align:start;text-anchor:start;fill:#000000;font-family:Courier New"
|
||||
y="233.43306"
|
||||
x="213.24557"
|
||||
xml:space="preserve"> </text>
|
||||
<path
|
||||
id="path3052"
|
||||
d="m 292.16366,199.23144 0,28.91677 150.04366,0 0,-28.91677 -150.04366,0 z"
|
||||
clip-path="url(#clipEmfPath4)"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3054"
|
||||
d="m 67.466014,185.63759 0,28.80655 188.150506,0 0,-28.80655 z"
|
||||
style="fill:none;stroke:#000000;stroke-width:1.04681468px;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
id="text3056"
|
||||
style="font-size:13.78678322px;font-style:normal;font-weight:bold;text-align:start;text-anchor:start;fill:#000000;font-family:Courier New"
|
||||
y="204.21788"
|
||||
x="124.58641"
|
||||
xml:space="preserve">BOPAlgo_BOP</text>
|
||||
<text
|
||||
id="text3058"
|
||||
style="font-size:13.78678322px;font-style:normal;font-weight:normal;text-align:start;text-anchor:start;fill:#000000;font-family:Courier New"
|
||||
y="215.592"
|
||||
x="412.70435"
|
||||
xml:space="preserve"> </text>
|
||||
<path
|
||||
id="path3054-8"
|
||||
d="m 300.37408,185.70141 0,28.80655 188.1505,0 0,-28.80655 z"
|
||||
style="fill:none;stroke:#000000;stroke-width:1.04681468px;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
id="text3056-9"
|
||||
style="font-size:13.78678322px;font-style:normal;font-weight:bold;text-align:start;text-anchor:start;fill:#000000;font-family:Courier New"
|
||||
y="203.31017"
|
||||
x="336.76245"
|
||||
xml:space="preserve">BOPAlgo_Section</text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.95747238px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow2Lstart);marker-end:none"
|
||||
d="m 267.10914,158.63892 -77.87032,26.89356"
|
||||
id="path13459"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.88220716px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow2Lstart);marker-end:none"
|
||||
d="m 316.41379,158.50756 65.91804,26.97147"
|
||||
id="path13459-4"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 2.9 KiB |
@@ -1,238 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="500.70731"
|
||||
height="102.98"
|
||||
id="svg3731"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="operations_image064.svg">
|
||||
<defs
|
||||
id="defs3733">
|
||||
<marker
|
||||
inkscape:stockid="Arrow2Mstart"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="Arrow2Mstart"
|
||||
style="overflow:visible">
|
||||
<path
|
||||
id="path4673"
|
||||
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
|
||||
transform="scale(0.6,0.6)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="Arrow1Lstart"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="Arrow1Lstart"
|
||||
style="overflow:visible">
|
||||
<path
|
||||
id="path4649"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
|
||||
transform="matrix(0.8,0,0,0.8,10,0)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<clipPath
|
||||
id="clipEmfPath1"
|
||||
clipPathUnits="userSpaceOnUse">
|
||||
<rect
|
||||
id="rect3744"
|
||||
height="157.5"
|
||||
width="566.85828"
|
||||
y="0"
|
||||
x="0" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
id="clipEmfPath2"
|
||||
clipPathUnits="userSpaceOnUse">
|
||||
<rect
|
||||
id="rect3747"
|
||||
height="15"
|
||||
width="134.10196"
|
||||
y="14.7"
|
||||
x="215.55315" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
id="clipEmfPath3"
|
||||
clipPathUnits="userSpaceOnUse">
|
||||
<rect
|
||||
id="rect3750"
|
||||
height="13.95"
|
||||
width="158.85233"
|
||||
y="118.5"
|
||||
x="53.850784" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
id="clipEmfPath4"
|
||||
clipPathUnits="userSpaceOnUse">
|
||||
<rect
|
||||
id="rect3753"
|
||||
height="15"
|
||||
width="189.90277"
|
||||
y="68.849998"
|
||||
x="185.10271" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
id="clipEmfPath5"
|
||||
clipPathUnits="userSpaceOnUse">
|
||||
<rect
|
||||
id="rect3756"
|
||||
height="13.95"
|
||||
width="180.15263"
|
||||
y="118.2"
|
||||
x="315.3046" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.7435336"
|
||||
inkscape:cx="250.35365"
|
||||
inkscape:cy="74.48907"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="g3758"
|
||||
showgrid="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:window-width="1037"
|
||||
inkscape:window-height="615"
|
||||
inkscape:window-x="38"
|
||||
inkscape:window-y="209"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata3736">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(204.63937,-395.29983)">
|
||||
<g
|
||||
id="g3758"
|
||||
transform="translate(-262.09021,339.42982)">
|
||||
<text
|
||||
id="text3760"
|
||||
style="font-size:12.45018196px;font-style:normal;font-weight:normal;text-align:start;text-anchor:start;fill:#000000;font-family:Arial"
|
||||
y="142.64999"
|
||||
x="558.15814"
|
||||
xml:space="preserve"> </text>
|
||||
<path
|
||||
id="path3762"
|
||||
d="m 214.87814,10.5 0,23.4375 135.43322,0 0,-23.4375 z"
|
||||
clip-path="url(#clipEmfPath1)"
|
||||
style="fill:none;stroke:#000000;stroke-width:1.25626838px;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
inkscape:connector-curvature="0"
|
||||
transform="translate(-1.4412873,56.78124)" />
|
||||
<text
|
||||
id="text3764"
|
||||
style="font-size:12.45018196px;font-style:normal;font-weight:bold;text-align:start;text-anchor:start;fill:#000000;font-family:Courier New"
|
||||
y="80.110596"
|
||||
x="236.44154"
|
||||
xml:space="preserve">BOPAlgo_Algo</text>
|
||||
<text
|
||||
id="text3766"
|
||||
style="font-size:12.45018196px;font-style:normal;font-weight:bold;text-align:start;text-anchor:start;fill:#000000;font-family:Courier New"
|
||||
y="25.049999"
|
||||
x="327.60477"
|
||||
xml:space="preserve"> </text>
|
||||
<path
|
||||
id="path3768"
|
||||
d="m 53.175776,114.3 0,22.37812 160.127334,0 0,-22.37812 z"
|
||||
clip-path="url(#clipEmfPath2)"
|
||||
style="fill:none;stroke:#000000;stroke-width:1.24689317px;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
id="text3772"
|
||||
style="font-size:12.45018196px;font-style:normal;font-weight:bold;text-align:start;text-anchor:start;fill:#000000;font-family:Courier New"
|
||||
y="128.85001"
|
||||
x="204.603"
|
||||
xml:space="preserve"> </text>
|
||||
<text
|
||||
id="text3774"
|
||||
style="font-size:12.45018196px;font-style:normal;font-weight:normal;text-align:start;text-anchor:start;fill:#000000;font-family:Arial"
|
||||
y="158.85001"
|
||||
x="57.45084"
|
||||
xml:space="preserve"> </text>
|
||||
<path
|
||||
id="path3776"
|
||||
d="m 280.56035,62.94375 -0.59064,-22.621875 c -0.009,-0.346875 0.26251,-0.6375 0.60939,-0.646875 0.34688,-0.0094 0.62813,0.2625 0.63751,0.609375 l 0.59063,22.63125 c 0.009,0.346875 -0.2625,0.628125 -0.60938,0.6375 -0.34688,0.0094 -0.62814,-0.2625 -0.63751,-0.609375 z m -3.68443,-21.290625 3.55317,-7.603125 3.94694,7.40625 z"
|
||||
clip-path="url(#clipEmfPath3)"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.1500022px;stroke-linecap:butt;stroke-linejoin:bevel;stroke-opacity:1;stroke-dasharray:none"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3778"
|
||||
d="m 185.00124,121.96729 0,23.4375 191.2528,0 0,-23.4375 z"
|
||||
style="fill:none;stroke:#000000;stroke-width:1.25626838px;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
id="text3780"
|
||||
style="font-size:12.45018196px;font-style:normal;font-weight:bold;text-align:start;text-anchor:start;fill:#000000;font-family:Courier New"
|
||||
y="135.98123"
|
||||
x="213.3766"
|
||||
xml:space="preserve">BOPAlgo_PaveFiller</text>
|
||||
<text
|
||||
id="text3782"
|
||||
style="font-size:12.45018196px;font-style:normal;font-weight:bold;text-align:start;text-anchor:start;fill:#000000;font-family:Courier New"
|
||||
y="79.199997"
|
||||
x="351.30511"
|
||||
xml:space="preserve"> </text>
|
||||
<text
|
||||
id="text3784"
|
||||
style="font-size:12.45018196px;font-style:normal;font-weight:normal;text-align:start;text-anchor:start;fill:#000000;font-family:Courier New"
|
||||
y="108.3"
|
||||
x="188.70276"
|
||||
xml:space="preserve"> </text>
|
||||
<path
|
||||
id="path3786"
|
||||
d="m 198.98728,113.10938 20.70968,-20.700005 c 0.24375,-0.24375 0.63751,-0.24375 0.88126,0 0.24375,0.24375 0.24375,0.6375 0,0.88125 L 199.87792,114 c -0.24376,0.24375 -0.64689,0.24375 -0.89064,0 -0.24375,-0.24375 -0.24375,-0.64688 0,-0.89062 z m 17.61588,-22.031255 7.95012,-2.653125 -2.64379,7.959375 z"
|
||||
clip-path="url(#clipEmfPath4)"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.1500022px;stroke-linecap:butt;stroke-linejoin:bevel;stroke-opacity:1;stroke-dasharray:none"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
id="text3794"
|
||||
style="font-size:12.45018196px;font-style:normal;font-weight:bold;text-align:start;text-anchor:start;fill:#000000;font-family:Courier New"
|
||||
y="128.55"
|
||||
x="480.30701"
|
||||
xml:space="preserve"> </text>
|
||||
<text
|
||||
id="text3796"
|
||||
style="font-size:12.45018196px;font-style:normal;font-weight:normal;text-align:start;text-anchor:start;fill:#000000;font-family:Arial"
|
||||
y="158.39999"
|
||||
x="318.75464"
|
||||
xml:space="preserve"> </text>
|
||||
<path
|
||||
style="fill:#916f6f;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow2Mstart)"
|
||||
d="m 281.70806,91.744904 0,30.398036"
|
||||
id="path3875"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 8.9 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 13 KiB |
@@ -6271,41 +6271,51 @@ bsplineprof res
|
||||
|
||||
@subsubsection occt_draw_7_2_6 mkoffset
|
||||
|
||||
**mkoffset** creates a parallel wire in the same plane using a face or an existing continuous set of wires as a reference. The number of occurrences is not limited.
|
||||
The offset distance defines the spacing and the positioning of the occurrences.
|
||||
|
||||
Syntax:
|
||||
~~~~~
|
||||
mkoffset result face/compound of wires nboffset stepoffset
|
||||
mkoffset result shape nboffset stepoffset [jointype(a/i) [alt]]
|
||||
~~~~~
|
||||
where:
|
||||
* *result* - the base name for the resulting wires. The index of the occurrence (starting with 1) will be added to this name, so the resulting wires will have the names - *result_1*, *result_2* ...;
|
||||
* *shape* - input shape (face or compound of wires);
|
||||
* *nboffset* - the number of the parallel occurrences;
|
||||
* *stepoffset* - offset distance between occurrences;
|
||||
* *jointype(a/i)* - join type (a for *arc* (default) and i for *intersection*);
|
||||
* *alt* - altitude from the plane of the input face in relation to the normal to the face.
|
||||
|
||||
**mkoffset** creates a parallel wire in the same plane using a face or an existing continuous set of wires as a reference. The number of occurences is not limited.
|
||||
|
||||
The offset distance defines the spacing and the positioning of the occurences.
|
||||
|
||||
**Example:**
|
||||
~~~~~
|
||||
#Create a box and select a face
|
||||
# Create a box and select a face
|
||||
box b 1 2 3
|
||||
explode b f
|
||||
#Create three exterior parallel contours with an offset
|
||||
value of 2
|
||||
# Create three exterior parallel contours with an offset value of 2
|
||||
mkoffset r b_1 3 2
|
||||
Create one interior parallel contour with an offset
|
||||
value of
|
||||
0.4
|
||||
# wires r_1, r_2 and r_3 are created
|
||||
|
||||
# Create three exterior parallel contours with an offset value of 2 without round corners
|
||||
mkoffset r b_1 3 2 i
|
||||
# wires r_1, r_2 and r_3 are created
|
||||
|
||||
# Create one interior parallel contour with an offset value of 0.4
|
||||
mkoffset r b_1 1 -0.4
|
||||
~~~~~
|
||||
|
||||
**Note** that *mkoffset* command must be used with prudence, as angular contours produce offset contours with fillets. Interior parallel contours can produce more than one wire, normally these are refused. In the following example, any increase in the offset value is refused.
|
||||
**Note** that on a concave input contour for an interior step *mkoffset* command may produce several wires which will be contained in a single compound.
|
||||
|
||||
**Example:**
|
||||
~~~~~
|
||||
# to create the example contour
|
||||
profile p F 0 0 x 2 y 4 tt 1 1 tt 0 4 w
|
||||
# to create an incoherent interior offset
|
||||
mkoffset r p 1 -0.50
|
||||
==p is not a FACE but a WIRE
|
||||
BRepFill_TrimEdgeTool: incoherent intersection
|
||||
# to create two incoherent wires
|
||||
# creates an incoherent interior offset
|
||||
mkoffset r p 1 -0.50
|
||||
|
||||
# creates two incoherent wires
|
||||
mkoffset r p 1 -0.55
|
||||
# r_1 is a compound of two wires
|
||||
~~~~~
|
||||
|
||||
@subsubsection occt_draw_7_2_7 mkplane, mkface
|
||||
|
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 28 KiB |
530
dox/user_guides/visualization/images/visualization_image020.svg
Normal file
@@ -0,0 +1,530 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="500"
|
||||
height="300"
|
||||
id="svg4656"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="visualization_image020.svg">
|
||||
<defs
|
||||
id="defs4658" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.4142136"
|
||||
inkscape:cx="408.79147"
|
||||
inkscape:cy="193.9858"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="g9010"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="976"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0" />
|
||||
<metadata
|
||||
id="metadata4661">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-87.454854,-696.05721)">
|
||||
<g
|
||||
id="g9010"
|
||||
transform="translate(12.75,28.5)">
|
||||
<g
|
||||
id="g4235"
|
||||
transform="translate(9.102291,335.55339)">
|
||||
<g
|
||||
id="g4226">
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="m 261.39235,392.80721 7.875,4.25 0,19.875 -7.8975,-4.09022 z"
|
||||
id="path4222"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4224"
|
||||
d="m 126.21266,412.7994 7.86719,4.13281 135.1875,0 -7.88187,-4.23084 z"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="rect4218"
|
||||
width="135.25"
|
||||
height="20"
|
||||
x="126.20485"
|
||||
y="392.80722" />
|
||||
</g>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4231"
|
||||
y="405.80722"
|
||||
x="133.70485"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:'Open Sans';-inkscape-font-specification:'Open Sans'"
|
||||
y="405.80722"
|
||||
x="133.70485"
|
||||
id="tspan4233"
|
||||
sodipodi:role="line">AIS_Shape::SetColor</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
transform="translate(241.03331,337.84807)"
|
||||
id="g4243">
|
||||
<g
|
||||
id="g4245">
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4247"
|
||||
d="m 307.14235,392.80721 7.875,4.25 0,19.875 -7.8975,-4.09022 z"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="m 126.21266,412.7994 7.86719,4.13281 180.9375,0 -7.88187,-4.23084 z"
|
||||
id="path4249"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="m 126.20485,392.80722 181,0 0,20 -181,0 z"
|
||||
id="rect4251"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="133.70485"
|
||||
y="405.80722"
|
||||
id="text4253"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4255"
|
||||
x="133.70485"
|
||||
y="405.80722"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:'Open Sans';-inkscape-font-specification:'Open Sans'">Prs3d_Drawer::FreeBoundaryAspect</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g4258"
|
||||
transform="translate(241.03331,372.18141)">
|
||||
<g
|
||||
id="g4260">
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="m 320.14235,392.80721 7.875,4.25 0,19.875 -7.8975,-4.09022 z"
|
||||
id="path4262"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4264"
|
||||
d="m 126.21266,412.7994 7.86719,4.13281 193.9375,0 -7.88187,-4.23084 z"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4266"
|
||||
d="m 126.20485,392.80722 194,0 0,20 -194,0 z"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-linejoin:round;stroke-opacity:1" />
|
||||
</g>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4268"
|
||||
y="405.80722"
|
||||
x="133.70485"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:'Open Sans';-inkscape-font-specification:'Open Sans'"
|
||||
y="405.80722"
|
||||
x="133.70485"
|
||||
id="tspan4270"
|
||||
sodipodi:role="line">Prs3d_Drawer::UnFreeBoundaryAspect</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g4272"
|
||||
transform="translate(241.03331,406.51476)">
|
||||
<g
|
||||
id="g4274">
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="m 263.89235,392.80721 7.875,4.25 0,19.875 -7.8975,-4.09022 z"
|
||||
id="path4276"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4278"
|
||||
d="m 126.21266,412.7994 7.86719,4.13281 137.6875,0 -7.88187,-4.23084 z"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4280"
|
||||
d="m 126.20485,392.80722 137.75,0 0,20 -137.75,0 z"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-linejoin:round;stroke-opacity:1" />
|
||||
</g>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4282"
|
||||
y="405.80722"
|
||||
x="133.70485"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:'Open Sans';-inkscape-font-specification:'Open Sans'"
|
||||
y="405.80722"
|
||||
x="133.70485"
|
||||
id="tspan4284"
|
||||
sodipodi:role="line">Prs3d_Drawer::UIsoAspect</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
transform="translate(241.03331,440.84807)"
|
||||
id="g4286">
|
||||
<g
|
||||
id="g4288">
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4290"
|
||||
d="m 263.89235,392.80721 7.875,4.25 0,19.875 -7.8975,-4.09022 z"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="m 126.21266,412.7994 7.86719,4.13281 137.6875,0 -7.88187,-4.23084 z"
|
||||
id="path4292"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="m 126.20485,392.80722 137.75,0 0,20 -137.75,0 z"
|
||||
id="path4294"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="133.70485"
|
||||
y="405.80722"
|
||||
id="text4296"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4298"
|
||||
x="133.70485"
|
||||
y="405.80722"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:'Open Sans';-inkscape-font-specification:'Open Sans'">Prs3d_Drawer::VIsoAspect</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g4300"
|
||||
transform="translate(241.03331,475.18141)">
|
||||
<g
|
||||
id="g4302">
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="m 278.64235,392.80721 7.875,4.25 0,19.875 -7.8975,-4.09022 z"
|
||||
id="path4304"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4306"
|
||||
d="m 126.21266,412.7994 7.86719,4.13281 152.4375,0 -7.88187,-4.23084 z"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4308"
|
||||
d="m 126.20485,392.80722 152.5,0 0,20 -152.5,0 z"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-linejoin:round;stroke-opacity:1" />
|
||||
</g>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4310"
|
||||
y="405.80722"
|
||||
x="133.70485"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:'Open Sans';-inkscape-font-specification:'Open Sans'"
|
||||
y="405.80722"
|
||||
x="133.70485"
|
||||
id="tspan4312"
|
||||
sodipodi:role="line">Prs3d_Drawer::ShadingAspect</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
transform="translate(241.03331,509.51473)"
|
||||
id="g4314">
|
||||
<g
|
||||
id="g4316">
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4318"
|
||||
d="m 282.89235,392.80721 7.875,4.25 0,19.875 -7.8975,-4.09022 z"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="m 126.21266,412.7994 7.86719,4.13281 156.6875,0 -7.88187,-4.23084 z"
|
||||
id="path4320"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="m 126.20485,392.80722 156.75,0 0,20 -156.75,0 z"
|
||||
id="path4322"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="133.70485"
|
||||
y="405.80722"
|
||||
id="text4324"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4326"
|
||||
x="133.70485"
|
||||
y="405.80722"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:'Open Sans';-inkscape-font-specification:'Open Sans'">Prs3d_Drawer::SeenLineAspect</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g4334"
|
||||
transform="translate(241.03331,543.84807)">
|
||||
<g
|
||||
id="g4336">
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="m 292.64235,392.80721 7.875,4.25 0,19.875 -7.8975,-4.09022 z"
|
||||
id="path4338"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4340"
|
||||
d="m 126.21266,412.7994 7.86719,4.13281 166.4375,0 -7.88187,-4.23084 z"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4342"
|
||||
d="m 126.20485,392.80722 166.5,0 0,20 -166.5,0 z"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-linejoin:round;stroke-opacity:1" />
|
||||
</g>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4344"
|
||||
y="405.80722"
|
||||
x="133.70485"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:'Open Sans';-inkscape-font-specification:'Open Sans'"
|
||||
y="405.80722"
|
||||
x="133.70485"
|
||||
id="tspan4346"
|
||||
sodipodi:role="line">Prs3d_Drawer::HiddenLineAspect</tspan></text>
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="82.119072"
|
||||
y="740.68671"
|
||||
id="text4348"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4350"
|
||||
x="82.119072"
|
||||
y="740.68671"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10px;font-family:'Open Sans';-inkscape-font-specification:'Open Sans Bold'">Change:</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4352"
|
||||
y="736.18671"
|
||||
x="298.11908"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10px;font-family:'Open Sans';-inkscape-font-specification:'Open Sans Bold'"
|
||||
y="736.18671"
|
||||
x="298.11908"
|
||||
id="tspan4354"
|
||||
sodipodi:role="line">redefine:</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 285.11906,740.81172 58,0 0,210"
|
||||
id="path4356"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 367.0034,946.85011 -24.04163,0"
|
||||
id="path4358"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4360"
|
||||
d="m 367.0034,912.51677 -24.04163,0"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 367.0034,878.18345 -24.04163,0"
|
||||
id="path4362"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4364"
|
||||
d="m 367.0034,843.85011 -24.04163,0"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 367.0034,809.5168 -24.04163,0"
|
||||
id="path4366"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4368"
|
||||
d="m 367.0034,775.18345 -24.04163,0"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 367.0034,740.85011 -24.04163,0"
|
||||
id="path4370"
|
||||
inkscape:connector-curvature="0" />
|
||||
<g
|
||||
transform="translate(9.102291,289.55339)"
|
||||
id="g4417">
|
||||
<g
|
||||
id="g4419">
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4421"
|
||||
d="m 261.39235,392.80721 7.875,4.25 0,19.875 -7.8975,-4.09022 z"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="m 126.21266,412.7994 7.86719,4.13281 135.1875,0 -7.88187,-4.23084 z"
|
||||
id="path4423"
|
||||
inkscape:connector-curvature="0" />
|
||||
<rect
|
||||
y="392.80722"
|
||||
x="126.20485"
|
||||
height="20"
|
||||
width="135.25"
|
||||
id="rect4425"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-linejoin:round;stroke-opacity:1" />
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="133.70485"
|
||||
y="405.80722"
|
||||
id="text4427"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4429"
|
||||
x="133.70485"
|
||||
y="405.80722"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:'Open Sans';-inkscape-font-specification:'Open Sans'">AIS_TextLabel::SetColor</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g4431"
|
||||
transform="translate(241.03331,291.84807)">
|
||||
<g
|
||||
id="g4433">
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="m 264.36239,392.80721 7.875,4.25 0,19.875 -7.8975,-4.09022 z"
|
||||
id="path4435"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4437"
|
||||
d="m 126.21266,412.7994 7.86719,4.13281 138.15754,0 -7.88187,-4.23084 z"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4439"
|
||||
d="m 126.20485,392.80722 138.22004,0 0,20 -138.22004,0 z"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-linejoin:round;stroke-opacity:1" />
|
||||
</g>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4441"
|
||||
y="405.80722"
|
||||
x="133.70485"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:'Open Sans';-inkscape-font-specification:'Open Sans'"
|
||||
y="405.80722"
|
||||
x="133.70485"
|
||||
id="tspan4443"
|
||||
sodipodi:role="line">Prs3d_Drawer::TextAspect</tspan></text>
|
||||
</g>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4445"
|
||||
y="694.68671"
|
||||
x="82.119072"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10px;font-family:'Open Sans';-inkscape-font-specification:'Open Sans Bold'"
|
||||
y="694.68671"
|
||||
x="82.119072"
|
||||
id="tspan4447"
|
||||
sodipodi:role="line">Change:</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="298.11908"
|
||||
y="690.18671"
|
||||
id="text4449"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4451"
|
||||
x="298.11908"
|
||||
y="690.18671"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10px;font-family:'Open Sans';-inkscape-font-specification:'Open Sans Bold'">redefine:</tspan></text>
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4453"
|
||||
d="m 367.0034,694.85011 -82.02439,0"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 26 KiB |
@@ -15,7 +15,7 @@
|
||||
#ifndef _GeoAlgo_Sol_HeaderFile
|
||||
#define _GeoAlgo_Sol_HeaderFile
|
||||
|
||||
#ifndef _Handle_Geom_BSplineSurface_HeaderFile
|
||||
#ifndef _Geom_BSplineSurface_HeaderFile
|
||||
#include <Geom_BSplineSurface.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Boolean_HeaderFile
|
||||
|
@@ -462,10 +462,10 @@
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\..\src\Handle_TOcaf_Application.hxx" />
|
||||
<ClInclude Include="..\..\..\src\Handle_TOcafFunction_BoxDriver.hxx" />
|
||||
<ClInclude Include="..\..\..\src\Handle_TOcafFunction_CutDriver.hxx" />
|
||||
<ClInclude Include="..\..\..\src\Handle_TOcafFunction_CylDriver.hxx" />
|
||||
<ClInclude Include="..\..\..\src\TOcaf_Application.hxx" />
|
||||
<ClInclude Include="..\..\..\src\TOcafFunction_BoxDriver.hxx" />
|
||||
<ClInclude Include="..\..\..\src\TOcafFunction_CutDriver.hxx" />
|
||||
<ClInclude Include="..\..\..\src\TOcafFunction_CylDriver.hxx" />
|
||||
<ClInclude Include="..\..\..\src\NewBoxDlg.h" />
|
||||
<ClInclude Include="..\..\..\src\NewCylDlg.h" />
|
||||
<ClInclude Include="..\..\..\src\OcafApp.h" />
|
||||
|
@@ -58,16 +58,16 @@
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\..\src\Handle_TOcaf_Application.hxx">
|
||||
<ClInclude Include="..\..\..\src\TOcaf_Application.hxx">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\src\Handle_TOcafFunction_BoxDriver.hxx">
|
||||
<ClInclude Include="..\..\..\src\TOcafFunction_BoxDriver.hxx">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\src\Handle_TOcafFunction_CutDriver.hxx">
|
||||
<ClInclude Include="..\..\..\src\TOcafFunction_CutDriver.hxx">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\src\Handle_TOcafFunction_CylDriver.hxx">
|
||||
<ClInclude Include="..\..\..\src\TOcafFunction_CylDriver.hxx">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\src\NewBoxDlg.h">
|
||||
|
@@ -34,6 +34,9 @@
|
||||
#define OPERATION_NOT_DONE 8
|
||||
#define NULL_OPERATION 9
|
||||
|
||||
// OCCT RTTI
|
||||
IMPLEMENT_STANDARD_RTTIEXT (OCAFSample_CommonDriver, OCAFSample_Driver)
|
||||
|
||||
//=======================================================================
|
||||
//function : Constructor
|
||||
//purpose :
|
||||
|
@@ -16,84 +16,22 @@
|
||||
#ifndef _OCAFSample_CommonDriver_HeaderFile
|
||||
#define _OCAFSample_CommonDriver_HeaderFile
|
||||
|
||||
#ifndef _Standard_HeaderFile
|
||||
#include <Standard.hxx>
|
||||
#endif
|
||||
#ifndef _Handle_OCAFSample_CommonDriver_HeaderFile
|
||||
#endif
|
||||
|
||||
#ifndef _OCAFSample_Driver_HeaderFile
|
||||
#include <Standard_Type.hxx>
|
||||
#include <OCAFSample_Driver.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Integer_HeaderFile
|
||||
#include <Standard_Integer.hxx>
|
||||
#endif
|
||||
|
||||
class TFunction_Logbook;
|
||||
|
||||
|
||||
class OCAFSample_CommonDriver : public OCAFSample_Driver {
|
||||
|
||||
class OCAFSample_CommonDriver : public OCAFSample_Driver
|
||||
{
|
||||
public:
|
||||
|
||||
inline void* operator new(size_t,void* anAddress)
|
||||
{
|
||||
return anAddress;
|
||||
}
|
||||
inline void* operator new(size_t size)
|
||||
{
|
||||
return Standard::Allocate(size);
|
||||
}
|
||||
inline void operator delete(void *anAddress)
|
||||
{
|
||||
if (anAddress) Standard::Free((Standard_Address&)anAddress);
|
||||
}
|
||||
// inline void operator delete(void *anAddress, size_t size)
|
||||
// {
|
||||
// if (anAddress) Standard::Free((Standard_Address&)anAddress,size);
|
||||
// }
|
||||
// Methods PUBLIC
|
||||
//
|
||||
Standard_EXPORT OCAFSample_CommonDriver();
|
||||
Standard_EXPORT virtual Standard_Integer Execute(Handle(TFunction_Logbook)& theLogbook) const;
|
||||
Standard_EXPORT ~OCAFSample_CommonDriver();
|
||||
|
||||
|
||||
|
||||
|
||||
// Type management
|
||||
//
|
||||
Standard_EXPORT friend Handle(Standard_Type)& OCAFSample_CommonDriver_Type_();
|
||||
Standard_EXPORT const Handle(Standard_Type)& DynamicType() const;
|
||||
Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const;
|
||||
|
||||
protected:
|
||||
|
||||
// Methods PROTECTED
|
||||
//
|
||||
|
||||
|
||||
// Fields PROTECTED
|
||||
//
|
||||
|
||||
|
||||
private:
|
||||
|
||||
// Methods PRIVATE
|
||||
//
|
||||
|
||||
|
||||
// Fields PRIVATE
|
||||
//
|
||||
|
||||
Standard_EXPORT OCAFSample_CommonDriver ();
|
||||
Standard_EXPORT virtual Standard_Integer Execute (Handle (TFunction_Logbook)& theLogbook) const;
|
||||
Standard_EXPORT ~OCAFSample_CommonDriver ();
|
||||
|
||||
// OCCT RTTI
|
||||
DEFINE_STANDARD_RTTIEXT (OCAFSample_CommonDriver, OCAFSample_Driver)
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// other inline functions and methods (like "C++: function call" methods)
|
||||
//
|
||||
|
||||
|
||||
#endif
|
||||
|
@@ -16,92 +16,29 @@
|
||||
#ifndef _OCAFSample_Driver_HeaderFile
|
||||
#define _OCAFSample_Driver_HeaderFile
|
||||
|
||||
#ifndef _Standard_HeaderFile
|
||||
#include <Standard.hxx>
|
||||
#endif
|
||||
#ifndef _Handle_OCAFSample_Driver_HeaderFile
|
||||
#endif
|
||||
|
||||
#ifndef _TFunction_Driver_HeaderFile
|
||||
#include <TFunction_Driver.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Boolean_HeaderFile
|
||||
#include <Standard_Boolean.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Integer_HeaderFile
|
||||
#include <Standard_Integer.hxx>
|
||||
#endif
|
||||
class TFunction_Logbook;
|
||||
#include <TDF_LabelMap.hxx>
|
||||
|
||||
class TFunction_Logbook;
|
||||
|
||||
class OCAFSample_Driver : public TFunction_Driver {
|
||||
|
||||
class OCAFSample_Driver : public TFunction_Driver
|
||||
{
|
||||
public:
|
||||
|
||||
inline void* operator new(size_t,void* anAddress)
|
||||
{
|
||||
return anAddress;
|
||||
}
|
||||
inline void* operator new(size_t size)
|
||||
{
|
||||
return Standard::Allocate(size);
|
||||
}
|
||||
inline void operator delete(void *anAddress)
|
||||
{
|
||||
if (anAddress) Standard::Free((Standard_Address&)anAddress);
|
||||
}
|
||||
// inline void operator delete(void *anAddress, size_t size)
|
||||
// {
|
||||
// if (anAddress) Standard::Free((Standard_Address&)anAddress,size);
|
||||
// }
|
||||
// Methods PUBLIC
|
||||
//
|
||||
Standard_EXPORT void Validate(TFunction_Logbook& log) const;
|
||||
Standard_EXPORT virtual Standard_Boolean MustExecute(const Handle(TFunction_Logbook)& log) const;
|
||||
Standard_EXPORT virtual Standard_Integer Execute(Handle(TFunction_Logbook)& log) const;
|
||||
Standard_EXPORT virtual Standard_Boolean Arguments(TDF_LabelMap& theArgs) const;
|
||||
Standard_EXPORT virtual Standard_Boolean Results(TDF_LabelMap& theRes) const;
|
||||
Standard_EXPORT ~OCAFSample_Driver();
|
||||
Standard_EXPORT void Validate (TFunction_Logbook& log) const;
|
||||
Standard_EXPORT virtual Standard_Boolean MustExecute (const Handle (TFunction_Logbook)& log) const;
|
||||
Standard_EXPORT virtual Standard_Integer Execute (Handle (TFunction_Logbook)& log) const;
|
||||
Standard_EXPORT virtual Standard_Boolean Arguments (TDF_LabelMap& theArgs) const;
|
||||
Standard_EXPORT virtual Standard_Boolean Results (TDF_LabelMap& theRes) const;
|
||||
Standard_EXPORT ~OCAFSample_Driver ();
|
||||
|
||||
|
||||
|
||||
|
||||
// Type management
|
||||
//
|
||||
Standard_EXPORT friend Handle(Standard_Type)& OCAFSample_Driver_Type_();
|
||||
Standard_EXPORT const Handle(Standard_Type)& DynamicType() const;
|
||||
Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const;
|
||||
// OCCT RTTI
|
||||
DEFINE_STANDARD_RTTIEXT(OCAFSample_Driver,TFunction_Driver)
|
||||
|
||||
protected:
|
||||
|
||||
// Methods PROTECTED
|
||||
//
|
||||
Standard_EXPORT OCAFSample_Driver();
|
||||
|
||||
|
||||
// Fields PROTECTED
|
||||
//
|
||||
|
||||
|
||||
private:
|
||||
|
||||
// Methods PRIVATE
|
||||
//
|
||||
|
||||
|
||||
// Fields PRIVATE
|
||||
//
|
||||
|
||||
|
||||
Standard_EXPORT OCAFSample_Driver ();
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// other inline functions and methods (like "C++: function call" methods)
|
||||
//
|
||||
|
||||
|
||||
#endif
|
||||
|
@@ -1,68 +0,0 @@
|
||||
// File generated by CPPExt (Transient)
|
||||
// Copyright (C) 1991,1995 by
|
||||
//
|
||||
// MATRA DATAVISION, FRANCE
|
||||
//
|
||||
// This software is furnished in accordance with the terms and conditions
|
||||
// of the contract and with the inclusion of the above copyright notice.
|
||||
// This software or any other copy thereof may not be provided or otherwise
|
||||
// be made available to any other person. No title to an ownership of the
|
||||
// software is hereby transferred.
|
||||
//
|
||||
// At the termination of the contract, the software and all copies of this
|
||||
// software must be deleted.
|
||||
//
|
||||
#include <OCAFSample_Driver.jxx>
|
||||
|
||||
#ifndef _Standard_TypeMismatch_HeaderFile
|
||||
#include <Standard_TypeMismatch.hxx>
|
||||
#endif
|
||||
|
||||
OCAFSample_Driver::~OCAFSample_Driver() {}
|
||||
|
||||
|
||||
|
||||
Standard_EXPORT Handle_Standard_Type& OCAFSample_Driver_Type_()
|
||||
{
|
||||
|
||||
static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
|
||||
if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
|
||||
static Handle_Standard_Type aType2 = STANDARD_TYPE(Standard_Transient);
|
||||
if ( aType2.IsNull()) aType2 = STANDARD_TYPE(Standard_Transient);
|
||||
|
||||
static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,NULL};
|
||||
static Handle_Standard_Type _aType = new Standard_Type("OCAFSample_Driver",
|
||||
sizeof(OCAFSample_Driver),
|
||||
1,
|
||||
(Standard_Address)_Ancestors,
|
||||
(Standard_Address)NULL);
|
||||
|
||||
return _aType;
|
||||
}
|
||||
|
||||
|
||||
// DownCast method
|
||||
// allow safe downcasting
|
||||
//
|
||||
const Handle(OCAFSample_Driver) Handle(OCAFSample_Driver)::DownCast(const Handle(Standard_Transient)& AnObject)
|
||||
{
|
||||
Handle(OCAFSample_Driver) _anOtherObject;
|
||||
|
||||
if (!AnObject.IsNull()) {
|
||||
if (AnObject->IsKind(STANDARD_TYPE(OCAFSample_Driver))) {
|
||||
_anOtherObject = Handle(OCAFSample_Driver)((Handle(OCAFSample_Driver)&)AnObject);
|
||||
}
|
||||
}
|
||||
|
||||
return _anOtherObject ;
|
||||
}
|
||||
const Handle(Standard_Type)& OCAFSample_Driver::DynamicType() const
|
||||
{
|
||||
return STANDARD_TYPE(OCAFSample_Driver) ;
|
||||
}
|
||||
Standard_Boolean OCAFSample_Driver::IsKind(const Handle(Standard_Type)& AType) const
|
||||
{
|
||||
return (STANDARD_TYPE(OCAFSample_Driver) == AType || TFunction_Driver::IsKind(AType));
|
||||
}
|
||||
Handle_OCAFSample_Driver::~Handle_OCAFSample_Driver() {}
|
||||
|
@@ -1,9 +0,0 @@
|
||||
#ifndef _TFunction_Logbook_HeaderFile
|
||||
#include <TFunction_Logbook.hxx>
|
||||
#endif
|
||||
#ifndef _TDF_LabelMap_HeaderFile
|
||||
#include <TDF_LabelMap.hxx>
|
||||
#endif
|
||||
#ifndef _OCAFSample_Driver_HeaderFile
|
||||
#include <OCAFSample_Driver.hxx>
|
||||
#endif
|
@@ -10,7 +10,6 @@
|
||||
|
||||
#include <OCC_App.h>
|
||||
#include "OcafDoc.h"
|
||||
#include "TOCAF_Application.hxx"
|
||||
#include <TOcaf_Application.hxx>
|
||||
|
||||
|
||||
|
@@ -12,6 +12,8 @@
|
||||
#include "BRepPrimAPI_MakeBox.hxx"
|
||||
#include "TNaming_Builder.hxx"
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT (TOcafFunction_BoxDriver, TFunction_Driver)
|
||||
|
||||
//=======================================================================
|
||||
//function : GetID
|
||||
//purpose :
|
||||
@@ -118,32 +120,3 @@ Standard_Integer TOcafFunction_BoxDriver::Execute(Handle(TFunction_Logbook)& /*l
|
||||
// If there are no any mistakes we return 0:
|
||||
return 0;
|
||||
}
|
||||
|
||||
TOcafFunction_BoxDriver::~TOcafFunction_BoxDriver() {}
|
||||
|
||||
// DownCast method
|
||||
// allow safe downcasting
|
||||
//
|
||||
const Handle(TOcafFunction_BoxDriver) TOcafFunction_BoxDriver::DownCast(const Handle(Standard_Transient)& AnObject)
|
||||
{
|
||||
Handle(TOcafFunction_BoxDriver) _anOtherObject;
|
||||
|
||||
if (!AnObject.IsNull()) {
|
||||
if (AnObject->IsKind(STANDARD_TYPE(TOcafFunction_BoxDriver))) {
|
||||
_anOtherObject = Handle(TOcafFunction_BoxDriver)::DownCast (AnObject);
|
||||
}
|
||||
}
|
||||
|
||||
return _anOtherObject ;
|
||||
}
|
||||
const Handle(Standard_Type)& TOcafFunction_BoxDriver::DynamicType() const
|
||||
{
|
||||
return STANDARD_TYPE(TOcafFunction_BoxDriver) ;
|
||||
}
|
||||
Standard_Boolean TOcafFunction_BoxDriver::IsKind(const Handle(Standard_Type)& AType) const
|
||||
{
|
||||
return (STANDARD_TYPE(TOcafFunction_BoxDriver) == AType || TFunction_Driver::IsKind(AType));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@@ -31,74 +31,19 @@
|
||||
#endif
|
||||
class TFunction_Logbook;
|
||||
|
||||
|
||||
class TOcafFunction_BoxDriver : public TFunction_Driver {
|
||||
|
||||
class TOcafFunction_BoxDriver : public TFunction_Driver
|
||||
{
|
||||
public:
|
||||
|
||||
inline void* operator new(size_t,void* anAddress)
|
||||
{
|
||||
return anAddress;
|
||||
}
|
||||
inline void* operator new(size_t size)
|
||||
{
|
||||
return Standard::Allocate(size);
|
||||
}
|
||||
inline void operator delete(void *anAddress)
|
||||
{
|
||||
if (anAddress) Standard::Free((Standard_Address&)anAddress);
|
||||
}
|
||||
// inline void operator delete(void *anAddress, size_t size)
|
||||
// {
|
||||
// if (anAddress) Standard::Free((Standard_Address&)anAddress,size);
|
||||
// }
|
||||
// Methods PUBLIC
|
||||
//
|
||||
Standard_EXPORT static const Standard_GUID& GetID() ;
|
||||
Standard_EXPORT TOcafFunction_BoxDriver();
|
||||
Standard_EXPORT virtual void Validate(Handle(TFunction_Logbook)& log) const;
|
||||
Standard_EXPORT virtual Standard_Boolean MustExecute(const Handle(TFunction_Logbook)& log) const;
|
||||
Standard_EXPORT virtual Standard_Integer Execute(Handle(TFunction_Logbook)& log) const;
|
||||
Standard_EXPORT ~TOcafFunction_BoxDriver();
|
||||
|
||||
|
||||
|
||||
|
||||
// Type management
|
||||
//
|
||||
//Standard_EXPORT friend Handle(Standard_Type)& TOcafFunction_BoxDriver_Type_();
|
||||
Standard_EXPORT const Handle(TOcafFunction_BoxDriver) DownCast(const Handle(Standard_Transient)& AnObject);
|
||||
Standard_EXPORT const Handle(Standard_Type)& DynamicType() const;
|
||||
Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const;
|
||||
|
||||
protected:
|
||||
|
||||
// Methods PROTECTED
|
||||
//
|
||||
|
||||
|
||||
// Fields PROTECTED
|
||||
//
|
||||
|
||||
|
||||
private:
|
||||
|
||||
// Methods PRIVATE
|
||||
//
|
||||
|
||||
|
||||
// Fields PRIVATE
|
||||
//
|
||||
|
||||
Standard_EXPORT static const Standard_GUID& GetID ();
|
||||
Standard_EXPORT TOcafFunction_BoxDriver ();
|
||||
Standard_EXPORT virtual void Validate (Handle (TFunction_Logbook)& log) const;
|
||||
Standard_EXPORT virtual Standard_Boolean MustExecute (const Handle (TFunction_Logbook)& log) const;
|
||||
Standard_EXPORT virtual Standard_Integer Execute (Handle (TFunction_Logbook)& log) const;
|
||||
|
||||
// OCCT RTTI
|
||||
DEFINE_STANDARD_RTTIEXT(TOcafFunction_BoxDriver,TFunction_Driver)
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// other inline functions and methods (like "C++: function call" methods)
|
||||
//
|
||||
|
||||
|
||||
#endif
|
||||
|
@@ -17,6 +17,8 @@
|
||||
#include "TFunction_Logbook.hxx"
|
||||
#include "TDF_Reference.hxx"
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT (TOcafFunction_CutDriver, TFunction_Driver)
|
||||
|
||||
//=======================================================================
|
||||
//function : GetID
|
||||
//purpose :
|
||||
@@ -139,32 +141,3 @@ Standard_Integer TOcafFunction_CutDriver::Execute(Handle(TFunction_Logbook)& /*l
|
||||
// If there are no any mistakes we return 0:
|
||||
return 0;
|
||||
}
|
||||
|
||||
TOcafFunction_CutDriver::~TOcafFunction_CutDriver() {}
|
||||
|
||||
// DownCast method
|
||||
// allow safe downcasting
|
||||
//
|
||||
const Handle(TOcafFunction_CutDriver) TOcafFunction_CutDriver::DownCast(const Handle(Standard_Transient)& AnObject)
|
||||
{
|
||||
Handle(TOcafFunction_CutDriver) _anOtherObject;
|
||||
|
||||
if (!AnObject.IsNull()) {
|
||||
if (AnObject->IsKind(STANDARD_TYPE(TOcafFunction_CutDriver))) {
|
||||
_anOtherObject = Handle(TOcafFunction_CutDriver)::DownCast (AnObject);
|
||||
}
|
||||
}
|
||||
|
||||
return _anOtherObject ;
|
||||
}
|
||||
const Handle(Standard_Type)& TOcafFunction_CutDriver::DynamicType() const
|
||||
{
|
||||
return STANDARD_TYPE(TOcafFunction_CutDriver) ;
|
||||
}
|
||||
Standard_Boolean TOcafFunction_CutDriver::IsKind(const Handle(Standard_Type)& AType) const
|
||||
{
|
||||
return (STANDARD_TYPE(TOcafFunction_CutDriver) == AType || TFunction_Driver::IsKind(AType));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@@ -32,73 +32,18 @@
|
||||
class TFunction_Logbook;
|
||||
|
||||
|
||||
class TOcafFunction_CutDriver : public TFunction_Driver {
|
||||
|
||||
class TOcafFunction_CutDriver : public TFunction_Driver
|
||||
{
|
||||
public:
|
||||
|
||||
inline void* operator new(size_t,void* anAddress)
|
||||
{
|
||||
return anAddress;
|
||||
}
|
||||
inline void* operator new(size_t size)
|
||||
{
|
||||
return Standard::Allocate(size);
|
||||
}
|
||||
inline void operator delete(void *anAddress)
|
||||
{
|
||||
if (anAddress) Standard::Free((Standard_Address&)anAddress);
|
||||
}
|
||||
// inline void operator delete(void *anAddress, size_t size)
|
||||
// {
|
||||
// if (anAddress) Standard::Free((Standard_Address&)anAddress,size);
|
||||
// }
|
||||
// Methods PUBLIC
|
||||
//
|
||||
Standard_EXPORT static const Standard_GUID& GetID() ;
|
||||
Standard_EXPORT TOcafFunction_CutDriver();
|
||||
Standard_EXPORT virtual void Validate(Handle(TFunction_Logbook)& log) const;
|
||||
Standard_EXPORT virtual Standard_Boolean MustExecute(const Handle(TFunction_Logbook)& log) const;
|
||||
Standard_EXPORT virtual Standard_Integer Execute(Handle(TFunction_Logbook)& log) const;
|
||||
Standard_EXPORT ~TOcafFunction_CutDriver();
|
||||
|
||||
|
||||
|
||||
|
||||
// Type management
|
||||
//
|
||||
//Standard_EXPORT friend Handle(Standard_Type)& TOcafFunction_CutDriver_Type_();
|
||||
Standard_EXPORT const Handle(TOcafFunction_CutDriver) DownCast(const Handle(Standard_Transient)& AnObject);
|
||||
Standard_EXPORT const Handle(Standard_Type)& DynamicType() const;
|
||||
Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const;
|
||||
|
||||
protected:
|
||||
|
||||
// Methods PROTECTED
|
||||
//
|
||||
|
||||
|
||||
// Fields PROTECTED
|
||||
//
|
||||
|
||||
|
||||
private:
|
||||
|
||||
// Methods PRIVATE
|
||||
//
|
||||
|
||||
|
||||
// Fields PRIVATE
|
||||
//
|
||||
|
||||
Standard_EXPORT static const Standard_GUID& GetID() ;
|
||||
Standard_EXPORT TOcafFunction_CutDriver ();
|
||||
Standard_EXPORT virtual void Validate (Handle (TFunction_Logbook)& log) const;
|
||||
Standard_EXPORT virtual Standard_Boolean MustExecute (const Handle (TFunction_Logbook)& log) const;
|
||||
Standard_EXPORT virtual Standard_Integer Execute (Handle (TFunction_Logbook)& log) const;
|
||||
|
||||
// OCCT RTTI
|
||||
DEFINE_STANDARD_RTTIEXT(TOcafFunction_CutDriver,TFunction_Driver)
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// other inline functions and methods (like "C++: function call" methods)
|
||||
//
|
||||
|
||||
|
||||
#endif
|
||||
|
@@ -13,6 +13,7 @@
|
||||
#include "TDataStd_Real.hxx"
|
||||
#include "TNaming_Builder.hxx"
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT (TOcafFunction_CylDriver, TFunction_Driver)
|
||||
|
||||
//=======================================================================
|
||||
//function : GetID
|
||||
@@ -113,32 +114,3 @@ Standard_Integer TOcafFunction_CylDriver::Execute(Handle(TFunction_Logbook)& /*l
|
||||
// If there are no any mistakes we return 0:
|
||||
return 0;
|
||||
}
|
||||
|
||||
TOcafFunction_CylDriver::~TOcafFunction_CylDriver() {}
|
||||
|
||||
// DownCast method
|
||||
// allow safe downcasting
|
||||
//
|
||||
const Handle(TOcafFunction_CylDriver) TOcafFunction_CylDriver::DownCast(const Handle(Standard_Transient)& AnObject)
|
||||
{
|
||||
Handle(TOcafFunction_CylDriver) _anOtherObject;
|
||||
|
||||
if (!AnObject.IsNull()) {
|
||||
if (AnObject->IsKind(STANDARD_TYPE(TOcafFunction_CylDriver))) {
|
||||
_anOtherObject = Handle(TOcafFunction_CylDriver)::DownCast (AnObject);
|
||||
}
|
||||
}
|
||||
|
||||
return _anOtherObject ;
|
||||
}
|
||||
const Handle(Standard_Type)& TOcafFunction_CylDriver::DynamicType() const
|
||||
{
|
||||
return STANDARD_TYPE(TOcafFunction_CylDriver) ;
|
||||
}
|
||||
Standard_Boolean TOcafFunction_CylDriver::IsKind(const Handle(Standard_Type)& AType) const
|
||||
{
|
||||
return (STANDARD_TYPE(TOcafFunction_CylDriver) == AType || TFunction_Driver::IsKind(AType));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@@ -32,73 +32,18 @@
|
||||
class TFunction_Logbook;
|
||||
|
||||
|
||||
class TOcafFunction_CylDriver : public TFunction_Driver {
|
||||
|
||||
class TOcafFunction_CylDriver : public TFunction_Driver
|
||||
{
|
||||
public:
|
||||
|
||||
inline void* operator new(size_t,void* anAddress)
|
||||
{
|
||||
return anAddress;
|
||||
}
|
||||
inline void* operator new(size_t size)
|
||||
{
|
||||
return Standard::Allocate(size);
|
||||
}
|
||||
inline void operator delete(void *anAddress)
|
||||
{
|
||||
if (anAddress) Standard::Free((Standard_Address&)anAddress);
|
||||
}
|
||||
// inline void operator delete(void *anAddress, size_t size)
|
||||
// {
|
||||
// if (anAddress) Standard::Free((Standard_Address&)anAddress,size);
|
||||
// }
|
||||
// Methods PUBLIC
|
||||
//
|
||||
Standard_EXPORT static const Standard_GUID& GetID() ;
|
||||
Standard_EXPORT TOcafFunction_CylDriver();
|
||||
Standard_EXPORT virtual void Validate(Handle(TFunction_Logbook)& log) const;
|
||||
Standard_EXPORT virtual Standard_Boolean MustExecute(const Handle(TFunction_Logbook)& log) const;
|
||||
Standard_EXPORT virtual Standard_Integer Execute(Handle(TFunction_Logbook)& log) const;
|
||||
Standard_EXPORT ~TOcafFunction_CylDriver();
|
||||
|
||||
|
||||
|
||||
|
||||
// Type management
|
||||
//
|
||||
//Standard_EXPORT friend Handle(Standard_Type)& TOcafFunction_CylDriver_Type_();
|
||||
Standard_EXPORT const Handle(TOcafFunction_CylDriver) DownCast(const Handle(Standard_Transient)& AnObject);
|
||||
Standard_EXPORT const Handle(Standard_Type)& DynamicType() const;
|
||||
Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const;
|
||||
|
||||
protected:
|
||||
|
||||
// Methods PROTECTED
|
||||
//
|
||||
|
||||
|
||||
// Fields PROTECTED
|
||||
//
|
||||
|
||||
|
||||
private:
|
||||
|
||||
// Methods PRIVATE
|
||||
//
|
||||
|
||||
|
||||
// Fields PRIVATE
|
||||
//
|
||||
|
||||
Standard_EXPORT static const Standard_GUID& GetID ();
|
||||
Standard_EXPORT TOcafFunction_CylDriver ();
|
||||
Standard_EXPORT virtual void Validate (Handle (TFunction_Logbook)& log) const;
|
||||
Standard_EXPORT virtual Standard_Boolean MustExecute (const Handle (TFunction_Logbook)& log) const;
|
||||
Standard_EXPORT virtual Standard_Integer Execute (Handle (TFunction_Logbook)& log) const;
|
||||
|
||||
// OCCT RTTI
|
||||
DEFINE_STANDARD_RTTIEXT(TOcafFunction_CylDriver,TFunction_Driver)
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// other inline functions and methods (like "C++: function call" methods)
|
||||
//
|
||||
|
||||
|
||||
#endif
|
||||
|
@@ -5,7 +5,7 @@
|
||||
//Modified by Sergey RUIN (An instanciation of the drivers)
|
||||
|
||||
#include <stdafx.h>
|
||||
#include <TOcaf_Application.ixx>
|
||||
#include <TOcaf_Application.hxx>
|
||||
#include <TDF_Label.hxx>
|
||||
#include <TPrsStd_AISPresentation.hxx>
|
||||
#include <TPrsStd_AISViewer.hxx>
|
||||
@@ -15,6 +15,8 @@
|
||||
#include "TOcafFunction_CylDriver.hxx"
|
||||
#include "TOcafFunction_CutDriver.hxx"
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT (TOcaf_Application, TDocStd_Application)
|
||||
|
||||
//=======================================================================
|
||||
//function : TOcaf_Application
|
||||
//purpose :
|
||||
|
@@ -26,49 +26,13 @@
|
||||
class TDocStd_Document;
|
||||
|
||||
|
||||
class TOcaf_Application : public TDocStd_Application {
|
||||
|
||||
class TOcaf_Application : public TDocStd_Application
|
||||
{
|
||||
public:
|
||||
Standard_EXPORT TOcaf_Application ();
|
||||
|
||||
// Methods PUBLIC
|
||||
//
|
||||
Standard_EXPORT TOcaf_Application();
|
||||
|
||||
// Type management
|
||||
//
|
||||
//Standard_EXPORT friend Handle(Standard_Type)& TOcaf_Application_Type_();
|
||||
Standard_EXPORT const Handle(TOcaf_Application) DownCast(const Handle(Standard_Transient)& AnObject);
|
||||
Standard_EXPORT const Handle(Standard_Type)& DynamicType() const;
|
||||
Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const;
|
||||
|
||||
protected:
|
||||
|
||||
// Methods PROTECTED
|
||||
//
|
||||
|
||||
|
||||
// Fields PROTECTED
|
||||
//
|
||||
|
||||
|
||||
private:
|
||||
|
||||
// Methods PRIVATE
|
||||
//
|
||||
|
||||
|
||||
// Fields PRIVATE
|
||||
//
|
||||
|
||||
|
||||
// OCCT RTTI
|
||||
DEFINE_STANDARD_RTTIEXT (TOcaf_Application, TDocStd_Application)
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// other inline functions and methods (like "C++: function call" methods)
|
||||
//
|
||||
|
||||
|
||||
#endif
|
||||
|
@@ -1,45 +0,0 @@
|
||||
// File generated by CPPExt (Transient)
|
||||
// Copyright (C) 1991,1995 by
|
||||
//
|
||||
// MATRA DATAVISION, FRANCE
|
||||
//
|
||||
// This software is furnished in accordance with the terms and conditions
|
||||
// of the contract and with the inclusion of the above copyright notice.
|
||||
// This software or any other copy thereof may not be provided or otherwise
|
||||
// be made available to any other person. No title to an ownership of the
|
||||
// software is hereby transferred.
|
||||
//
|
||||
// At the termination of the contract, the software and all copies of this
|
||||
// software must be deleted.
|
||||
//
|
||||
#include <TOcaf_Application.jxx>
|
||||
|
||||
#ifndef _Standard_TypeMismatch_HeaderFile
|
||||
#include <Standard_TypeMismatch.hxx>
|
||||
#endif
|
||||
|
||||
// DownCast method
|
||||
// allow safe downcasting
|
||||
//
|
||||
const Handle(TOcaf_Application) TOcaf_Application::DownCast(const Handle(Standard_Transient)& AnObject)
|
||||
{
|
||||
Handle(TOcaf_Application) _anOtherObject;
|
||||
|
||||
if (!AnObject.IsNull()) {
|
||||
if (AnObject->IsKind(STANDARD_TYPE(TOcaf_Application))) {
|
||||
_anOtherObject = Handle(TOcaf_Application)((Handle(TOcaf_Application)&)AnObject);
|
||||
}
|
||||
}
|
||||
|
||||
return _anOtherObject ;
|
||||
}
|
||||
const Handle(Standard_Type)& TOcaf_Application::DynamicType() const
|
||||
{
|
||||
return STANDARD_TYPE(TOcaf_Application) ;
|
||||
}
|
||||
Standard_Boolean TOcaf_Application::IsKind(const Handle(Standard_Type)& AType) const
|
||||
{
|
||||
return (STANDARD_TYPE(TOcaf_Application) == AType || TDocStd_Application::IsKind(AType));
|
||||
}
|
||||
|
||||
|
@@ -1,9 +0,0 @@
|
||||
#ifndef _TColStd_SequenceOfExtendedString_HeaderFile
|
||||
#include <TColStd_SequenceOfExtendedString.hxx>
|
||||
#endif
|
||||
#ifndef _TDocStd_Document_HeaderFile
|
||||
#include <TDocStd_Document.hxx>
|
||||
#endif
|
||||
#ifndef _TOcaf_Application_HeaderFile
|
||||
#include <TOcaf_Application.hxx>
|
||||
#endif
|
@@ -22,15 +22,16 @@ static ApplicationCommonWindow* stApp = 0;
|
||||
static QMdiArea* stWs = 0;
|
||||
|
||||
ApplicationCommonWindow::ApplicationCommonWindow()
|
||||
: QMainWindow( 0 ),
|
||||
myWindowPopup( 0 ),
|
||||
myFilePopup( 0 ),
|
||||
: QMainWindow( 0 ),
|
||||
myNbDocuments( 0 ),
|
||||
myIsDocuments(false),
|
||||
myStdToolBar( 0 ),
|
||||
myCasCadeBar( 0 ),
|
||||
myStdToolBar( 0 )
|
||||
myFilePopup( 0 ),
|
||||
myWindowPopup( 0 ),
|
||||
myFileSeparator(NULL)
|
||||
{
|
||||
myNbDocuments = 0;
|
||||
stApp = this;
|
||||
myIsDocuments = false;
|
||||
|
||||
// create and define the central widget
|
||||
QFrame* vb = new QFrame( this );
|
||||
@@ -346,48 +347,51 @@ ApplicationCommonWindow* ApplicationCommonWindow::getApplication()
|
||||
|
||||
void ApplicationCommonWindow::updateFileActions()
|
||||
{
|
||||
if ( myDocuments.isEmpty() )
|
||||
if (!myDocuments.isEmpty())
|
||||
{
|
||||
if ( !myIsDocuments )
|
||||
return;
|
||||
}
|
||||
|
||||
if ( !myIsDocuments )
|
||||
{
|
||||
QAction* fileQuitAction = NULL;
|
||||
QAction* windowAction = NULL;
|
||||
QList<QAction *> aListActions = myFilePopup->actions();
|
||||
for ( int i = 0; i < aListActions.size(); i++ )
|
||||
{
|
||||
QAction *fileQuitAction, *windowAction;
|
||||
QList<QAction *> aListActions = myFilePopup->actions();
|
||||
for ( int i = 0; i < aListActions.size(); i++ )
|
||||
if( aListActions.at( i )->text() == QObject::tr("MNU_QUIT") )
|
||||
{
|
||||
if( aListActions.at( i )->text() == QObject::tr("MNU_QUIT") )
|
||||
{
|
||||
fileQuitAction = aListActions.at( i );
|
||||
break;
|
||||
}
|
||||
fileQuitAction = aListActions.at( i );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if( !fileQuitAction )
|
||||
return;
|
||||
if( !fileQuitAction )
|
||||
return;
|
||||
|
||||
myIsDocuments = true;
|
||||
myCasCadeBar->show();
|
||||
myIsDocuments = true;
|
||||
myCasCadeBar->show();
|
||||
|
||||
QList<QAction *> aListMenuActions = menuBar()->actions();
|
||||
for ( int i = 0; i < aListMenuActions.size(); i++ )
|
||||
{
|
||||
if( aListMenuActions.at( i )->text() == QObject::tr("MNU_HELP") )
|
||||
{
|
||||
windowAction= aListMenuActions.at( i );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if( !windowAction )
|
||||
return;
|
||||
|
||||
menuBar()->insertMenu( windowAction, myWindowPopup );
|
||||
}
|
||||
else
|
||||
QList<QAction *> aListMenuActions = menuBar()->actions();
|
||||
for ( int i = 0; i < aListMenuActions.size(); i++ )
|
||||
{
|
||||
myIsDocuments = false;
|
||||
myCasCadeBar->hide();
|
||||
menuBar()->removeAction( myWindowPopup->menuAction() );
|
||||
if( aListMenuActions.at( i )->text() == QObject::tr("MNU_HELP") )
|
||||
{
|
||||
windowAction= aListMenuActions.at( i );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if( !windowAction )
|
||||
return;
|
||||
|
||||
menuBar()->insertMenu( windowAction, myWindowPopup );
|
||||
}
|
||||
else
|
||||
{
|
||||
myIsDocuments = false;
|
||||
myCasCadeBar->hide();
|
||||
menuBar()->removeAction( myWindowPopup->menuAction() );
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -106,8 +106,7 @@ void MDIWindow::onWindowActivated ()
|
||||
void MDIWindow::dump()
|
||||
{
|
||||
QString datadir = (QString(qgetenv ("CSF_OCCTDataPath").constData()) + "/images");
|
||||
static QString filter;
|
||||
filter = "Images Files (*.bmp *.ppm *.png *.jpg *.tiff *.tga *.gif *.exr *.ps *.eps *.tex *.pdf *.svg *.pgf)";
|
||||
QString filter = "Images Files (*.bmp *.ppm *.png *.jpg *.tiff *.tga *.gif *.exr)";
|
||||
QFileDialog fd ( 0 );
|
||||
fd.setModal( true );
|
||||
fd.setNameFilter ( filter );
|
||||
@@ -135,7 +134,7 @@ void MDIWindow::dump()
|
||||
if ( !res )
|
||||
{
|
||||
QWidgetList list = qApp->allWidgets();
|
||||
QWidget* mainWidget;
|
||||
QWidget* mainWidget = NULL;
|
||||
for( int i = 0; i < list.size(); ++i )
|
||||
{
|
||||
if( qobject_cast<ApplicationCommonWindow*>( list.at( i ) ) )
|
||||
|
@@ -1034,33 +1034,6 @@ void View::onEnvironmentMap()
|
||||
|
||||
bool View::dump(Standard_CString theFile)
|
||||
{
|
||||
myView->Redraw();
|
||||
QString ext = QFileInfo( QString( theFile ) ).completeSuffix();
|
||||
if ( !ext.compare("ps") || !ext.compare("eps") || !ext.compare("tex") || !ext.compare("pdf") || !ext.compare("svg") || !ext.compare("pgf") )
|
||||
{
|
||||
Graphic3d_ExportFormat exFormat;
|
||||
if ( !ext.compare("ps") )
|
||||
exFormat = Graphic3d_EF_PostScript;
|
||||
if ( !ext.compare("eps") )
|
||||
exFormat = Graphic3d_EF_EnhPostScript;
|
||||
if ( !ext.compare("tex") )
|
||||
exFormat = Graphic3d_EF_TEX;
|
||||
if ( !ext.compare("pdf") )
|
||||
exFormat = Graphic3d_EF_PDF;
|
||||
if ( !ext.compare("svg") )
|
||||
exFormat = Graphic3d_EF_SVG;
|
||||
if ( !ext.compare("pgf") )
|
||||
exFormat = Graphic3d_EF_PGF;
|
||||
try
|
||||
{
|
||||
myView->Export( theFile, exFormat );
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return myView->Dump(theFile);
|
||||
}
|
||||
|
||||
|
@@ -1,8 +1,8 @@
|
||||
@echo off
|
||||
|
||||
call "custom.bat" %1 %2 %3
|
||||
|
||||
call "%~dp0..\..\..\env.bat" %1 %2 %3
|
||||
|
||||
call "custom.bat" %1 %2 %3
|
||||
|
||||
set "PATH=%QTDIR%/bin;%PATH%"
|
||||
set "QT_QPA_PLATFORM_PLUGIN_PATH=%QTDIR%\plugins\platforms"
|
@@ -51,7 +51,7 @@ void BaseDriver::Results(TDF_LabelList& res) const
|
||||
}
|
||||
|
||||
// Execution.
|
||||
Standard_Integer BaseDriver::Execute(Handle(TFunction_Logbook)& log) const
|
||||
Standard_Integer BaseDriver::Execute(Handle(TFunction_Logbook)& ) const
|
||||
{
|
||||
#ifdef SLOW
|
||||
// Make a boolean operation to slow down the function
|
||||
|
@@ -59,7 +59,7 @@ void SimpleDriver::Results(TDF_LabelList& res) const
|
||||
}
|
||||
|
||||
// Execution.
|
||||
Standard_Integer SimpleDriver::Execute(Handle(TFunction_Logbook)& log) const
|
||||
Standard_Integer SimpleDriver::Execute(Handle(TFunction_Logbook)& ) const
|
||||
{
|
||||
// Check initialization
|
||||
if (Label().IsNull())
|
||||
|
@@ -1,9 +1,9 @@
|
||||
@echo off
|
||||
|
||||
call "custom.bat" %1 %2 %3
|
||||
|
||||
call "%~dp0..\..\..\env.bat" %1 %2 %3
|
||||
|
||||
call "custom.bat" %1 %2 %3
|
||||
|
||||
set "RES_DIR=%~dp0win%ARCH%\%VCVER%\res"
|
||||
set "CSF_ResourcesDefaults=%RES_DIR%"
|
||||
set "CSF_IEResourcesDefaults=%RES_DIR%"
|
||||
|
@@ -245,30 +245,19 @@ bool Translate::exportModel( const int format, const Handle(AIS_InteractiveConte
|
||||
|
||||
bool Translate::exportModel( const int format, const QString& file, const Handle(TopTools_HSequenceOfShape)& shapes )
|
||||
{
|
||||
bool status;
|
||||
try {
|
||||
switch ( format )
|
||||
{
|
||||
case FormatBREP:
|
||||
status = exportBREP( file, shapes );
|
||||
break;
|
||||
case FormatIGES:
|
||||
status = exportIGES( file, shapes );
|
||||
break;
|
||||
case FormatSTEP:
|
||||
status = exportSTEP( file, shapes );
|
||||
break;
|
||||
case FormatSTL:
|
||||
status = exportSTL( file, shapes );
|
||||
break;
|
||||
case FormatVRML:
|
||||
status = exportVRML( file, shapes );
|
||||
break;
|
||||
case FormatBREP: return exportBREP( file, shapes );
|
||||
case FormatIGES: return exportIGES( file, shapes );
|
||||
case FormatSTEP: return exportSTEP( file, shapes );
|
||||
case FormatSTL: return exportSTL ( file, shapes );
|
||||
case FormatVRML: return exportVRML( file, shapes );
|
||||
}
|
||||
} catch ( Standard_Failure ) {
|
||||
status = false;
|
||||
//
|
||||
}
|
||||
return status;
|
||||
return false;
|
||||
}
|
||||
|
||||
Handle(TopTools_HSequenceOfShape) Translate::getShapes( const Handle(AIS_InteractiveContext)& ic )
|
||||
@@ -522,6 +511,9 @@ bool Translate::exportSTEP( const QString& file, const Handle(TopTools_HSequence
|
||||
case IFSelect_RetVoid:
|
||||
myInfo = QObject::tr( "INF_NOTHING_ERROR" );
|
||||
break;
|
||||
case IFSelect_RetStop:
|
||||
case IFSelect_RetDone:
|
||||
break;
|
||||
}
|
||||
return status == IFSelect_RetDone;
|
||||
}
|
||||
|
@@ -1,9 +1,9 @@
|
||||
@echo off
|
||||
|
||||
call "custom.bat" %1 %2 %3
|
||||
|
||||
call "%~dp0..\..\..\env.bat" %1 %2 %3
|
||||
|
||||
call "custom.bat" %1 %2 %3
|
||||
|
||||
set "RES_DIR=%~dp0win%ARCH%\%VCVER%\res"
|
||||
set "CSF_ResourcesDefaults=%RES_DIR%"
|
||||
set "CSF_TutorialResourcesDefaults=%RES_DIR%"
|
||||
|
@@ -14,9 +14,11 @@
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <OSD_Environment.hxx>
|
||||
#include <TInspectorEXE_OpenFileDialog.hxx>
|
||||
#include <TInspector_Communicator.hxx>
|
||||
|
||||
#include <inspector/TInspector_Communicator.hxx>
|
||||
|
||||
#include <OSD_Environment.hxx>
|
||||
|
||||
#include <QAction>
|
||||
#include <QApplication>
|
||||
@@ -86,13 +88,13 @@ int main (int argc, char** argv)
|
||||
std::set<TCollection_AsciiString> aPlugins;
|
||||
for (int anArgId = 1; anArgId < argc; anArgId++ )
|
||||
{
|
||||
if (!strcmp (argv[anArgId], "--dfbrowser"))
|
||||
if (!strcmp (argv[anArgId], "dfbrowser"))
|
||||
aPlugins.insert ("TKDFBrowser");
|
||||
|
||||
if (!strcmp (argv[anArgId], "--shapeview"))
|
||||
if (!strcmp (argv[anArgId], "shapeview"))
|
||||
aPlugins.insert ("TKShapeView");
|
||||
|
||||
if (!strcmp (argv[anArgId], "--vinspector"))
|
||||
if (!strcmp (argv[anArgId], "vinspector"))
|
||||
aPlugins.insert ("TKVInspector");
|
||||
}
|
||||
NCollection_List<Handle(Standard_Transient)> aParameters;
|
||||
|
@@ -14,10 +14,10 @@
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#include <TInspectorEXE_OpenFileDialog.hxx>
|
||||
|
||||
#include <TInspector_Communicator.hxx>
|
||||
#include <TInspectorEXE_OpenFileViewModel.hxx>
|
||||
|
||||
#include <inspector/TInspector_Communicator.hxx>
|
||||
|
||||
#include <QApplication>
|
||||
#include <QCompleter>
|
||||
#include <QDir>
|
||||
|
@@ -5,8 +5,6 @@ set (CASROOT "" CACHE PATH "Third party OpenCascade dir" )
|
||||
set (3RDPARTY_DIR "" CACHE PATH "Third party dir" )
|
||||
set (INSTALL_DIR "" CACHE PATH "Where to install" )
|
||||
|
||||
set (USE_QT4 ON CACHE BOOL "${USE_QT4}")
|
||||
|
||||
if (NOT "$ENV{CASROOT}" STREQUAL "" AND EXISTS "$ENV{CASROOT}")
|
||||
set (CASROOT "$ENV{CASROOT}")
|
||||
#set (3RDPARTY_OCCT_DIR "${CASROOT}")
|
||||
@@ -69,7 +67,7 @@ OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/freetype")
|
||||
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/freeimage")
|
||||
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/gl2ps")
|
||||
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/tbb")
|
||||
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/qt5")
|
||||
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/qt")
|
||||
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_macros")
|
||||
|
||||
#include (${CMAKE_SOURCE_DIR}/adm/cmake/3rdparty.cmake)
|
||||
@@ -106,7 +104,7 @@ message (STATUS "\nInfo: \(${CURRENT_TIME}\) Start collecting all header files i
|
||||
COLLECT_AND_INSTALL_OCCT_HEADER_FILES ("${CMAKE_BINARY_DIR}" "${BUILD_TOOLKITS}" "${CASROOT_SOURCE_FILES}/tools" "${INSTALL_DIR_INCLUDE}")
|
||||
|
||||
OCCT_INCLUDE_CMAKE_FILE_STANDALONE ("adm/cmake/standalone_macros")
|
||||
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/qt5_macro")
|
||||
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/qt_macro")
|
||||
|
||||
set (BUILD_PROJECTS
|
||||
TInspectorAPI
|
||||
|
@@ -19,7 +19,7 @@ FIND_SOURCES_AND_HEADERS_FILES(${SOURCE_DIR} SOURCE_FILES HEADER_FILES)
|
||||
|
||||
unset(RCC_FILES)
|
||||
if (USE_QT)
|
||||
FIND_QT5_PACKAGE(PROJECT_LIBRARIES_DEBUG PROJECT_LIBRARIES_RELEASE PROJECT_INCLUDES)
|
||||
FIND_QT_PACKAGE(PROJECT_LIBRARIES_DEBUG PROJECT_LIBRARIES_RELEASE PROJECT_INCLUDES)
|
||||
|
||||
FIND_AND_WRAP_MOC_FILES("${SOURCE_FILES}")
|
||||
FIND_AND_WRAP_RESOURCE_FILE("${SOURCE_DIR}/${PROJECT_NAME}.qrc" RCC_FILES)
|
||||
|
@@ -2336,6 +2336,9 @@ void AIS_InteractiveContext::EraseGlobal (const Handle(AIS_InteractiveObject)& t
|
||||
clearDynamicHighlight();
|
||||
}
|
||||
|
||||
// make sure highlighting presentations are properly erased
|
||||
theIObj->ErasePresentations (false);
|
||||
|
||||
if (IsSelected (theIObj)
|
||||
&& aStatus->DisplayMode() != aDispMode)
|
||||
{
|
||||
@@ -2396,6 +2399,7 @@ void AIS_InteractiveContext::ClearGlobal (const Handle(AIS_InteractiveObject)& t
|
||||
unhighlightOwners (theIObj);
|
||||
|
||||
myMainPM->Erase (theIObj, -1);
|
||||
theIObj->ErasePresentations (true); // make sure highlighting presentations are properly erased
|
||||
|
||||
// Object removes from Detected sequence
|
||||
Standard_DISABLE_DEPRECATION_WARNINGS
|
||||
@@ -2611,11 +2615,9 @@ Standard_Boolean AIS_InteractiveContext::IsoOnTriangulation() const
|
||||
return myDefaultDrawer->IsoOnTriangulation();
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : SetPixelTolerance
|
||||
//purpose : Disables the mechanism of adaptive tolerance calculation in
|
||||
// SelectMgr_ViewerSelector and sets the given tolerance for ALL
|
||||
// sensitive entities activated. For more information, see
|
||||
// SelectMgr_ViewerSelector.hxx
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
void AIS_InteractiveContext::SetPixelTolerance (const Standard_Integer thePrecision)
|
||||
{
|
||||
@@ -2781,24 +2783,6 @@ Standard_Boolean AIS_InteractiveContext::PlaneSize (Standard_Real& theX,
|
||||
return (Abs (theX - theY) <= Precision::Confusion());
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : SetAutoActivateSelection
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
void AIS_InteractiveContext::SetAutoActivateSelection (const Standard_Boolean theIsAuto)
|
||||
{
|
||||
myIsAutoActivateSelMode = theIsAuto;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : GetAutoActivateSelection
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
Standard_Boolean AIS_InteractiveContext::GetAutoActivateSelection() const
|
||||
{
|
||||
return myIsAutoActivateSelMode;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : SetZLayer
|
||||
//purpose :
|
||||
|
@@ -1661,6 +1661,22 @@ void AIS_InteractiveContext::NextDetected()
|
||||
myCurDetected++;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : DetectedCurrentOwner
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
Handle(SelectMgr_EntityOwner) AIS_InteractiveContext::DetectedCurrentOwner() const
|
||||
{
|
||||
if (HasOpenedContext())
|
||||
{
|
||||
return myLocalContexts (myCurLocalIndex)->DetectedCurrentOwner();
|
||||
}
|
||||
|
||||
return MoreDetected()
|
||||
? myMainSel->Picked (myDetectedSeq (myCurDetected))
|
||||
: Handle(SelectMgr_EntityOwner)();
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : DetectedCurrentShape
|
||||
//purpose :
|
||||
|
@@ -237,12 +237,13 @@ public:
|
||||
//! Gets next current object during iteration through mouse-detected
|
||||
//! interactive objects.
|
||||
Standard_EXPORT void NextDetected();
|
||||
|
||||
|
||||
//! @return current mouse-detected Owner or null object if there is no current detected.
|
||||
Standard_EXPORT Handle(SelectMgr_EntityOwner) DetectedCurrentOwner() const;
|
||||
|
||||
//! @return current mouse-detected shape or empty (null) shape, if current interactive object
|
||||
//! is not a shape (AIS_Shape) or there is no current mouse-detected interactive object at all.
|
||||
Standard_EXPORT const TopoDS_Shape& DetectedCurrentShape() const;
|
||||
|
||||
|
||||
//! @return current mouse-detected interactive object or null object if there is no current detected.
|
||||
Standard_EXPORT Handle(AIS_InteractiveObject) DetectedCurrentObject() const;
|
||||
@@ -424,7 +425,6 @@ private:
|
||||
Standard_Integer myCurrentOwner;
|
||||
TColStd_SequenceOfInteger myDetectedSeq;
|
||||
Standard_Integer myCurDetected;
|
||||
AIS_SequenceOfInteractive myAISDetectedSeq;
|
||||
Standard_Integer myAISCurDetected;
|
||||
Handle(Prs3d_Drawer) mySubintStyle;
|
||||
|
||||
|
@@ -73,7 +73,6 @@ AIS_StatusOfDetection AIS_LocalContext::MoveTo (const Standard_Integer theXpix,
|
||||
}
|
||||
|
||||
myAISCurDetected = 0;
|
||||
myAISDetectedSeq.Clear();
|
||||
|
||||
myCurDetected = 0;
|
||||
myDetectedSeq.Clear();
|
||||
@@ -84,17 +83,10 @@ AIS_StatusOfDetection AIS_LocalContext::MoveTo (const Standard_Integer theXpix,
|
||||
for (Standard_Integer aDetIter = 1; aDetIter <= aDetectedNb; ++aDetIter)
|
||||
{
|
||||
Handle(SelectMgr_EntityOwner) anOwner = myMainVS->Picked (aDetIter);
|
||||
if (anOwner.IsNull()
|
||||
|| !myFilters->IsOk (anOwner))
|
||||
if (!anOwner.IsNull()
|
||||
&& myFilters->IsOk (anOwner))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
myDetectedSeq.Append (aDetIter); // normally they are already arranged in correct order...
|
||||
Handle(AIS_InteractiveObject) anObj = Handle(AIS_InteractiveObject)::DownCast (anOwner->Selectable());
|
||||
if (!anObj.IsNull())
|
||||
{
|
||||
myAISDetectedSeq.Append (anObj);
|
||||
myDetectedSeq.Append (aDetIter); // normally they are already arranged in correct order...
|
||||
}
|
||||
}
|
||||
|
||||
@@ -868,15 +860,17 @@ void AIS_LocalContext::ClearOutdatedSelection (const Handle(AIS_InteractiveObjec
|
||||
}
|
||||
|
||||
myDetectedSeq.Remove (anIdx--);
|
||||
|
||||
if (anIdx < myCurDetected)
|
||||
if (myCurDetected > anIdx)
|
||||
{
|
||||
myCurDetected--;
|
||||
--myCurDetected;
|
||||
}
|
||||
if (myAISCurDetected > anIdx)
|
||||
{
|
||||
--myAISCurDetected;
|
||||
}
|
||||
}
|
||||
myCurDetected = Max (myCurDetected, 1);
|
||||
|
||||
Standard_Boolean isAISRemainsDetected = Standard_False;
|
||||
myCurDetected = Max (myCurDetected, 1);
|
||||
myAISCurDetected = Max (myAISCurDetected, 1);
|
||||
|
||||
// 3. AIS_Selection : remove entity owners from AIS_Selection
|
||||
const Handle(V3d_Viewer)& aViewer = myCTX->CurrentViewer();
|
||||
@@ -889,11 +883,7 @@ void AIS_LocalContext::ClearOutdatedSelection (const Handle(AIS_InteractiveObjec
|
||||
continue;
|
||||
}
|
||||
|
||||
if (aValidOwners.Contains (anOwner))
|
||||
{
|
||||
isAISRemainsDetected = Standard_True;
|
||||
}
|
||||
else
|
||||
if (!aValidOwners.Contains (anOwner))
|
||||
{
|
||||
aRemoveEntites.Append (anOwner);
|
||||
anOwner->SetSelected (Standard_False);
|
||||
@@ -968,28 +958,6 @@ void AIS_LocalContext::ClearOutdatedSelection (const Handle(AIS_InteractiveObjec
|
||||
Standard_False);
|
||||
}
|
||||
}
|
||||
|
||||
// Renew iterator of ::DetectedCurrentObject()
|
||||
if (!isAISRemainsDetected)
|
||||
{
|
||||
// Remove the interactive object from detected sequences
|
||||
for (Standard_Integer anIdx = 1; anIdx <= myAISDetectedSeq.Length(); ++anIdx)
|
||||
{
|
||||
Handle(AIS_InteractiveObject) aDetectedIO = myAISDetectedSeq.Value (anIdx);
|
||||
if (aDetectedIO.IsNull() || aDetectedIO != theIO)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
myAISDetectedSeq.Remove (anIdx--);
|
||||
|
||||
if (anIdx < myAISCurDetected)
|
||||
{
|
||||
myAISCurDetected--;
|
||||
}
|
||||
}
|
||||
myAISCurDetected = Max (myAISCurDetected, 1);
|
||||
}
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
@@ -1454,7 +1422,7 @@ Handle(SelectMgr_EntityOwner) AIS_LocalContext::FindSelectedOwnerFromShape(const
|
||||
//=======================================================================
|
||||
void AIS_LocalContext::InitDetected()
|
||||
{
|
||||
myAISCurDetected = myAISDetectedSeq.Length()? 1 : 0;
|
||||
myAISCurDetected = !myDetectedSeq.IsEmpty() ? myDetectedSeq.Lower() : 0;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
@@ -1463,7 +1431,8 @@ void AIS_LocalContext::InitDetected()
|
||||
//=======================================================================
|
||||
Standard_Boolean AIS_LocalContext::MoreDetected() const
|
||||
{
|
||||
return (myAISCurDetected > 0 && myAISCurDetected <= myAISDetectedSeq.Length());
|
||||
return myAISCurDetected >= myDetectedSeq.Lower()
|
||||
&& myAISCurDetected <= myDetectedSeq.Upper();
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
@@ -1490,13 +1459,29 @@ const TopoDS_Shape& AIS_LocalContext::DetectedCurrentShape() const
|
||||
|
||||
return aCurrentShape->Shape();
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : DetectedCurrentOwner
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
Handle(SelectMgr_EntityOwner) AIS_LocalContext::DetectedCurrentOwner() const
|
||||
{
|
||||
return MoreDetected()
|
||||
? myMainVS->Picked (myDetectedSeq (myAISCurDetected))
|
||||
: Handle(SelectMgr_EntityOwner)();
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : DetectedCurrentObject
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
Handle(AIS_InteractiveObject) AIS_LocalContext::DetectedCurrentObject() const
|
||||
{
|
||||
return MoreDetected() ? myAISDetectedSeq(myAISCurDetected) : NULL;
|
||||
if (!MoreDetected())
|
||||
{
|
||||
return Handle(AIS_InteractiveObject)();
|
||||
}
|
||||
return Handle(AIS_InteractiveObject)::DownCast (myMainVS->Picked (myDetectedSeq (myAISCurDetected))->Selectable());
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
|
@@ -292,7 +292,7 @@ void AIS_Shape::Compute(const Handle(Prs3d_Projector)& aProjector,
|
||||
OCC_CATCH_SIGNALS
|
||||
switch (TypeOfHLR()) {
|
||||
case Prs3d_TOH_Algo:
|
||||
StdPrs_HLRShape::Add (aPresentation, SH, myDrawer, aProjector);
|
||||
StdPrs_HLRShape::Add (aPresentation, SH, myDrawer, aProjector);
|
||||
break;
|
||||
case Prs3d_TOH_PolyAlgo:
|
||||
default:
|
||||
|
@@ -128,7 +128,7 @@ void AIS_Triangulation::Compute(const Handle(PrsMgr_PresentationManager3d)& /*aP
|
||||
const Handle(Prs3d_Presentation)& aPresentation,
|
||||
const Standard_Integer aMode)
|
||||
{
|
||||
switch (aMode)
|
||||
switch (aMode)
|
||||
{
|
||||
case 0:
|
||||
const TColgp_Array1OfPnt& nodes = myTriangulation->Nodes(); //Nodes
|
||||
@@ -203,7 +203,7 @@ void AIS_Triangulation::Compute(const Handle(PrsMgr_PresentationManager3d)& /*aP
|
||||
|
||||
//=======================================================================
|
||||
//function : ComputeSelection
|
||||
//purpose :
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
void AIS_Triangulation::ComputeSelection(const Handle(SelectMgr_Selection)& /*aSelection*/,
|
||||
const Standard_Integer /*aMode*/)
|
||||
@@ -238,7 +238,7 @@ Handle(TColStd_HArray1OfInteger) AIS_Triangulation::GetColors() const
|
||||
|
||||
//=======================================================================
|
||||
//function : SetTriangulation
|
||||
//purpose :
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
void AIS_Triangulation::SetTriangulation(const Handle(Poly_Triangulation)& aTriangulation)
|
||||
{
|
||||
@@ -247,7 +247,7 @@ void AIS_Triangulation::SetTriangulation(const Handle(Poly_Triangulation)& aTria
|
||||
|
||||
//=======================================================================
|
||||
//function : GetTriangulation
|
||||
//purpose :
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
Handle(Poly_Triangulation) AIS_Triangulation::GetTriangulation() const{
|
||||
return myTriangulation;
|
||||
@@ -255,25 +255,19 @@ Handle(Poly_Triangulation) AIS_Triangulation::GetTriangulation() const{
|
||||
|
||||
//=======================================================================
|
||||
//function : AttenuateColor
|
||||
//purpose : Attenuates 32-bit color by a given attenuation factor (0...1):
|
||||
// aColor = Alpha << 24 + Blue << 16 + Green << 8 + Red
|
||||
// All color components are multiplied by aComponent, the result is then packed again as 32-bit integer.
|
||||
// Color attenuation is applied to the vertex colors in order to have correct visual result
|
||||
// after glColorMaterial(GL_AMBIENT_AND_DIFFUSE). Without it, colors look unnatural and flat.
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Graphic3d_Vec4ub AIS_Triangulation::attenuateColor (const Standard_Integer theColor,
|
||||
const Standard_Real theComposition)
|
||||
{
|
||||
const Standard_Byte* anRgbx = reinterpret_cast<const Standard_Byte*> (&theColor);
|
||||
|
||||
const Graphic3d_Vec4ub& aColor = *reinterpret_cast<const Graphic3d_Vec4ub*> (&theColor);
|
||||
// If IsTranparent() is false alpha value will be ignored anyway.
|
||||
Standard_Byte anAlpha = IsTransparent() ? static_cast<Standard_Byte> (255.0 - myDrawer->ShadingAspect()->Aspect()->FrontMaterial().Transparency() * 255.0)
|
||||
: 255;
|
||||
|
||||
return Graphic3d_Vec4ub ((Standard_Byte)(theComposition * aColor.r()),
|
||||
(Standard_Byte)(theComposition * aColor.g()),
|
||||
(Standard_Byte)(theComposition * aColor.b()),
|
||||
return Graphic3d_Vec4ub ((Standard_Byte)(theComposition * anRgbx[0]),
|
||||
(Standard_Byte)(theComposition * anRgbx[1]),
|
||||
(Standard_Byte)(theComposition * anRgbx[2]),
|
||||
anAlpha);
|
||||
}
|
||||
|
||||
|
@@ -17,6 +17,7 @@
|
||||
#include <AdvApp2Var_Data_f2c.hxx>
|
||||
#include <AdvApp2Var_MathBase.hxx>
|
||||
#include <AdvApp2Var_Data.hxx>
|
||||
#include <NCollection_Array1.hxx>
|
||||
|
||||
// statics
|
||||
static
|
||||
@@ -120,11 +121,11 @@ int mmdrvcb_(integer *ideriv,
|
||||
|
||||
static
|
||||
int mmexthi_(integer *ndegre,
|
||||
doublereal *hwgaus);
|
||||
NCollection_Array1<doublereal>& hwgaus);
|
||||
|
||||
static
|
||||
int mmextrl_(integer *ndegre,
|
||||
doublereal *rootlg);
|
||||
NCollection_Array1<doublereal>& rootlg);
|
||||
|
||||
|
||||
|
||||
@@ -152,7 +153,7 @@ int mmpojac_(doublereal *tparam,
|
||||
integer *iordre,
|
||||
integer *ncoeff,
|
||||
integer *nderiv,
|
||||
doublereal *valjac,
|
||||
NCollection_Array1<doublereal>& valjac,
|
||||
integer *iercod);
|
||||
|
||||
static
|
||||
@@ -3764,7 +3765,7 @@ int AdvApp2Var_MathBase::mmeps1_(doublereal *epsilo)
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
int mmexthi_(integer *ndegre,
|
||||
doublereal *hwgaus)
|
||||
NCollection_Array1<doublereal>& hwgaus)
|
||||
|
||||
{
|
||||
/* System generated locals */
|
||||
@@ -3855,8 +3856,6 @@ int mmexthi_(integer *ndegre,
|
||||
|
||||
/************************************************************************
|
||||
*****/
|
||||
/* Parameter adjustments */
|
||||
--hwgaus;
|
||||
|
||||
/* Function Body */
|
||||
ibb = AdvApp2Var_SysBase::mnfndeb_();
|
||||
@@ -3882,7 +3881,7 @@ int mmexthi_(integer *ndegre,
|
||||
i__1 = *ndegre;
|
||||
for (ii = ideb; ii <= i__1; ++ii) {
|
||||
kpt = iadd + ii - ideb;
|
||||
hwgaus[ii] = mlgdrtl_.hiltab[kpt + nmod2 * 465 - 1];
|
||||
hwgaus(ii) = mlgdrtl_.hiltab[kpt + nmod2 * 465 - 1];
|
||||
/* L100: */
|
||||
}
|
||||
|
||||
@@ -3891,7 +3890,7 @@ int mmexthi_(integer *ndegre,
|
||||
|
||||
i__1 = ndeg2;
|
||||
for (ii = 1; ii <= i__1; ++ii) {
|
||||
hwgaus[ii] = hwgaus[*ndegre + 1 - ii];
|
||||
hwgaus(ii) = hwgaus(*ndegre + 1 - ii);
|
||||
/* L200: */
|
||||
}
|
||||
|
||||
@@ -3899,7 +3898,7 @@ int mmexthi_(integer *ndegre,
|
||||
/* associated Gauss weights are loaded. */
|
||||
|
||||
if (nmod2 == 1) {
|
||||
hwgaus[ndeg2 + 1] = mlgdrtl_.hi0tab[ndeg2];
|
||||
hwgaus(ndeg2 + 1) = mlgdrtl_.hi0tab[ndeg2];
|
||||
}
|
||||
|
||||
/* --------------------------- The end ----------------------------------
|
||||
@@ -3916,7 +3915,7 @@ int mmexthi_(integer *ndegre,
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
int mmextrl_(integer *ndegre,
|
||||
doublereal *rootlg)
|
||||
NCollection_Array1<doublereal>& rootlg)
|
||||
{
|
||||
/* System generated locals */
|
||||
integer i__1;
|
||||
@@ -4002,8 +4001,6 @@ int mmextrl_(integer *ndegre,
|
||||
|
||||
/************************************************************************
|
||||
*****/
|
||||
/* Parameter adjustments */
|
||||
--rootlg;
|
||||
|
||||
/* Function Body */
|
||||
ibb = AdvApp2Var_SysBase::mnfndeb_();
|
||||
@@ -4029,7 +4026,7 @@ int mmextrl_(integer *ndegre,
|
||||
i__1 = *ndegre;
|
||||
for (ii = ideb; ii <= i__1; ++ii) {
|
||||
kpt = iadd + ii - ideb;
|
||||
rootlg[ii] = mlgdrtl_.rootab[kpt + nmod2 * 465 - 1];
|
||||
rootlg(ii) = mlgdrtl_.rootab[kpt + nmod2 * 465 - 1];
|
||||
/* L100: */
|
||||
}
|
||||
|
||||
@@ -4040,14 +4037,14 @@ int mmextrl_(integer *ndegre,
|
||||
|
||||
i__1 = ndeg2;
|
||||
for (ii = 1; ii <= i__1; ++ii) {
|
||||
rootlg[ii] = -rootlg[*ndegre + 1 - ii];
|
||||
rootlg(ii) = -rootlg(*ndegre + 1 - ii);
|
||||
/* L200: */
|
||||
}
|
||||
|
||||
/* Case NDEGRE uneven, 0 is root of Legendre polynom. */
|
||||
|
||||
if (nmod2 == 1) {
|
||||
rootlg[ndeg2 + 1] = 0.;
|
||||
rootlg(ndeg2 + 1) = 0.;
|
||||
}
|
||||
|
||||
/* -------------------------------- THE END -----------------------------
|
||||
@@ -6590,7 +6587,8 @@ L9900:
|
||||
integer valbas_dim1, i__1;
|
||||
|
||||
/* Local variables */
|
||||
doublereal vjac[80], herm[24];
|
||||
doublereal vjacc[80], herm[24];
|
||||
NCollection_Array1<doublereal> vjac (vjacc[0], 1, 80);
|
||||
integer iord[2];
|
||||
doublereal wval[4];
|
||||
integer nwcof, iunit;
|
||||
@@ -6785,7 +6783,7 @@ L9900:
|
||||
|
||||
i__1 = kk1;
|
||||
for (ii = 1; ii <= i__1; ++ii) {
|
||||
valbas[ii + iorjac] = wval[0] * vjac[ii - 1];
|
||||
valbas[ii + iorjac] = wval[0] * vjac(ii);
|
||||
}
|
||||
|
||||
/* (3) Evaluation of order 1 */
|
||||
@@ -6801,8 +6799,8 @@ L9900:
|
||||
|
||||
i__1 = kk1;
|
||||
for (ii = 1; ii <= i__1; ++ii) {
|
||||
valbas[ii + iorjac + valbas_dim1] = wval[0] * vjac[ii + kk1 - 1]
|
||||
+ wval[1] * vjac[ii - 1];
|
||||
valbas[ii + iorjac + valbas_dim1] = wval[0] * vjac(ii + kk1)
|
||||
+ wval[1] * vjac(ii);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6818,9 +6816,9 @@ L9900:
|
||||
|
||||
i__1 = kk1;
|
||||
for (ii = 1; ii <= i__1; ++ii) {
|
||||
valbas[ii + iorjac + (valbas_dim1 << 1)] = wval[0] * vjac[ii +
|
||||
kk2 - 1] + wval[1] * 2 * vjac[ii + kk1 - 1] + wval[2] *
|
||||
vjac[ii - 1];
|
||||
valbas[ii + iorjac + (valbas_dim1 << 1)] = wval[0] * vjac(ii +
|
||||
kk2) + wval[1] * 2 * vjac(ii + kk1) + wval[2] *
|
||||
vjac(ii);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6836,9 +6834,9 @@ L9900:
|
||||
|
||||
i__1 = kk1;
|
||||
for (ii = 1; ii <= i__1; ++ii) {
|
||||
valbas[ii + iorjac + valbas_dim1 * 3] = wval[0] * vjac[ii + kk3 -
|
||||
1] + wval[1] * 3 * vjac[ii + kk2 - 1] + wval[2] * 3 *
|
||||
vjac[ii + kk1 - 1] + wval[3] * vjac[ii - 1];
|
||||
valbas[ii + iorjac + valbas_dim1 * 3] = wval[0] * vjac(ii + kk3)
|
||||
+ wval[1] * 3 * vjac(ii + kk2) + wval[2] * 3 *
|
||||
vjac(ii + kk1) + wval[3] * vjac(ii);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7092,7 +7090,7 @@ int mmpojac_(doublereal *tparam,
|
||||
integer *iordre,
|
||||
integer *ncoeff,
|
||||
integer *nderiv,
|
||||
doublereal *valjac,
|
||||
NCollection_Array1<doublereal>& valjac,
|
||||
integer *iercod)
|
||||
|
||||
{
|
||||
@@ -7167,7 +7165,6 @@ int mmpojac_(doublereal *tparam,
|
||||
|
||||
/* Parameter adjustments */
|
||||
valjac_dim1 = *ncoeff;
|
||||
--valjac;
|
||||
|
||||
/* Function Body */
|
||||
|
||||
@@ -7213,21 +7210,21 @@ int mmpojac_(doublereal *tparam,
|
||||
|
||||
/* --- Trivial Positions ----- */
|
||||
|
||||
valjac[1] = 1.;
|
||||
valjac(1) = 1.;
|
||||
aux1 = (doublereal) (*iordre + 1);
|
||||
valjac[2] = aux1 * *tparam;
|
||||
valjac(2) = aux1 * *tparam;
|
||||
|
||||
if (*nderiv >= 1) {
|
||||
valjac[valjac_dim1 + 1] = 0.;
|
||||
valjac[valjac_dim1 + 2] = aux1;
|
||||
valjac(valjac_dim1 + 1) = 0.;
|
||||
valjac(valjac_dim1 + 2) = aux1;
|
||||
|
||||
if (*nderiv >= 2) {
|
||||
valjac[(valjac_dim1 << 1) + 1] = 0.;
|
||||
valjac[(valjac_dim1 << 1) + 2] = 0.;
|
||||
valjac((valjac_dim1 << 1) + 1) = 0.;
|
||||
valjac((valjac_dim1 << 1) + 2) = 0.;
|
||||
|
||||
if (*nderiv >= 3) {
|
||||
valjac[valjac_dim1 * 3 + 1] = 0.;
|
||||
valjac[valjac_dim1 * 3 + 2] = 0.;
|
||||
valjac(valjac_dim1 * 3 + 1) = 0.;
|
||||
valjac(valjac_dim1 * 3 + 2) = 0.;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7247,26 +7244,26 @@ int mmpojac_(doublereal *tparam,
|
||||
denom = 1. / denom;
|
||||
|
||||
/* --> Pi(t) */
|
||||
valjac[ii] = (cofa * *tparam * valjac[kk1] + cofb * valjac[kk2]) *
|
||||
valjac(ii) = (cofa * *tparam * valjac(kk1) + cofb * valjac(kk2)) *
|
||||
denom;
|
||||
/* --> P'i(t) */
|
||||
if (*nderiv >= 1) {
|
||||
valjac[ii + valjac_dim1] = (cofa * *tparam * valjac[kk1 +
|
||||
valjac_dim1] + cofa * valjac[kk1] + cofb * valjac[kk2 +
|
||||
valjac_dim1]) * denom;
|
||||
valjac(ii + valjac_dim1) = (cofa * *tparam * valjac(kk1 +
|
||||
valjac_dim1) + cofa * valjac(kk1) + cofb * valjac(kk2 +
|
||||
valjac_dim1)) * denom;
|
||||
/* --> P''i(t) */
|
||||
if (*nderiv >= 2) {
|
||||
valjac[ii + (valjac_dim1 << 1)] = (cofa * *tparam * valjac[
|
||||
kk1 + (valjac_dim1 << 1)] + cofa * 2 * valjac[kk1 +
|
||||
valjac_dim1] + cofb * valjac[kk2 + (valjac_dim1 << 1)]
|
||||
valjac(ii + (valjac_dim1 << 1)) = (cofa * *tparam * valjac(
|
||||
kk1 + (valjac_dim1 << 1)) + cofa * 2 * valjac(kk1 +
|
||||
valjac_dim1) + cofb * valjac(kk2 + (valjac_dim1 << 1))
|
||||
) * denom;
|
||||
}
|
||||
/* --> P'i(t) */
|
||||
if (*nderiv >= 3) {
|
||||
valjac[ii + valjac_dim1 * 3] = (cofa * *tparam * valjac[kk1 +
|
||||
valjac_dim1 * 3] + cofa * 3 * valjac[kk1 + (
|
||||
valjac_dim1 << 1)] + cofb * valjac[kk2 + valjac_dim1 *
|
||||
3]) * denom;
|
||||
valjac(ii + valjac_dim1 * 3) = (cofa * *tparam * valjac(kk1 +
|
||||
valjac_dim1 * 3) + cofa * 3 * valjac(kk1 + (
|
||||
valjac_dim1 << 1)) + cofb * valjac(kk2 + valjac_dim1 *
|
||||
3)) * denom;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7277,8 +7274,8 @@ int mmpojac_(doublereal *tparam,
|
||||
for (ii = 1; ii <= i__1; ++ii) {
|
||||
i__2 = *nderiv;
|
||||
for (jj = 0; jj <= i__2; ++jj) {
|
||||
valjac[ii + jj * valjac_dim1] = tnorm[ii - 1] * valjac[ii + jj *
|
||||
valjac_dim1];
|
||||
valjac(ii + jj * valjac_dim1) = tnorm[ii - 1] * valjac(ii + jj *
|
||||
valjac_dim1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10658,7 +10655,8 @@ int mvgaus0_(integer *kindic,
|
||||
integer i__1;
|
||||
|
||||
/* Local variables */
|
||||
doublereal tamp[40];
|
||||
doublereal tampc[40];
|
||||
NCollection_Array1<doublereal> tamp (tampc[0], 1, 40);
|
||||
integer ndegl, kg, ii;
|
||||
|
||||
/* **********************************************************************
|
||||
@@ -10751,7 +10749,7 @@ int mvgaus0_(integer *kindic,
|
||||
mmextrl_(&ndegl, tamp);
|
||||
i__1 = *nbrval;
|
||||
for (ii = 1; ii <= i__1; ++ii) {
|
||||
urootl[ii] = -tamp[ii - 1];
|
||||
urootl[ii] = -tamp(ii);
|
||||
/* L100: */
|
||||
}
|
||||
|
||||
@@ -10762,7 +10760,7 @@ int mvgaus0_(integer *kindic,
|
||||
mmexthi_(&ndegl, tamp);
|
||||
i__1 = *nbrval;
|
||||
for (ii = 1; ii <= i__1; ++ii) {
|
||||
hiltab[ii] = tamp[ii - 1];
|
||||
hiltab[ii] = tamp(ii);
|
||||
/* L200: */
|
||||
}
|
||||
|
||||
|
@@ -102,8 +102,8 @@ class BOPAlgo_PaveFiller;
|
||||
//! aMV.SetIntersect(bIntersect); //intersect or not the shapes from <aLS>
|
||||
//! //
|
||||
//! aMV.Perform(); //perform the operation
|
||||
//! if (aMV.ErrorStatus()) { //check error status
|
||||
//! return;
|
||||
//! if (aMV.HasErrors()) { //check error status
|
||||
//! return;
|
||||
//! }
|
||||
//! //
|
||||
//! const TopoDS_Shape& aResult = aMV.Shape(); //result of the operation
|
||||
|
@@ -2602,21 +2602,27 @@ void BOPAlgo_PaveFiller::UpdatePaveBlocks
|
||||
}
|
||||
//
|
||||
if (bRebuild) {
|
||||
Standard_Boolean isDegEdge = myDS->ShapeInfo(aPB->Edge()).HasFlag();
|
||||
Standard_Integer nE = aPB->Edge();
|
||||
// Check if the Pave Block has the edge set
|
||||
if (nE < 0) {
|
||||
// untouched edge
|
||||
nE = aPB->OriginalEdge();
|
||||
}
|
||||
Standard_Boolean isDegEdge = myDS->ShapeInfo(nE).HasFlag();
|
||||
if (wasRegularEdge && !isDegEdge && nV[0] == nV[1]) {
|
||||
// now edge has the same vertex on both ends;
|
||||
// check if it is not a regular closed curve.
|
||||
const TopoDS_Edge& aE = TopoDS::Edge(myDS->Shape(aPB->Edge()));
|
||||
const TopoDS_Edge& aE = TopoDS::Edge(myDS->Shape(nE));
|
||||
const TopoDS_Vertex& aV = TopoDS::Vertex(myDS->Shape(nV[0]));
|
||||
Standard_Real aLength = IntTools::Length(aE);
|
||||
Standard_Real aTolV = BRep_Tool::Tolerance(aV);
|
||||
if (aLength <= aTolV * 2.) {
|
||||
// micro edge, so mark it for removal
|
||||
aMicroEdges.Add(aPB->Edge());
|
||||
aMicroEdges.Add(nE);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
nSp = SplitEdge(aPB->Edge(), nV[0], aT[0], nV[1], aT[1]);
|
||||
nSp = SplitEdge(nE, nV[0], aT[0], nV[1], aT[1]);
|
||||
if (bCB)
|
||||
aCB->SetEdge(nSp);
|
||||
else
|
||||
|
@@ -67,7 +67,7 @@ void BRepTopAdaptor_Tool::Init(const Handle(Adaptor3d_HSurface)& surface,
|
||||
myloaded=Standard_True;
|
||||
}
|
||||
|
||||
Handle(BRepTopAdaptor_TopolTool) BRepTopAdaptor_Tool::GetTopolTool() const{
|
||||
Handle(BRepTopAdaptor_TopolTool) BRepTopAdaptor_Tool::GetTopolTool() {
|
||||
if(myloaded) {
|
||||
return(myTopolTool);
|
||||
}
|
||||
@@ -79,7 +79,7 @@ Handle(BRepTopAdaptor_TopolTool) BRepTopAdaptor_Tool::GetTopolTool() const{
|
||||
}
|
||||
}
|
||||
|
||||
Handle(Adaptor3d_HSurface) BRepTopAdaptor_Tool::GetSurface() const{
|
||||
Handle(Adaptor3d_HSurface) BRepTopAdaptor_Tool::GetSurface() {
|
||||
if(myloaded) {
|
||||
return(myHSurface);
|
||||
}
|
||||
|
@@ -46,11 +46,11 @@ public:
|
||||
|
||||
Standard_EXPORT void Init (const Handle(Adaptor3d_HSurface)& Surface, const Standard_Real Tol2d);
|
||||
|
||||
Standard_EXPORT Handle(BRepTopAdaptor_TopolTool) GetTopolTool() const;
|
||||
Standard_EXPORT Handle(BRepTopAdaptor_TopolTool) GetTopolTool();
|
||||
|
||||
Standard_EXPORT void SetTopolTool (const Handle(BRepTopAdaptor_TopolTool)& TT);
|
||||
|
||||
Standard_EXPORT Handle(Adaptor3d_HSurface) GetSurface() const;
|
||||
Standard_EXPORT Handle(Adaptor3d_HSurface) GetSurface();
|
||||
|
||||
Standard_EXPORT void Destroy();
|
||||
~BRepTopAdaptor_Tool()
|
||||
|
@@ -300,23 +300,3 @@ void Bnd_Box2d::Dump () const
|
||||
cout << "\n Gap : " << Gap;
|
||||
cout << "\n";
|
||||
}
|
||||
|
||||
Standard_Real Bnd_Box2d::SquareDistance (const gp_Pnt2d& thePnt2d) const
|
||||
{
|
||||
Standard_Real Xmin, Xmax, Ymin, Ymax;
|
||||
Standard_Real X = thePnt2d.X(), Y = thePnt2d.Y();
|
||||
Standard_Real dd = 0;
|
||||
Get(Xmin, Ymin, Xmax, Ymax);
|
||||
|
||||
if (X < Xmin)
|
||||
dd += (Xmin - X)*(Xmin - X);
|
||||
else if (X > Xmax)
|
||||
dd += (Xmax - X)*(Xmax - X);
|
||||
|
||||
if (Y < Ymin)
|
||||
dd += (Ymin - Y)*(Ymin - Y);
|
||||
else if (Y > Ymax)
|
||||
dd += (Ymax - Y)*(Ymax - Y);
|
||||
|
||||
return dd;
|
||||
}
|
@@ -182,10 +182,6 @@ public:
|
||||
|
||||
//! Returns True if the 2d pnt <P> is out <me>.
|
||||
Standard_EXPORT Standard_Boolean IsOut (const gp_Pnt2d& P) const;
|
||||
|
||||
//! Returns distance from point <thePnt2d> to <me>
|
||||
//! distance will be 0 if point is inside of <me>
|
||||
Standard_EXPORT Standard_Real SquareDistance (const gp_Pnt2d& thePnt2d) const;
|
||||
|
||||
//! Returns True if <Box2d> is out <me>.
|
||||
Standard_EXPORT Standard_Boolean IsOut (const Bnd_Box2d& Other) const;
|
||||
|
@@ -36,15 +36,14 @@ void Contap_ArcFunction::Set(const Handle(Adaptor3d_HSurface)& S)
|
||||
{
|
||||
mySurf = S;
|
||||
Standard_Integer i;
|
||||
Standard_Real uinf, vinf, usup, vsup;
|
||||
Standard_Integer nbs = Contap_HContTool::NbSamplePoints(S, uinf, vinf, usup, vsup);
|
||||
Standard_Integer nbs = Contap_HContTool::NbSamplePoints(S);
|
||||
Standard_Real U,V;
|
||||
// gp_Vec d1u,d1v;
|
||||
gp_Vec norm;
|
||||
if (nbs > 0) {
|
||||
myMean = 0.;
|
||||
for (i = 1; i <= nbs; i++) {
|
||||
Contap_HContTool::SamplePoint(S,i,U,V, uinf, vinf, usup, vsup);
|
||||
Contap_HContTool::SamplePoint(S,i,U,V);
|
||||
// Adaptor3d_HSurfaceTool::D1(S,U,V,solpt,d1u,d1v);
|
||||
// myMean = myMean + d1u.Crossed(d1v).Magnitude();
|
||||
Contap_SurfProps::Normale(S,U,V,solpt,norm);
|
||||
|
@@ -1237,16 +1237,9 @@ void ComputeInternalPoints
|
||||
// Essayer de converger
|
||||
// cout << "Changement de signe detecte" << endl;
|
||||
solution = Standard_False;
|
||||
math_Vector dir1(1,2), dir2(1,2);
|
||||
math_Vector prevX(1,2), prevPrevX (1,2);
|
||||
int count = 0;
|
||||
int revCount = 0;
|
||||
double dot = 0;
|
||||
double t = 0.5;
|
||||
while (!solution)
|
||||
{
|
||||
X(1) =/* (XInf(1) + XSup(1)) /2.;*/ XInf(1) + t * (XSup(1) - XInf(1));
|
||||
X(2) = /*(XInf(2) + XSup(2)) /2.;*/XInf(2) + t * (XSup(2) - XInf(2));
|
||||
while (!solution) {
|
||||
X(1) = (XInf(1) + XSup(1)) /2.;
|
||||
X(2) = (XInf(2) + XSup(2)) /2.;
|
||||
rsnld.Perform(SFunc,X,infb,supb);
|
||||
|
||||
if (!rsnld.IsDone()) {
|
||||
@@ -1271,27 +1264,6 @@ void ComputeInternalPoints
|
||||
else {
|
||||
vtestb = gp_Vec(0.,0.,0.);
|
||||
}
|
||||
count++;
|
||||
if (count > 10)
|
||||
{
|
||||
if (count > 12)
|
||||
{
|
||||
dir1 = prevX - prevPrevX;
|
||||
dir2 = X - prevX;
|
||||
double d1n = dir1.Norm();
|
||||
double d2n = dir2.Norm();
|
||||
if (d1n > gp::Resolution() && d2n > gp::Resolution())
|
||||
{
|
||||
dir1 /= d1n;
|
||||
dir2 /= d2n;
|
||||
dot = dir1(1) * dir2(1) + dir1(2) * dir2(2);
|
||||
if (Abs(dot + 1) < 1e-10)
|
||||
revCount++;
|
||||
}
|
||||
}
|
||||
prevPrevX = prevX;
|
||||
prevX = X;
|
||||
}
|
||||
if ((vtestb.Magnitude() <= gp::Resolution())||
|
||||
(Abs(X(1)-XInf(1)) <= toler(1)
|
||||
&& Abs(X(2)-XInf(2)) <= toler(2)) ||
|
||||
@@ -1306,11 +1278,6 @@ void ComputeInternalPoints
|
||||
}
|
||||
else {
|
||||
XInf = X;
|
||||
if (revCount > 10000)
|
||||
{
|
||||
//XInf = (X + prevPrevX)/2;
|
||||
t = 0.75;
|
||||
}
|
||||
}
|
||||
}
|
||||
else { // on n est pas sur une solution
|
||||
|
@@ -24,6 +24,8 @@
|
||||
#include <gp_Pnt.hxx>
|
||||
#include <gp_Pnt2d.hxx>
|
||||
|
||||
static Standard_Real uinf,vinf,usup,vsup;
|
||||
|
||||
Standard_Integer Contap_HContTool::NbSamplesV
|
||||
(const Handle(Adaptor3d_HSurface)& S,
|
||||
const Standard_Real ,
|
||||
@@ -123,7 +125,7 @@ Standard_Integer Contap_HContTool::NbSamplesU
|
||||
}
|
||||
|
||||
Standard_Integer Contap_HContTool::NbSamplePoints
|
||||
(const Handle(Adaptor3d_HSurface)& S, Standard_Real& uinf, Standard_Real& vinf, Standard_Real& usup, Standard_Real& vsup)
|
||||
(const Handle(Adaptor3d_HSurface)& S)
|
||||
{
|
||||
uinf = S->FirstUParameter();
|
||||
usup = S->LastUParameter();
|
||||
@@ -173,11 +175,7 @@ Standard_Integer Contap_HContTool::NbSamplePoints
|
||||
void Contap_HContTool::SamplePoint (const Handle(Adaptor3d_HSurface)& S,
|
||||
const Standard_Integer Index,
|
||||
Standard_Real& U,
|
||||
Standard_Real& V,
|
||||
const Standard_Real& uinf,
|
||||
const Standard_Real& vinf,
|
||||
const Standard_Real& usup,
|
||||
const Standard_Real& vsup)
|
||||
Standard_Real& V )
|
||||
{
|
||||
if(S->GetType() == GeomAbs_BSplineSurface) {
|
||||
Standard_Integer nbIntU = NbSamplesU(S,uinf,usup)/3;
|
||||
|
@@ -44,10 +44,9 @@ public:
|
||||
|
||||
Standard_EXPORT static Standard_Integer NbSamplesV (const Handle(Adaptor3d_HSurface)& S, const Standard_Real v1, const Standard_Real v2);
|
||||
|
||||
Standard_EXPORT static Standard_Integer NbSamplePoints (const Handle(Adaptor3d_HSurface)& S, Standard_Real& uinf, Standard_Real& vinf, Standard_Real& usup, Standard_Real& vsup);
|
||||
Standard_EXPORT static Standard_Integer NbSamplePoints (const Handle(Adaptor3d_HSurface)& S);
|
||||
|
||||
Standard_EXPORT static void SamplePoint (const Handle(Adaptor3d_HSurface)& S, const Standard_Integer Index, Standard_Real& U, Standard_Real& V,
|
||||
const Standard_Real& uinf, const Standard_Real& vinf, const Standard_Real& usup, const Standard_Real& vsup);
|
||||
Standard_EXPORT static void SamplePoint (const Handle(Adaptor3d_HSurface)& S, const Standard_Integer Index, Standard_Real& U, Standard_Real& V);
|
||||
|
||||
//! Returns True if all the intersection point and edges
|
||||
//! are known on the Arc.
|
||||
|
@@ -42,14 +42,13 @@ void Contap_SurfFunction::Set(const Handle(Adaptor3d_HSurface)& S)
|
||||
{
|
||||
mySurf = S;
|
||||
Standard_Integer i;
|
||||
Standard_Real uinf,vinf,usup,vsup;
|
||||
Standard_Integer nbs = Contap_HContTool::NbSamplePoints(S,uinf,vinf,usup,vsup);
|
||||
Standard_Integer nbs = Contap_HContTool::NbSamplePoints(S);
|
||||
Standard_Real U,V;
|
||||
gp_Vec norm;
|
||||
if (nbs > 0) {
|
||||
myMean = 0.;
|
||||
for (i = 1; i <= nbs; i++) {
|
||||
Contap_HContTool::SamplePoint(S,i,U,V,uinf,vinf,usup,vsup);
|
||||
Contap_HContTool::SamplePoint(S,i,U,V);
|
||||
// Adaptor3d_HSurfaceTool::D1(S,U,V,solpt,d1u,d1v);
|
||||
// myMean = myMean + d1u.Crossed(d1v).Magnitude();
|
||||
Contap_SurfProps::Normale(S,U,V,solpt,norm);
|
||||
|
@@ -1074,7 +1074,7 @@ void DBRep_DrawableShape::display(const Handle(Poly_Triangulation)& T,
|
||||
}
|
||||
|
||||
// allocate the arrays
|
||||
TColStd_Array1OfInteger Free(1,2*nFree);
|
||||
TColStd_Array1OfInteger Free (1, Max (1, 2 * nFree));
|
||||
|
||||
// array is replaced on map because it is impossible
|
||||
// to calculate number of internal edges in advance
|
||||
|
@@ -13,11 +13,11 @@
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
// ---------------------
|
||||
// ---------------------
|
||||
|
||||
// Version: 0.0
|
||||
//Version Date Purpose
|
||||
// 0.0 Feb 10 1997 Creation
|
||||
// Version: 0.0
|
||||
// Version Date Purpose
|
||||
// 0.0 Feb 10 1997 Creation
|
||||
|
||||
|
||||
#include <DDF.hxx>
|
||||
@@ -64,11 +64,11 @@
|
||||
//=======================================================================
|
||||
|
||||
static Standard_Integer DDF_Children (Draw_Interpretor& di,
|
||||
Standard_Integer n,
|
||||
const char** a)
|
||||
Standard_Integer n,
|
||||
const char** a)
|
||||
{
|
||||
if (n < 2) return 1;
|
||||
|
||||
|
||||
Handle(TDF_Data) DF;
|
||||
TCollection_AsciiString entry;
|
||||
|
||||
@@ -97,11 +97,11 @@ static Standard_Integer DDF_Children (Draw_Interpretor& di,
|
||||
//=======================================================================
|
||||
|
||||
static Standard_Integer DDF_Attributes (Draw_Interpretor& di,
|
||||
Standard_Integer n,
|
||||
const char** a)
|
||||
Standard_Integer n,
|
||||
const char** a)
|
||||
{
|
||||
if (n != 3) return 1;
|
||||
|
||||
|
||||
Handle(TDF_Data) DF;
|
||||
|
||||
if (!DDF::GetDF (a[1], DF)) return 1;
|
||||
@@ -124,11 +124,11 @@ static Standard_Integer DDF_Attributes (Draw_Interpretor& di,
|
||||
//=======================================================================
|
||||
|
||||
static Standard_Integer DDF_ForgetAll(Draw_Interpretor& /*di*/,
|
||||
Standard_Integer n,
|
||||
const char** a)
|
||||
Standard_Integer n,
|
||||
const char** a)
|
||||
{
|
||||
if (n != 3) return 1;
|
||||
|
||||
|
||||
Handle(TDF_Data) DF;
|
||||
|
||||
if (!DDF::GetDF (a[1], DF)) return 1;
|
||||
@@ -137,11 +137,35 @@ static Standard_Integer DDF_ForgetAll(Draw_Interpretor& /*di*/,
|
||||
TDF_Tool::Label(DF,a[2],label);
|
||||
if (label.IsNull()) return 1;
|
||||
label.ForgetAllAttributes();
|
||||
//POP pour NT
|
||||
//POP pour NT
|
||||
return 0;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : ForgetAttribute
|
||||
//purpose : "ForgetAtt dfname Label guid"
|
||||
//=======================================================================
|
||||
|
||||
static Standard_Integer DDF_ForgetAttribute(Draw_Interpretor& di,
|
||||
Standard_Integer n,
|
||||
const char** a)
|
||||
{
|
||||
if (n != 4) return 1;
|
||||
Handle(TDF_Data) DF;
|
||||
if (!DDF::GetDF (a[1], DF)) return 1;
|
||||
|
||||
TDF_Label aLabel;
|
||||
TDF_Tool::Label(DF,a[2],aLabel);
|
||||
if (aLabel.IsNull()) return 1;
|
||||
if (!Standard_GUID::CheckGUIDFormat(a[3]))
|
||||
{
|
||||
di<<"DDF: The format of GUID is invalid\n";
|
||||
return 1;
|
||||
}
|
||||
Standard_GUID guid(a[3]);
|
||||
aLabel.ForgetAttribute(guid);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// save/restore & Store/Retrieve commands
|
||||
@@ -209,8 +233,8 @@ void ErrorMessage (const Storage_Error n)
|
||||
//=======================================================================
|
||||
|
||||
static Standard_Integer DDF_SetTagger (Draw_Interpretor& di,
|
||||
Standard_Integer nb,
|
||||
const char** arg)
|
||||
Standard_Integer nb,
|
||||
const char** arg)
|
||||
{
|
||||
if (nb == 3) {
|
||||
Handle(TDF_Data) DF;
|
||||
@@ -232,8 +256,8 @@ static Standard_Integer DDF_SetTagger (Draw_Interpretor& di,
|
||||
//=======================================================================
|
||||
|
||||
static Standard_Integer DDF_NewTag (Draw_Interpretor& di,
|
||||
Standard_Integer nb,
|
||||
const char** arg)
|
||||
Standard_Integer nb,
|
||||
const char** arg)
|
||||
{
|
||||
if (nb == 3) {
|
||||
Handle(TDF_Data) DF;
|
||||
@@ -254,8 +278,8 @@ static Standard_Integer DDF_NewTag (Draw_Interpretor& di,
|
||||
//=======================================================================
|
||||
|
||||
static Standard_Integer DDF_NewChild (Draw_Interpretor& di,
|
||||
Standard_Integer nb,
|
||||
const char** arg)
|
||||
Standard_Integer nb,
|
||||
const char** arg)
|
||||
{
|
||||
Handle(TDF_Data) DF;
|
||||
if (nb>=2){
|
||||
@@ -314,35 +338,38 @@ void DDF::BasicCommands (Draw_Interpretor& theCommands)
|
||||
|
||||
const char* g = "DF basic commands";
|
||||
|
||||
// Label :
|
||||
// Label :
|
||||
|
||||
theCommands.Add ("SetTagger",
|
||||
"SetTagger (DF, entry)",
|
||||
__FILE__, DDF_SetTagger, g);
|
||||
__FILE__, DDF_SetTagger, g);
|
||||
|
||||
theCommands.Add ("NewTag",
|
||||
"NewTag (DF, tagger)",
|
||||
__FILE__, DDF_NewTag, g);
|
||||
__FILE__, DDF_NewTag, g);
|
||||
|
||||
theCommands.Add ("NewChild",
|
||||
"NewChild (DF, [tagger])",
|
||||
__FILE__, DDF_NewChild, g);
|
||||
__FILE__, DDF_NewChild, g);
|
||||
|
||||
theCommands.Add ("Children",
|
||||
" Returns the list of label children: Children DF label",
|
||||
__FILE__, DDF_Children, g);
|
||||
" Returns the list of label children: Children DF label",
|
||||
__FILE__, DDF_Children, g);
|
||||
|
||||
theCommands.Add ("Attributes",
|
||||
" Returns the list of label attributes: Attributes DF label",
|
||||
__FILE__, DDF_Attributes, g);
|
||||
" Returns the list of label attributes: Attributes DF label",
|
||||
__FILE__, DDF_Attributes, g);
|
||||
|
||||
theCommands.Add ("ForgetAll",
|
||||
"Forgets all attributes from the label: ForgetAll DF Label",
|
||||
__FILE__, DDF_ForgetAll, g);
|
||||
"Forgets all attributes from the label: ForgetAll DF Label",
|
||||
__FILE__, DDF_ForgetAll, g);
|
||||
|
||||
theCommands.Add ("ForgetAtt",
|
||||
"Forgets the specified by guid attribute from the label: ForgetAtt DF Label guid",
|
||||
__FILE__, DDF_ForgetAttribute, g);
|
||||
|
||||
theCommands.Add ("Label",
|
||||
"Label DF entry",
|
||||
__FILE__, DDF_Label, g);
|
||||
|
||||
"Label DF entry",
|
||||
__FILE__, DDF_Label, g);
|
||||
|
||||
}
|
||||
|
@@ -48,4 +48,4 @@ TOBJ : TKTObjDRAW
|
||||
DFBROWSER : TKDFBrowser
|
||||
QAcommands : TKQADraw
|
||||
VIS : TKIVtkDraw
|
||||
TOOLS : TKToolsDraw
|
||||
INSPECTOR : TKToolsDraw
|
||||
|
@@ -2157,8 +2157,19 @@ proc _log_html_diff {file log dir1 dir2 highlight_percent} {
|
||||
puts $fd "<h2>Version A - $dir1</h2>"
|
||||
puts $fd "<h2>Version B - $dir2</h2>"
|
||||
|
||||
# print log body, trying to add HTML links to script files on lines like
|
||||
# "Executing <filename>..."
|
||||
# add script for switching between images on click
|
||||
puts $fd ""
|
||||
puts $fd "<script type=\"text/javascript\">"
|
||||
puts $fd " function diffimage_toggle(img,url1,url2)"
|
||||
puts $fd " {"
|
||||
puts $fd " if (img.src.match(url2)) img.src = url1;"
|
||||
puts $fd " else img.src = url2;"
|
||||
puts $fd " }"
|
||||
puts $fd " function diffimage_reset(img,url) { img.src = url; }"
|
||||
puts $fd "</script>"
|
||||
puts $fd ""
|
||||
|
||||
# print log body
|
||||
puts $fd "<pre>"
|
||||
set logpath [file split [file normalize $file]]
|
||||
foreach line $log {
|
||||
@@ -2177,17 +2188,20 @@ proc _log_html_diff {file log dir1 dir2 highlight_percent} {
|
||||
set gridpath ""
|
||||
}
|
||||
set aCaseName [lindex $case end]
|
||||
set img1 "<a href=\"[_make_url $file [file join $dir1 $gridpath $aCaseName.html]]\"><img src=\"[_make_url $file [file join $dir1 $gridpath $img]]\"></a>"
|
||||
set img2 "<a href=\"[_make_url $file [file join $dir2 $gridpath $aCaseName.html]]\"><img src=\"[_make_url $file [file join $dir2 $gridpath $img]]\"></a>"
|
||||
set img1url [_make_url $file [file join $dir1 $gridpath $img]]
|
||||
set img2url [_make_url $file [file join $dir2 $gridpath $img]]
|
||||
set img1 "<a href=\"[_make_url $file [file join $dir1 $gridpath $aCaseName.html]]\"><img src=\"$img1url\"></a>"
|
||||
set img2 "<a href=\"[_make_url $file [file join $dir2 $gridpath $aCaseName.html]]\"><img src=\"$img2url\"></a>"
|
||||
|
||||
set difffile [_diff_img_name $dir1 $dir2 $gridpath $img]
|
||||
set imgdurl [_make_url $file $difffile]
|
||||
if { [file exists $difffile] } {
|
||||
set imgd "<img src=\"[_make_url $file $difffile]\">"
|
||||
set imgd "<img src=\"$imgdurl\" onmouseout=diffimage_reset(this,\"$imgdurl\") onclick=diffimage_toggle(this,\"$img1url\",\"$img2url\")>"
|
||||
} else {
|
||||
set imgd "N/A"
|
||||
}
|
||||
|
||||
puts $fd "<table><tr><th><abbr title=\"$dir1\">Version A</abbr></th><th><abbr title=\"$dir2\">Version B</abbr></th><th>Different pixels</th></tr>"
|
||||
puts $fd "<table><tr><th><abbr title=\"$dir1\">Version A</abbr></th><th><abbr title=\"$dir2\">Version B</abbr></th><th>Diff (click to toggle)</th></tr>"
|
||||
puts $fd "<tr><td>$img1</td><td>$img2</td><td>$imgd</td></tr></table>"
|
||||
}
|
||||
}
|
||||
|
@@ -294,6 +294,8 @@ GccAna_Circ2d3Tan::
|
||||
else {
|
||||
TheSame1(NbrSol) = 0;
|
||||
gp_Dir2d dc(center1.XY()-Center.XY());
|
||||
if (qualifier1(NbrSol) == GccEnt_enclosed)
|
||||
dc.Reverse(); // if tangent circle is inside the source circle, moving to edge of source circle
|
||||
pnttg1sol(NbrSol)=gp_Pnt2d(Center.XY()+Radius(k1)*dc.XY());
|
||||
par1sol(NbrSol)=ElCLib::Parameter(cirsol(NbrSol),
|
||||
pnttg1sol(NbrSol));
|
||||
|
@@ -185,9 +185,10 @@ GccAna_Circ2d3Tan::
|
||||
else {
|
||||
TheSame1(NbrSol) = 0;
|
||||
gp_Dir2d dc(center1.XY()-Center.XY());
|
||||
if (qualifier1(NbrSol) == GccEnt_enclosed)
|
||||
dc.Reverse(); // if tangent circle is inside the source circle, moving to edge of source circle
|
||||
pnttg1sol(NbrSol)=gp_Pnt2d(Center.XY()+Radius(nbsol3)*dc.XY());
|
||||
par1sol(NbrSol)=ElCLib::Parameter(cirsol(NbrSol),
|
||||
pnttg1sol(NbrSol));
|
||||
par1sol(NbrSol)=ElCLib::Parameter(cirsol(NbrSol), pnttg1sol(NbrSol));
|
||||
pararg1(NbrSol)=ElCLib::Parameter(C1,pnttg1sol(NbrSol));
|
||||
}
|
||||
|
||||
|
@@ -22,6 +22,45 @@
|
||||
#include <GccEnt_QualifiedLin.hxx>
|
||||
#include <gp_Circ2d.hxx>
|
||||
#include <gp_Lin2d.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
|
||||
namespace
|
||||
{
|
||||
static Standard_CString GccEnt_Table_PrintPosition[5] =
|
||||
{
|
||||
"UNQUALIFIED", "ENCLOSING", "ENCLOSED", "OUTSIDE", "NOQUALIFIER"
|
||||
};
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : PositionToString
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
Standard_CString GccEnt::PositionToString (GccEnt_Position thePosition)
|
||||
{
|
||||
return GccEnt_Table_PrintPosition[thePosition];
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : PositionFromString
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
Standard_Boolean GccEnt::PositionFromString (Standard_CString thePositionString,
|
||||
GccEnt_Position& thePosition)
|
||||
{
|
||||
TCollection_AsciiString aName (thePositionString);
|
||||
aName.UpperCase();
|
||||
for (Standard_Integer aTypeIter = 0; aTypeIter <= GccEnt_noqualifier; ++aTypeIter)
|
||||
{
|
||||
Standard_CString aTypeName = GccEnt_Table_PrintPosition[aTypeIter];
|
||||
if (aName == aTypeName)
|
||||
{
|
||||
thePosition = GccEnt_Position(aTypeIter);
|
||||
return Standard_True;
|
||||
}
|
||||
}
|
||||
return Standard_False;
|
||||
}
|
||||
|
||||
GccEnt_QualifiedLin
|
||||
GccEnt::Unqualified(const gp_Lin2d& Line) {
|
||||
|
@@ -17,6 +17,7 @@
|
||||
#ifndef _GccEnt_HeaderFile
|
||||
#define _GccEnt_HeaderFile
|
||||
|
||||
#include <GccEnt_Position.hxx>
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_DefineAlloc.hxx>
|
||||
#include <Standard_Handle.hxx>
|
||||
@@ -53,6 +54,34 @@ public:
|
||||
|
||||
DEFINE_STANDARD_ALLOC
|
||||
|
||||
|
||||
//! Prints the name of Position type as a String on the Stream.
|
||||
static Standard_OStream& Print (const GccEnt_Position thePosition, Standard_OStream& theStream)
|
||||
{
|
||||
return (theStream << PositionToString (thePosition));
|
||||
}
|
||||
|
||||
//! Returns the string name for a given position.
|
||||
//! @param thePosition position type
|
||||
//! @return string identifier from the list UNQUALIFIED ENCLOSING ENCLOSED OUTSIDE NOQUALIFIER
|
||||
Standard_EXPORT static Standard_CString PositionToString (GccEnt_Position thePosition);
|
||||
|
||||
//! Returns the position from the given string identifier (using case-insensitive comparison).
|
||||
//! @param thePositionString string identifier
|
||||
//! @return position or GccEnt_unqualified if string identifier is invalid
|
||||
static GccEnt_Position PositionFromString (Standard_CString thePositionString)
|
||||
{
|
||||
GccEnt_Position aPosition = GccEnt_unqualified;
|
||||
PositionFromString (thePositionString, aPosition);
|
||||
return aPosition;
|
||||
}
|
||||
|
||||
//! Determines the position from the given string identifier (using case-insensitive comparison).
|
||||
//! @param thePositionString string identifier
|
||||
//! @param thePosition detected shape type
|
||||
//! @return TRUE if string identifier is known
|
||||
Standard_EXPORT static Standard_Boolean PositionFromString (Standard_CString thePositionString,
|
||||
GccEnt_Position& thePosition);
|
||||
|
||||
//! Constructs a qualified line,
|
||||
//! so that the relative position to the circle or line of the
|
||||
|
@@ -72,12 +72,90 @@ GeomEvaluator_OffsetSurface::GeomEvaluator_OffsetSurface(
|
||||
{
|
||||
}
|
||||
|
||||
// If point is on parametric boundary, and calculation of normal fails,
|
||||
// try shifting it towards the inside in the hope that derivatives
|
||||
// are better defined there.
|
||||
//
|
||||
// NB: temporarily this is made as static function and not class method,
|
||||
// hence code duplications
|
||||
static Standard_Boolean shiftPoint (Standard_Real& theU, Standard_Real& theV,
|
||||
const Handle(Geom_Surface)& theSurf,
|
||||
const Handle(GeomAdaptor_HSurface)& theAdaptor)
|
||||
{
|
||||
// Get parametric bounds and closure status
|
||||
Standard_Real aUMin, aUMax, aVMin, aVMax;
|
||||
Standard_Boolean isUPeriodic, isVPeriodic;
|
||||
if (! theSurf.IsNull())
|
||||
{
|
||||
theSurf->Bounds (aUMin, aUMax, aVMin, aVMax);
|
||||
isUPeriodic = theSurf->IsUPeriodic();
|
||||
isVPeriodic = theSurf->IsVPeriodic();
|
||||
}
|
||||
else
|
||||
{
|
||||
aUMin = theAdaptor->FirstUParameter();
|
||||
aUMax = theAdaptor->LastUParameter();
|
||||
aVMin = theAdaptor->FirstVParameter();
|
||||
aVMax = theAdaptor->LastVParameter();
|
||||
isUPeriodic = theAdaptor->IsUPeriodic();
|
||||
isVPeriodic = theAdaptor->IsVPeriodic();
|
||||
}
|
||||
|
||||
Standard_Boolean isShifted = Standard_False;
|
||||
|
||||
// shift by U
|
||||
if (! isUPeriodic && aUMax - aUMin > 2 * Precision::PConfusion())
|
||||
{
|
||||
if (Abs (theU - aUMin) < Precision::PConfusion())
|
||||
{
|
||||
theU += Precision::PConfusion();
|
||||
isShifted = Standard_True;
|
||||
}
|
||||
else if (Abs (theU - aUMax) < Precision::PConfusion())
|
||||
{
|
||||
theU -= Precision::PConfusion();
|
||||
isShifted = Standard_True;
|
||||
}
|
||||
}
|
||||
|
||||
// shift by V
|
||||
if (! isVPeriodic && aVMax - aVMin > 2 * Precision::PConfusion())
|
||||
{
|
||||
if (Abs (theV - aVMin) < Precision::PConfusion())
|
||||
{
|
||||
theV += Precision::PConfusion();
|
||||
isShifted = Standard_True;
|
||||
}
|
||||
else if (Abs (theV - aVMax) < Precision::PConfusion())
|
||||
{
|
||||
theV -= Precision::PConfusion();
|
||||
isShifted = Standard_True;
|
||||
}
|
||||
}
|
||||
|
||||
return isShifted;
|
||||
}
|
||||
|
||||
void GeomEvaluator_OffsetSurface::D0(
|
||||
const Standard_Real theU, const Standard_Real theV, gp_Pnt& theValue) const
|
||||
{
|
||||
gp_Vec aD1U, aD1V;
|
||||
BaseD1(theU, theV, theValue, aD1U, aD1V);
|
||||
CalculateD0(theU, theV, theValue, aD1U, aD1V);
|
||||
try
|
||||
{
|
||||
CalculateD0(theU, theV, theValue, aD1U, aD1V);
|
||||
}
|
||||
catch (Geom_UndefinedValue&)
|
||||
{
|
||||
// if failed at parametric boundary, try taking derivative at shifted point
|
||||
Standard_Real aU = theU, aV = theV;
|
||||
if (! shiftPoint (aU, aV, myBaseSurf, myBaseAdaptor))
|
||||
{
|
||||
throw;
|
||||
}
|
||||
BaseD1(aU, aV, theValue, aD1U, aD1V);
|
||||
CalculateD0(theU, theV, theValue, aD1U, aD1V);
|
||||
}
|
||||
}
|
||||
|
||||
void GeomEvaluator_OffsetSurface::D1(
|
||||
@@ -86,7 +164,21 @@ void GeomEvaluator_OffsetSurface::D1(
|
||||
{
|
||||
gp_Vec aD2U, aD2V, aD2UV;
|
||||
BaseD2(theU, theV, theValue, theD1U, theD1V, aD2U, aD2V, aD2UV);
|
||||
CalculateD1(theU, theV, theValue, theD1U, theD1V, aD2U, aD2V, aD2UV);
|
||||
try
|
||||
{
|
||||
CalculateD1(theU, theV, theValue, theD1U, theD1V, aD2U, aD2V, aD2UV);
|
||||
}
|
||||
catch (Geom_UndefinedValue&)
|
||||
{
|
||||
// if failed at parametric boundary, try taking derivative at shifted point
|
||||
Standard_Real aU = theU, aV = theV;
|
||||
if (! shiftPoint (aU, aV, myBaseSurf, myBaseAdaptor))
|
||||
{
|
||||
throw;
|
||||
}
|
||||
BaseD2 (aU, aV, theValue, theD1U, theD1V, aD2U, aD2V, aD2UV);
|
||||
CalculateD1(theU, theV, theValue, theD1U, theD1V, aD2U, aD2V, aD2UV);
|
||||
}
|
||||
}
|
||||
|
||||
void GeomEvaluator_OffsetSurface::D2(
|
||||
@@ -97,8 +189,24 @@ void GeomEvaluator_OffsetSurface::D2(
|
||||
gp_Vec aD3U, aD3V, aD3UUV, aD3UVV;
|
||||
BaseD3(theU, theV, theValue, theD1U, theD1V,
|
||||
theD2U, theD2V, theD2UV, aD3U, aD3V, aD3UUV, aD3UVV);
|
||||
CalculateD2(theU, theV, theValue, theD1U, theD1V,
|
||||
theD2U, theD2V, theD2UV, aD3U, aD3V, aD3UUV, aD3UVV);
|
||||
try
|
||||
{
|
||||
CalculateD2(theU, theV, theValue, theD1U, theD1V,
|
||||
theD2U, theD2V, theD2UV, aD3U, aD3V, aD3UUV, aD3UVV);
|
||||
}
|
||||
catch (Geom_UndefinedValue&)
|
||||
{
|
||||
// if failed at parametric boundary, try taking derivative at shifted point
|
||||
Standard_Real aU = theU, aV = theV;
|
||||
if (! shiftPoint (aU, aV, myBaseSurf, myBaseAdaptor))
|
||||
{
|
||||
throw;
|
||||
}
|
||||
BaseD3(theU, theV, theValue, theD1U, theD1V,
|
||||
theD2U, theD2V, theD2UV, aD3U, aD3V, aD3UUV, aD3UVV);
|
||||
CalculateD2(theU, theV, theValue, theD1U, theD1V,
|
||||
theD2U, theD2V, theD2UV, aD3U, aD3V, aD3UUV, aD3UVV);
|
||||
}
|
||||
}
|
||||
|
||||
void GeomEvaluator_OffsetSurface::D3(
|
||||
@@ -109,8 +217,24 @@ void GeomEvaluator_OffsetSurface::D3(
|
||||
{
|
||||
BaseD3(theU, theV, theValue, theD1U, theD1V,
|
||||
theD2U, theD2V, theD2UV, theD3U, theD3V, theD3UUV, theD3UVV);
|
||||
CalculateD3(theU, theV, theValue, theD1U, theD1V,
|
||||
theD2U, theD2V, theD2UV, theD3U, theD3V, theD3UUV, theD3UVV);
|
||||
try
|
||||
{
|
||||
CalculateD3(theU, theV, theValue, theD1U, theD1V,
|
||||
theD2U, theD2V, theD2UV, theD3U, theD3V, theD3UUV, theD3UVV);
|
||||
}
|
||||
catch (Geom_UndefinedValue&)
|
||||
{
|
||||
// if failed at parametric boundary, try taking derivative at shifted point
|
||||
Standard_Real aU = theU, aV = theV;
|
||||
if (! shiftPoint (aU, aV, myBaseSurf, myBaseAdaptor))
|
||||
{
|
||||
throw;
|
||||
}
|
||||
BaseD3(aU, aV, theValue, theD1U, theD1V,
|
||||
theD2U, theD2V, theD2UV, theD3U, theD3V, theD3UUV, theD3UVV);
|
||||
CalculateD3(theU, theV, theValue, theD1U, theD1V,
|
||||
theD2U, theD2V, theD2UV, theD3U, theD3V, theD3UUV, theD3UVV);
|
||||
}
|
||||
}
|
||||
|
||||
gp_Vec GeomEvaluator_OffsetSurface::DN(
|
||||
@@ -125,7 +249,21 @@ gp_Vec GeomEvaluator_OffsetSurface::DN(
|
||||
gp_Pnt aP;
|
||||
gp_Vec aD1U, aD1V;
|
||||
BaseD1(theU, theV, aP, aD1U, aD1V);
|
||||
return CalculateDN(theU, theV, theDerU, theDerV, aD1U, aD1V);
|
||||
try
|
||||
{
|
||||
return CalculateDN(theU, theV, theDerU, theDerV, aD1U, aD1V);
|
||||
}
|
||||
catch (Geom_UndefinedValue&)
|
||||
{
|
||||
// if failed at parametric boundary, try taking derivative at shifted point
|
||||
Standard_Real aU = theU, aV = theV;
|
||||
if (! shiftPoint (aU, aV, myBaseSurf, myBaseAdaptor))
|
||||
{
|
||||
throw;
|
||||
}
|
||||
BaseD1 (aU, aV, aP, aD1U, aD1V);
|
||||
return CalculateDN (theU, theV, theDerU, theDerV, aD1U, aD1V);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@@ -5,6 +5,9 @@ GeometryTest_APICommands.cxx
|
||||
GeometryTest_ConstraintCommands.cxx
|
||||
GeometryTest_ContinuityCommands.cxx
|
||||
GeometryTest_CurveCommands.cxx
|
||||
GeometryTest_CurveTanCommands.cxx
|
||||
GeometryTest_DrawableQualifiedCurve2d.cxx
|
||||
GeometryTest_DrawableQualifiedCurve2d.hxx
|
||||
GeometryTest_FairCurveCommands.cxx
|
||||
GeometryTest_PolyCommands.cxx
|
||||
GeometryTest_SurfaceCommands.cxx
|
||||
|
@@ -30,6 +30,7 @@ void GeometryTest::AllCommands(Draw_Interpretor& theCommands)
|
||||
|
||||
GeomliteTest::AllCommands(theCommands);
|
||||
GeometryTest::CurveCommands(theCommands);
|
||||
GeometryTest::CurveTanCommands(theCommands);
|
||||
GeometryTest::FairCurveCommands(theCommands);
|
||||
GeometryTest::SurfaceCommands(theCommands);
|
||||
GeometryTest::ConstraintCommands(theCommands);
|
||||
|
@@ -39,6 +39,9 @@ public:
|
||||
//! defines curve commands.
|
||||
Standard_EXPORT static void CurveCommands (Draw_Interpretor& I);
|
||||
|
||||
//! defines tangent curve commands.
|
||||
Standard_EXPORT static void CurveTanCommands (Draw_Interpretor& I);
|
||||
|
||||
//! defines fair curve commands.
|
||||
Standard_EXPORT static void FairCurveCommands (Draw_Interpretor& I);
|
||||
|
||||
|
340
src/GeometryTest/GeometryTest_CurveTanCommands.cxx
Normal file
@@ -0,0 +1,340 @@
|
||||
// Created on: 2017-06-16
|
||||
// Created by: Natalia ERMOLAEVA
|
||||
// Copyright (c) 2017 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#include <Draw.hxx>
|
||||
#include <DrawTrSurf.hxx>
|
||||
#include <Draw_Interpretor.hxx>
|
||||
#include <GccAna_Circ2d3Tan.hxx>
|
||||
#include <GccEnt.hxx>
|
||||
#include <GccEnt_QualifiedLin.hxx>
|
||||
#include <GccEnt_QualifiedCirc.hxx>
|
||||
#include <Geom2d_Line.hxx>
|
||||
#include <Geom2d_Circle.hxx>
|
||||
#include <Geom2dAdaptor_Curve.hxx>
|
||||
#include <GeometryTest.hxx>
|
||||
#include <GeometryTest_DrawableQualifiedCurve2d.hxx>
|
||||
#include <Precision.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
#include <stdio.h>
|
||||
|
||||
//=======================================================================
|
||||
//function : qcircle
|
||||
//purpose : Parses command: "qcircle name x y radius [-unqualified|-enclosing|-enclosed|-outside|-noqualifier]"
|
||||
//=======================================================================
|
||||
static Standard_Integer qcurve (Draw_Interpretor&, Standard_Integer theArgsNb, const char** theArgVec)
|
||||
{
|
||||
if (theArgsNb < 5)
|
||||
{
|
||||
cout << "Error: wrong number of arguments.\n";
|
||||
return 1;
|
||||
}
|
||||
|
||||
Handle(Geom2d_Curve) aResult2d;
|
||||
TCollection_AsciiString aPositionType;
|
||||
if (!strcmp (theArgVec[0], "qcircle"))
|
||||
{
|
||||
if (theArgsNb == 5 || theArgsNb == 6)
|
||||
aResult2d = new Geom2d_Circle (gp_Ax22d (gp_Pnt2d (Draw::Atof (theArgVec[2]), Draw::Atof (theArgVec[3])),
|
||||
gp_Dir2d (1,0)), Draw::Atof (theArgVec[4]));
|
||||
else if (theArgsNb == 7 || theArgsNb == 8)
|
||||
aResult2d = new Geom2d_Circle (gp_Ax22d (gp_Pnt2d (Draw::Atof (theArgVec[2]), Draw::Atof (theArgVec[3])),
|
||||
gp_Dir2d (Draw::Atof (theArgVec[4]), Draw::Atof (theArgVec[5]))), Draw::Atof (theArgVec[6]));
|
||||
|
||||
if (theArgsNb == 6)
|
||||
aPositionType = theArgVec[5];
|
||||
else if (theArgsNb == 8)
|
||||
aPositionType = theArgVec[7];
|
||||
}
|
||||
else if(!strcmp (theArgVec[0], "qline"))
|
||||
{
|
||||
if (theArgsNb < 6)
|
||||
{
|
||||
cout << "Error: wrong number of arguments.\n";
|
||||
return 1;
|
||||
}
|
||||
aResult2d = new Geom2d_Line (gp_Pnt2d (Draw::Atof (theArgVec[2]), Draw::Atof (theArgVec[3])),
|
||||
gp_Dir2d (Draw::Atof (theArgVec[4]), Draw::Atof (theArgVec[5])));
|
||||
if (theArgsNb == 7)
|
||||
aPositionType = theArgVec[6];
|
||||
}
|
||||
else
|
||||
{
|
||||
cout << "Error: wrong command name.\n";
|
||||
return 1;
|
||||
}
|
||||
|
||||
GccEnt_Position aKindOfPosition = GccEnt_unqualified;
|
||||
if (!aPositionType.IsEmpty())
|
||||
{
|
||||
GccEnt_Position aParameterPosition;
|
||||
if (GccEnt::PositionFromString (aPositionType.ToCString(), aParameterPosition))
|
||||
aKindOfPosition = aParameterPosition;
|
||||
}
|
||||
|
||||
Draw::Set (theArgVec[1], new GeometryTest_DrawableQualifiedCurve2d (aResult2d, aKindOfPosition));
|
||||
return 0;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : solutions
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
static Standard_Integer solutions (Draw_Interpretor& theDI, GccAna_Circ2d3Tan& theCirTan3, const char* theName)
|
||||
{
|
||||
if (!theCirTan3.IsDone())
|
||||
{
|
||||
cout << "GccAna_Circ2d3Tan is not done";
|
||||
return 1;
|
||||
}
|
||||
|
||||
TCollection_AsciiString aName = TCollection_AsciiString (theName) + "_";
|
||||
GccEnt_Position aQualifier1, aQualifier2, aQualifier3;
|
||||
Standard_Real aParSol, aParArg;
|
||||
gp_Pnt2d aPntSol;
|
||||
for (Standard_Integer aSolId = 1; aSolId <= theCirTan3.NbSolutions(); aSolId++)
|
||||
{
|
||||
Handle(Geom2d_Circle) aCircle = new Geom2d_Circle (theCirTan3.ThisSolution (aSolId));
|
||||
TCollection_AsciiString aSolIdName = aName;
|
||||
aSolIdName += TCollection_AsciiString (aSolId);
|
||||
DrawTrSurf::Set (aSolIdName.ToCString(), aCircle);
|
||||
theCirTan3.WhichQualifier (aSolId, aQualifier1, aQualifier2, aQualifier3);
|
||||
theDI << "circle: " << aSolIdName.ToCString() << ", " << "qualifiers: " << GccEnt::PositionToString (aQualifier1)
|
||||
<< ", " << GccEnt::PositionToString (aQualifier2) << ", " << GccEnt::PositionToString (aQualifier3) << "\n";
|
||||
|
||||
theDI << " tangent points: point (parameter on solution, parameter on argument)\n";
|
||||
// the first tangent point
|
||||
if (theCirTan3.IsTheSame1 (aSolId))
|
||||
theDI << " " << "= the solution number " << aSolId << " is equal to the first argument\n";
|
||||
else
|
||||
{
|
||||
theCirTan3.Tangency1 (aSolId, aParSol, aParArg, aPntSol);
|
||||
TCollection_AsciiString aTanPntIdName = aSolIdName + "_tp_1";
|
||||
DrawTrSurf::Set (aTanPntIdName.ToCString(), aPntSol);
|
||||
theDI << " " << aTanPntIdName.ToCString() << " (" << aParSol << ", " << aParArg << ")\n";
|
||||
}
|
||||
// the second tangent point
|
||||
if (theCirTan3.IsTheSame2 (aSolId))
|
||||
theDI << " " << "= the solution number " << aSolId << " is equal to the second argument\n";
|
||||
else
|
||||
{
|
||||
theCirTan3.Tangency2 (aSolId, aParSol, aParArg, aPntSol);
|
||||
TCollection_AsciiString aTanPntIdName = aSolIdName + "_tp_2";
|
||||
DrawTrSurf::Set (aTanPntIdName.ToCString(), aPntSol);
|
||||
theDI << " " << aTanPntIdName.ToCString() << " (" << aParSol << ", " << aParArg << ")\n";
|
||||
}
|
||||
// the third tangent point
|
||||
if (theCirTan3.IsTheSame3 (aSolId))
|
||||
theDI << " " << "= the solution number " << aSolId << " is equal to the third argument\n";
|
||||
else
|
||||
{
|
||||
theCirTan3.Tangency3 (aSolId, aParSol, aParArg, aPntSol);
|
||||
TCollection_AsciiString aTanPntIdName = aSolIdName + "_tp_3";
|
||||
DrawTrSurf::Set (aTanPntIdName.ToCString(), aPntSol);
|
||||
theDI << " " << aTanPntIdName.ToCString() << " (" << aParSol << ", " << aParArg << ")";
|
||||
}
|
||||
if (aSolId != theCirTan3.NbSolutions())
|
||||
theDI << "\n";
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : circ2d3Tan
|
||||
//purpose : Parses command: [circ2d3Tan cname qcicrle1/qlin1/point1 qcicrle2/qlin2/point2 qcicrle3/qlin3/point3
|
||||
// tolerance]
|
||||
//=======================================================================
|
||||
static Standard_Integer circ2d3Tan (Draw_Interpretor& theDI, Standard_Integer theArgsNb, const char** theArgVec)
|
||||
{
|
||||
if (theArgsNb < 5)
|
||||
{
|
||||
cout << "Error: wrong number of arguments.\n";
|
||||
return 1;
|
||||
}
|
||||
|
||||
Handle(GeometryTest_DrawableQualifiedCurve2d) aQCurve1 =
|
||||
Handle(GeometryTest_DrawableQualifiedCurve2d)::DownCast (Draw::Get (theArgVec[2]));
|
||||
Handle(GeometryTest_DrawableQualifiedCurve2d) aQCurve2 =
|
||||
Handle(GeometryTest_DrawableQualifiedCurve2d)::DownCast (Draw::Get (theArgVec[3]));
|
||||
Handle(GeometryTest_DrawableQualifiedCurve2d) aQCurve3 =
|
||||
Handle(GeometryTest_DrawableQualifiedCurve2d)::DownCast (Draw::Get (theArgVec[4]));
|
||||
|
||||
gp_Pnt2d aPoint1, aPoint2, aPoint3;
|
||||
Standard_Boolean anIsPoint1 = DrawTrSurf::GetPoint2d (theArgVec[2], aPoint1);
|
||||
Standard_Boolean anIsPoint2 = DrawTrSurf::GetPoint2d (theArgVec[3], aPoint2);
|
||||
Standard_Boolean anIsPoint3 = DrawTrSurf::GetPoint2d (theArgVec[4], aPoint3);
|
||||
|
||||
Standard_Real aTolerance = Precision::Confusion();
|
||||
if (theArgsNb > 5)
|
||||
aTolerance = Draw::Atof (theArgVec[5]);
|
||||
|
||||
if (aQCurve1.IsNull()) // <point, point, point>
|
||||
{
|
||||
if (!anIsPoint1 || !anIsPoint2 || !anIsPoint3)
|
||||
{
|
||||
cout << "Error: wrong points definition.\n";
|
||||
return 1;
|
||||
}
|
||||
GccAna_Circ2d3Tan aCircBuilder (aPoint1, aPoint2, aPoint3, aTolerance);
|
||||
return solutions (theDI, aCircBuilder, theArgVec[1]);
|
||||
}
|
||||
|
||||
// the first curve is not NULL
|
||||
if (aQCurve2.IsNull()) // <qcircle, point, point> or <qlin, point, point>
|
||||
{
|
||||
if (!anIsPoint2 || !anIsPoint3)
|
||||
{
|
||||
cout << "Error: wrong points definition.\n";
|
||||
return 1;
|
||||
}
|
||||
Geom2dAdaptor_Curve anAdaptorCurve1 (aQCurve1->GetCurve());
|
||||
if (anAdaptorCurve1.GetType() == GeomAbs_Circle)
|
||||
{
|
||||
GccEnt_QualifiedCirc aQualifiedCircle1 (anAdaptorCurve1.Circle(), aQCurve1->GetPosition());
|
||||
GccAna_Circ2d3Tan aCircBuilder (aQualifiedCircle1, aPoint2, aPoint3, aTolerance);
|
||||
return solutions (theDI, aCircBuilder, theArgVec[1]);
|
||||
}
|
||||
else if (anAdaptorCurve1.GetType() == GeomAbs_Line)
|
||||
{
|
||||
GccEnt_QualifiedLin aQualifiedLin1 (anAdaptorCurve1.Line(), aQCurve1->GetPosition());
|
||||
GccAna_Circ2d3Tan aCircBuilder (aQualifiedLin1, aPoint2, aPoint3, aTolerance);
|
||||
return solutions (theDI, aCircBuilder, theArgVec[1]);
|
||||
}
|
||||
cout << "Error: wrong curve type.\n";
|
||||
return 1;
|
||||
}
|
||||
|
||||
// the first and the second curves are not NULL
|
||||
if (aQCurve3.IsNull()) // <qcircle, qcircle, point> or <qcircle, qlin, point> or <qlin, qlin, point>
|
||||
{
|
||||
if (!anIsPoint3)
|
||||
{
|
||||
cout << "Error: wrong point definition.\n";
|
||||
return 1;
|
||||
}
|
||||
Geom2dAdaptor_Curve anAdaptorCurve1 (aQCurve1->GetCurve());
|
||||
Geom2dAdaptor_Curve anAdaptorCurve2 (aQCurve2->GetCurve());
|
||||
if (anAdaptorCurve1.GetType() == GeomAbs_Circle && anAdaptorCurve2.GetType() == GeomAbs_Circle)
|
||||
{
|
||||
GccEnt_QualifiedCirc aQualifiedCircle1 (anAdaptorCurve1.Circle(), aQCurve1->GetPosition());
|
||||
GccEnt_QualifiedCirc aQualifiedCircle2 (anAdaptorCurve2.Circle(), aQCurve2->GetPosition());
|
||||
GccAna_Circ2d3Tan aCircBuilder (aQualifiedCircle1, aQualifiedCircle2, aPoint3, aTolerance);
|
||||
return solutions (theDI, aCircBuilder, theArgVec[1]);
|
||||
}
|
||||
else if (anAdaptorCurve1.GetType() == GeomAbs_Circle && anAdaptorCurve2.GetType() == GeomAbs_Line)
|
||||
{
|
||||
GccEnt_QualifiedCirc aQualifiedCircle1 (anAdaptorCurve1.Circle(), aQCurve1->GetPosition());
|
||||
GccEnt_QualifiedLin aQualifiedLin2 (anAdaptorCurve2.Line(), aQCurve2->GetPosition());
|
||||
GccAna_Circ2d3Tan aCircBuilder (aQualifiedCircle1, aQualifiedLin2, aPoint3, aTolerance);
|
||||
return solutions (theDI, aCircBuilder, theArgVec[1]);
|
||||
}
|
||||
else if (anAdaptorCurve1.GetType() == GeomAbs_Line && anAdaptorCurve2.GetType() == GeomAbs_Line)
|
||||
{
|
||||
GccEnt_QualifiedLin aQualifiedLin1 (anAdaptorCurve1.Line(), aQCurve1->GetPosition());
|
||||
GccEnt_QualifiedLin aQualifiedLin2 (anAdaptorCurve2.Line(), aQCurve2->GetPosition());
|
||||
GccAna_Circ2d3Tan aCircBuilder (aQualifiedLin1, aQualifiedLin2, aPoint3, aTolerance);
|
||||
return solutions (theDI, aCircBuilder, theArgVec[1]);
|
||||
}
|
||||
cout << "Error: wrong curve type.\n";
|
||||
return 1;
|
||||
}
|
||||
|
||||
// the first, the second and the third curves are not NULL
|
||||
// <qcircle, qcircle, qcircle> or <qcircle, qcircle, qlin>, <qcircle, qlin, qlin>, <qlin, qlin, qlin>
|
||||
Geom2dAdaptor_Curve anAdaptorCurve1 (aQCurve1->GetCurve());
|
||||
Geom2dAdaptor_Curve anAdaptorCurve2 (aQCurve2->GetCurve());
|
||||
Geom2dAdaptor_Curve anAdaptorCurve3 (aQCurve3->GetCurve());
|
||||
if (anAdaptorCurve1.GetType() == GeomAbs_Circle && anAdaptorCurve2.GetType() == GeomAbs_Circle &&
|
||||
anAdaptorCurve3.GetType() == GeomAbs_Circle)
|
||||
{
|
||||
GccEnt_QualifiedCirc aQualifiedCircle1 (anAdaptorCurve1.Circle(), aQCurve1->GetPosition());
|
||||
GccEnt_QualifiedCirc aQualifiedCircle2 (anAdaptorCurve2.Circle(), aQCurve2->GetPosition());
|
||||
GccEnt_QualifiedCirc aQualifiedCircle3 (anAdaptorCurve3.Circle(), aQCurve3->GetPosition());
|
||||
GccAna_Circ2d3Tan aCircBuilder (aQualifiedCircle1, aQualifiedCircle2, aQualifiedCircle3, aTolerance);
|
||||
return solutions (theDI, aCircBuilder, theArgVec[1]);
|
||||
}
|
||||
if (anAdaptorCurve1.GetType() == GeomAbs_Circle && anAdaptorCurve2.GetType() == GeomAbs_Circle &&
|
||||
anAdaptorCurve3.GetType() == GeomAbs_Line)
|
||||
{
|
||||
GccEnt_QualifiedCirc aQualifiedCircle1 (anAdaptorCurve1.Circle(), aQCurve1->GetPosition());
|
||||
GccEnt_QualifiedCirc aQualifiedCircle2 (anAdaptorCurve2.Circle(), aQCurve2->GetPosition());
|
||||
GccEnt_QualifiedLin aQualifiedLin3 (anAdaptorCurve3.Line(), aQCurve3->GetPosition());
|
||||
GccAna_Circ2d3Tan aCircBuilder (aQualifiedCircle1, aQualifiedCircle2, aQualifiedLin3, aTolerance);
|
||||
return solutions (theDI, aCircBuilder, theArgVec[1]);
|
||||
}
|
||||
if (anAdaptorCurve1.GetType() == GeomAbs_Circle && anAdaptorCurve2.GetType() == GeomAbs_Line &&
|
||||
anAdaptorCurve3.GetType() == GeomAbs_Line)
|
||||
{
|
||||
GccEnt_QualifiedCirc aQualifiedCircle1 (anAdaptorCurve1.Circle(), aQCurve1->GetPosition());
|
||||
GccEnt_QualifiedLin aQualifiedLin2 (anAdaptorCurve2.Line(), aQCurve2->GetPosition());
|
||||
GccEnt_QualifiedLin aQualifiedLin3 (anAdaptorCurve3.Line(), aQCurve3->GetPosition());
|
||||
GccAna_Circ2d3Tan aCircBuilder (aQualifiedCircle1, aQualifiedLin2, aQualifiedLin3, aTolerance);
|
||||
return solutions (theDI, aCircBuilder, theArgVec[1]);
|
||||
}
|
||||
if (anAdaptorCurve1.GetType() == GeomAbs_Line && anAdaptorCurve2.GetType() == GeomAbs_Line &&
|
||||
anAdaptorCurve3.GetType() == GeomAbs_Line)
|
||||
{
|
||||
GccEnt_QualifiedLin aQualifiedLin1 (anAdaptorCurve1.Line(), aQCurve1->GetPosition());
|
||||
GccEnt_QualifiedLin aQualifiedLin2 (anAdaptorCurve2.Line(), aQCurve2->GetPosition());
|
||||
GccEnt_QualifiedLin aQualifiedLin3 (anAdaptorCurve3.Line(), aQCurve3->GetPosition());
|
||||
GccAna_Circ2d3Tan aCircBuilder (aQualifiedLin1, aQualifiedLin2, aQualifiedLin3, aTolerance);
|
||||
return solutions (theDI, aCircBuilder, theArgVec[1]);
|
||||
}
|
||||
|
||||
cout << "Error: wrong curve type.\n";
|
||||
return 1;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : CurveTanCommands
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
void GeometryTest::CurveTanCommands (Draw_Interpretor& theCommands)
|
||||
{
|
||||
static Standard_Boolean aLoaded = Standard_False;
|
||||
if (aLoaded) return;
|
||||
aLoaded = Standard_True;
|
||||
|
||||
DrawTrSurf::BasicCommands (theCommands);
|
||||
|
||||
const char* aGroup;
|
||||
aGroup = "GEOMETRY tangent curves creation";
|
||||
|
||||
theCommands.Add ("qcircle",
|
||||
"qcircle name {x y [ux uy] radius} [-unqualified|-enclosing|-enclosed|-outside|-noqualifier]"
|
||||
"\n\t\t: Creates qualified circle.",
|
||||
__FILE__, qcurve, aGroup);
|
||||
|
||||
theCommands.Add ("qline",
|
||||
"qline name x y dx dy [-unqualified|-enclosing|-enclosed|-outside|-noqualifier]"
|
||||
"\n\t\t: Creates qualified line.",
|
||||
__FILE__, qcurve, aGroup);
|
||||
|
||||
theCommands.Add ("circ2d3Tan",
|
||||
"circ2d3Tan cname {qcicrle1|qlin1|point1} {qcicrle2|qlin2|point2} {qcicrle3|qlin3|point3} [tolerance]"
|
||||
"\n\t\t: Creates 2d circles tangent to 3 arguments. The arguments are points, lines or circles."
|
||||
"\n\t\t: Possible arguments combinations:"
|
||||
"\n\t\t: <qcircle, qcircle, qcircle>,"
|
||||
"\n\t\t: <qcircle, qcircle, qlin>,"
|
||||
"\n\t\t: <qcircle, qcircle, point>,"
|
||||
"\n\t\t: <qcircle, qlin, qlin>,"
|
||||
"\n\t\t: <qcircle, qlin, point>,"
|
||||
"\n\t\t: <qcircle, qlin, qlin>,"
|
||||
"\n\t\t: <qcircle, point, point>,"
|
||||
"\n\t\t: <qlin, qlin, qlin>,"
|
||||
"\n\t\t: <qlin, qlin, point>,"
|
||||
"\n\t\t: <qlin, point, point>,"
|
||||
"\n\t\t: <point, point, point>.",
|
||||
__FILE__, circ2d3Tan, aGroup);
|
||||
}
|
96
src/GeometryTest/GeometryTest_DrawableQualifiedCurve2d.cxx
Normal file
@@ -0,0 +1,96 @@
|
||||
// Created on: 2017-06-16
|
||||
// Created by: Natalia ERMOLAEVA
|
||||
// Copyright (c) 2017 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#include <GeometryTest_DrawableQualifiedCurve2d.hxx>
|
||||
|
||||
#include <GccEnt.hxx>
|
||||
#include <Geom2d_Circle.hxx>
|
||||
#include <Geom2d_Curve.hxx>
|
||||
#include <Geom2d_Line.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(GeometryTest_DrawableQualifiedCurve2d, DrawTrSurf_Curve2d)
|
||||
|
||||
//=======================================================================
|
||||
//function : GeometryTest_DrawableQualifiedCurve2d
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
GeometryTest_DrawableQualifiedCurve2d::GeometryTest_DrawableQualifiedCurve2d (const Handle(Geom2d_Curve)& theCurve,
|
||||
const GccEnt_Position thePosition,
|
||||
const Standard_Boolean theDispOrigin)
|
||||
: DrawTrSurf_Curve2d (theCurve, theDispOrigin), myPosition (thePosition)
|
||||
{
|
||||
look = Draw_orange;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : GeometryTest_DrawableQualifiedCurve2d
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
GeometryTest_DrawableQualifiedCurve2d::GeometryTest_DrawableQualifiedCurve2d (const Handle(Geom2d_Curve)& theCurve,
|
||||
const Draw_Color& theColor,
|
||||
const Standard_Integer theDiscret,
|
||||
const GccEnt_Position thePosition,
|
||||
const Standard_Boolean theDispOrigin,
|
||||
const Standard_Boolean theDispCurvRadius,
|
||||
const Standard_Real theRadiusMax,
|
||||
const Standard_Real theRatioOfRadius)
|
||||
: DrawTrSurf_Curve2d (theCurve, theColor, theDiscret, theDispOrigin, theDispCurvRadius, theRadiusMax, theRatioOfRadius),
|
||||
myPosition (thePosition)
|
||||
{
|
||||
look = Draw_orange;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : DrawOn
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void GeometryTest_DrawableQualifiedCurve2d::DrawOn (Draw_Display& theDisplay) const
|
||||
{
|
||||
DrawTrSurf_Curve2d::DrawOn (theDisplay);
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : Dump
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void GeometryTest_DrawableQualifiedCurve2d::Dump (Standard_OStream& theStream) const
|
||||
{
|
||||
theStream << "Qualified curve 2D: \n";
|
||||
theStream << "Position :" << GccEnt::PositionToString (myPosition) << "\n";
|
||||
DrawTrSurf_Curve2d::Dump (theStream);
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : Whatis
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void GeometryTest_DrawableQualifiedCurve2d::Whatis (Draw_Interpretor& theDI)const
|
||||
{
|
||||
Handle(Standard_Type) aType = GetCurve()->DynamicType();
|
||||
|
||||
if (aType == STANDARD_TYPE (Geom2d_Circle))
|
||||
{
|
||||
theDI << "qualified 2d Circle";
|
||||
}
|
||||
else if (aType == STANDARD_TYPE (Geom2d_Line))
|
||||
{
|
||||
theDI << "qualified 2d Line";
|
||||
}
|
||||
}
|
88
src/GeometryTest/GeometryTest_DrawableQualifiedCurve2d.hxx
Normal file
@@ -0,0 +1,88 @@
|
||||
// Created on: 2017-06-16
|
||||
// Created by: Natalia ERMOLAEVA
|
||||
// Copyright (c) 2017 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _GeometryTest_DrawableQualifiedCirc_HeaderFile
|
||||
#define _GeometryTest_DrawableQualifiedCirc_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <DrawTrSurf_Curve2d.hxx>
|
||||
#include <GccEnt_Position.hxx>
|
||||
|
||||
class Geom2d_Curve;
|
||||
|
||||
class GeometryTest_DrawableQualifiedCurve2d;
|
||||
DEFINE_STANDARD_HANDLE(GeometryTest_DrawableQualifiedCurve2d, DrawTrSurf_Curve)
|
||||
|
||||
//! Create geom curve drawable presentation with the position of a solution of a construction algorithm.
|
||||
class GeometryTest_DrawableQualifiedCurve2d : public DrawTrSurf_Curve2d
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Creates a drawable curve from a curve of package Geom.
|
||||
Standard_EXPORT GeometryTest_DrawableQualifiedCurve2d (const Handle(Geom2d_Curve)& theCurve,
|
||||
const GccEnt_Position thePosition,
|
||||
const Standard_Boolean theDispOrigin = Standard_True);
|
||||
|
||||
//! Creates a drawable curve from a curve of package Geom.
|
||||
Standard_EXPORT GeometryTest_DrawableQualifiedCurve2d (const Handle(Geom2d_Curve)& theCurve,
|
||||
const Draw_Color& theColor,
|
||||
const Standard_Integer theDiscret,
|
||||
const GccEnt_Position thePosition,
|
||||
const Standard_Boolean theDispOrigin = Standard_True,
|
||||
const Standard_Boolean theDispCurvRadius = Standard_False,
|
||||
const Standard_Real theRadiusMax = 1.0e3,
|
||||
const Standard_Real theRatioOfRadius = 0.1);
|
||||
|
||||
//! \returns position of a solution
|
||||
Standard_EXPORT GccEnt_Position GetPosition() const { return myPosition; }
|
||||
|
||||
//! Sets position of a solution
|
||||
//! \param thePosition the value
|
||||
void SetPosition (const GccEnt_Position thePosition) { myPosition = thePosition; }
|
||||
|
||||
//! Paints the drawable presentation in given display
|
||||
//! \param theDisplay
|
||||
Standard_EXPORT void DrawOn (Draw_Display& theDisplay) const Standard_OVERRIDE;
|
||||
|
||||
//! For variable dump.
|
||||
Standard_EXPORT virtual void Dump (Standard_OStream& S) const Standard_OVERRIDE;
|
||||
|
||||
//! For variable whatis command. Set as a result the
|
||||
//! type of the variable.
|
||||
Standard_EXPORT virtual void Whatis (Draw_Interpretor& I) const Standard_OVERRIDE;
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(GeometryTest_DrawableQualifiedCurve2d, DrawTrSurf_Curve2d)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
GccEnt_Position myPosition;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _GeometryTest_DrawableQualifiedCirc_HeaderFile
|
@@ -6,7 +6,6 @@ Graphic3d_ArrayOfPolylines.cxx
|
||||
Graphic3d_ArrayOfPolylines.hxx
|
||||
Graphic3d_ArrayOfPrimitives.cxx
|
||||
Graphic3d_ArrayOfPrimitives.hxx
|
||||
Graphic3d_ArrayOfPrimitives.lxx
|
||||
Graphic3d_ArrayOfQuadrangles.cxx
|
||||
Graphic3d_ArrayOfQuadrangles.hxx
|
||||
Graphic3d_ArrayOfQuadrangleStrips.cxx
|
||||
|
@@ -14,22 +14,18 @@
|
||||
|
||||
#include <Graphic3d_ArrayOfPrimitives.hxx>
|
||||
|
||||
#include <gp_Dir.hxx>
|
||||
#include <gp_Pnt.hxx>
|
||||
#include <gp_Pnt2d.hxx>
|
||||
#include <Graphic3d_Group.hxx>
|
||||
#include <NCollection_AlignedAllocator.hxx>
|
||||
#include <OSD_Environment.hxx>
|
||||
#include <Quantity_Color.hxx>
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_OutOfRange.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
IMPLEMENT_STANDARD_RTTIEXT(Graphic3d_ArrayOfPrimitives,Standard_Transient)
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(Graphic3d_ArrayOfPrimitives, Standard_Transient)
|
||||
|
||||
// =======================================================================
|
||||
// function : Graphic3d_ArrayOfPrimitives
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
Graphic3d_ArrayOfPrimitives::Graphic3d_ArrayOfPrimitives (const Graphic3d_TypeOfPrimitiveArray theType,
|
||||
const Standard_Integer theMaxVertexs,
|
||||
const Standard_Integer theMaxBounds,
|
||||
@@ -152,7 +148,11 @@ Graphic3d_ArrayOfPrimitives::Graphic3d_ArrayOfPrimitives (const Graphic3d_TypeOf
|
||||
myMaxEdges = theMaxEdges;
|
||||
}
|
||||
|
||||
void Graphic3d_ArrayOfPrimitives::Destroy()
|
||||
// =======================================================================
|
||||
// function : ~Graphic3d_ArrayOfPrimitives
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
Graphic3d_ArrayOfPrimitives::~Graphic3d_ArrayOfPrimitives()
|
||||
{
|
||||
myVNor = 0;
|
||||
myVTex = 0;
|
||||
@@ -162,98 +162,10 @@ void Graphic3d_ArrayOfPrimitives::Destroy()
|
||||
myBounds .Nullify();
|
||||
}
|
||||
|
||||
Standard_Integer Graphic3d_ArrayOfPrimitives::AddVertex (const Standard_ShortReal theX,
|
||||
const Standard_ShortReal theY,
|
||||
const Standard_ShortReal theZ)
|
||||
{
|
||||
if (myAttribs.IsNull())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
const Standard_Integer anIndex = myAttribs->NbElements + 1;
|
||||
SetVertice (anIndex, theX, theY, theZ);
|
||||
return anIndex;
|
||||
}
|
||||
|
||||
Standard_Integer Graphic3d_ArrayOfPrimitives::AddVertex (const gp_Pnt& theVertex,
|
||||
const Quantity_Color& theColor)
|
||||
{
|
||||
const Standard_Integer anIndex = AddVertex (theVertex);
|
||||
SetVertexColor (anIndex, theColor.Red(), theColor.Green(), theColor.Blue());
|
||||
return anIndex;
|
||||
}
|
||||
|
||||
Standard_Integer Graphic3d_ArrayOfPrimitives::AddVertex (const gp_Pnt& theVertex,
|
||||
const Standard_Integer theColor32)
|
||||
{
|
||||
const Standard_Integer anIndex = AddVertex (theVertex);
|
||||
SetVertexColor (anIndex, theColor32);
|
||||
return anIndex;
|
||||
}
|
||||
|
||||
Standard_Integer Graphic3d_ArrayOfPrimitives::AddVertex (const Standard_ShortReal theX, const Standard_ShortReal theY, const Standard_ShortReal theZ,
|
||||
const Standard_ShortReal theNX, const Standard_ShortReal theNY, const Standard_ShortReal theNZ)
|
||||
{
|
||||
if (myAttribs.IsNull())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
const Standard_Integer anIndex = myAttribs->NbElements + 1;
|
||||
SetVertice (anIndex, theX, theY, theZ);
|
||||
SetVertexNormal (anIndex, theNX, theNY, theNZ);
|
||||
return anIndex;
|
||||
}
|
||||
|
||||
Standard_Integer Graphic3d_ArrayOfPrimitives::AddVertex (const gp_Pnt& theVertex,
|
||||
const gp_Dir& theNormal,
|
||||
const Quantity_Color& theColor)
|
||||
{
|
||||
const Standard_Integer anIndex = AddVertex (theVertex, theNormal);
|
||||
SetVertexColor (anIndex, theColor.Red(), theColor.Green(), theColor.Blue());
|
||||
return anIndex;
|
||||
}
|
||||
|
||||
Standard_Integer Graphic3d_ArrayOfPrimitives::AddVertex (const gp_Pnt& theVertex,
|
||||
const gp_Dir& theNormal,
|
||||
const Standard_Integer theColor32)
|
||||
{
|
||||
const Standard_Integer anIndex = AddVertex (theVertex, theNormal);
|
||||
SetVertexColor (anIndex, theColor32);
|
||||
return anIndex;
|
||||
}
|
||||
|
||||
Standard_Integer Graphic3d_ArrayOfPrimitives::AddVertex (const Standard_ShortReal theX, const Standard_ShortReal theY, const Standard_ShortReal theZ,
|
||||
const Standard_ShortReal theTX, const Standard_ShortReal theTY)
|
||||
{
|
||||
if (myAttribs.IsNull())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
const Standard_Integer anIndex = myAttribs->NbElements + 1;
|
||||
SetVertice (anIndex, theX, theY, theZ);
|
||||
SetVertexTexel (anIndex, theTX, theTY);
|
||||
return anIndex;
|
||||
}
|
||||
|
||||
Standard_Integer Graphic3d_ArrayOfPrimitives::AddVertex (const Standard_ShortReal theX, const Standard_ShortReal theY, const Standard_ShortReal theZ,
|
||||
const Standard_ShortReal theNX, const Standard_ShortReal theNY, const Standard_ShortReal theNZ,
|
||||
const Standard_ShortReal theTX, const Standard_ShortReal theTY)
|
||||
{
|
||||
if (myAttribs.IsNull())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
const Standard_Integer anIndex = myAttribs->NbElements + 1;
|
||||
SetVertice (anIndex, theX, theY, theZ);
|
||||
SetVertexNormal (anIndex, theNX, theNY, theNZ);
|
||||
SetVertexTexel (anIndex, theTX, theTY);
|
||||
return anIndex;
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
// function : AddBound
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
Standard_Integer Graphic3d_ArrayOfPrimitives::AddBound (const Standard_Integer theEdgeNumber)
|
||||
{
|
||||
if (myBounds.IsNull())
|
||||
@@ -271,12 +183,10 @@ Standard_Integer Graphic3d_ArrayOfPrimitives::AddBound (const Standard_Integer t
|
||||
return anIndex;
|
||||
}
|
||||
|
||||
Standard_Integer Graphic3d_ArrayOfPrimitives::AddBound (const Standard_Integer theEdgeNumber,
|
||||
const Quantity_Color& theColor)
|
||||
{
|
||||
return AddBound (theEdgeNumber, theColor.Red(), theColor.Green(), theColor.Blue());
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
// function : AddBound
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
Standard_Integer Graphic3d_ArrayOfPrimitives::AddBound (const Standard_Integer theEdgeNumber,
|
||||
const Standard_Real theR,
|
||||
const Standard_Real theG,
|
||||
@@ -298,6 +208,10 @@ Standard_Integer Graphic3d_ArrayOfPrimitives::AddBound (const Standard_Integer t
|
||||
return anIndex;
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
// function : AddEdge
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
Standard_Integer Graphic3d_ArrayOfPrimitives::AddEdge (const Standard_Integer theVertexIndex)
|
||||
{
|
||||
if (myIndices.IsNull())
|
||||
@@ -323,59 +237,10 @@ Standard_Integer Graphic3d_ArrayOfPrimitives::AddEdge (const Standard_Integer th
|
||||
return anIndex;
|
||||
}
|
||||
|
||||
void Graphic3d_ArrayOfPrimitives::SetVertice (const Standard_Integer theIndex,
|
||||
const gp_Pnt& theVertex)
|
||||
{
|
||||
SetVertice (theIndex,
|
||||
Standard_ShortReal (theVertex.X()),
|
||||
Standard_ShortReal (theVertex.Y()),
|
||||
Standard_ShortReal (theVertex.Z()));
|
||||
}
|
||||
|
||||
void Graphic3d_ArrayOfPrimitives::SetVertexColor (const Standard_Integer theIndex,
|
||||
const Quantity_Color& theColor)
|
||||
{
|
||||
SetVertexColor (theIndex, theColor.Red(), theColor.Green(), theColor.Blue());
|
||||
}
|
||||
|
||||
void Graphic3d_ArrayOfPrimitives::SetVertexColor (const Standard_Integer theIndex,
|
||||
const Standard_Integer theColor)
|
||||
{
|
||||
if (myAttribs.IsNull())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (theIndex < 1
|
||||
|| theIndex > myMaxVertexs)
|
||||
{
|
||||
throw Standard_OutOfRange("BAD VERTEX index");
|
||||
}
|
||||
|
||||
if (myVCol != 0)
|
||||
{
|
||||
*reinterpret_cast<Standard_Integer* >(myAttribs->changeValue (theIndex - 1) + size_t(myVCol)) = theColor;
|
||||
}
|
||||
}
|
||||
|
||||
void Graphic3d_ArrayOfPrimitives::SetVertexNormal (const Standard_Integer theIndex,
|
||||
const gp_Dir& theNormal)
|
||||
{
|
||||
SetVertexNormal (theIndex, theNormal.X(), theNormal.Y(), theNormal.Z());
|
||||
}
|
||||
|
||||
void Graphic3d_ArrayOfPrimitives::SetVertexTexel (const Standard_Integer theIndex,
|
||||
const gp_Pnt2d& theTexel)
|
||||
{
|
||||
SetVertexTexel (theIndex, theTexel.X(), theTexel.Y());
|
||||
}
|
||||
|
||||
void Graphic3d_ArrayOfPrimitives::SetBoundColor (const Standard_Integer theIndex,
|
||||
const Quantity_Color& theColor)
|
||||
{
|
||||
SetBoundColor (theIndex, theColor.Red(), theColor.Green(), theColor.Blue());
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
// function : StringType
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
Standard_CString Graphic3d_ArrayOfPrimitives::StringType() const
|
||||
{
|
||||
switch (myType)
|
||||
@@ -394,41 +259,10 @@ Standard_CString Graphic3d_ArrayOfPrimitives::StringType() const
|
||||
return "UndefinedArray";
|
||||
}
|
||||
|
||||
gp_Pnt Graphic3d_ArrayOfPrimitives::Vertice (const Standard_Integer theRank) const
|
||||
{
|
||||
Standard_Real anXYZ[3];
|
||||
Vertice (theRank, anXYZ[0], anXYZ[1], anXYZ[2]);
|
||||
return gp_Pnt (anXYZ[0], anXYZ[1], anXYZ[2]);
|
||||
}
|
||||
|
||||
Quantity_Color Graphic3d_ArrayOfPrimitives::VertexColor (const Standard_Integer theRank) const
|
||||
{
|
||||
Standard_Real anRGB[3];
|
||||
VertexColor (theRank, anRGB[0], anRGB[1], anRGB[2]);
|
||||
return Quantity_Color (anRGB[0], anRGB[1], anRGB[2], Quantity_TOC_RGB);
|
||||
}
|
||||
|
||||
gp_Dir Graphic3d_ArrayOfPrimitives::VertexNormal (const Standard_Integer theRank) const
|
||||
{
|
||||
Standard_Real anXYZ[3];
|
||||
VertexNormal (theRank, anXYZ[0], anXYZ[1], anXYZ[2]);
|
||||
return gp_Dir (anXYZ[0], anXYZ[1], anXYZ[2]);
|
||||
}
|
||||
|
||||
gp_Pnt2d Graphic3d_ArrayOfPrimitives::VertexTexel (const Standard_Integer theRank) const
|
||||
{
|
||||
Standard_Real anXY[2];
|
||||
VertexTexel (theRank, anXY[0], anXY[1]);
|
||||
return gp_Pnt2d (anXY[0], anXY[1]);
|
||||
}
|
||||
|
||||
Quantity_Color Graphic3d_ArrayOfPrimitives::BoundColor (const Standard_Integer theRank) const
|
||||
{
|
||||
Standard_Real anRGB[3] = {0.0, 0.0, 0.0};
|
||||
BoundColor (theRank, anRGB[0], anRGB[1], anRGB[2]);
|
||||
return Quantity_Color (anRGB[0], anRGB[1], anRGB[2], Quantity_TOC_RGB);
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
// function : ItemNumber
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
Standard_Integer Graphic3d_ArrayOfPrimitives::ItemNumber() const
|
||||
{
|
||||
if (myAttribs.IsNull())
|
||||
@@ -464,66 +298,10 @@ Standard_Integer Graphic3d_ArrayOfPrimitives::ItemNumber() const
|
||||
return -1;
|
||||
}
|
||||
|
||||
void Graphic3d_ArrayOfPrimitives::ComputeVNormals (const Standard_Integer theFrom,
|
||||
const Standard_Integer theTo)
|
||||
{
|
||||
Standard_Integer aNext = theFrom + 1;
|
||||
Standard_Integer aLast = theTo + 1;
|
||||
gp_Pnt aTri[3];
|
||||
if (myMaxEdges > 0)
|
||||
{
|
||||
aTri[0] = Vertice (Edge (aNext++));
|
||||
aTri[1] = Vertice (Edge (aNext++));
|
||||
}
|
||||
else
|
||||
{
|
||||
aTri[0] = Vertice (aNext++);
|
||||
aTri[1] = Vertice (aNext++);
|
||||
}
|
||||
|
||||
gp_Vec vn;
|
||||
while (aNext <= aLast)
|
||||
{
|
||||
if (myMaxEdges > 0)
|
||||
{
|
||||
aTri[2] = Vertice (Edge (aNext));
|
||||
}
|
||||
else
|
||||
{
|
||||
aTri[2] = Vertice (aNext);
|
||||
}
|
||||
gp_Vec v21 (aTri[1], aTri[0]);
|
||||
gp_Vec v31 (aTri[2], aTri[0]);
|
||||
vn = v21 ^ v31;
|
||||
if (vn.SquareMagnitude() > 0.0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
aNext++;
|
||||
}
|
||||
|
||||
if (aNext > aLast)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
vn.Normalize();
|
||||
if (myMaxEdges > 0)
|
||||
{
|
||||
for (int i = theFrom + 1; i <= theTo + 1; i++)
|
||||
{
|
||||
SetVertexNormal (Edge (i), vn);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = theFrom + 1; i <= theTo + 1; i++)
|
||||
{
|
||||
SetVertexNormal (i, vn);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
// function : IsValid
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
Standard_Boolean Graphic3d_ArrayOfPrimitives::IsValid()
|
||||
{
|
||||
if (myAttribs.IsNull())
|
||||
|