1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-09 13:22:24 +03:00

Compare commits

..

141 Commits

Author SHA1 Message Date
nbv
4fd471ed41 0029144: BOP PaveFiller hangs in some case
1. Method IntWalk_PWalking::ExtendLineInCommonZone(...) now is not called if the already found intersection point is on surface boundary.
As result, the intersection line going along any boundary will never be extended. It is appropriate for high-level OCCT-algorithm because they will take the boundary (not computed line) as intersection result.

2. Method IntTools_BeanFaceIntersector::ComputeRangeFromStartPoint(...) has been corrected in order to avoid infinite loop described in the issue. The algorithm of obtaining the neighborhood of the intersection point has been improved.

3. Now, IsInside(...) static function (see BOPAlgo_BuilderFace.cxx file) does not need a 2D-curve for classified edge on the face. It allows avoiding exceptions in cases when the curve creation is impossible.

4. Post-processing has been added to join several common blocks to one. Method BOPDS_DS::RemoveCommonBlock(...) has been added in order to avoid duplication after joining.
2017-10-10 11:53:01 +03:00
kgv
cda06ac0e3 0029152: Coding Rules - eliminate GCC compiler warnings -Wmisleading-indentation when using MinGW
OSD_File::myFileHandle/myIO pair is now switched within class definition
instead of myFileHandle_is_only_for_Windows/myFileChannel_is_only_for_Linux macros.

OSD_Directory/OSD_Disk/OSD_File methods implementation of WinAPI/non-WinAPI
has been merged within .cxx file and reformatted.
Resolved several inconsistences on handling invalid input
between WinAPI/non-WinAPI implementations.
NCollection_Array1 is now used in several places instead of
raw memory allocation (HeapAlloc()/HeapFree()/new/delete).
TCollection_ExtendedString is used instead of StringCchCopyW.

Unused field OSD_Disk::myQuotaSize and not implemented methods OSD_Disk::*Quota*() have been removed.

Obsolete code fragment "for Visual Age compiler" is removed.
Macro __try is undefined before redefinition on MinGW to avoid warning.
2017-10-06 10:29:10 +03:00
apv
9026dea8d2 Update of tests database
Test for 0028167: Fillet has strange form at its end
Test for 0028168: Exception is raised during Boolean operation
Test for 0028194: BRepMesh - Standard_OutOfRange exception on valid shape
Test for 0028200: Invalid topology of the general fuse result
Test for 0028216: Intersection of a face and a solid is broken up leading to empty result of Boolean common operation
Test for 0028245: Result of Cells Builder algorithm becomes invalid after removal of internal boundaries on faces
Test for 0028247: Effect of minSize parameter of BRepMesh_IncrementalMesh seems to be too strong
Test for 0028274: BOPAlgo_MakerVolume fails to create solid
Test for 0028279: Greater oscillations and higher degree of resulting B-Spline in cylinder-cylinder intersections in 7.1.0
Test for 0028354: Filleting destroys shape if the filleted edge touches a seam edge
Test for 0028366: BOP Common fails with solid and planar face
Test for 0028379: BRepMesh produces mangled mesh for a cone
Test for 0028388: Boolean common of simple face and solid results in empty compound
Test for 0028393: Boolean cut produce wrong result.
Test for 0028402: Modeling - calculation of properties of complex compounds is slow
Test for 0028406: High tolerances after boolean operation on OCCT 6.9.1
Test for 0028694: IGES reader produces too small edge covered by its vertices
Test for 0028719: Mesh - Display issue for special model
Test for 0028108: Sweep fails in "Right Corner" mode
Test for 0028696: Offset 2D algorithm produces micro edges
Test for 0028700: BRepBuilderAPI_Sewing produces too small edge covered by its vertices
Test for 0028722: Conversion of a spherical face to a spline produces an invalid shape
Test for 0028739: Draft on face fails
Test for 0028662: Data Exchange - Exception during reading large STEP file.
Test for 0028768: ShapeFix slighly corrupts the source face
Test for 0028485: Fuse of two shapes using gluing and non-destructive options gives invalid result
Test for 0028500: Artifact in shaded view of the shape
Test for 0028523: Fixshape reverses the orientation of the face
Test for 0028544: Big tolerance value is returned by Implicit-parametric algorithm
Test for 0028571: BRepOffsetAPI_MakeOffset build invalid wire
Test for 0028572: Wrong result of the mkface command
Test for 0028595: Shifting 2d curves for non-periodic surfaces leads to incorrect result.
Test for 0028596: Erroneous fillet
Test for 0028640: BRepBuilderAPI_Transform build invalid shape
Test for 0028656: 3d offset modifies the input shape
Test for 0000077: BUC60866. The BRepFill_Pipe fails.
Test for 0000078: BUC60875. Pipe is created incorrectly on two wires.
Test for 0000082: BUC60908. Incomplete section of shell by plane.
Test for 0000083: BUC60912. Section of simple BSpline surfaces is performed too slow.
Test for 0000862: GeomAPI_ExtremaCurveCurve fails on given curves
Test for 0002442: Error in BRepClass3d_SolidClassifier
Test for 0003936: Face on a surface of extrusion is extended after import to IGES
Test for 0005081: BRepOffset_MakeOffsetShape algorithm does not return valid result.
Test for 0005145: Wrong result of projection of a circle on a sphere.
Test for 0014846: ShapeFix_Wireframe::FixWireGaps() works wrong on a shape with seam edge
Test for 0016424: Exception in reading of attached IGES file
Test for 0010377: Incorrect fuse result when objects tangent by planar face
Test for 0013565: Incorrect result of Common operation
Test for 0013566: Incorrect result of Extrema between a large circle and a line
Test for 0024632: Artifacts during Boolean cut operation on neighboring parts
Test for 0005582: Impossible to make offset on the shape with degenerated edge
2017-10-06 10:28:34 +03:00
emv
dcba2e5ce3 0029135: 3D Offset algorithm produces a NULL shape
UpdateValidEdges in BRepOffset_MakeOffset_1 - Perform the filtering of splits of the edges in two stages:
1. Separate filtering of the connected blocks using localized bounding edges taken only from the splits of offset faces from the block;
2. Combined treatment of the remaining splits using bounding edges from the splits of all offset faces.
2017-10-06 10:28:32 +03:00
abv
68beaa3c57 0029124: Visualization, Tests - failures when tests are executed via Remote Desktop connection
Protection against accessing null pointer is added in OpenGl_VertexBuffer::Create().
In command vreadpixel OpenGl-related warnings are redirected to cout so that they do not contaminate the command output.
Test grid caf presentation is configured to ignore OpenGl-related warning messages.
Tests in grid tools are configured to report status SKIPPED if tools are not available (OCCT is built without Qt).
2017-10-06 10:28:30 +03:00
anv
151da08bbe 0029117: Adding translation of Multileader entity
Scaling of width of glyphs is added om Font_FTFont class.
Font "SimSan" is specified as fallback alias for font "NSimSan" (contains Chinese hieroglyphs).
2017-10-06 10:28:28 +03:00
gka
2c25cc04e0 0029029: Exception Raised with no Result during reading file 2033zsh1_1.stp
Static function stepstrcmp() in StepData_StepReaderData.cxx is replaced by plain strcmp() to have the full strings compared (stepstrcmp() returned true if one of strings was longer than the other but common part was equal).
Protection is added to avoid exception for cases when representation entities are NULL
2017-10-06 10:28:25 +03:00
imn
385d47dde7 0028245: Result of Cells Builder algorithm becomes invalid after removal of internal boundaries on faces
When removing internal boundaries between faces of the same material do it once for the whole shape, and at this keep boundaries between areas with different material.
2017-10-06 10:28:23 +03:00
kgv
7c4ce93bab 0029184: Visualization - DrawWindow::Save() fails when using WinCodec with PNG codec
DrawWindow::Save() now uses Image_Format_BGR instead of Image_Format_BGR32
for better compatibility with image encoders when dumping WinAPI bitmap.
2017-10-06 10:28:21 +03:00
Zia ul Azam
fae1ae1182 0029109: Visualization, AIS_Trihedron - add option hiding arrows tips
Prs3d_DatumAspect::DrawDatumPart() now handles new flag ToDrawArrows().

vtrihedron - added new option -arrowTip.
Fixed misprint in command description -arrowscolor -> -arrowcolor.
2017-10-06 10:28:19 +03:00
ifv
f998596a10 0028909: Algorithm of BO is stuck while fusing shell and edges
Approximation parameters: degmin, degmax, max number of segments, boundary condition, maximal distance of projecting are added in interface of classes ProjLib_ProjectedCurve, ProjLib_ComputeApprox,
ProjLib_ComputeApproxOnPolarSurface
Algorithm of Approx/Approx_ComputeCLine is modified in order to treat maximal number of segments allowed for cutting.
Algorithm of method BOPTools_AlgoTools2D::MakePCurveOnFace(...) is modified in order to manage cases with big edge tolerances.
Test case added
Some test cases were modified according to new behavior of algorithms
2017-10-06 10:28:17 +03:00
nbv
23e8067c74 0029176: Exception while projection 2D-point on 2D-line
DRAW-command "2dproj" has been changed. Now, it can return not only 2D-line as extrema but 2D-point.

Test case has been updated.
2017-10-06 10:28:14 +03:00
abv
8157aa285b 0029160: Coding - AppleCLang 9 compiler warning "binding dereferenced null pointer to reference has undefined behavior"
Avoid returning reference to null in AppDef_MyLineTool
2017-10-06 10:28:12 +03:00
oan
00af0ebb9d 0028931: Eliminate dependency from TBB in OSD_Parallel header
Implementation of methods OSD_Parallel::For() and ForEach() is moved to CXX files to avoid direct dependency of client code that uses OSD_Parallel on TBB headers, and necessity to link with TBB explicitly.
Runtime polymorphism (virtual methods) is used to hide implementation (TBB or threads-based).
2017-10-06 10:28:10 +03:00
msv
b92bc5ab7c 0029159: Sewing fail when using a maximum tolerance
Force setting truly computed tolerance of the edge if BRepLib::SameParameter has put too large tolerance.
2017-10-06 10:28:08 +03:00
kgv
da2a6aee19 0029147: Visualization - D3DHost_FrameBuffer::BindBuffer() fails on some Intel drivers
D3DHost_FrameBuffer::BindBuffer() now implicitly detaches Depth+Stencil texture in case of driver failure.
D3DHost_View::d3dCreateRenderTarget() now does not request Depth+Stencil texture by default.
2017-10-06 10:28:06 +03:00
kgv
6cde53c431 0029138: Visualization - D3DHost_FrameBuffer should provide software fallback when WGL_NV_DX_interop is unavailable
D3DHost_FrameBuffer now provides fallback code copying OpenGL FBO content into D3D surface (slow).
OpenGl_FrameBuffer::BufferDump() - FBO dump implementation has been moved from OpenGl_Workspace::BufferDump().
2017-10-06 10:28:04 +03:00
kgv
c98fcb6456 0029137: Visualization - D3DHost_FrameBuffer does not release Depth texture and FBO index 2017-10-06 10:28:01 +03:00
abv
6a657c9247 0029170: GCC 7.1 warnings -Wstrict-aliasing in Graphic3d_ArrayOfPrimitives.hxx
Methods Graphic3d_ArrayOfPrimitives::SetVertexColor() accepting color as three double rgb values and Graphic3d_Vec4ub object are refactored to avoid using reinterpret_cast between pointers to complex types.

Similar correction is made in ViewerTest_ObjectCommands.cxx (static function VDrawSphere).
2017-10-06 10:27:59 +03:00
kgv
c85a994a37 0029169: Configuration - fix compilation with undefined UNICODE on Windows
Eliminated usage of TEXT macros, usage of OSVERSIONINFO instead of OSVERSIONINFOW.
LoadIcon/LoadCursor are now used instead of LoadIconW/LoadCursorW
when passing macros to standard resources (which depend on UNICODE flag).
2017-10-06 10:27:57 +03:00
abv
03d960b8de 0029165: Visualization - misuse of enumeration in Prs3d_DatumAspect
Methods SetDrawFirstAndSecondAxis() and SetDrawThirdAxis() of the class Prs3d_DatumAspect are corrected to ensure that myAxis may be set only to valid values of the enum, and avoid unsafe operations.
2017-10-05 13:18:15 +03:00
abv
9b372aa8ba 0029164: GCC 7.1 compiler warnings -Wmaybe-uninitialized in gp_XYZ and siblings
Code is corrected to avoid local variables of reference type pointing to fields of temporary objects.
2017-10-05 13:18:14 +03:00
abv
b1811c1d2b 0029151: GCC 7.1 warnings "this statement may fall through" [-Wimplicit-fallthrough=]
New macro Standard_FALLTHROUGH is defined for use in a switch statement immediately before a case label, if code associated with the previous case label may fall through to that
next label (i.e. does not end with "break" or "return" etc.).
This macro indicates that the fall through is intentional and should not be diagnosed by a compiler that warns on fallthrough.

The macro is inserted in places that currently generate such warning message and where fallthrough is intentional.

Doxygen comments are provided for this and other macros in Standard_Macro.hxx.
2017-10-04 15:28:02 +03:00
kgv
e2b4dea253 0029156: Coding Rules - eliminate deprecation compiler warnings when targeting macOS 10.12 2017-09-29 09:42:14 +03:00
kgv
b1c235dfce 0029062: Visualization, SelectMgr_ViewerSelector - add NULL-check within ::checkOverlap() method 2017-09-29 09:42:13 +03:00
anv
08b183fe0b 0028188: Improving layer color storage mechanism for DXF Import/Export
Attribute ColorByLayer was added for shapes that should be colored by the color of their layer or, if it's absent, by the parent component's layer color.

Fixing inconsistency of iterating through the map of Styles

Improving ColorByLayer mechanism

Fix for Map/IndexedMad differences.

Renaming according to convention of naming collection typedefs
2017-09-29 09:42:12 +03:00
ski
7fbc3bc5a4 0029118: Incorrect generation of reference documentation for modules
Generation of reference documentation for modules was corrected.
2017-09-29 09:42:11 +03:00
snn
a8a3b37c0d 0029119: Documentation for PMI in XCAF
Documentation is added to the XDE part of the User Guide for GD&T, Clipping planes and Saved view components.
2017-09-29 09:42:09 +03:00
nbv
6fd0eb0c1e 0028764: [Regression to 7.0] Intersection of faces gives exception in debug mode
Some point were incorrectly removed from the Walking-line.

In the current fix, new method IntWalk_PWalking::RemoveAPoint(...) has been added and implemented in order to provide safe removing.

So, now methods AddAPoint(...) and RemoveAPoint(...) are recommended to use for work with the Walking-line.
2017-09-29 09:42:08 +03:00
kgv
b5cce1ab23 0028987: Visualization, SelectMgr_SelectableObject - move out iterator from object
Added method SelectMgr_SelectableObject::Selections() and depreacted methods
Init(), More(), Next() and CurrentSelection().

Added method SelectMgr_Selection::Entities() and depreacted methods
Init(), More(), Next() and Sensitivity().

SelectMgr_SelectableObject::myAssemblyOwner has been moved to AIS_MultipleConnectedInteractive.
SelectMgr_SelectableObject::Selection() now returns NULL handle for not found selection.
SelectMgr_SelectableObject::HasSelection() is no more virtual and just retuns !Selection().IsNull().

SelectMgr_SelectionManager::mySelectors map is now declared using proper
key type Handle(SelectMgr_ViewerSelector) instead of Handle(Standard_Transient).
2017-09-29 09:42:01 +03:00
abv
746f3d7ab2 0029112: Visualization - compilation fails on Ubuntu with libavutil 54.x (FFmpeg 2.7.6)
Offending macro is undefined to allow compilation with libavutil 54.x
2017-09-28 10:47:48 +03:00
emv
ad8b073e19 0029073: Regression: General Cut produces invalid shape
Boolean Operations:
1. Face/Face intersection post treatment - Unify vertices put on the section curves, which were rejected as existing ones, with the vertices of edges by which these section curves have been rejected.

2. Extend Warnings Reporting system of Boolean operations with the new warnings:
- BOPAlgo_AlertIntersectionOfPairOfShapesFailed - to be added when the intersection of pair of sub-shapes of the arguments has failed;
- BOPAlgo_AlertBuildingPCurveFailed - to be added when the building of the 2D curve of the edge on face has failed;
- BOPAlgo_AlertAcquiredSelfIntersection - to be added when the positioning and tolerances of the arguments leads to creation of self-interfered shapes.

These new warnings allow completing the operation even if intersection of some of the sub-shapes or building of some of the PCurves has failed. Moreover, they allow getting the pairs of sub-shapes on which the intersection/projection has failed, providing the user ability to analyze the intersection results.

Note that if some of these warnings appear, the result of the operation should be carefully analyzed for validity.

3. Print messages for the Warnings/Errors met during checking of the shape on self-intersection ("bopcheck" command).
2017-09-28 10:46:50 +03:00
kgv
c7ba457824 0027869: Visualization - AIS_ConnectedInteractive does not support exact HLR mode
AIS_ConnectedInteractive now shares HLR computation code with AIS_Shape.

BRepTools_WireExplorer::Orientation() now returns TopAbs_FORWARD
instead of throwing exception in case of infinite Edge without vertices.

StdSelect_BRepSelectionTool::GetSensitiveForFace() now creates Select3D_SensitiveCurve
from 2 points in case of infinite Edge instead of Select3D_SensitiveFace.
2017-09-28 10:44:24 +03:00
abv
a966092904 0028452: VIS - MSVC 14 compiler warnings
Includes of VTK headers are wrapped in #pragmas to ensure that MSVC warning messages disabled by VTK headers are still enabled for OCCT code
2017-09-28 10:42:43 +03:00
kgv
c8fe0e2db4 0029127: Visualization - V3d_View::ToPixMap() crashes on tiled rendering without FBO
Fixed out-of-memory writing within fallback View dump mode.
2017-09-28 10:41:44 +03:00
kgv
e4f0cc46a0 0029122: Visualization - improve Font_BRepFont to handle one-line-fonts
Font_SystemFont - added a new property SingleStrokeFont().
Font_BRepFont::renderGlyph() has been extended to not close contours
when flag SingleStrokeFont() has been set.
2017-09-28 10:40:29 +03:00
abv
1a6726dabb 0029107: Visualization - SelectMgr_FrustumBuilder constructor without arguments is not exported
Standard_EXPORT is added
2017-09-28 10:39:01 +03:00
kgv
8c3237d451 0028069: Visualization, TKOpenGl - handle flat shading model within GLSL programs 2017-09-28 10:36:05 +03:00
kgv
048e1b3b03 0029125: Visualization, OpenGl_Text - fix access violation within OpenGL1.1 context
OpenGl_Context::DiagnosticInformation() - added OpenGL version check before retrieving GL_SHADING_LANGUAGE_VERSION string.
2017-09-22 11:52:07 +03:00
nbv
8444aedb1d 0028150: Exception is raised during Boolean operation
ProjLib_ComputeApproxOnPolarSurface::BuildInitialCurve2d - Using the correct number of points (computed in GCPnts_QuasiUniformAbscissa class) for creation of the initial curve.
2017-09-22 11:52:05 +03:00
nbv
cd803dcd59 0029103: No intersection curve between faces if starting points are given
Sometimes the algorithm of Walking-line creation finds points out of the domain. Some such places have been detected and fixed in frame of this issue.
2017-09-22 11:52:02 +03:00
oan
71c810df61 0028824: Possibility to build OCCT 7.1.0 and above using Visual Studio 2008
Possibility to build OCCT using Visual Studio 2008 (VC9) is restored.
For that:

- template functions and classes from namespace std or tr1 (for VC9) are imported to namespace opencascade which is then used instead of std in relevant places
- templates not provided by compiler (VC9) but required for OCCT are defined in this namespace (in Standard_Handle.hxx)
- methods implementing move semantics are excluded for VC9 compiler (which does not support && syntax)
- support of vc9 compiler is restored in build procedures and environment scripts
- check of type of the current class in macros DEFINE_STANDARD_RTTI* is refactored

VS 2008 is restored in the list of supported platforms on Overview / System Requirements.
2017-09-22 11:52:00 +03:00
oan
a4ab454c0f 0027356: BRepTools::Clean() does not clean free edges from Poly_Polygon3D
Added code to clean 3D polygons on edges in BRepTools::Clean().
2017-09-22 11:51:58 +03:00
msv
28c08a7d40 0029038: Modeling - IntTools_EdgeEdge::FindParameters() hangs on bad curve
Make possibility to dramatically increase the step during iteration on the curve when the global resolution of the curve is too small.
Correct the functions FindParameters, FindBestSolution, FindDistPC.

The change caused improvement of the test case "boolean bfuse_complex E4", so the bug #27697 has been fixed.

The change caused dramatic improvement of the performance of the test "bugs modalg_7 bug27160", and the bug #29080 has been fixed.
2017-09-22 11:51:56 +03:00
szy
4621622641 0026256: FSD_File and FSD_CmpFile are almost twins. 2017-09-22 11:51:53 +03:00
msv
bfd69b5f7b 0029102: Missing points using GCPnts_QuasiUniformDeflection
Correct the method PerformCurve of GCPnts_QuasiUniformDeflection to get the proper derivative at the end of the current curve.

Improve the Draw commands "crvpoints" and "crvtpoints" so that to work with wires as composite curves.
2017-09-22 11:51:51 +03:00
emv
ca685e63ef 0026795: Unable to perform General Fuse operation on the attached faces
The problem is not reproduced in current version of OCCT.
Correction of the test case into OK state.
2017-09-22 11:51:49 +03:00
emv
d68b195fb6 0029099: Extra shapes in result of General Cut (box by ellipsoid)
Boolean Operations - when looking for the splitting parameters on the degenerated edges try not only the intersection of the 2D curve of degenerated edge with 2D curves of other edges bounded by the vertex of degenerated edge, but also the projection of the end points of the edges corresponding to the vertex on the 2d curve of degenerated edge.
2017-09-22 11:51:47 +03:00
kgv
a2560cc90c 0029096: Coding Rules - eliminate several compiler warnings in Training Samples 2017-09-22 11:51:45 +03:00
kgv
1136702b93 0029075: Configuration - fix TKService linkage errors due to usage of GLX functions while using EGL
Xw_Window, fixed usage of GLX functions for choosing Visual
when building with HAVE_EGL/HAVE_GLES2 options.
2017-09-22 11:51:42 +03:00
kgv
be7fc29e2a 0029086: Visualization, SelectMgr_ViewerSelector - drop Owners detected only by part of Entities within Box selection 2017-09-22 11:51:40 +03:00
kgv
780ee4e25c 0022048: Visualization, AIS_InteractiveContext - single object selection should always clear multiple selection
AIS_InteractiveContext::Select() now clears multiple selection when selecting a single object.
2017-09-22 11:51:38 +03:00
kgv
8e0a2b19ab 0029074: Visualization, TKOpenGl - support Geometry Shader definition
Graphic3d_TypeOfShaderObject enumeration has been extended by Geometry shader object type.
OpenGl_ShaderProgram::Initialize() processes new shader object types when supported by OpenGL version.
Declarations.glsl has been fixed so that occFragColor is defined only for
Fragment Shader object only (by handling new FRAGMENT_SHADER macros).

Improved documentation of Graphic3d_ArrayOfPrimitives class.

vshader Draw Harness command has been extended to support definition
of Shader Object types other than Vertex and Fragment shader.
2017-09-22 11:51:36 +03:00
kgv
3ed88facdb 0029084: Visualization, AIS_Manipulator - broken transformation is applied at Rotation angles near to Pi
AIS_Manipulator::ObjectTransformation() - fixed using of manipulator axes
with temporarily applied transformation (when BehaviorOnTransform::FollowRotation is TRUE).
Start axes orientation (at the beginning of Rotation) is now used instead.
2017-09-22 11:51:33 +03:00
abv
3ba79772a0 0028660: Documentation - describe how to fulfill LGPL terms in OCCT-based applications
Points considered as necessary to fulfill requirements of LGPL when OCCT is used in proprietary applications are described in Overview.
2017-09-22 11:51:31 +03:00
Benjamin Bihler
fe21f79693 0029014: Managing Binary Format Version Is Not Possible for Own TDF_Attributes
CDM_Application has been extended to provide application name and version.

Application name and version is stored by BinLDrivers_DocumentStorageDriver.

BinLDrivers_DocumentStorageDriver propagates application name and version
by passing it to BinMDataStd.

Made BinObjMgt_RRelocationTable store a handle to the header data of the file
begin read in to make it accessible by binary attribute drivers.

Undone storing application name and version as static fields in BinMDataStd
which is bad style and not thread-safe.

Moved method implementations to .cxx files.

Clearing a BinObjMgt_RRelocationTable now nullifies the reference to the
file header data and BinLDrivers_DocumentRetrievalDriver therefore sets
the reference after the relocation table has been cleared before reading
in the document subtree.
2017-09-22 11:51:29 +03:00
mkv
bcb8fa43ea 0028157: Setting the tolerance of a face to a small value and then fixing it leads to a face with vertex-vertex intersections
Problem is not reproduced on current master. Issue must be closed on 7.2.0.
Test case was added only
2017-09-22 11:51:27 +03:00
abv
4eb6e8f464 0029077: Tests - improve command testfile
Command testfile is improved to be more usable by developers for checking data files used by the new test cases before their integration to the test data base:

1. Do not check and do not report problems found in the repo when checking new files -- this check is done only when argument is "-check"

2. Can check a file located in a directory listed in CSF_TestDataPath as new one without it being considered as already in the data base

3. For new BREP files, reports warning if the file contains triangulation, suggesting that it can be removed to minimize the size

4. Can identify the same (by content) file in the data base for the new files in DOS encoding (less than 1 MB)

5. Can detect duplicates among the input files

6. Outputs result in more clear form

7. When loading STL files, uses option "triangulation" to be efficient

Automated Testing System guide is updated to describe command testfile.

Added test demo testsystem testfile
2017-09-22 11:51:25 +03:00
kgv
e3368235ea 0029083: Samples - specify multiple Make jobs within make.sh for Qt sample 2017-09-22 11:51:22 +03:00
bugmaster
4514dc74e4 0029050: SKIPPED test cases are no listed in header of summary.html
Adding list of SKIPPED test cases in header of summary.html under header Skipped:, and in the end of text log file
2017-09-22 11:51:20 +03:00
bugmaster
30017a480e Incitement OCCT version to 7.2.1 dev 2017-09-22 11:51:18 +03:00
nds
d2c909178e 0029018: Documentation - Provide user guide for Qt browser
Documentation is added in a new "Inspector" page of "User Guides".
Inspector plugins has some improvements by the documentation needs.
New DRAW scripts are implemented for 'tinspector' command.
2017-08-31 15:47:56 +03:00
abv
434098193a Update of title page of documentation (overview)
- Copyright year is updated
- Links to 3rd-party libraries and their licenses are actualized
- Description and snapshot of iOS sample added
- Visual Studio 2017 is mentioned among supported compilers
2017-08-31 15:47:41 +03:00
ski
7d7a3e84d7 0028932: Add possibility to install Eigen along the OCCT
Added installation of Eigen.
2017-08-30 16:19:55 +03:00
vsv
f2f4e84dca 0025464: Visualization - provide package for Volume Rendering 2017-08-30 13:52:58 +03:00
abv
8574e3291f 0028968: Incorrect offset for the faces with singularities
Simple offset algorithm (BRepOffset_MakeSimpleOffset) is improved to handle the case when bspline surface has imprecise singularity at one of sides (when side is degenerated but not exactly to one point).
In such case, the algorithm tries to collapse all poles of singular side of the surface to the same point; this allows avoiding flapping of normal due to small fluctuations of surface.

If face being offset contains degenerated edges, then check for singularity is done using position and tolerance of corresponding vertices.
In addition, each side is checked with some user-defined tolerance (by default Precision::Confusion()); this helps to process cases when no edge is located at that side or if such edge is not encoded as degenerated.
New parameter Tolerance is introduced for that in BRepOffset_MakeSimpleOffset class.

Tests added:
bugs modelg_7 bug28968 - on isolated faces as reported in the issue, mostly for visual check (absence of loops)
offset simple F01-05 - on original shells, checking tolerances of resulting shell
2017-08-30 13:52:56 +03:00
bugmaster
230b2bff00 Incrementing OCCT version up to 7.2.0 2017-08-30 13:52:53 +03:00
kgv
6985e642f7 0029067: Visualization, AIS_ColoredShape - visibility of sub-shapes is ignored by ComputeSelection() 2017-08-30 13:52:51 +03:00
ski
c22e576d5e 0029056: Configuration - It is not possible to install VTK products
Added installation of vtk.
2017-08-30 13:52:48 +03:00
kgv
c22f67408d 0029057: Tests - unstable test case bugs/vis/bug5682
Test case has been corrected to reduce measurements error.
2017-08-30 13:52:46 +03:00
ski
81dc032664 0028977: FFmpeg libraries are not presented in the CMake configuration
Corrected search of FFmpeg libraries.
2017-08-30 13:52:44 +03:00
abv
66d61d8a06 0029015: Testdiff - possibility to visualize image differences by toggling - correction
Javascript code is corrected to not depend on values of URLs of images
2017-08-30 13:52:41 +03:00
snn
024d6f7775 0028985: XCAF data structures for generic text annotations linked to GD&T annotations and saved views
1. A tool to annotate items in the hierarchical product structure was added. The tool is located under
   fixed label 0:1:9. It operates two basic entities: notes and annotations located under 0:1:9:1 and 0:1:9:2
   hives correspondingly. A note is an attribute derived from base class XCAFDoc_Note that is attached to a separate
   label under the notes hive. An annotated item is represented by XCAFDoc_AssemblyItemRef attribute
   attached to a separate label under the annotated items hive. Notes are linked to annotated items by means of
   XCAFDoc_GraphNode attribute, where notes play parent roles and annotated items - child roles.
2. XCAFDoc_AssemblyItemRef defines a weak reference to a label with optional attribute GUID or sub-shape index.
3. A capability to store note/annotation labels in XCAFDoc_ViewTool was added.
4. XDE User guide was updated
2017-08-30 13:52:39 +03:00
mkv
80070d4915 0028388: Boolean common of simple face and solid results in empty compound
Problem is not reproduced on current master. Issue must be closed on 7.2.0.
Test case was added only
2017-08-30 13:52:36 +03:00
abv
6b55f8e398 0028478: Scope Names Are Swallowed in Message_ProgressSentry Constructors
Tests are added to control output and performance of progress indicator (bugs fclasses bug28478 and perf fclasses progress, respectively).

Implementation of class Draw_ProgressIndicator is improved to update indicator basing on achieved total progress (1% by default) instead of elapsed time since last update.

Method OSD_Chronometer::Restart() is fixed to actually reset the counter.

DRAW command readstl is improved to show progress indicator if configured (by command XProgress).

Description of class Message_ProgressIndicator is updated; code example is added in description of Message_ProgressSentry.
2017-08-30 13:52:33 +03:00
abv
7d3225b51a 0029004: DRAW - update help of chrono and dchrono commands
Help of DRAW commands chrono and dchrono is updated according to changes made within #27691
2017-08-30 13:52:31 +03:00
apn
249dd6ed46 0029063: Configuration - improve paths in environment files
Change absolute paths to relative in OCCT environment files.
Move content of vcver.bat to env.bat.
2017-08-30 13:52:29 +03:00
kgv
a975e06e70 0029055: Visualization, Image_AlienPixMap - fallback using Wincodec
Possibility to read and write images in BMP, PNG, JPEG formats without using FreeImage library is provided on Windows using system image library.
2017-08-30 12:42:53 +03:00
emv
cc77a38d94 0028995: UnifySameDomain produces invalid shape
Synchronization of the ShapeAnalysis_Edge behavior with the BRepCheck_Edge by adding check for 2d curves on planes.

Implementation of the BRep_Tool::CurveOnPlane method to avoid code duplication for making PCurve of the edge on planar face.
2017-08-30 12:42:41 +03:00
kgv
2f690078d7 0029058: Coding rules, OpenGl_Window - eliminate memory leak after XGetVisualInfo
Minor memory leak occurring at creation of the view is eliminated.
2017-08-30 12:42:39 +03:00
abv
2a9be0e22b 0028131: BRepOffset_MakeOffset can't create offset with a face which created by filling 3 bsplinecurve
Handling of degenerated points (with all derivatives zero) in GeomEvaluator_OffsetSurface is improved by iterative movement towards middle of the surface (extension of one-step approach implemented earlier in #28112).
2017-08-30 11:22:47 +03:00
abv
2111e96703 0028780: HLR with focus does not seem to work
Method HLRBRep_Curve::D1() is corrected to apply transformation to a point according to current projection parameters
2017-08-30 11:22:45 +03:00
abv
2fa4d230bb 0029048: Draw - avoid setting default paths to scripts and test data folders if set externally
Avoid adding default paths to test scripts when DRAW is started if relevant variables (CSF_TestStriptsPath) are already defined in the environment.
2017-08-30 11:22:43 +03:00
kgv
c0f08310cc 0029053: Configuration, CMake - fix env.bat for starting Draw Harness for MinGW build 2017-08-29 11:28:58 +03:00
kgv
e21fec8100 0029051: Visualization, TKOpenGl - wrong color of transparent dynamic highlight with OIT tuned ON
OpenGl_PrimitiveArray::Render() - removed obsolete code, which become redundant (and broken)
after moving rendering of transparent objects into OpenGl_LayerList::renderTransparent().
2017-08-29 11:28:51 +03:00
mkv
3dffe5f265 0028195: Boolean common returns empty result for a solid where some surfaces of revolution touch the axis
Problem is not reproduced on current master. Issue must be closed on 7.2.0.
Test case was added only
2017-08-29 11:28:43 +03:00
kgv
bb88f3ff6e 0029049: Visualization - restore removed class DsgPrs_DatumPrs 2017-08-29 11:28:35 +03:00
abv
4bcc20301e 0029047: Upgrade guide -- some changes in OCCT 7.2.0 are not described
Upgrade Guide is updated to describe:
- Removal of typedefs to double in Quantity and V3d
- Removal of support of orientation in classes BRepTools_ReShape and ShapeBuild_ReShape
- Removal of AIS methods taking/returning Quantity_NameOfColor instead of Quantity_Color
- Removal of active texture state from OpenGl_Workspace
2017-08-29 11:28:27 +03:00
nds
0cb512c013 0029025: TInspector include files are not installed to inc directory by CMake
TInspector headers are collected in 'inc/tools' directory.

Extending DRAW Commands;

Eliminating warnings;

Improve Export to ShapeView dialog;

Avoid crash with QML using;
2017-08-25 10:37:52 +03:00
apv
340054e17a Update of tests database
Test for 0027049: Make non-destructive mode be defined by default in Boolean operations
Test for 0027052: Test boolean gdml_private ZI5 failure
Test for 0027069: IGES parser does not recognize comments in Parameters section
Test for 0027090: Point is classified IN solid but actually it is OUT
Test for 0027170: Reading STEP files produces invalid shapes
Test for 0027186: IGES - reconsider creation of Undefined entity in case of failure
Test for 0027214: Duplicate of test cases
Test for 0027224: Incorrect result of boolean operation in boolean bcut_complex Q1 test case
Test for 0027227: Intersection curve is not continued to the surface boundary
Test for 0027246: ShapeFix_Shape destroys shape
Test for 0027251: Shape becomes invalid when exported to STEP and imported back
Test for 0027316: exception when XAddShape
Test for 0027378: BRepLib_MakeFace produces invalid faces on periodic surfaces in case the given parametrization does not match the default
Test for 0027390: Box and Ellipsoid shape boolean cut and common introduce invalid result.
Test for 0028119: Blend fails on fused identical but shifted tori
Test for 0028144: Step reader - regression in comparison of version OCCT654
Test for 0028151: Sewing faces results in a shell with very big tolerance
Test for 0027160: Weird results of the pipe algorithm
Test for 0027623: Cannot find intersection line between two trimmed planar surfaces
Test for 0027683: Inaccurate result by bopcut
Test for 0027687: Section between shells of hull and deck is not closed
Test for 0027711: Blend-on-blend corrupts the shape
Test for 0027784: Thickness fails on cylinder with draft
Test for 0027908: Exception during offset computation
Test for 0027909: Exception during offset computation
Test for 0027910: Sharing between edges was lost after offset operation
Test for 0027911: Exception during offset computation
Test for 0027912: Exception during offset computation
Test for 0027928: BOP common produces empty compound
Test for 0027948: Cut produces unexcpected shape
Test for 0027950: Result of intersection algorithm depends too much on surface trim bounds
Test for 0027701: Crash when export empty solid to STEP
Test for 0027722: STEP error for Ellipse revol shape
2017-08-24 21:24:34 +03:00
abv
c231f393d3 0029015: Testdiff - possibility to visualize image differences by toggling
Command testdiff is improved to make HTML elements in the report showing diff images interactive: when user clicks on a diff image by mouse, it triggers between the A and B images.
The diff image is shown back when the mouse cursor leaves the image.
2017-08-24 19:13:08 +03:00
abv
c3cca01534 0028964: Draw - need to have command to apply ShapeFix_FixSmallFace tool
DRAW command fixsmallfaces is added to fix (remove) small faces in the shape.
Command OCC22586 is removed (replaced by fixsmallfaces).

Test bug28112_2 using that command is added for the two last shapes in issue #28112; test bug28112 is renamed to bug28112_1.
Test bug22586 is changed to use the new command.
2017-08-24 19:13:04 +03:00
ski
956d63467f 0028287: CMake install does not copy pdb files in RelWithDebInfo mode
Installation of .pdb files was corrected.
2017-08-24 19:13:01 +03:00
ysn
a41ccd91d9 0027018: Documentation - blockquotes are incorrectly formatted in PDF
Trailing space is removed after ">" to avoid breaking the quote block in PDF output.

A section about quotes are added in the documentation guide.
2017-08-24 19:12:57 +03:00
ika
5b83cdb642 0028332: Unstable tests in group gdt export
Add initialization of variable GDTMode in STEP writer.
2017-08-24 19:12:53 +03:00
kgv
6ca8b6144b 0029031: Visualization - Prs3d_Drawer::SetShaderProgram() has no effect
Prs3d_Drawer::SetShaderProgram() now takes into account HasOwn*** flags.
2017-08-24 19:12:50 +03:00
emv
f523acf0b4 0028913: UnifySameDomain crashes with error: "a shape is modified and removed simultaneously"
Correct filling of the history of the modifications of the shapes in ShapeUpgrade_UnifySameDomain algorithm.

Test cases for the issue.
2017-08-24 19:12:44 +03:00
apv
192b22058b 0027936: [regression] BRepAlgoAPI_Common returns empty result for a solid and a face
Problem is not reproduced on current master. Issue must be closed on 7.2.0.
Test case was added only.
2017-08-24 19:12:41 +03:00
nds
4f4b893546 0028999: Modify Qt Browser build option
'BUILD_Inspector' CMake option switches ON/OFF Inspector in compilation procedure (add additional dependency to Qt third party product)
'inspector.bat' starts sample to demonstrate possibilities of this tool.
Replacing TOOLS to INSPECTOR key for 'pload' command in DRAW cases due to this change in DrawPlugin.
2017-08-24 19:12:26 +03:00
kgv
7c42f3f48d 0028997: Documentation - Visual3d_Layer removed, but still in the documentation
The User Guide has been checked for presence of removed functionality.
2017-08-24 19:12:22 +03:00
kgv
fd3f6bd069 0029011: Draw Harness - simplify diffimage command syntax
Command diffimage now accepts the following syntax:
  diffimage imageFile1 imageFile2 [diffImageFile]
            [-toleranceOfColor {0..1}=0] [-blackWhite {on|off}=off] [-borderFilter {on|off}=off]
            [-display viewName prsName1 prsName2 prsNameDiff] [-exitOnClose]

Command vinit now accepts the following syntax:
  vinit [-name viewName] [-left leftPx] [-top topPx] [-width widthPx] [-height heightPx]
        [-exitOnClose] [-display displayName]

Compatibility with old syntax is also preserved.
diffimage now can display compared images in 3D viewer.
The new option -exitOnClose can be used to exit application when closing the 3D View.
2017-08-24 19:12:18 +03:00
kgv
aa17dac878 0029021: Coding Rules - eliminate GCC warnings in Qt sample 2017-08-24 19:12:15 +03:00
kgv
41f97958c0 0029016: Configuration, genproj.tcl - add missing definition of CSF_dl 2017-08-24 19:12:09 +03:00
Benjamin Bihler
1aa738ddd6 0028854: The documentation should state where handle reference counting happens
The comment to class opencascade::handle<> in Standard_Handle.hxx now explains better the features differing it from std::shared_ptr<>.
2017-08-24 19:12:06 +03:00
apv
569c958248 0027760: [regression] BRepAlgoAPI_Common returns empty result
Problem is not reproduced on current master. Issue must be closed on 7.2.0.
Test case was added only.
2017-08-24 19:12:01 +03:00
apv
cba287d62a Update of tests database
Test for 0025930: thickness of spherical cap is invalid
Test for 0025939: SIGSEGV in MakeThickSolid
Test for 0025940: MakeThickSolid creates C0 continuous edges
Test for 0026604: GeomFill_Pipe doesn't fit given bounds
Test for 0026655: ChFi3d_Builder algorithm fails to build fillets if some input edges connect with seam edges
Test for 0026697: BRepFeat_MakePrism returns empty compound
Test for 0026716: Mesher cannot create a mesh of brep model due to ShapeFix_Wire::FixShifted()
Test for 0026735: Adjacent perpendicular edges are detected as overlapped by DRAW command checkoverlap.
Test for 0026793: General Fuse algorithm produces incorrect result
Test for 0026795: Unable to perform General Fuse operation on the attached faces
Test for 0026842: bopsection result does not contain any edges.
Test for 0026882: Edge/Edge intersection algorithm produces incorrect result
Test for 0026883: Wrong result of Boolean Operation
Test for 0026889: Very poor mesh result from shape
Test for 0026928: Edges are meshed too coarsly
Test for 0026933: Section works unstably due to incorrect work of the method IsExistingPaveBlock
Test for 0026943: Wrong projection of helix on cylinder by ShapeConstruct_ProjectCurveOnSurface
Test for 0026957: Unify same domain operation is slow for multiple shells
Test for 0026978: Interactive selection is insensitive to swept shell
Test for 0027004: ShapeUpgrade_UnifySameDomain produces invalid result
Test for 0026280: Mechanism 'ShapeFix' is unable to heal a shape
Test for 0026282: Mechanism 'ShapeFix' has errors revealed by wire tool 'FixTails'
Test for 0026291: BRepMesh produces mesh with gap on the attached shape
Test for 0026382: BRepMesh produces internal nodes outside the face interior
Test for 0027453: Wrongly meshed surface
Test for 0027524: The command checkshape does not find the maximal deviation between curves representations
Test for 0026225: Wrong result of chamfer in case of coinciding bound of chamfer's surface with bound of a face
Test for 0026295: Sweep fails with BRepFill_ContactOnBorder
Test for 0026374: GeomFill_Profiler fails to unify BSplines if one has knot distance less than PConf
Test for 0026558: Failing to build isoline for offset surface
Test for 0026563: Boolean cut operation in new API multi-tool mode performs fuse instead of cut
Test for 0026568: Exception when creating pipe
Test for 0027419: Incorrect result of Edge/Face intersection
Test for 0027469: Regression vs 6.9.1: Wrong result of Edge/Face intersection
Test for 0027471: Wrong result of pipe
Test for 0027472: Wrong result of cut
Test for 0027614: Sewing returns result with too high tolerance
Test for 0026154: Visualization - v3d viewer grid disappears due to automatic z-fit
Test for 0026174: Loss of color after the second write of file (iges).
2017-08-18 12:13:40 +03:00
apn
fe6c26dc50 0029010: Launch custom.bat in samples before calling general environment
Replace calling custom.bat and general env.bat in samples.
2017-08-18 12:13:27 +03:00
nds
9294c8f774 0028631: Modeling Algorithms - Crash while building a 2D circle tangent to another circle and passing through its center
Code correction includes also:
- extending GccEnt to have GccEnt_Position conversion to string value and backward;
- new GeometryTest_DrawableQualifiedCurve2d DRAW object to wrap GccEnt_QualifiedCirc/GccEnt_QualifiedLin.
  It is a DrawTrSurf_Curve2d with GccEnt_Position visualized in orange color.
- qcircle/qline DRAW command to create instance of GeometryTest_DrawableQualifiedCurve2d
- circ2d3Tan DRAW command to wrap GccAna_Circ2d3Tan taking qcircle/qline/point arguments.
2017-08-17 22:21:32 +03:00
kgv
905b0e3175 0028527: Visualization, AIS_InteractiveContext - custom selection presentation is never removed from View 2017-08-17 22:21:31 +03:00
emv
a743814be9 0029000: Update documentation of Boolean operations according to the new Error/Warning reporting system
The documentation of Boolean Component has been updated - calls to ErrorStatus() method have been replaced with calls to HasErrors() method.
2017-08-17 22:21:30 +03:00
abv
efe9d99730 0029009: Configuration - provide a way to get visual dif of SVG images
New helper script svgdiff.bat is added in adm folder.
It can be used for enabling visual diff for SVG images in TortouseGit; see Git guide for details.
2017-08-17 22:21:29 +03:00
abv
471a2ca0bf 0028959: Configuration, genproj - provide warning on update of scripts in root folder (msvc.bat etc.)
When updating files msvc.bat and draw.bat/sh in the root folder by copying template from adm/templates, procedure genproj will give a warning (unless the files are already the same); if the target file is newer, its copy is saved with additional extension .bak.
2017-08-17 22:21:16 +03:00
vro
f97095fada 0028972: A not useful message is printed on copying of data in OCAF 2017-08-17 15:49:17 +03:00
abv
22e7073865 0027561: Since OCCT 7.0.0, exporting a curve to STL creates a file that results in an endless loop when read
Add check for empty triangulation when writing STL file to report error instead of creation of empty file.

STL reader has been improved to properly handle case of empty or small files, and Ascii files without EOL at the end.
2017-08-17 15:49:11 +03:00
kgv
d21ddc4f17 0029007: Visualization, AIS_InteractiveContext - the method for accessing Detected owners iterator is missing
Added new method AIS_InteractiveContext::DetectedCurrentOwner().
AIS_InteractiveContext header has been restructured (methods moved into groups)
and description has been cleaned up.
2017-08-17 15:48:44 +03:00
kgv
51004f1cf9 0027381: Visualization - update description of method AIS_InteractiveContext::SetPixelTolerance() 2017-08-17 15:48:36 +03:00
abv
0ef598d064 0028249: Upgrade Guide - mention need to use option -std=c++0x when using GCC 2017-08-17 15:48:29 +03:00
mkv
fbd0023f75 0028967: Boolean cut fails the first time, works the second time 2017-08-17 15:48:22 +03:00
emv
2783b13ce6 0028893: BOP cut produces result with artifacts consisting of tools parts 2017-08-17 15:48:15 +03:00
kgv
cee2b5567d 0028323: Documentation - explain highlighting logic of AIS_InteractiveObject in the upgrade guide 2017-08-17 15:48:04 +03:00
abv
d7a28edad2 0028225: MFC sample on OCAF uses old-style definition of a Handle-class
Obsolete approach to definition of OCCT RTTI in sample classes generated by WOK from CDL is replaced by usage of standard macros
2017-08-17 15:47:58 +03:00
emv
7337535943 0028892: BOPAlgo_PaveFiller returns status "error: 11" in draw or raises exception in app on the given shapes set
Boolean Operations algorithm - Added processing of the untouched edges (without edge set) in the UpdatePaveBlocks method.

IntCurvesFace_Intersector algorithm - Avoid calculation of the number of sample points on the surfaces with too small UV ranges.
2017-08-17 15:47:50 +03:00
razmyslovich
359cdde7ed 0027358: ShapeAnalysis_Curve::GetSamplePoints iteration logic isn't robust
The iterating logic in ShapeAnalysis_Curve::GetSamplePoints() is made more robust: instead of iterative incrementing parameter by adding step, parameter at each point is calculated independently from index.
This avoids possible accumulation of numeric errors, and ensures that generated points are equally spaced and their quantity is respected in all cases.
2017-08-17 15:47:39 +03:00
skl
2bc6f71528 0028715: Invalid shape produced by reading of attached STEP file. Regression from OCCT-6.9.1 to OCCT-7.0.0.
Corrections: to use fixed shape as result in the non-manifold mode was made.

Regression was due to using modified initial shape as result in the previous version OCCT. At present initial shape is not modified during ShapeProcessing. Therefore modification to use fixed result was made.

Additionally using of nonManifold flag is added to ShapeProcessing.
2017-08-17 15:47:32 +03:00
apv
a2456ed88a 0026516: Creating revolved shapes fails in some cases 2017-08-17 15:47:25 +03:00
mkv
98f5d739e3 0026776: Bad result of section algorithm 2017-08-17 15:47:08 +03:00
apv
dfdfa61fb5 Update of tests database
Test for 0023838: Standard_OutOfRange in Geom_OffsetSurface::LocalDN (called by BRepFill_PipeShell)
Test for 0023866: GccAna_Circ2d3Tan does not find a circle
Test for 0023925: BRepFeat_SplitShape produces invalid shape
Test for 0023942: Pipe algorithms unrobust to number rounding
Test for 0025385: steep increase in tolerance by intersection
Test for 0025395: SIGSEGV in BRepOffsetAPI_MakeThickSolid
Test for 0025458: can a sweep be used to create 1-fold tori (using a closed wire as path)
Test for 0025478: Fillets can not touch
Test for 0025481: Edge must not contain obsolete curve representations
Test for 0025515: Boolean operation become worse for unknown reason.
Test for 0025521: Fillet creates shell with bad orientation of SubShape
Test for 0025551: BRepMesh can produce internal nodes outside the face interior based on distorted BSpline surface
Test for 0025586: Poor mesh quality, or failure of meshing for closed extruded surfaces with holes
Test for 0025626: Loft of ellipses shows wrinkle near seam edge
Test for 0025628: BRepMesh fails to mesh face with open wire, considered as correct by checkshape
Test for 0025693: Wire of BSplines fails bopcheck
Test for 0025730: result of MakeThickSolid aborts the BOPCheck in Geom_OffsetSurface::SetD0
Test for 0025738: BRepMesh fails to produce correct mesh for the face
Test for 0025776: HLR returns intersecting edges in OutLineV of helical sweep
Test for 0025798: BRepFeat_SplitShape returns invalid result
Test for 0025817: crescent face is not meshed
Test for 0025827: BRepMesh does not synchronize parameters of glued vertices on small edges
Test for 0025837: Bad triangulation when IGES loaded in meters
Test for 0025852: Text to BRep algorithm produces bad faces for circled symbols
Test for 0025856: BRepOffsetAPI_ThruSections returns an invalid shape if one wire contains degenerated edges
Test for 0025879: result of blend fails the bopcheck
Test for 0025967: Shape Healing fails to correct a face with missing poles and pcurves
Test for 0026052: Missing pcurves are computed incorrectly on two connected faces laying on the same surface
Test for 0025061: BRepMesh should skip internal wires with self intersections to produce mesh for the shape anyway
Test for 0024490: Computed surface properties differ substantially depending on NaturalRestriction flag
Test for 0024568: Split shape produces an invalid result
Test for 0024692: fuseedge corruption of spherical edge
Test for 0024772: Intersection of cylinder and cone produces incorrect results
Test for 0024954: BRepBuilderAPI_MakeFace adds wire with aribitary orientation
Test for 0025104: Prism from BSpline curve can not be chamfered
Test for 0025206: Fillet creates edge with C0 continuity
Test for 0025979: fillet creates faces with non-closed wires
Test for 0025983: Fusion of sweep and its mirror invalid
Test for 0025994: Boolean fuse result in invalid result.
Test for 0026034: Result of revolution aborts the bopcheck if translated
Test for 0026077: nurbsconvert of psphere fails the bopargcheck
Test for 0025989: toridial surface gets damaged in STEP export
2017-08-10 13:56:12 +03:00
Thomas Krijnen
d37ac0c26e 0028983: Configuration - HAVE_NO_DLL causes compilation to fail on MSVC 2017-08-10 13:56:10 +03:00
emv
a318d719e7 0028982: 2D offset creates faulty result from wire
Protection of the Edge/Edge intersection algorithm (IntTools_EdgeEdge) from incomplete type conversion due to presence of the Trimmed curves by using Adaptors for getting typed curves instead of direct casting.

Test case for the issue.
2017-08-09 18:11:03 +03:00
emv
9d8e074451 0027876: Draw mkoffset does not work
Updating the documentation for the Draw command *mkoffset*.
2017-08-08 18:17:41 +03:00
kgv
cd1918d6b7 0028980: Coding rules - suppress GCC compiler warnings -Warray-bounds within AdvApp2Var 2017-08-08 18:15:13 +03:00
kgv
7379f4424d 0028979: Coding rules - eliminate GCC compiler warnings -Wstrict-aliasing within Graphic3d_ArrayOfPrimitives.lxx 2017-08-08 18:13:51 +03:00
kgv
fdb8a039b4 0028978: Coding rules - suppress GCC compiler warnings -Warray-bounds within NCollection_Array1 2017-08-08 18:11:47 +03:00
aml
1428d37a1a 0028974: Test cases for STL reader/writer
Add new test grid for STL read/write.
2017-08-08 18:10:17 +03:00
kgv
e40d1acc28 0028975: Draw Harness - DBRep_DrawableShape::display() throws exception while displaying shape without free edges in Debug mode 2017-08-08 18:07:37 +03:00
vro
095e90a2c5 0028973: Undo/Redo changes the order of some attributes 2017-08-08 18:04:37 +03:00
kgv
e2c4ce4869 0028971: Configuration - fix compatibility with glibc 2.26+ due to xlocale.h removal 2017-08-08 17:45:40 +03:00
apv
b101eb1ff0 0025023: Check fails after cut operation 2017-08-08 17:44:01 +03:00
nbv
fc935b4f6b 0028944: Cannot find section between two faces
Test case has been created because the problem is not reproduced on the current version of OCCT.
2017-08-08 17:40:57 +03:00
abv
f7b6063134 0028112: Exception during offset computation
Methods D0, D1, D2, D3, DN of the class GeomEvaluator_OffsetSurface are extended by additional tweak to compensate failure of normal calculation in degenerated points on triangular surfaces.
If the point where normal has failed to calculate is located on parametric boundary of the base surface, one more attempt is made with the point shifted towards interior by Precision::PConfusion().
2017-08-03 17:52:51 +03:00
szy
e16302cee1 0028946: Exception on Undo.
//Added additional command ForgetAtt and test case E1 to test issue 28946.
2017-08-02 18:12:09 +03:00
1317 changed files with 41192 additions and 22110 deletions

View File

@@ -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)
@@ -516,6 +515,7 @@ endif()
# VTK
if (USE_VTK)
add_definitions (-DHAVE_VTK)
set (OCCT_VTK_USED_TARGETS "" CACHE INTERNAL "" FORCE)
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/vtk")
else()
OCCT_CHECK_AND_UNSET_GROUP ("3RDPARTY_VTK")
@@ -656,11 +656,13 @@ if (CAN_USE_EIGEN)
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/eigen")
else()
OCCT_CHECK_AND_UNSET_GROUP ("3RDPARTY_EIGEN")
OCCT_CHECK_AND_UNSET ("INSTALL_EIGEN")
endif()
else()
OCCT_CHECK_AND_UNSET ("USE_EIGEN")
OCCT_CHECK_AND_UNSET_GROUP ("3RDPARTY_EIGEN")
OCCT_CHECK_AND_UNSET ("INSTALL_EIGEN")
endif()
# Doxygen
@@ -777,7 +779,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 +792,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()
@@ -872,6 +873,22 @@ else()
OCCT_CONFIGURE_AND_INSTALL ("adm/templates/custom.${SCRIPT_EXT}.main" "custom.${SCRIPT_EXT}" "custom.${SCRIPT_EXT}" "${INSTALL_DIR_SCRIPT}")
endif()
if (WIN32)
set (THIRDPARTY_DIR_REPLACE "%THIRDPARTY_DIR%")
else()
set (THIRDPARTY_DIR_REPLACE "\${THIRDPARTY_DIR}")
endif()
get_cmake_property(USED_3RDPARTY_CACHE_VARIABLES VARIABLES)
string (REGEX MATCHALL "(^|;)USED_3RDPARTY_[^;]+_DIR[^;]*" USED_3RDPARTY_CACHE_VARIABLES "${USED_3RDPARTY_CACHE_VARIABLES}")
file (TO_CMAKE_PATH "${3RDPARTY_DIR}" 3RDPARTY_DIR)
foreach (USED_3RDPARTY_CACHE_VARIABLE ${USED_3RDPARTY_CACHE_VARIABLES})
file (TO_CMAKE_PATH "${${USED_3RDPARTY_CACHE_VARIABLE}}" ${USED_3RDPARTY_CACHE_VARIABLE})
string (REPLACE "${3RDPARTY_DIR}" "${THIRDPARTY_DIR_REPLACE}" ${USED_3RDPARTY_CACHE_VARIABLE} "${${USED_3RDPARTY_CACHE_VARIABLE}}")
if (NOT WIN32)
string (REGEX REPLACE ";" ":" ${USED_3RDPARTY_CACHE_VARIABLE} "${${USED_3RDPARTY_CACHE_VARIABLE}}")
endif()
endforeach()
# write current custom.bat/sh (for install directory)
set (SUB_CUSTOM_BUILD_NAME "custom_${COMPILER}_${COMPILER_BITNESS}.install.${SCRIPT_EXT}")
OCCT_CONFIGURE_AND_INSTALL ("adm/templates/custom.install.${SCRIPT_EXT}.in" "${SUB_CUSTOM_BUILD_NAME}" "${SUB_CUSTOM_NAME}" "${INSTALL_DIR_SCRIPT}")
@@ -978,11 +995,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 +1007,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

View File

@@ -1,5 +1,9 @@
# eigen
if (NOT DEFINED INSTALL_EIGEN)
set (INSTALL_EIGEN OFF CACHE BOOL "${INSTALL_EIGEN_DESCR}")
endif()
# eigen directory
if (NOT DEFINED 3RDPARTY_EIGEN_DIR)
set (3RDPARTY_EIGEN_DIR "" CACHE PATH "The directory containing eigen")
@@ -61,6 +65,18 @@ endif()
if (3RDPARTY_EIGEN_INCLUDE_DIR AND EXISTS "${3RDPARTY_EIGEN_INCLUDE_DIR}")
list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_EIGEN_INCLUDE_DIR}")
# Install header files
if (INSTALL_EIGEN)
file(GLOB EIGEN_SUBDIRS "${3RDPARTY_EIGEN_INCLUDE_DIR}/*")
foreach(SUBDIR ${EIGEN_SUBDIRS})
if(IS_DIRECTORY "${SUBDIR}")
install (DIRECTORY "${SUBDIR}" DESTINATION "${INSTALL_DIR_INCLUDE}")
else()
install (FILES "${SUBDIR}" DESTINATION "${INSTALL_DIR_INCLUDE}")
endif()
endforeach()
endif()
else()
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_EIGEN_INCLUDE_DIR)

View File

@@ -8,7 +8,7 @@ if (NOT DEFINED 3RDPARTY_FFMPEG_DIR)
set (3RDPARTY_FFMPEG_DIR "" CACHE PATH "The directory containing FFmpeg")
endif()
# include occt macros. compiler_bitness, os_wiht_bit, compiler
# include occt macros. compiler_bitness, os_with_bit, compiler
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_macros")
# specify FFMPEG folder in connection with 3RDPARTY_DIR
@@ -27,49 +27,52 @@ if (NOT DEFINED 3RDPARTY_FFMPEG_INCLUDE_DIR)
set (3RDPARTY_FFMPEG_INCLUDE_DIR "" CACHE PATH "the path of headers directory")
endif()
if (NOT DEFINED 3RDPARTY_FFMPEG_LIBRARY OR NOT 3RDPARTY_FFMPEG_LIBRARY_DIR OR NOT EXISTS "${3RDPARTY_FFMPEG_LIBRARY_DIR}")
set (3RDPARTY_FFMPEG_LIBRARY "" CACHE FILEPATH "FFmpeg framework" FORCE)
endif()
if (NOT DEFINED 3RDPARTY_FFMPEG_LIBRARY_DIR)
set (3RDPARTY_FFMPEG_LIBRARY_DIR "" CACHE PATH "The directory containing FFmpeg framework")
endif()
if (WIN32)
if (NOT DEFINED 3RDPARTY_FFMPEG_DLL OR NOT 3RDPARTY_FFMPEG_DLL_DIR OR NOT EXISTS "${3RDPARTY_FFMPEG_DLL_DIR}")
set (3RDPARTY_FFMPEG_DLL "" CACHE FILEPATH "FFmpeg shared libraries" FORCE)
separate_arguments (CSF_FFmpeg)
foreach (LIBRARY_NAME ${CSF_FFmpeg})
if (NOT DEFINED 3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} OR NOT 3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} OR NOT EXISTS "${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}}")
set (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} "" CACHE FILEPATH "FFmpeg framework (${LIBRARY_NAME})" FORCE)
endif()
endif()
if (WIN32)
if (NOT DEFINED 3RDPARTY_FFMPEG_DLL_DIR)
set (3RDPARTY_FFMPEG_DLL_DIR "" CACHE PATH "The directory containing FFmpeg shared libraries")
endif()
endif()
# check 3RDPARTY_${PRODUCT_NAME}_ paths for consistency with specified 3RDPARTY_${PRODUCT_NAME}_DIR
if (3RDPARTY_FFMPEG_DIR AND EXISTS "${3RDPARTY_FFMPEG_DIR}")
CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FFMPEG_DIR 3RDPARTY_FFMPEG_INCLUDE_DIR PATH "the path to FFmpeg")
CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FFMPEG_DIR 3RDPARTY_FFMPEG_LIBRARY FILEPATH "the path to FFmpeg framework")
if (3RDPARTY_FFMPEG_LIBRARY AND EXISTS "${3RDPARTY_FFMPEG_LIBRARY}")
get_filename_component (3RDPARTY_FFMPEG_LIBRARY_DIR "${3RDPARTY_FFMPEG_LIBRARY}" PATH)
set (3RDPARTY_FFMPEG_LIBRARY_DIR "${3RDPARTY_FFMPEG_LIBRARY_DIR}" CACHE PATH "The directory containing FFmpeg libraries" FORCE)
else()
CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FFMPEG_DIR 3RDPARTY_FFMPEG_LIBRARY_DIR PATH "The directory containing FFmpeg libraries")
if (NOT DEFINED 3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME})
set (3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} "" CACHE PATH "The directory containing FFmpeg framework (${LIBRARY_NAME})")
endif()
if (WIN32)
CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FFMPEG_DIR 3RDPARTY_FFMPEG_DLL FILEPATH "the path to FFmpeg shared libraries")
if (3RDPARTY_FFMPEG_DLL AND EXISTS "${3RDPARTY_FFMPEG_DLL}")
get_filename_component (3RDPARTY_FFMPEG_DLL_DIR "${3RDPARTY_FFMPEG_DLL}" PATH)
set (3RDPARTY_FFMPEG_DLL_DIR "${3RDPARTY_FFMPEG_DLL_DIR}" CACHE PATH "The directory containing FFmpeg shared libraries" FORCE)
else()
CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FFMPEG_DIR 3RDPARTY_FFMPEG_DLL_DIR PATH "The directory containing FFmpeg shared libraries")
if (NOT DEFINED 3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} OR NOT 3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} OR NOT EXISTS "${3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}}")
set (3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} "" CACHE FILEPATH "FFmpeg shared libraries (${LIBRARY_NAME})" FORCE)
endif()
endif()
endif()
if (WIN32)
if (NOT DEFINED 3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME})
set (3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} "" CACHE PATH "The directory containing FFmpeg shared libraries (${LIBRARY_NAME})")
endif()
endif()
# check 3RDPARTY_${PRODUCT_NAME}_ paths for consistency with specified 3RDPARTY_${PRODUCT_NAME}_DIR
if (3RDPARTY_FFMPEG_DIR AND EXISTS "${3RDPARTY_FFMPEG_DIR}")
CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FFMPEG_DIR 3RDPARTY_FFMPEG_INCLUDE_DIR PATH "the path to FFmpeg")
CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FFMPEG_DIR 3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} FILEPATH "the path to FFmpeg framework (${LIBRARY_NAME})")
if (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}}")
get_filename_component (3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}}" PATH)
set (3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}}" CACHE PATH "The directory containing FFmpeg library (${LIBRARY_NAME})" FORCE)
else()
CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FFMPEG_DIR 3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} PATH "The directory containing FFmpeg library (${LIBRARY_NAME})")
endif()
if (WIN32)
CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FFMPEG_DIR 3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} FILEPATH "the path to FFmpeg shared library (${LIBRARY_NAME})")
if (3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}")
get_filename_component (3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}" PATH)
set (3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}}" CACHE PATH "The directory containing FFmpeg shared library (${LIBRARY_NAME})" FORCE)
else()
CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FFMPEG_DIR 3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} PATH "The directory containing FFmpeg shared library (${LIBRARY_NAME})")
endif()
endif()
endif()
endforeach()
# header
if (NOT 3RDPARTY_FFMPEG_INCLUDE_DIR OR NOT EXISTS "${3RDPARTY_FFMPEG_INCLUDE_DIR}")
@@ -99,130 +102,132 @@ else()
set (3RDPARTY_FFMPEG_INCLUDE_DIR "" CACHE FILEPATH "the path to avutil.h" FORCE)
endif()
# library
if (NOT 3RDPARTY_FFMPEG_LIBRARY OR NOT EXISTS "${3RDPARTY_FFMPEG_LIBRARY}")
set (CMAKE_FIND_LIBRARY_SUFFIXES .lib .so .dylib .a)
# libraries
foreach (LIBRARY_NAME ${CSF_FFmpeg})
if (NOT 3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} OR NOT EXISTS "${3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}}")
set (CMAKE_FIND_LIBRARY_SUFFIXES .lib .so .dylib .a)
set (FFMPEG_PATH_SUFFIXES lib)
if (ANDROID)
set (FFMPEG_PATH_SUFFIXES ${FFMPEG_PATH_SUFFIXES} libs/${ANDROID_ABI})
elseif(APPLE)
set (FFMPEG_PATH_SUFFIXES ${FFMPEG_PATH_SUFFIXES} Frameworks)
endif()
set (FFMPEG_PATH_SUFFIXES lib)
if (ANDROID)
set (FFMPEG_PATH_SUFFIXES ${FFMPEG_PATH_SUFFIXES} libs/${ANDROID_ABI})
elseif(APPLE)
set (FFMPEG_PATH_SUFFIXES ${FFMPEG_PATH_SUFFIXES} Frameworks)
endif()
# set 3RDPARTY_FFMPEG_LIBRARY as notfound, otherwise find_library can't assign a new value to 3RDPARTY_FFMPEG_LIBRARY
set (3RDPARTY_FFMPEG_LIBRARY "3RDPARTY_FFMPEG_LIBRARY-NOTFOUND" CACHE FILEPATH "The path to FFmpeg library" FORCE)
# set 3RDPARTY_FFMPEG_LIBRARY as notfound, otherwise find_library can't assign a new value to 3RDPARTY_FFMPEG_LIBRARY
set (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} "3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}-NOTFOUND" CACHE FILEPATH "The path to FFmpeg library (${LIBRARY_NAME})" FORCE)
if (3RDPARTY_FFMPEG_DIR AND EXISTS "${3RDPARTY_FFMPEG_DIR}")
find_library (3RDPARTY_FFMPEG_LIBRARY NAMES avutil
PATHS "${3RDPARTY_FFMPEG_LIBRARY_DIR}" "${3RDPARTY_FFMPEG_DIR}"
PATH_SUFFIXES ${FFMPEG_PATH_SUFFIXES}
CMAKE_FIND_ROOT_PATH_BOTH
NO_DEFAULT_PATH)
else()
find_library (3RDPARTY_FFMPEG_LIBRARY NAMES avutil
PATH_SUFFIXES ${FFMPEG_PATH_SUFFIXES}
CMAKE_FIND_ROOT_PATH_BOTH)
endif()
if (3RDPARTY_FFMPEG_LIBRARY AND EXISTS "${3RDPARTY_FFMPEG_LIBRARY}")
get_filename_component (3RDPARTY_FFMPEG_LIBRARY_DIR "${3RDPARTY_FFMPEG_LIBRARY}" PATH)
set (3RDPARTY_FFMPEG_LIBRARY_DIR "${3RDPARTY_FFMPEG_LIBRARY_DIR}" CACHE PATH "The directory containing FFmpeg library" FORCE)
else()
set (3RDPARTY_FFMPEG_LIBRARY_DIR "" CACHE PATH "The directory containing FFmpeg library" FORCE)
endif()
endif()
if (3RDPARTY_FFMPEG_LIBRARY_DIR AND EXISTS "${3RDPARTY_FFMPEG_LIBRARY_DIR}")
list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_FFMPEG_LIBRARY_DIR}")
else()
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FFMPEG_LIBRARY_DIR)
set (3RDPARTY_FFMPEG_LIBRARY "" CACHE FILEPATH "The path to FFmpeg library" FORCE)
endif()
# shared library
if (WIN32)
if (NOT 3RDPARTY_FFMPEG_DLL OR NOT EXISTS "${3RDPARTY_FFMPEG_DLL}")
set (CMAKE_FIND_LIBRARY_SUFFIXES .dll)
set (3RDPARTY_FFMPEG_DLL "3RDPARTY_FFMPEG_DLL-NOTFOUND" CACHE FILEPATH "The path to FFmpeg shared library" FORCE)
# find FFmpeg shared library
file (GLOB 3RDPARTY_FFMPEG_DLL "${3RDPARTY_FFMPEG_DIR}/bin/avutil[-][0-9]*")
if (3RDPARTY_FFMPEG_DLL AND EXISTS "${3RDPARTY_FFMPEG_DLL}")
set (3RDPARTY_FFMPEG_DLL "${3RDPARTY_FFMPEG_DLL}" CACHE FILEPATH "FFmpeg shared library" FORCE)
get_filename_component (3RDPARTY_FFMPEG_DLL_DIR "${3RDPARTY_FFMPEG_DLL}" PATH)
set (3RDPARTY_FFMPEG_DLL_DIR "${3RDPARTY_FFMPEG_DLL_DIR}" CACHE PATH "The directory containing FFmpeg library" FORCE)
if (3RDPARTY_FFMPEG_DIR AND EXISTS "${3RDPARTY_FFMPEG_DIR}")
find_library (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} NAMES ${LIBRARY_NAME}
PATHS "${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}}" "${3RDPARTY_FFMPEG_DIR}"
PATH_SUFFIXES ${FFMPEG_PATH_SUFFIXES}
CMAKE_FIND_ROOT_PATH_BOTH
NO_DEFAULT_PATH)
else()
set (3RDPARTY_FFMPEG_DLL_DIR "" CACHE PATH "The directory containing FFmpeg shared library" FORCE)
find_library (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} NAMES ${LIBRARY_NAME}
PATH_SUFFIXES ${FFMPEG_PATH_SUFFIXES}
CMAKE_FIND_ROOT_PATH_BOTH)
endif()
if (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}}")
get_filename_component (3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}}" PATH)
set (3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}}" CACHE PATH "The directory containing FFmpeg library (${LIBRARY_NAME})" FORCE)
else()
set (3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} "" CACHE PATH "The directory containing FFmpeg library (${LIBRARY_NAME})" FORCE)
endif()
endif()
if (3RDPARTY_FFMPEG_DLL_DIR OR EXISTS "${3RDPARTY_FFMPEG_DLL_DIR}")
list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_FFMPEG_DLL_DIR}")
if (3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}}")
list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}}")
else()
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FFMPEG_DLL_DIR)
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME})
set (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} "" CACHE FILEPATH "The path to FFmpeg library (${LIBRARY_NAME})" FORCE)
endif()
endif()
# install instructions
if (INSTALL_FFMPEG)
OCCT_MAKE_OS_WITH_BITNESS()
OCCT_MAKE_COMPILER_SHORT_NAME()
# shared library
if (WIN32)
if (DEFINED INSTALL_BIN_DIR)
install (FILES "${3RDPARTY_FFMPEG_DLL}" DESTINATION "${INSTALL_BIN_DIR}")
else()
install (FILES "${3RDPARTY_FFMPEG_DLL}"
CONFIGURATIONS Release
DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bin")
install (FILES "${3RDPARTY_FFMPEG_DLL}"
CONFIGURATIONS RelWithDebInfo
DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bini")
install (FILES "${3RDPARTY_FFMPEG_DLL}"
CONFIGURATIONS Debug
DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bind")
endif()
else()
get_filename_component(3RDPARTY_FFMPEG_LIBRARY_ABS ${3RDPARTY_FFMPEG_LIBRARY} REALPATH)
get_filename_component(3RDPARTY_FFMPEG_LIBRARY_NAME ${3RDPARTY_FFMPEG_LIBRARY} NAME)
if (NOT 3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} OR NOT EXISTS "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}")
if (DEFINED INSTALL_LIB_DIR)
install (FILES "${3RDPARTY_FFMPEG_LIBRARY_ABS}"
DESTINATION "${INSTALL_LIB_DIR}"
RENAME ${3RDPARTY_FFMPEG_LIBRARY_NAME}.6)
set (CMAKE_FIND_LIBRARY_SUFFIXES .dll)
set (3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} "3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}-NOTFOUND" CACHE FILEPATH "The path to FFmpeg shared library (${LIBRARY_NAME})" FORCE)
# find FFmpeg shared library
file (GLOB 3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_DIR}/bin/${LIBRARY_NAME}[-][0-9]*")
if (3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} AND EXISTS "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}")
set (3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}" CACHE FILEPATH "FFmpeg shared library (${LIBRARY_NAME})" FORCE)
get_filename_component (3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}" PATH)
set (3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} "${3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}}" CACHE PATH "The directory containing FFmpeg library (${LIBRARY_NAME})" FORCE)
else()
set (3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} "" CACHE PATH "The directory containing FFmpeg shared library (${LIBRARY_NAME})" FORCE)
endif()
endif()
if (3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME} OR EXISTS "${3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}}")
list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}}")
else()
install (FILES "${3RDPARTY_FFMPEG_LIBRARY_ABS}"
CONFIGURATIONS Release
DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/lib"
RENAME ${3RDPARTY_FFMPEG_LIBRARY_NAME}.6)
install (FILES "${3RDPARTY_FFMPEG_LIBRARY_ABS}"
CONFIGURATIONS RelWithDebInfo
DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/libi"
RENAME ${3RDPARTY_FFMPEG_LIBRARY_NAME}.6)
install (FILES "${3RDPARTY_FFMPEG_LIBRARY_ABS}"
CONFIGURATIONS Debug
DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/libd"
RENAME ${3RDPARTY_FFMPEG_LIBRARY_NAME}.6)
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME})
endif()
endif()
set (USED_3RDPARTY_FFMPEG_DIR "")
else()
# the library directory for using by the executable
if (WIN32)
set (USED_3RDPARTY_FFMPEG_DIR ${3RDPARTY_FFMPEG_DLL_DIR})
# install instructions
if (INSTALL_FFMPEG)
OCCT_MAKE_OS_WITH_BITNESS()
OCCT_MAKE_COMPILER_SHORT_NAME()
if (WIN32)
if (DEFINED INSTALL_BIN_DIR)
install (FILES "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}" DESTINATION "${INSTALL_BIN_DIR}")
else()
install (FILES "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}"
CONFIGURATIONS Release
DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bin")
install (FILES "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}"
CONFIGURATIONS RelWithDebInfo
DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bini")
install (FILES "${3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME}}"
CONFIGURATIONS Debug
DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bind")
endif()
else()
get_filename_component(3RDPARTY_FFMPEG_LIBRARY_ABS ${3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}} REALPATH)
get_filename_component(3RDPARTY_FFMPEG_LIBRARY_NAME ${3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME}} NAME)
if (DEFINED INSTALL_LIB_DIR)
install (FILES "${3RDPARTY_FFMPEG_LIBRARY_ABS}"
DESTINATION "${INSTALL_LIB_DIR}"
RENAME ${3RDPARTY_FFMPEG_LIBRARY_NAME}.6)
else()
install (FILES "${3RDPARTY_FFMPEG_LIBRARY_ABS}"
CONFIGURATIONS Release
DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/lib"
RENAME ${3RDPARTY_FFMPEG_LIBRARY_NAME}.6)
install (FILES "${3RDPARTY_FFMPEG_LIBRARY_ABS}"
CONFIGURATIONS RelWithDebInfo
DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/libi"
RENAME ${3RDPARTY_FFMPEG_LIBRARY_NAME}.6)
install (FILES "${3RDPARTY_FFMPEG_LIBRARY_ABS}"
CONFIGURATIONS Debug
DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/libd"
RENAME ${3RDPARTY_FFMPEG_LIBRARY_NAME}.6)
endif()
endif()
set (USED_3RDPARTY_FFMPEG_DIR "")
else()
set (USED_3RDPARTY_FFMPEG_DIR ${3RDPARTY_FFMPEG_LIBRARY_DIR})
# the library directory for using by the executable
if (WIN32)
set (USED_3RDPARTY_FFMPEG_DIR ${3RDPARTY_FFMPEG_DLL_DIR_${LIBRARY_NAME}})
else()
set (USED_3RDPARTY_FFMPEG_DIR ${3RDPARTY_FFMPEG_LIBRARY_DIR_${LIBRARY_NAME}})
endif()
endif()
endif()
mark_as_advanced (3RDPARTY_FFMPEG_LIBRARY_${LIBRARY_NAME} 3RDPARTY_FFMPEG_DLL_${LIBRARY_NAME})
endforeach()
# unset all redundant variables
OCCT_CHECK_AND_UNSET (FFMPEG_INCLUDE_DIRS)
OCCT_CHECK_AND_UNSET (FFMPEG_LIBRARY_DIRS)
OCCT_CHECK_AND_UNSET (FFMPEG_DIR)
mark_as_advanced (3RDPARTY_FFMPEG_LIBRARY 3RDPARTY_FFMPEG_DLL)

View File

@@ -35,7 +35,11 @@ endif()
if (USE_FREEIMAGE)
set (CSF_FreeImagePlus "freeimage")
else()
set (CSF_FreeImagePlus)
if (WIN32)
set (CSF_FreeImagePlus "windowscodecs")
else()
set (CSF_FreeImagePlus)
endif()
endif()
# TCL/TK

View File

@@ -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}")

View File

@@ -68,6 +68,7 @@ FILE_TO_LIST ("adm/RESOURCES" RESOURCES)
foreach (CurrentResource ${RESOURCES})
get_filename_component (CurrentResource_FileName "${CurrentResource}" NAME)
if ("${CurrentResource_FileName}" STREQUAL TObj.msg OR
"${CurrentResource_FileName}" STREQUAL BOPAlgo.msg OR
"${CurrentResource_FileName}" STREQUAL Units.dat OR
"${CurrentResource}" STREQUAL XSMessage OR
"${CurrentResource}" STREQUAL SHMessage OR

View File

@@ -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()
@@ -213,6 +213,9 @@ foreach (USED_ITEM ${USED_EXTERNLIB_AND_TOOLKITS})
if (NOT "${TK_FOUND}" STREQUAL "" OR NOT "${VTK_FOUND}" STREQUAL "")
list (APPEND USED_TOOLKITS_BY_CURRENT_PROJECT ${USED_ITEM})
if (NOT "${VTK_FOUND}" STREQUAL "" AND BUILD_SHARED_LIBS AND INSTALL_VTK AND COMMAND OCCT_INSTALL_VTK)
OCCT_INSTALL_VTK(${USED_ITEM})
endif()
else()
string (REGEX MATCH "^CSF_" CSF_FOUND ${USED_ITEM})
if ("${CSF_FOUND}" STREQUAL "")

View File

@@ -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()
@@ -245,6 +245,9 @@ foreach (USED_ITEM ${USED_EXTERNLIB_AND_TOOLKITS})
if (NOT "${TK_FOUND}" STREQUAL "" OR NOT "${VTK_FOUND}" STREQUAL "")
list (APPEND USED_TOOLKITS_BY_CURRENT_PROJECT ${USED_ITEM})
if (NOT "${VTK_FOUND}" STREQUAL "" AND BUILD_SHARED_LIBS AND INSTALL_VTK AND COMMAND OCCT_INSTALL_VTK)
OCCT_INSTALL_VTK(${USED_ITEM})
endif()
else()
string (REGEX MATCH "^CSF_" CSF_FOUND ${USED_ITEM})
if ("${CSF_FOUND}" STREQUAL "")

View File

@@ -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}")

View File

@@ -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()

View File

@@ -84,6 +84,7 @@ INSTALL_MESSAGE (INSTALL_TEST_CASES "non-regression OCCT test scripts")
INSTALL_MESSAGE (INSTALL_DOC_Overview "OCCT overview documentation (HTML format)")
INSTALL_MESSAGE (INSTALL_FFMPEG "FFmpeg binaries")
INSTALL_MESSAGE (INSTALL_FREEIMAGE "FreeImage binaries")
INSTALL_MESSAGE (INSTALL_EIGEN "EIGEN header files")
INSTALL_MESSAGE (INSTALL_EGL "EGL binaries")
INSTALL_MESSAGE (INSTALL_GLES2 "OpenGL ES 2.0 binaries")
INSTALL_MESSAGE (INSTALL_FREETYPE "FreeType binaries")
@@ -91,8 +92,7 @@ INSTALL_MESSAGE (INSTALL_GL2PS "GL2PS binaries")
INSTALL_MESSAGE (INSTALL_TBB "TBB binaries")
INSTALL_MESSAGE (INSTALL_TCL "TCL binaries")
INSTALL_MESSAGE (INSTALL_TK "TK binaries")
#INSTALL_MESSAGE (INSTALL_VTK "VTK binaries ")
INSTALL_MESSAGE (INSTALL_VTK "VTK binaries ")
# build variables
macro (BUILD_MODULE_MESSAGE BUILD_MODULE_TARGET_VARIABLE BUILD_MODULE_TARGET_STRING)
@@ -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}")

View File

@@ -1,8 +1,8 @@
# vtk
#if (NOT DEFINED INSTALL_VTK)
# set (INSTALL_VTK OFF CACHE BOOL "${INSTALL_VTK_DESCR}")
#endif()
if (NOT DEFINED INSTALL_VTK)
set (INSTALL_VTK OFF CACHE BOOL "${INSTALL_VTK_DESCR}")
endif()
# vtk directory
if (NOT DEFINED 3RDPARTY_VTK_DIR)
@@ -210,11 +210,86 @@ if (BUILD_SHARED_LIBS)
endif()
endif()
# Install vtk library using vtk targets
macro (OCCT_INSTALL_VTK VTK_LIBRARY_NAME)
# Check that input library name contains "vtk" prefix
string (REGEX MATCH "^vtk" IS_VTK_LIBRARY ${VTK_LIBRARY_NAME})
# Check that input library was not already installed
list (FIND OCCT_VTK_USED_TARGETS ${VTK_LIBRARY_NAME} VTK_LIBRARY_IS_USED)
if (BUILD_SHARED_LIBS AND INSTALL_VTK AND TARGET ${VTK_LIBRARY_NAME} AND VTK_LIBRARY_IS_USED EQUAL -1 AND IS_VTK_LIBRARY)
OCCT_MAKE_OS_WITH_BITNESS()
# Get configuration of vtk
get_target_property (TARGET_VTK_IMPORT_CONFS ${VTK_LIBRARY_NAME} IMPORTED_CONFIGURATIONS)
list (GET TARGET_VTK_IMPORT_CONFS 0 CHOSEN_IMPORT_CONF)
# Get dependencies for current input library
get_property(VTK_LIBRARY_PATH TARGET ${VTK_LIBRARY_NAME} PROPERTY LOCATION)
get_property(VTK_DEPEND TARGET ${VTK_LIBRARY_NAME} PROPERTY IMPORTED_LINK_DEPENDENT_LIBRARIES_${CHOSEN_IMPORT_CONF})
get_property(VTK_IMPORTED_INTERFACE TARGET ${VTK_LIBRARY_NAME} PROPERTY IMPORTED_LINK_INTERFACE_LIBRARIES_${CHOSEN_IMPORT_CONF})
get_property(VTK_INTERFACE TARGET ${VTK_LIBRARY_NAME} PROPERTY INTERFACE_LINK_LIBRARIES)
list (APPEND VTK_DEPEND ${VTK_INTERFACE} ${VTK_IMPORTED_INTERFACE})
# Install
if (WIN32)
if (SINGLE_GENERATOR)
install (FILES "${VTK_LIBRARY_PATH}" DESTINATION "${INSTALL_DIR_BIN}")
else()
install (FILES "${VTK_LIBRARY_PATH}"
CONFIGURATIONS Release
DESTINATION "${INSTALL_DIR_BIN}")
install (FILES "${VTK_LIBRARY_PATH}"
CONFIGURATIONS RelWithDebInfo
DESTINATION "${INSTALL_DIR_BIN}i")
install (FILES "${VTK_LIBRARY_PATH}"
CONFIGURATIONS Debug
DESTINATION "${INSTALL_DIR_BIN}d")
endif()
else()
get_filename_component(3RDPARTY_VTK_LIBRARY_ABS ${VTK_LIBRARY_PATH} REALPATH)
if (SINGLE_GENERATOR)
install (FILES "${3RDPARTY_VTK_LIBRARY_ABS}"
DESTINATION "${INSTALL_DIR_LIB}")
else()
install (FILES "${3RDPARTY_VTK_LIBRARY_ABS}"
CONFIGURATIONS Release
DESTINATION "${INSTALL_DIR_LIB}")
install (FILES "${3RDPARTY_VTK_LIBRARY_ABS}"
CONFIGURATIONS RelWithDebInfo
DESTINATION "${INSTALL_DIR_LIB}i")
install (FILES "${3RDPARTY_VTK_LIBRARY_ABS}"
CONFIGURATIONS Debug
DESTINATION "${INSTALL_DIR_LIB}d")
endif()
endif()
set (USED_3RDPARTY_VTK_DIR "")
# Mark current library as already installed
list (APPEND OCCT_VTK_USED_TARGETS ${VTK_LIBRARY_NAME})
set (OCCT_VTK_USED_TARGETS "${OCCT_VTK_USED_TARGETS}" CACHE INTERNAL "" FORCE)
# Recursively install all depended libraries
foreach(VTK_TARGET ${VTK_DEPEND})
OCCT_INSTALL_VTK(${VTK_TARGET})
endforeach()
endif()
endmacro()
if (NOT BUILD_SHARED_LIBS)
OCCT_CHECK_AND_UNSET(3RDPARTY_VTK_DLL_DIR)
OCCT_CHECK_AND_UNSET(3RDPARTY_VTK_LIBRARY_DIR)
OCCT_CHECK_AND_UNSET(INSTALL_VTK)
endif()
# the library directory for using by the executable
if (WIN32)
set (USED_3RDPARTY_VTK_DIR ${3RDPARTY_VTK_DLL_DIR})
else()
set (USED_3RDPARTY_VTK_DIR ${3RDPARTY_VTK_LIBRARY_DIR})
if (NOT INSTALL_VTK)
if (WIN32)
set (USED_3RDPARTY_VTK_DIR ${3RDPARTY_VTK_DLL_DIR})
else()
set (USED_3RDPARTY_VTK_DIR ${3RDPARTY_VTK_LIBRARY_DIR})
endif()
endif()
OCCT_CHECK_AND_UNSET (VTK_INCLUDE_DIRS)

View File

@@ -142,9 +142,6 @@ proc wokdep:gui:UpdateList {} {
if { "$::HAVE_GL2PS" == "true" } {
lappend anIncErrs "Error: gl2ps can not be used with OpenGL ES"
}
if { "$::HAVE_D3D" == "true" } {
lappend anIncErrs "Error: Direct3D can not be used with OpenGL ES"
}
wokdep:SearchEGL anIncErrs anLib32Errs anLib64Errs anBin32Errs anBin64Errs
wokdep:SearchGLES anIncErrs anLib32Errs anLib64Errs anBin32Errs anBin64Errs
}

View File

@@ -655,6 +655,8 @@ proc OCCDoc_Main {docType {docfiles {}} {modules {}} generatorMode verboseMode s
# Generates Doxygen configuration file for Overview documentation
proc OCCDoc_MakeDoxyfile {docType outDir tagFileDir {doxyFileName} {generatorMode ""} {DocFilesList {}} {ModulesList {}} verboseMode searchMode hhcPath mathjaxLocation graphvizPath productsPath} {
global module_dependency
set inputDir [OCCDoc_GetDoxDir [OCCDoc_GetProdRootDir]]
set TEMPLATES_DIR [OCCDoc_GetDoxDir]/resources
@@ -725,6 +727,16 @@ proc OCCDoc_MakeDoxyfile {docType outDir tagFileDir {doxyFileName} {generatorMod
set name OCCT
}
OCCDoc_LoadData "${productsPath}"
# Add all dependencies of modules to the graph
set additional_modules {}
foreach module $modules {
set additional_modules [list {*}$additional_modules {*}$module_dependency($module)]
}
set modules [list {*}$modules {*}$additional_modules]
set modules [lsort -unique $modules]
# Get list of header files in the specified modules
set filelist {}
foreach module $modules {

View File

@@ -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" {
@@ -1296,6 +1312,8 @@ proc osutils:csfList { theOS theCsfLibsMap theCsfFrmsMap } {
} else {
set aLibsMap(CSF_FreeImagePlus) "freeimage"
}
} elseif { "$theOS" == "wnt" } {
set aLibsMap(CSF_FreeImagePlus) "windowscodecs"
}
if { "$::HAVE_FFMPEG" == "true" } {
set aLibsMap(CSF_FFmpeg) "avcodec avformat swscale avutil"
@@ -1345,6 +1363,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
View 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

View 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>

View File

@@ -24,18 +24,15 @@ if /I "%VCVER%" == "@COMPILER@" (
set "TCL_VERSION_WITH_DOT=@3RDPARTY_TCL_LIBRARY_VERSION_WITH_DOT@"
set "TK_VERSION_WITH_DOT=@3RDPARTY_TK_LIBRARY_VERSION_WITH_DOT@"
set "CSF_OCCTBinPath=@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_BIN@%3"
set "CSF_OCCTLibPath=@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_LIB@%3"
set "CSF_OCCTBinPath=%CASROOT%/@INSTALL_DIR_BIN@%3"
set "CSF_OCCTLibPath=%CASROOT%/@INSTALL_DIR_LIB@%3"
set "CSF_OCCTIncludePath=@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_INCLUDE@"
set "CSF_OCCTResourcePath=@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_RESOURCE@"
set "CSF_OCCTDataPath=@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_DATA@"
set "CSF_OCCTSamplesPath=@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_SAMPLES@"
set "CSF_OCCTTestsPath=@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_TESTS@"
set "CSF_OCCTDocPath=@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_DOC@"
rem for compatability with external application using CASROOT
set "CASROOT=@INSTALL_DIR_ABSOLUTE@"
set "CSF_OCCTIncludePath=%CASROOT%/@INSTALL_DIR_INCLUDE@"
set "CSF_OCCTResourcePath=%CASROOT%/@INSTALL_DIR_RESOURCE@"
set "CSF_OCCTDataPath=%CASROOT%/@INSTALL_DIR_DATA@"
set "CSF_OCCTSamplesPath=%CASROOT%/@INSTALL_DIR_SAMPLES@"
set "CSF_OCCTTestsPath=%CASROOT%/@INSTALL_DIR_TESTS@"
set "CSF_OCCTDocPath=%CASROOT%/@INSTALL_DIR_DOC@"
)
)

View File

@@ -21,17 +21,14 @@ if [ "$1" == "@BIN_LETTER@" ]; then
export TCL_VERSION_WITH_DOT="@3RDPARTY_TCL_LIBRARY_VERSION_WITH_DOT@"
export TK_VERSION_WITH_DOT="@3RDPARTY_TK_LIBRARY_VERSION_WITH_DOT@"
export CSF_OCCTBinPath="@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_BIN@"
export CSF_OCCTLibPath="@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_LIB@"
export CSF_OCCTIncludePath="@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_INCLUDE@"
export CSF_OCCTResourcePath="@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_RESOURCE@"
export CSF_OCCTDataPath="@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_DATA@"
export CSF_OCCTSamplesPath="@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_SAMPLES@"
export CSF_OCCTTestsPath="@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_TESTS@"
export CSF_OCCTDocPath="@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_DOC@"
# for compatability with external application using CASROOT
export CASROOT="@INSTALL_DIR_ABSOLUTE@"
export CSF_OCCTBinPath="${CASROOT}/@INSTALL_DIR_BIN@"
export CSF_OCCTLibPath="${CASROOT}/@INSTALL_DIR_LIB@"
export CSF_OCCTIncludePath="${CASROOT}/@INSTALL_DIR_INCLUDE@"
export CSF_OCCTResourcePath="${CASROOT}/@INSTALL_DIR_RESOURCE@"
export CSF_OCCTDataPath="${CASROOT}/@INSTALL_DIR_DATA@"
export CSF_OCCTSamplesPath="${CASROOT}/@INSTALL_DIR_SAMPLES@"
export CSF_OCCTTestsPath="${CASROOT}/@INSTALL_DIR_TESTS@"
export CSF_OCCTDocPath="${CASROOT}/@INSTALL_DIR_DOC@"
fi
fi

View File

@@ -1,7 +0,0 @@
@echo off
rem Setup environment and launch TInspector
call "%~dp0env.bat" %1 %2 %3
TInspectorEXE.exe --dfbrowser

View File

@@ -31,14 +31,14 @@ set "CSF_OPT_LIB64="
set "CSF_OPT_BIN32="
set "CSF_OPT_BIN64="
rem ----- Load local settings -----
if exist "%~dp0custom.bat" (
call "%~dp0custom.bat" %1 %2 %3 %4 %5
)
if not ["%CASROOT%"] == [""] if exist "%SCRIPTROOT%\%CASROOT%" set "CASROOT=%SCRIPTROOT%\%CASROOT%"
if ["%CASROOT%"] == [""] set "CASROOT=%SCRIPTROOT%"
rem ----- Load local settings -----
if exist "%CASROOT%\custom.bat" (
call "%CASROOT%\custom.bat" %1 %2 %3 %4 %5
)
rem ----- Read script arguments (override local settings) -----
if not ["%1"] == [""] set "VCVER=%1"
if not ["%2"] == [""] set "ARCH=%2"
@@ -49,14 +49,41 @@ if /I ["%3"] == ["d"] set "CASDEB=d"
if /I ["%3"] == ["i"] set "CASDEB=i"
if /I ["%3"] == ["relwithdeb"] set "CASDEB=i"
rem Decode VCVER
call "%~dp0adm\vcver.bat"
rem Decode VCVER variable and define related ones:
rem
rem VCFMT - "vc" followed by full version number of Visual Studio toolset
rem (same as VCVER without optional suffix "-uwp")
rem VCLIB - name of folder contining binaries
rem (same as VCVER except without third version in number)
rem VCPROP - name of required Visual Studion Workload (starting with VS 2017)
rem
rem Note that for VS before 2015 (vc14) always
rem VCFMT=VCLIB=VCVER and VCPROP=NativeDesktop
rem Since VS 2017, environment variables like VS100COMNTOOLS are not defined
rem any more, we can only use vswhere.exe tool to find Visual Studio.
rem Add path to vswhere.exe
set "PATH=%PATH%;%ProgramFiles(x86)%\Microsoft Visual Studio\Installer"
rem for vc10-12, interpretation is trivial
set VCFMT=%VCVER%
set VCLIB=%VCVER:~0,4%
set VCPROP=NativeDesktop
rem vc14 and later can have optional suffix "-uwp"
if "%VCVER:~-4%" == "-uwp" (
set VCFMT=%VCVER:~0,-4%
set VCLIB=%VCLIB%-uwp
set VCPROP=Universal
)
rem echo VCVER=%VCVER% VCFMT=%VCFMT% VCLIB=%VCLIB% VCPROP=%VCPROP%
rem ----- Parsing of Visual Studio platform -----
set "VisualStudioExpressName=VCExpress"
if not "%DevEnvDir%" == "" (
rem If DevEnvDir is already defined (e.g. in custom.bat), use that value
) else if /I "%VCFMT%" == "vc9" (
set "DevEnvDir=%VS90COMNTOOLS%..\IDE"
) else if /I "%VCFMT%" == "vc10" (
set "DevEnvDir=%VS100COMNTOOLS%..\IDE"
) else if /I "%VCFMT%" == "vc11" (
@@ -73,13 +100,25 @@ if not "%DevEnvDir%" == "" (
for /f "usebackq delims=" %%i in (`vswhere.exe -version "[15.0,15.99]" -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do (
set "DevEnvDir=%%i\Common7\IDE\"
)
) else if /I "%VCFMT%" == "gcc" (
rem MinGW
) else (
echo Error: wrong VS identifier
echo Error: first argument ^(%VCVER%^) should specify supported version of Visual C++,
echo one of:
echo vc9 = VS 2008 ^(SP1^)
echo vc10 = VS 2010 ^(SP3^)
echo vc11 = VS 2012 ^(SP3^)
echo vc12 = VS 2013 ^(SP3^)
echo vc14 = VS 2015
echo vc141 = VS 2017
exit /B
)
rem ----- Parsing vcvarsall for qt samples and define PlatformToolset -----
if /I "%VCFMT%" == "vc10" (
if /I "%VCFMT%" == "vc9" (
set "VCVARS=%VS90COMNTOOLS%..\..\VC\vcvarsall.bat"
set "VCPlatformToolSet=v90"
) else if /I "%VCFMT%" == "vc10" (
set "VCVARS=%VS100COMNTOOLS%..\..\VC\vcvarsall.bat"
set "VCPlatformToolSet=v100"
) else if /I "%VCFMT%" == "vc11" (
@@ -96,10 +135,11 @@ if /I "%VCFMT%" == "vc10" (
set "VCVARS=%%i\VC\Auxiliary\Build\vcvarsall.bat"
)
set "VCPlatformToolSet=v141"
) else if /I "%VCFMT%" == "gcc" (
rem MinGW
) else (
echo Error: first argument ^(%VCVER%^) should specify supported version of Visual C++,
echo one of: vc10 ^(VS 2010 SP3^), vc11 ^(VS 2012 SP3^), vc12 ^(VS 2013^) or vc14 ^(VS 2015^)
exit
echo Error: wrong VS identifier
exit /B
)
set "CSF_OPT_LIB32D=%CSF_OPT_LIB32%"

View File

@@ -31,7 +31,9 @@ rem VCFMT=VCLIB=VCVER and VCPROP=NativeDesktop
rem Since VS 2017, environment variables like VS100COMNTOOLS are not defined
rem any more, we can only use vswhere.exe tool to find Visual Studio.
rem Add path to vswhere.exe
set "PATH=%PATH%;%ProgramFiles(x86)%\Microsoft Visual Studio\Installer"
if /I not "%VCFMT%" == "gcc" (
set "PATH=%PATH%;%ProgramFiles(x86)%\Microsoft Visual Studio\Installer"
)
rem for vc10-12, interpretation is trivial
set VCFMT=%VCVER%
@@ -50,6 +52,8 @@ set "VisualStudioExpressName=VCExpress"
if not "%DevEnvDir%" == "" (
rem If DevEnvDir is already defined (e.g. in custom.bat), use that value
) else if /I "%VCFMT%" == "vc9" (
set "DevEnvDir=%VS90COMNTOOLS%..\IDE"
) else if /I "%VCFMT%" == "vc10" (
set "DevEnvDir=%VS100COMNTOOLS%..\IDE"
) else if /I "%VCFMT%" == "vc11" (
@@ -66,13 +70,18 @@ if not "%DevEnvDir%" == "" (
for /f "usebackq delims=" %%i in (`vswhere.exe -version "[15.0,15.99]" -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do (
set "DevEnvDir=%%i\Common7\IDE\"
)
) else if /I "%VCFMT%" == "gcc" (
rem MinGW
) else (
echo Error: wrong VS identifier
exit /B
)
rem ----- Parsing vcvarsall for qt samples and define PlatformToolset -----
if /I "%VCFMT%" == "vc10" (
if /I "%VCFMT%" == "vc9" (
set "VCVARS=%VS90COMNTOOLS%..\..\VC\vcvarsall.bat"
set "VCPlatformToolSet=v90"
) else if /I "%VCFMT%" == "vc10" (
set "VCVARS=%VS100COMNTOOLS%..\..\VC\vcvarsall.bat"
set "VCPlatformToolSet=v100"
) else if /I "%VCFMT%" == "vc11" (
@@ -89,23 +98,28 @@ if /I "%VCFMT%" == "vc10" (
set "VCVARS=%%i\VC\Auxiliary\Build\vcvarsall.bat"
)
set "VCPlatformToolSet=v141"
) else if /I "%VCFMT%" == "gcc" (
rem MinGW
) else (
echo Error: first argument ^(%VCVER%^) should specify supported version of Visual C++,
echo one of: vc10 ^(VS 2010 SP3^), vc11 ^(VS 2012 SP3^), vc12 ^(VS 2013^) or vc14 ^(VS 2015^)
exit
)
rem ----- For compatability with external application using CASROOT -----
if ["%CASROOT%"] == [""] set "CASROOT=%SCRIPTROOT%"
rem ----- Define path to 3rdparty products -----
set "THIRDPARTY_DIR=@3RDPARTY_DIR@"
if ["%ARCH%"] == ["32"] set VCARCH=x86
if ["%ARCH%"] == ["64"] set VCARCH=amd64
if /I ["%1"] == ["vc141"] set "VCVER=vc14"
if exist "%~dp0custom.bat" (
call "%~dp0custom.bat" %VCVER% %ARCH% %CASDEB%
if exist "%CASROOT%\custom.bat" (
call "%CASROOT%\custom.bat" %VCVER% %ARCH% %CASDEB%
)
rem for compatability with external application using CASROOT
if ["%CASROOT%"] == [""] set "CASROOT=%SCRIPTROOT%"
if not ["%TCL_DIR%"] == [""] set "PATH=%TCL_DIR%;%PATH%"
if not ["%TK_DIR%"] == [""] set "PATH=%TK_DIR%;%PATH%"
if not ["%FREETYPE_DIR%"] == [""] set "PATH=%FREETYPE_DIR%;%PATH%"
@@ -146,7 +160,7 @@ set "CSF_STEPDefaults=%CSF_OCCTResourcePath%\XSTEPResource"
set "CSF_XmlOcafResource=%CSF_OCCTResourcePath%\XmlOcafResource"
set "CSF_MIGRATION_TYPES=%CSF_OCCTResourcePath%\StdResource\MigrationSheet.txt"
rem Draw Harness special stuff
rem ----- Draw Harness special stuff -----
if exist "%CSF_OCCTResourcePath%\DrawResources" (
set "DRAWHOME=%CSF_OCCTResourcePath%\DrawResources"
set "CSF_DrawPluginDefaults=%CSF_OCCTResourcePath%\DrawResources"

View File

@@ -24,15 +24,13 @@ export CSF_OPT_BIN32=""
export CSF_OPT_BIN64=""
# ----- Set local settings -----
if [ "${CASROOT}" != "" ] && [ -e "${CASROOT}/custom.sh" ]; then source "${CASROOT}/custom.sh"; fi
if [ -e "${aScriptPath}/custom.sh" ]; then source "${aScriptPath}/custom.sh"; fi
if [ "${CASROOT}" != "" ] && [ -d "${aScriptPath}/${CASROOT}" ]; then
export CASROOT="${aScriptPath}/${CASROOT}"
fi
if [ "${CASROOT}" == "" ]; then
export CASROOT="${aScriptPath}"
fi
if [ -e "${CASROOT}/custom.sh" ]; then source "${CASROOT}/custom.sh"; fi
# Read script arguments
shopt -s nocasematch

View File

@@ -2,12 +2,15 @@
aScriptPath=${BASH_SOURCE%/*}; if [ -d "${aScriptPath}" ]; then cd "$aScriptPath"; fi; aScriptPath="$PWD";
# ----- for compatability with external application using CASROOT -----
# ----- For compatability with external application using CASROOT -----
if [ "${CASROOT}" == "" ]; then
export CASROOT="${aScriptPath}"
export CASROOT="@INSTALL_DIR@"
fi
# Read script arguments
# ----- Define path to 3rdparty products -----
export THIRDPARTY_DIR="@3RDPARTY_DIR@"
# ----- Read script arguments -----
shopt -s nocasematch
export CASDEB="";
if [[ "$1" == "debug" ]]; then export CASDEB="d"; fi
@@ -33,8 +36,8 @@ else
fi
# ----- Set local settings -----
if [ -e "${aScriptPath}/custom.sh" ]; then
source "${aScriptPath}/custom.sh" "${CASDEB}" "${ARCH}"
if [ -e "${CASROOT}/@INSTALL_DIR_SCRIPT@/custom.sh" ]; then
source "${CASROOT}/@INSTALL_DIR_SCRIPT@/custom.sh" "${CASDEB}" "${ARCH}"
fi
THRDPARTY_PATH=""
@@ -127,7 +130,7 @@ export CSF_STEPDefaults="${CSF_OCCTResourcePath}/XSTEPResource"
export CSF_XmlOcafResource="${CSF_OCCTResourcePath}/XmlOcafResource"
export CSF_MIGRATION_TYPES="${CSF_OCCTResourcePath}/StdResource/MigrationSheet.txt"
# Draw Harness special stuff
# ----- Draw Harness special stuff -----
if [ -e "${CSF_OCCTResourcePath}/DrawResources" ]; then
export DRAWHOME="${CSF_OCCTResourcePath}/DrawResources"
export CSF_DrawPluginDefaults="${CSF_OCCTResourcePath}/DrawResources"

View 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 %*

View File

@@ -6,4 +6,4 @@ aScriptPath=${BASH_SOURCE%/*}; if [ -d "${aScriptPath}" ]; then cd "$aScriptPath
source "${aScriptPath}/env.sh" "$1"
cd ${aCurrentPath}
TInspectorEXE --dfbrowser
TInspectorEXE

View File

@@ -24,6 +24,7 @@
ConfigurationType="2"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
@@ -120,7 +121,7 @@
ConfigurationType="2"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
ManagedExtensions="0"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
@@ -218,6 +219,7 @@
ConfigurationType="2"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
@@ -311,7 +313,7 @@
ConfigurationType="2"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
ManagedExtensions="0"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"

View File

@@ -1,30 +0,0 @@
@echo off
rem Decode VCVER variable and define related ones:
rem
rem VCFMT - "vc" followed by full version number of Visual Studio toolset
rem (same as VCVER without optional suffix "-uwp")
rem VCLIB - name of folder contining binaries
rem (same as VCVER except without third version in number)
rem VCPROP - name of required Visual Studion Workload (starting with VS 2017)
rem
rem Note that for VS before 2015 (vc14) always
rem VCFMT=VCLIB=VCVER and VCPROP=NativeDesktop
rem Since VS 2017, environment variables like VS100COMNTOOLS are not defined
rem any more, we can only use vswhere.exe tool to find Visual Studio.
rem Add path to vswhere.exe
set "PATH=%PATH%;%ProgramFiles(x86)%\Microsoft Visual Studio\Installer"
rem for vc10-12, interpretation is trivial
set VCFMT=%VCVER%
set VCLIB=%VCVER:~0,4%
set VCPROP=NativeDesktop
rem vc14 and later can have optional suffix "-uwp"
if "%VCVER:~-4%" == "-uwp" (
set VCFMT=%VCVER:~0,-4%
set VCLIB=%VCLIB%-uwp
set VCPROP=Universal
)
rem echo VCVER=%VCVER% VCFMT=%VCFMT% VCLIB=%VCLIB% VCPROP=%VCPROP%

File diff suppressed because one or more lines are too long

View File

@@ -13,6 +13,7 @@ overview/overview.md
../samples/qt/AndroidQt/ReadMe.md
../samples/java/jniviewer/ReadMe.md
../samples/ios/UIKitSample/ReadMe.md
tutorial/tutorial.md
@@ -31,6 +32,7 @@ user_guides/xde/xde.md
user_guides/ocaf/ocaf.md
user_guides/tobj/tobj.md
user_guides/draw_test_harness/draw_test_harness.md
user_guides/inspector/inspector.md
user_guides/brep_wp/brep_wp.md
user_guides/vis/vis.md

View File

@@ -14,6 +14,7 @@ user_guides/shape_healing/shape_healing.md
user_guides/ocaf/ocaf.md
user_guides/step/step.md
user_guides/draw_test_harness/draw_test_harness.md
user_guides/inspector/inspector.md
user_guides/tobj/tobj.md
user_guides/visualization/visualization.md
user_guides/xde/xde.md

View File

@@ -97,6 +97,7 @@ The following table gives the full list of environment variables used at the con
| BUILD_ADDITIONAL_TOOLKITS | String | Semicolon-separated individual toolkits to include into build process. If you want to build some particular libraries (toolkits) only, then you may uncheck all modules in the corresponding *BUILD_MODUE_\<MODULE\>* options and provide the list of necessary libraries here. Of course, all dependencies will be resolved automatically |
| BUILD_YACCLEX | Boolean flag | Enables Flex/Bison lexical analyzers. OCCT source files relating to STEP reader and ExprIntrp functionality are generated automatically with Flex/Bison. Checking this option leads to automatic search of Flex/Bison binaries and regeneration of the mentioned files |
| BUILD_MODULE_MfcSamples | Boolean flag | Indicates whether MFC samples should be built together with OCCT. This option is only relevant to Windows platforms |
| BUILD_Inspector | Boolean flag | Indicates whether Inspector should be built together with OCCT. |
| BUILD_DOC_Overview | Boolean flag | Indicates whether OCCT overview documentation project should be created together with OCCT. It is not built together with OCCT. Checking this option leads to automatic search of Doxygen binaries. Its building calls Doxygen command to generate the documentation in HTML format |
| BUILD_PATCH | Path | Points to the directory recognized as a "patch" for OCCT. If specified, the files from this directory take precedence over the corresponding native OCCT sources. This way you are able to introduce patches to Open CASCADE Technology not affecting the original source distribution |
| BUILD_WITH_DEBUG | Boolean flag | Enables extended messages of many OCCT algorithms, usually printed to cout. These include messages on internal errors and special cases encountered, timing, etc. |

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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>&lt;path_to_OCCT&gt;\\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*.

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

View File

@@ -192,7 +192,11 @@ Use prefix <i>bug</i> followed by Mantis issue ID and, if necessary, additional
* If the test case reports error due to an existing problem and the fix is not available, add @ref testmanual_3_6 "TODO" statement for each error to mark it as a known problem. The TODO statements must be specific so as to match the actually generated messages but not all similar errors.
* To check expected output which should be obtained as the test result, add @ref testmanual_3_7 "REQUIRED" statement for each line of output to mark it as required.
* If the test case produces error messages (contained in parse.rules), which are expected in that test and should not be considered as its failure (e.g. test for *checkshape* command), add REQUIRED statement for each error to mark it as required output.
4. If the test uses data file(s) that are not yet present in the test database, it is possible to put them to (sub)directory pointed out by *CSF_TestDataPath* variable for running test. The files should be attached to the Mantis issue corresponding to the tested modification.
4. To check whether the data files needed for the test are already present in the database, use DRAW command *testfile* (see below).
If the data file is already present, use it for new test instead of adding a duplicate.
If the data file(s) are not yet present in the test database, put them to some folder and add it to the environment variable *CSF_TestDataPath* to be found by the test system.
Information on where the data files can be accessed by OCC team for putting to official database should be provided in comment to Mantis issue, clearly indicating how names of the files used by the test script match the actual names of the files.
The simplest way is to attach the data files to the Mantis issue, with the same names as used by the test script.
5. Check that the test case runs as expected (test for fix: OK with the fix, FAILED without the fix; test for existing problem: BAD), and integrate it to the Git branch created for the issue.
Example:
@@ -218,6 +222,33 @@ fixshape result a 0.01 0.01
checkshape result
~~~~~
DRAW command testfile should be used to check the data files being used by the test for possible duplication of content or names.
The command accepts list of paths to files being checked as single argument, and will give conclusion on each of the files, for instance:
~~~~~
Draw[1]> testfile [glob /my/data/path/bug12345*]
Collecting info on test data files repository...
Checking new file(s)...
* /my/data/path/bug12345.brep: duplicate
already present under name bug28773_1.brep
--> //server/occt_tests_data/public/brep/bug28773_1.brep
* /my/data/path/cadso.brep: new file
Warning: DOS encoding detected, consider converting to
UNIX unless DOS line ends are needed for the test
Warning: shape contains triangulation (946 triangles),
consider removing them unless they are needed for the test!
BREP size=201 KiB, nbfaces=33, nbedges=94 -> private
* /my/data/path/case_8_wire3.brep: already present
--> //server/occt_tests_data/public/brep/case_8_wire3.brep
* /my/data/path/case_8_wire4.brep: error
name is already used by existing file
--> //server/occt_tests_data/public/brep/case_8_wire4.brep
~~~~~
@section testmanual_2 Organization of Test Scripts
@subsection testmanual_2_1 General Layout

View File

@@ -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.
@@ -1147,7 +1156,13 @@ The following obsolete features have been removed:
* The method Perform of the *ShapeConstruct_ProjectCurveOnSurface* class is modified:
- input arguments *continuity*, *maxdeg*, *nbinterval* have been removed as unused;
- input arguments *TolFirst*, *TolLast* have been added at the end of arguments' list.
* The functionality to process shapes different only in orientation by different ways was removed from types *BRepTools_ReShape* and *ShapeBuild_ReShape*.
* Typedefs Quantity_Factor, Quantity_Parameter, Quantity_Ratio, Quantity_Coefficient, Quantity_PlaneAngle, Quantity_Length, V3d_Parameter and V3d_Coordinate have been removed; Standard_Real should be used instead.
@subsection upgrade_occt720_reshape_oriented_removed Corrections in BRepOffset API
In classes *BRepTools_ReShape* and *ShapeBuild_ReShape*, the possibility to process shapes different only by orientation in different ways has been removed.
Thus methods *Remove()* and *Replace()* do not have any more the last argument 'oriented'; they work always as if *Standard_False* was passed before (default behavior).
Methods *ModeConsiderLo()* and *Apply()* with three arguments have been removed.
@subsection upgrade_occt720_correction_of_Offset_API Corrections in BRepOffset API
@@ -1195,12 +1210,17 @@ 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()*
- *myZLayer*, replaced by *myDrawer->ZLayer()*
* The method *PrsMgr_PresentationManager::Unhighlight()* taking Display Mode as an argument has been marked deprecated.
Implementation now performs unhighlighting of all highlighted presentation mode.
* The methods taking/returning *Quantity_NameOfColor* (predefined list of colors) and duplicating methods operating with *Quantity_Color* (definition of arbitrary RGB color) in AIS have been removed.
*Quantity_Color* should be now used instead.
@subsection upgrade_720_implicit_viewer_update Elimination of implicit 3D Viewer updates
@@ -1214,7 +1234,7 @@ To avoid such issues, the interface has been modified and default value has been
Therefore, old application code should be updated to set the flag theToUpdateViewer explicitly
to desired value (TRUE to preserve old previous behavior), if it was not already set.
The follow AIS_InteractiveContext methods have been changed:
The following AIS_InteractiveContext methods have been changed:
Display, Erase, EraseAll, DisplayAll, EraseSelected, DisplaySelected, ClearPrs, Remove, RemoveAll, Hilight,
HilightWithColor, Unhilight, Redisplay, RecomputePrsOnly, Update, SetDisplayMode, UnsetDisplayMode, SetColor,
UnsetColor, SetWidth, UnsetWidth, SetMaterial, UnsetMaterial, SetTransparency, UnsetTransparency,
@@ -1261,7 +1281,8 @@ In most cases this change should be transparent, however applications implementi
* Package BVH now uses opencascade::handle instead of NCollection_Handle (for classes BVH_Properties, BVH_Builder, BVH_Tree, BVH_Object).
Application code using BVH package directly should be updated accordingly.
* AIS_Shape now computes UV texture coordinates for AIS_Shaded presentation in case if texture mapping is enabled within Shaded Attributes.
Therefore, redundant class AIS_TexturedShape has been marked deprecated - applications can use AIS_Shape directly (texture mapping should be defined through AIS_Shape::Attributes()).
Therefore, redundant class *AIS_TexturedShape is now deprecated* - applications can use *AIS_Shape* directly (texture mapping should be defined through AIS_Shape::Attributes()).
* Methods for managing active texture within OpenGl_Workspace class (ActiveTexture(), DisableTexture(), EnableTexture()) have been moved to *OpenGl_Context::BindTextures()*.
@subsection upgrade_720_BOP_DataStructure BOP - Pairs of interfering indices
@@ -1286,14 +1307,14 @@ In most cases this change should be transparent, however applications implementi
@subsection upgrade_720_persistence Restore OCCT 6.9.1 persistence
The capability of reading / writing files in old format using *Storage_ShapeSchema* functionality from OCCT 6.9.1 has been restored in OCCT 7.2.0.
The capability of reading / writing files in old format using *Storage_ShapeSchema* functionality from OCCT 6.9.1 has been restored in OCCT 7.2.0.
One can use this functionality in two ways:
- invoke DRAW Test Harness commands *fsdread / fsdwrite* for shapes;
- call *StdStorage* class *Read / Write* functions in custom code.
The code example below demonstrates how to read shapes from a storage driver using *StdStorage* class.
The code example below demonstrates how to read shapes from a storage driver using *StdStorage* class.
~~~~
// aDriver should be created and opened for reading
@@ -1341,7 +1362,7 @@ NCollection_Handle<Storage_BaseDriver> aFileDriver(new FSD_File());
try
{
OCC_CATCH_SIGNALS
PCDM_ReadWriter::Open(*aFileDriver, TCollection_ExtendedString(CStringA(filename).GetBuffer()), Storage_VSWrite);
PCDM_ReadWriter::Open (*aFileDriver, TCollection_ExtendedString(theFilename), Storage_VSWrite);
}
catch (Standard_Failure& e)
{
@@ -1349,7 +1370,7 @@ catch (Standard_Failure& e)
}
// Create a storage data instance
Handle(StdStorage_Data) aData = new StdStorage_Data;
Handle(StdStorage_Data) aData = new StdStorage_Data();
// Set an axiliary application name (optional)
aData->HeaderData()->SetApplicationName(TCollection_ExtendedString("Application"));
@@ -1368,8 +1389,7 @@ for (Standard_Integer i = 1; i <= shapes.Length(); ++i)
}
// Construct a root name
TCollection_AsciiString aName = "Shape_";
aName += i;
TCollection_AsciiString aName = TCollection_AsciiString("Shape_") + i;
// Add a root to storage data
Handle(StdStorage_Root) aRoot = new StdStorage_Root(aName, aPShape);
@@ -1386,17 +1406,17 @@ if (anError != Storage_VSOk)
@subsection upgrade_720_Change_In_BRepLib_MakeFace_Algo Change in BRepLib_MakeFace algorithm
Previously, *BRepLib_MakeFace* algorithm changed orientation of the source wire in order to avoid creation of face as a hole (i.e. it is impossible to create the entire face as a hole; the hole can be created in context of another face only). New algorithm does not reverse the wire if it is open. Material of the face for the open wire will be located on the left side from the source wire.
Previously, *BRepLib_MakeFace* algorithm changed orientation of the source wire in order to avoid creation of face as a hole (i.e. it is impossible to create the entire face as a hole; the hole can be created in context of another face only). New algorithm does not reverse the wire if it is open. Material of the face for the open wire will be located on the left side from the source wire.
@subsection upgrade_720_Change_In_BRepFill_OffsetWire Change in BRepFill_OffsetWire algorithm
From now on, the offset will always be directed to the outer region in case of positive offset value and to the inner region in case of negative offset value.
Inner/Outer region for an open wire is defined by the following rule:
when we go along the wire (taking into account edges orientation) the outer region will be on the right side, the inner region will be on the left side.
In case of a closed wire, the inner region will always be inside the wire (at that, the edges orientation is not taken into account).
From now on, the offset will always be directed to the outer region in case of positive offset value and to the inner region in case of negative offset value.
Inner/Outer region for an open wire is defined by the following rule:
when we go along the wire (taking into account edges orientation) the outer region will be on the right side, the inner region will be on the left side.
In case of a closed wire, the inner region will always be inside the wire (at that, the edges orientation is not taken into account).
@subsection upgrade_720_Change_In_GeomAdaptor_Curve Change in Geom(2d)Adaptor_Curve::IsPeriodic
Since 7.2.0 version, method *IsPeriodic()* returns the corresponding status of periodicity of the basis curve regardless of closure status of the adaptor curve (see method *IsClosed()*).
Method *IsClosed()* for adaptor can return false even on periodic curve, in the case if its parametric range is not full period, e.g. for adaptor on circle in range [0, @f$ \pi @f$].
In previous versions, *IsPeriodic()* always returned false if *IsClosed()* returned false.
@@ -1410,3 +1430,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().

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

View File

@@ -18,7 +18,7 @@ modeling (CAD), manufacturing / measuring (CAM) or numerical simulation (CAE).
@section OCCT_OVW_SECTION_2 Copyrights
Open CASCADE Technology and all materials, including this documentation, is
Copyright (c) 1999-2016 by OPEN CASCADE S.A.S. All rights reserved.
Copyright (c) 1999-2017 by OPEN CASCADE S.A.S. All rights reserved.
@htmlonly<center>@endhtmlonly
https://www.opencascade.com
@@ -28,13 +28,22 @@ https://www.opencascade.com
License
--------
Open CASCADE Technology is free software; you can redistribute it and / or
modify it under the terms of the
@ref license_lgpl_21 "GNU Lesser General Public License (LGPL) version 2.1",
with additional @ref occt_lgpl_exception "exception".
Open CASCADE Technology is free software; you can redistribute it and / or modify it under the terms of the
@ref license_lgpl_21 "GNU Lesser General Public License (LGPL) version 2.1", with additional @ref occt_lgpl_exception "exception".
Alternatively, Open CASCADE Technology may be used under the terms of Open
CASCADE commercial license or contractual agreement.
Note that LGPL imposes some obligations on the application linked with Open CASCADE Technology.
If you wish to use OCCT in a proprietary application, please, pay special attention to address the requirements of LGPL section 6.
At minimum the following should be considered:
1. Add the notice visible to the users of your application clearly stating that Open CASCADE Technology is used in this application, and that they have rights in this regard according to LGPL.
Such notice can be added in About dialog box (this is mandatory if this box contains copyright statements) or a similar place and/or in the documentation.
The text of LGPL license should be accessible to the user.
2. Make the copy of OCCT sources used by the application available to its users, and if necessary provide instructions on how to build it in a way compatible with the application.
3. Ensure that the user actually can exercise the right to run your application with a modified version of OCCT.
If the application is distributed in a form that does not allow the user to modify OCCT part (e.g. the application is linked to OCCT statically or is distributed via AppStore on iOS, GooglePlay on Android, Windows Store, etc.),
the application should be provided separately in a modifiable form, with all materials needed for the user to be able to run the application with a modified version of OCCT.
If you want to use Open CASCADE Technology without being bound by LGPL requirements,
please <a href="https://www.opencascade.com/contact">contact Open CASCADE company</a> for a commercial license.
Note that Open CASCADE Technology is provided on an "AS IS" basis, WITHOUT
WARRANTY OF ANY KIND. The entire risk related to any use of the OCCT code and
@@ -83,28 +92,28 @@ To use Tcl/Tk, please refer to the Licensing Terms (https://www.tcl.tk/software/
**GL2PS** is developed by Christophe Geuzaine and others. It is optionally used by OCCT to
export content of OpenGL scene to vector graphics formats (PS, PDF, EMF, SVG).
The library is licensed under GL2PS LICENSE https://www.geuz.org/gl2ps/COPYING.GL2PS Version 2, November 2003.
The library is licensed under GL2PS license (http://www.geuz.org/gl2ps/COPYING.GL2PS).
**FreeType 2** is developed by Antoine Leca, David Turner, Werner Lemberg and others.
It is a software font engine that is designed to be small, efficient, highly customizable and
portable while capable of producing high-quality output (glyph images). This product
can be used in graphic libraries, display servers, font conversion tools,
text image generation tools, and many other products.
FreeType 2 is released under two open-source licenses: BSD-like FreeType License and the GPL.
FreeType 2 is released under two open-source licenses: BSD-like FreeType License and the GPL (https://www.freetype.org/license.html).
**Intel(R) Threading Building Blocks (TBB)** offers a rich and complete approach to expressing parallelism in a C++ program.
It is a library that helps you to take advantage of multi-core processor performance without having to be a threading expert.
Threading Building Blocks is not just a threads-replacement library. It represents a higher-level, task-based parallelism that
abstracts platform details and threading mechanisms for scalability and performance.
TBB is available under GPLv2 license with the runtime exception.
TBB version 2017 is available under Apache 2.0 license, while older versions
until 4.4 are available under GPLv2 license with the runtime exception (https://www.threadingbuildingblocks.org).
**OpenGL** is an industry standard API for 3D graphics used by OCCT for
implementation of 3D viewer. OpenGL specification is developed by the
Khronos group, https://www.khronos.org/opengl/. OCCT code includes header
file *glext.h* obtained from Khronos web site.
**VTK** -- The **Visualization Toolkit (VTK)** is an open-source, freely available software system for 3D computer graphics, image processing and visualization. OCCT VIS component provides adaptation functionality for visualization of OCCT topological shapes by means of VTK library. If you need further information on VTK, please, refer to VTK Homepage https://www.vtk.org/.
**VTK** -- The **Visualization Toolkit (VTK)** is an open-source, freely available software system for 3D computer graphics, image processing and visualization. OCCT VIS component provides adaptation functionality for visualization of OCCT topological shapes by means of VTK library. If you need further information on VTK, please, refer to VTK Homepage http://www.vtk.org/.
**Doxygen** developed by Dimitri van Heesch is open source documentation system for
C++, C, Java, Objective-C, Python, IDL, PHP and C#. This product is used in Open CASCADE Technology
@@ -115,17 +124,17 @@ If you need further information on Doxygen, please refer to https://www.stack.nl
Graph visualization is representiation of structured information as diagrams of abstract graphs and networks.
This product is used together with Doxygen in Open CASCADE Technology for automatic creation of Technical Documentation
(generation of dependency graphs). Current versions of Graphviz are licensed on an open source
basis under The Eclipse Public License (EPL) (https://www.graphviz.org/License.php).
basis under The Eclipse Public License (EPL) (http://www.graphviz.org/License.php).
**Inno Setup** is a free script-driven installation system created in CodeGear Delphi by Jordan Russell.
In OCCT Inno Setup is used to create Installation Wizard on Windows.
It is licensed under Inno Setup License (https://www.jrsoftware.org/files/is/license.txt).
It is licensed under Inno Setup License (http://www.jrsoftware.org/files/is/license.txt).
**FreeImage** is an Open Source library supporting popular graphics image formats, such as PNG, BMP, JPEG, TIFF,
and others used by multimedia applications. This library is developed by Hervé Drolon and Floris van den Berg.
FreeImage is easy to use, fast, multithreading safe, compatible with all 32-bit or 64-bit versions of Windows,
and cross-platform (works both with Linux and Mac OS X). FreeImage is optionally used by OCCT to work
with images, on conditions of the FreeImage Public License (FIPL) (https://freeimage.sourceforge.net/freeimage-license.txt).
with images, on conditions of the FreeImage Public License (FIPL) (http://freeimage.sourceforge.net/freeimage-license.txt).
**CMake** is an open-source, cross-platform family of tools designed to build, test and package software. CMake is used to control the software compilation process using simple platform and compiler independent configuration files, and generate native makefiles and workspaces that can be used in the compiler environment of your choice.
OCCT uses CMake as a build system. CMake is available under BSD 3-Clause license. See more at https://cmake.org/
@@ -196,9 +205,9 @@ for which OCCT is certified to work.
| OS | Compiler |
| --------- | ----------- |
| Windows | Microsoft Visual Studio: 2010 SP1<sup>1</sup>, 2012 Update 4, 2013 Update 5, 2015 <br> Intel C++ Composer XE 2013 SP1 <br> GCC 4.3+ (Mingw-w64)|
| Windows | Microsoft Visual Studio: 2008 SP1, 2010 SP1<sup>1</sup>, 2012 Update 4, 2013 Update 5, 2015, 2017 <br> GCC 4.3+ (Mingw-w64)|
| Linux | GNU gcc 4.3+ <br> LLVM CLang 3.6+ |
| OS X | XCode 6 or newer |
| OS X / macOS | XCode 6 or newer |
| Android | NDK r10, GNU gcc 4.8 or newer |
1) VC++ 10 64-bit is used for regular testing and for building
@@ -209,15 +218,15 @@ for which OCCT is certified to work.
| Component | Requirement |
| --------- | ----------- |
| Graphic library | OpenGL 3.3+, OpenGL ES 2.0+ <br> Direct3D 9 |
| Qt (for samples and demos) | Desktop: Qt 4.8.6+ http://www.qt.io/download/ <br> Android: Qt 5.3.2+ http://www.qt.io/download/ |
| TCL (for testing tools) | Tcl/Tk 8.6.3+ http://www.tcl.tk/software/tcltk/download.html <br> or ActiveTcl 8.6 http://www.activestate.com/activetcl/downloads (for Windows)|
| Freetype (for text rendering) | FreeType 2.4.11-2.5.5 http://sourceforge.net/projects/freetype/files/ |
| FreeImage (optional, for support of common 2D graphic formats) | FreeImage 3.17.0+ http://sourceforge.net/projects/freeimage/files |
| FFmpeg (optional, for video recording) | FFmpeg 3.1+ https://www.ffmpeg.org |
| Qt (for samples and demos) | Desktop: Qt 4.8.6+ https://www.qt.io/download/ <br> Android: Qt 5.3.2+ https://www.qt.io/download/ |
| TCL (for testing tools) | Tcl/Tk 8.6.3+ https://www.tcl.tk/software/tcltk/download.html <br> or ActiveTcl 8.6 https://www.activestate.com/activetcl/downloads (for Windows)|
| Freetype (for text rendering) | FreeType 2.4.11-2.5.5 https://sourceforge.net/projects/freetype/files/ |
| FreeImage (optional, for support of common 2D graphic formats) | FreeImage 3.17.0+ https://sourceforge.net/projects/freeimage/files |
| FFmpeg (optional, for video recording) | FFmpeg 3.1+ https://www.ffmpeg.org/download.html |
| gl2ps (optional, for export contents of OCCT viewer to vector formats) | gl2ps-1.3.8+ http://geuz.org/gl2ps/ |
| Intel TBB (optional, for multithreaded algorithms) | TBB 4.x or 5.x http://www.threadingbuildingblocks.org/ |
| VTK (for VTK Integration Services | VTK 6.1+ http://www.vtk.org/VTK/resources/software.html |
| Doxygen (optional for building documentation) | Doxygen 1.8.5+ http://www.stack.nl/~dimitri/doxygen/download.html |
| Intel TBB (optional, for multithreaded algorithms) | TBB 4.x or 5.x https://www.threadingbuildingblocks.org/ |
| VTK (for VTK Integration Services | VTK 6.1+ http://www.vtk.org/download/ |
| Doxygen (optional for building documentation) | Doxygen 1.8.5+ https://www.stack.nl/~dimitri/doxygen/download.html |
@subsection overview_req_hw Hardware
@@ -534,11 +543,11 @@ Export:
* Stl
* Vrml
See \subpage samples_csharp_occt "Readme" for details.
See \subpage samples_csharp_occt "C# sample Readme" for details.
There is also another C# example with the same functionality, which demonstrates the integration of Direct3D Viewer into .NET applications using WPF front end.
See \subpage samples_csharp_direct3d "Readme" for details.
See \subpage samples_csharp_direct3d "Direct3D C# sample Readme" for details.
@subsubsection OCCT_OVW_SECTION_7_3_4 Android
@@ -546,8 +555,16 @@ There are two samples are representing usage OCCT framework on Android mobile pl
jniviewer
@figure{/overview/images/samples_java_android_occt.jpg}
Java -- See \subpage samples_java_android_occt "Readme" for details.
Java -- See \subpage samples_java_android_occt "Android Java sample Readme" for details.
AndroidQt
@figure{/overview/images/samples_qml_android_occt.jpg}
Qt -- See \subpage samples_qml_android_occt "Readme" for details.
Qt -- See \subpage samples_qml_android_occt "Android Qt sample Readme" for details.
@subsubsection OCCT_OVW_SECTION_7_3_5 iOS
There is a sample demonstrating usage of OCCT on iOS with Apple UIKit framework.
@figure{/overview/images/sample_ios_uikit.png}
See \subpage occt_samples_ios_uikit "iOS sample Readme" for details.

View File

@@ -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;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -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
@@ -10677,6 +10687,87 @@ Example:
mdist
~~~~~
@section occt_draw_13 Inspector commands
This section describes commands that make possible to use Inspector.
@subsection occt_draw_13_1 tinspector
Syntax:
~~~~~
tinspector [-plugins {name1 ... [nameN] | all}]
[-activate name]
[-shape object [name1] ... [nameN]]
[-open file_name [name1] ... [nameN]]
[-update]
[-select {object | name1 ... [nameN]}]
[-show {0|1} = 1]
~~~~~
Starts tool of inspection.
Options:
* *plugins* enters plugins that should be added in the inspector.
Available names are: dfbrowser, vinspector and shapeview.
Plugins order will be the same as defined in arguments.
'all' adds all available plugins in the order:
DFBrowser, VInspector and ShapeView.
If at the first call this option is not used, 'all' option is applyed;
* *activate* activates the plugin in the tool view.
If at the first call this option is not used, the first plugin is activated;
* *shape* initializes plugin/s by the shape object. If 'name' is empty, initializes all plugins;
* *open* gives the file to the plugin/s. If the plugin is active, after open, update content will be done;
* *update* updates content of the active plugin;
* *select* sets the parameter that should be selected in an active tool view.
Depending on active tool the parameter is:
ShapeView: 'object' is an instance of TopoDS_Shape TShape,
DFBrowser: 'name' is an entry of TDF_Label and name2(optionaly) for TDF_Attribute type name,
VInspector: 'object' is an instance of AIS_InteractiveObject;
* *show* sets Inspector view visible or hidden. The first call of this command will show it.
**Example:**
~~~~~
pload DCAF INSPECTOR
NewDocument Doc BinOcaf
set aSetAttr1 100
set aLabel 0:2
SetInteger Doc ${aLabel} ${aSetAttr1}
tinspector -plugins dfbrowser -select 0:2 TDataStd_Integer
~~~~~
**Example:**
~~~~~
pload ALL INSPECTOR
box b1 200 100 120
box b2 100 200 220 100 120 100
tinspector -plugins shapeview -shape b1 -shape b2 -select b1
~~~~~
**Example:**
~~~~~
pload ALL INSPECTOR
tinspector -plugins vinspector
vinit
box box_1 100 100 100
vdisplay box_1
box box_2 180 120 200 150 150 150
vdisplay box_2
vfit
vselmode box_1 1 1
vselmode box_1 3 1
tinspector -update -select box_1
~~~~~
@section occt_draw_11 Extending Test Harness with custom commands

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

@@ -0,0 +1,224 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="165.36458mm"
height="99.483337mm"
viewBox="0 0 165.36458 99.483337"
version="1.1"
id="svg8"
sodipodi:docname="3DView_elements.svg"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.98994949"
inkscape:cx="237.05748"
inkscape:cy="217.01184"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1410"
inkscape:window-height="786"
inkscape:window-x="265"
inkscape:window-y="101"
inkscape:window-maximized="0"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
showborder="true"
inkscape:showpageshadow="false" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-208.35938,-140.66904)">
<rect
style="opacity:1;fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:#000000;stroke-width:0.52916667;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4147-9"
width="164.83542"
height="98.95417"
x="208.62396"
y="140.93362"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#bfbfbf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4157-5"
width="155.95102"
height="20.214758"
x="212.62312"
y="145.17099"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#bfbfbf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4159-1"
width="155.83388"
height="64.776878"
x="212.62471"
y="170.05089"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.36620295;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-1-1"
width="30.417513"
height="11.316654"
x="286.53876"
y="149.43106"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.36620295;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-1-5-9"
width="30.417513"
height="11.316654"
x="321.21384"
y="149.43106"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.38666677px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="295.72775"
y="156.1628"
id="text5675-5"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5677-3"
x="295.72775"
y="156.1628"
style="font-size:3.88055563px;line-height:1.25;stroke-width:0.28222224px">Single</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.38666677px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="331.03946"
y="156.53418"
id="text5679-5"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5681-0"
x="331.03946"
y="156.53418"
style="font-size:3.88055563px;line-height:1.25;stroke-width:0.28222224px">Clean</tspan></text>
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.45057005;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-8-33"
width="14.354354"
height="56.42762"
x="216.9996"
y="174.34537"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.83517319;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-7-0"
width="67.939919"
height="26.352776"
x="265.93634"
y="189.26295"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.3866663px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="295.6308"
y="201.46571"
id="text5683-5-2"
transform="scale(0.98830373,1.0118347)"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5685-3-7"
x="295.6308"
y="201.46571"
style="font-size:3.83516741px;line-height:1.25;stroke-width:0.28222221px">3D view</tspan></text>
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.36620298;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-1-1-3"
width="30.417513"
height="11.316654"
x="217.1886"
y="149.43106"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.38666677px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="227.84984"
y="156.48491"
id="text5675-5-2"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5677-3-2"
x="227.84984"
y="156.48491"
style="font-size:3.88055563px;line-height:1.25;stroke-width:0.28222224px">View</tspan></text>
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.36620298;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-1-1-9"
width="30.417513"
height="11.316654"
x="251.86369"
y="149.43106"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.38666677px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="262.35156"
y="156.53418"
id="text5675-5-9"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\3DView.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5677-3-0"
x="262.35156"
y="156.53418"
style="font-size:3.88055563px;line-height:1.25;stroke-width:0.28222224px">Multi</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

View File

@@ -0,0 +1,284 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="165.36443mm"
height="99.48317mm"
viewBox="0 0 165.36443 99.48317"
version="1.1"
id="svg1643"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
sodipodi:docname="dfbrowser_elements.svg">
<defs
id="defs1637" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="290.24314"
inkscape:cy="320.3071"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:showpageshadow="false"
inkscape:window-width="1246"
inkscape:window-height="857"
inkscape:window-x="371"
inkscape:window-y="37"
inkscape:window-maximized="0" />
<metadata
id="metadata1640">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(356.33698,30.17611)">
<rect
style="opacity:1;fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:#78943d;stroke-width:0.52916667;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4147"
width="164.83542"
height="98.95417"
x="-356.07248"
y="-29.91161"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#9bbb59;fill-opacity:1;fill-rule:evenodd;stroke:#78943d;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4157"
width="155.951"
height="20.214758"
x="-352.0733"
y="-25.674246"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#9bbb59;fill-opacity:1;fill-rule:evenodd;stroke:#78943d;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4159"
width="75.795822"
height="64.91011"
x="-352.07172"
y="-0.79434544"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#9bbb59;fill-opacity:1;fill-rule:evenodd;stroke:#78943d;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4161-4"
width="75.811562"
height="30.252827"
x="-272.04941"
y="33.729694"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#9bbb59;fill-opacity:1;fill-rule:evenodd;stroke:#78943d;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4161-4-8"
width="75.811562"
height="30.252827"
x="-272.04941"
y="-0.80220562"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.56444448;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195"
width="73.552574"
height="11.118413"
x="-347.50781"
y="-21.126072"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.36620289;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-1"
width="30.417513"
height="11.316654"
x="-267.92496"
y="-21.225193"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.36620289;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-1-5"
width="30.417513"
height="11.316654"
x="-231.57631"
y="-21.225193"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.38666677px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-259.7175"
y="-14.48304"
id="text5675"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5677"
x="-259.7175"
y="-14.48304"
style="font-size:3.88055563px;line-height:1.25;stroke-width:0.28222224px">Update</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.38666677px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-223.04579"
y="-14.12208"
id="text5679"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5681"
x="-223.04579"
y="-14.12208"
style="font-size:3.88055563px;line-height:1.25;stroke-width:0.28222224px">Search</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.38666677px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-325.95343"
y="-14.547463"
id="text5683"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5685"
x="-325.95343"
y="-14.547463"
style="font-size:3.88055563px;line-height:1.25;stroke-width:0.28222224px">Tree Navigation</tspan></text>
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.56444448;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-8"
width="65.570122"
height="19.385952"
x="-347.50781"
y="11.248657"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.38666654px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-333.31332"
y="22.090868"
id="text5683-5"
transform="scale(0.98830373,1.0118347)"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5685-3"
x="-333.31332"
y="22.090868"
style="font-size:3.83516741px;line-height:1.25;stroke-width:0.28222221px">OCAF tree view</tspan></text>
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.56444448;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-8-0"
width="65.570122"
height="19.385952"
x="-267.68332"
y="3.9789243"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.56444448;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-8-3-5"
width="38.7719"
height="16.820164"
x="-267.11316"
y="37.191612"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#9bbb59;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-8-3"
width="38.7719"
height="16.820164"
x="-240.60002"
y="42.180641"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.38666654px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-252.8326"
y="13.779153"
id="text5683-5-9"
transform="scale(0.98830373,1.0118347)"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5685-3-8"
x="-252.8326"
y="13.779153"
style="font-size:3.83516741px;line-height:1.25;stroke-width:0.28222221px">Property Panel</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.38666654px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-231.82542"
y="51.393177"
id="text5683-5-0"
transform="scale(0.98830373,1.0118347)"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5685-3-5"
x="-231.82542"
y="51.393177"
style="font-size:3.83516741px;line-height:1.25;stroke-width:0.28222221px">3D View</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.38666654px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-267.25568"
y="46.086102"
id="text5683-5-1"
transform="scale(0.98830373,1.0118347)"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\dfbrowser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5685-3-80"
x="-267.25568"
y="46.086102"
style="font-size:3.83516741px;line-height:1.25;stroke-width:0.28222221px">Dump View</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

View File

@@ -0,0 +1,142 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="165.36458mm"
height="99.483337mm"
viewBox="0 0 165.36458 99.483337"
version="1.1"
id="svg2491"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
sodipodi:docname="shapeview_elements.svg">
<defs
id="defs2485" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.98994949"
inkscape:cx="319.53221"
inkscape:cy="223.36826"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:showpageshadow="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1205"
inkscape:window-height="766"
inkscape:window-x="422"
inkscape:window-y="28"
inkscape:window-maximized="0" />
<metadata
id="metadata2488">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(293.59301,-77.169049)">
<rect
style="opacity:1;fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:#ffa040;stroke-width:0.52916667;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4147-0-8"
width="164.83542"
height="98.95417"
x="-293.32843"
y="77.433632"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\shapeview.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#fcd5b5;fill-opacity:1;fill-rule:evenodd;stroke:#ff9933;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4159-8"
width="70.094536"
height="85.011993"
x="-285.46909"
y="83.598381"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\shapeview.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.62230003;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-8-2"
width="54.993557"
height="25.389547"
x="-277.91861"
y="113.40961"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\shapeview.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#fcd5b5;fill-opacity:1;fill-rule:evenodd;stroke:#ffa040;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4159-8-9"
width="70.094536"
height="85.011993"
x="-207.25319"
y="83.598389"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\shapeview.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.56444448;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-8-2-4"
width="54.993557"
height="25.389547"
x="-199.70271"
y="113.40961"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\shapeview.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.3866663px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-272.88153"
y="125.70056"
id="text5683-5-4-9"
transform="scale(0.98830373,1.0118347)"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\shapeview.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5685-3-59-2"
x="-272.88153"
y="125.70056"
style="font-size:3.83516741px;line-height:1.25;stroke-width:0.28222221px">TopoDS_Shape View</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.3866663px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-182.24478"
y="126.02359"
id="text5683-5-0-0"
transform="scale(0.98830373,1.0118347)"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\shapeview.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5685-3-5-6"
x="-182.24478"
y="126.02359"
style="font-size:3.83516741px;line-height:1.25;stroke-width:0.28222221px">3D View</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

@@ -0,0 +1,244 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="164.48495mm"
height="98.635941mm"
viewBox="0 0 164.48495 98.635941"
version="1.1"
id="svg8"
sodipodi:docname="tinspector_elements.svg"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)">
<defs
id="defs2">
<pattern
y="0"
x="0"
height="6"
width="6"
patternUnits="userSpaceOnUse"
id="EMFhbasepattern" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="329.8397"
inkscape:cy="227.89271"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1575"
inkscape:window-height="895"
inkscape:window-x="46"
inkscape:window-y="75"
inkscape:window-maximized="0"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-23.06172,-25.84832)">
<path
id="path933"
d="M 23.326301,26.112901 H 187.28209 V 124.21968 H 23.326301 Z"
style="fill:none;stroke:#953735;stroke-width:0.52916276px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path935"
d="M 28.109932,31.192871 H 62.95001 v 12.97507 H 28.109932 Z"
style="fill:#9bbb59;fill-opacity:1;fill-rule:nonzero;stroke:#71893f;stroke-width:0.52916276px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path937"
d="m 66.54831,31.108201 h 34.84008 v 12.97507 H 66.54831 Z"
style="fill:none;stroke:#33cccc;stroke-width:0.52916276px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path939"
d="m 104.9867,31.023531 h 34.84007 v 12.97508 H 104.9867 Z"
style="fill:none;stroke:#ff9933;stroke-width:0.52916276px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path941"
d="m 37.550195,37.648651 c 0,0.254 -0.04233,0.48683 -0.169332,0.6985 -0.105832,0.21166 -0.253998,0.38099 -0.444497,0.48683 -0.126999,0.0847 -0.275164,0.14816 -0.42333,0.16933 -0.169332,0.0423 -0.35983,0.0635 -0.634995,0.0635 h -0.698495 v -2.83631 h 0.698495 c 0.275165,0 0.48683,0.0212 0.656162,0.0635 0.169332,0.0423 0.296331,0.10583 0.42333,0.16933 0.190498,0.127 0.338664,0.27516 0.444497,0.48683 0.105832,0.1905 0.148165,0.42333 0.148165,0.69849 z m -0.380997,0 c 0,-0.21166 -0.04233,-0.40216 -0.126999,-0.55033 -0.0635,-0.16933 -0.190498,-0.27516 -0.338664,-0.35983 -0.105833,-0.0635 -0.232832,-0.10583 -0.359831,-0.14816 -0.126999,-0.0212 -0.275164,-0.0212 -0.444497,-0.0212 h -0.35983 v 2.18015 h 0.35983 c 0.190499,0 0.338665,-0.0212 0.465664,-0.0423 0.148165,-0.0423 0.275164,-0.0847 0.380997,-0.14817 0.148165,-0.10583 0.253998,-0.21166 0.317498,-0.35983 0.0635,-0.14817 0.105832,-0.33866 0.105832,-0.55033 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path943"
d="m 39.963178,36.569161 h -1.418157 v 0.80433 h 1.227658 v 0.33866 h -1.227658 v 1.35466 h -0.380997 v -2.83631 h 1.799154 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path945"
d="m 42.524325,38.198981 c 0,0.127 -0.02117,0.254 -0.08467,0.35983 -0.04233,0.10583 -0.126999,0.21167 -0.211665,0.27517 -0.105833,0.0847 -0.211665,0.14816 -0.338664,0.16933 -0.126999,0.0423 -0.296331,0.0635 -0.48683,0.0635 h -1.015992 v -2.83631 h 0.84666 c 0.211665,0 0.359831,0.0212 0.465663,0.0423 0.105833,0 0.190499,0.0423 0.296331,0.0847 0.105833,0.0635 0.169332,0.12699 0.211666,0.21166 0.0635,0.0847 0.08467,0.1905 0.08467,0.29633 0,0.14817 -0.04233,0.254 -0.105832,0.35983 -0.0635,0.0847 -0.169332,0.16933 -0.275165,0.21167 v 0.0212 c 0.190499,0.0423 0.338665,0.127 0.444497,0.254 0.105833,0.12699 0.169332,0.27516 0.169332,0.48683 z m -0.634995,-1.26999 c 0,-0.0847 0,-0.127 -0.02117,-0.16933 -0.04233,-0.0635 -0.0635,-0.0847 -0.126999,-0.127 -0.04233,-0.0212 -0.126999,-0.0423 -0.211665,-0.0635 -0.08467,0 -0.190498,0 -0.317497,0 h -0.444497 v 0.80433 h 0.486829 c 0.127,0 0.211665,0 0.275165,-0.0212 0.08467,0 0.148166,-0.0423 0.190499,-0.0635 0.0635,-0.0423 0.105832,-0.0847 0.126999,-0.14817 0.04233,-0.0635 0.04233,-0.127 0.04233,-0.21166 z m 0.253998,1.26999 c 0,-0.10583 -0.02117,-0.1905 -0.0635,-0.254 -0.02117,-0.0847 -0.08467,-0.127 -0.190498,-0.16933 -0.0635,-0.0423 -0.126999,-0.0635 -0.211665,-0.0635 -0.08467,-0.0212 -0.190499,-0.0212 -0.317498,-0.0212 h -0.592662 v 1.05833 h 0.507996 c 0.148166,0 0.296331,-0.0212 0.402164,-0.0423 0.105832,0 0.190498,-0.0423 0.253998,-0.0847 0.0635,-0.0423 0.126999,-0.10584 0.148165,-0.16933 0.04233,-0.0635 0.0635,-0.14817 0.0635,-0.254 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path947"
d="m 44.344645,37.331151 h -0.02117 c -0.04233,-0.0212 -0.105832,-0.0212 -0.148165,-0.0212 -0.04233,0 -0.105833,-0.0212 -0.169332,-0.0212 -0.126999,0 -0.232832,0.0423 -0.317498,0.0847 -0.105832,0.0423 -0.211665,0.10584 -0.296331,0.1905 v 1.50283 h -0.359831 v -2.11663 h 0.359831 v 0.3175 c 0.126999,-0.127 0.253998,-0.21166 0.359831,-0.254 0.105832,-0.0423 0.232831,-0.0635 0.338664,-0.0635 0.0635,0 0.105832,0 0.126999,0 0.04233,0 0.08467,0 0.126999,0.0212 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path949"
d="m 46.482462,38.008481 c 0,0.33867 -0.08467,0.61383 -0.253998,0.80433 -0.169332,0.21167 -0.42333,0.3175 -0.719661,0.3175 -0.296331,0 -0.529163,-0.10583 -0.698495,-0.3175 -0.190498,-0.1905 -0.275164,-0.46566 -0.275164,-0.80433 0,-0.35983 0.08467,-0.61383 0.275164,-0.82549 0.169332,-0.1905 0.402164,-0.29633 0.698495,-0.29633 0.296331,0 0.550329,0.10583 0.719661,0.29633 0.169332,0.21166 0.253998,0.46566 0.253998,0.82549 z m -0.35983,0 c 0,-0.27516 -0.04233,-0.48683 -0.169332,-0.61383 -0.105833,-0.127 -0.253998,-0.21166 -0.444497,-0.21166 -0.190499,0 -0.338664,0.0847 -0.444497,0.21166 -0.105832,0.127 -0.169332,0.33867 -0.169332,0.61383 0,0.254 0.0635,0.46567 0.169332,0.59267 0.105833,0.14816 0.253998,0.21166 0.444497,0.21166 0.190499,0 0.338664,-0.0635 0.444497,-0.21166 0.105832,-0.127 0.169332,-0.33867 0.169332,-0.59267 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path951"
d="m 49.699771,36.950161 -0.550328,2.11665 h -0.317498 l -0.550329,-1.62982 -0.529163,1.62982 h -0.338664 l -0.550329,-2.11665 h 0.35983 l 0.402164,1.62982 0.529163,-1.62982 h 0.275164 l 0.55033,1.62982 0.35983,-1.62982 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path953"
d="m 51.731758,38.452981 c 0,0.1905 -0.08467,0.35983 -0.232834,0.46566 -0.16933,0.127 -0.380997,0.1905 -0.656161,0.1905 -0.169331,0 -0.296331,-0.0212 -0.444497,-0.0423 -0.126998,-0.0423 -0.232831,-0.0847 -0.317498,-0.127 v -0.40216 h 0.02117 c 0.105833,0.0847 0.232833,0.14816 0.380997,0.1905 0.127,0.0635 0.253998,0.0847 0.380998,0.0847 0.169333,0 0.275164,-0.0212 0.380997,-0.0847 0.08467,-0.0423 0.127,-0.127 0.127,-0.23283 0,-0.0847 -0.02117,-0.14817 -0.08467,-0.1905 -0.04233,-0.0423 -0.127,-0.0847 -0.275164,-0.10584 -0.04233,-0.0212 -0.105833,-0.0212 -0.1905,-0.0423 -0.08467,-0.0212 -0.148164,-0.0212 -0.211664,-0.0423 -0.1905,-0.0635 -0.338664,-0.12699 -0.402164,-0.23283 -0.08467,-0.0847 -0.127,-0.21166 -0.127,-0.33866 0,-0.0847 0.02117,-0.16933 0.0635,-0.254 0.04233,-0.0635 0.08467,-0.14817 0.169334,-0.21166 0.0635,-0.0423 0.148164,-0.10584 0.253997,-0.127 0.127,-0.0423 0.232831,-0.0635 0.380997,-0.0635 0.127,0 0.253998,0.0212 0.380998,0.0635 0.126997,0.0212 0.23283,0.0635 0.317497,0.10583 v 0.381 h -0.02117 c -0.08467,-0.0635 -0.190497,-0.127 -0.317497,-0.16934 -0.148167,-0.0423 -0.275164,-0.0635 -0.402164,-0.0635 -0.127,0 -0.232831,0.0212 -0.317497,0.0635 -0.08467,0.0423 -0.127,0.127 -0.127,0.23284 0,0.0847 0.02117,0.14816 0.0635,0.19049 0.0635,0.0423 0.148166,0.0847 0.275164,0.10584 0.0635,0.0212 0.127,0.0212 0.211666,0.0423 0.08466,0.0212 0.148164,0.0423 0.211664,0.0423 0.148167,0.0423 0.275164,0.10583 0.380998,0.1905 0.08467,0.10583 0.127,0.23283 0.127,0.38099 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path955"
d="m 54.017739,38.029651 h -1.56632 c 0,0.14816 0.02117,0.254 0.0635,0.35983 0.04233,0.0847 0.08466,0.16933 0.169331,0.23283 0.0635,0.0635 0.127,0.10583 0.23283,0.127 0.08467,0.0423 0.1905,0.0423 0.296334,0.0423 0.148164,0 0.275164,-0.0212 0.423328,-0.0847 0.148166,-0.0423 0.254,-0.10583 0.317497,-0.16933 h 0.02117 v 0.40216 c -0.126998,0.0423 -0.253998,0.0847 -0.359831,0.127 -0.126997,0.0212 -0.275164,0.0423 -0.402161,0.0423 -0.359831,0 -0.634998,-0.0847 -0.825495,-0.27516 -0.1905,-0.1905 -0.296331,-0.46567 -0.296331,-0.8255 0,-0.33866 0.105831,-0.61383 0.275164,-0.82549 0.190498,-0.1905 0.444498,-0.29633 0.761995,-0.29633 0.275164,0 0.507995,0.0847 0.656161,0.254 0.148167,0.16933 0.232831,0.40216 0.232831,0.69849 z m -0.338664,-0.254 c -0.02117,-0.1905 -0.0635,-0.33866 -0.148164,-0.4445 -0.105833,-0.10583 -0.232833,-0.14816 -0.423331,-0.14816 -0.1905,0 -0.338664,0.0423 -0.465664,0.16933 -0.105833,0.10583 -0.16933,0.254 -0.190497,0.42333 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path957"
d="m 55.88039,37.331151 h -0.0212 c -0.0635,-0.0212 -0.10583,-0.0212 -0.14816,-0.0212 -0.0635,0 -0.127,-0.0212 -0.1905,-0.0212 -0.10583,0 -0.21166,0.0423 -0.3175,0.0847 -0.10583,0.0423 -0.1905,0.10584 -0.29633,0.1905 v 1.50283 h -0.3598 v -2.11663 h 0.35983 v 0.3175 c 0.14817,-0.127 0.27517,-0.21166 0.381,-0.254 0.10583,-0.0423 0.21166,-0.0635 0.33866,-0.0635 0.0423,0 0.10584,0 0.127,0 0.0212,0 0.0635,0 0.127,0.0212 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path959"
d="m 76.00974,35.786001 -1.03715,2.81515 h -0.508 l -1.01599,-2.81515 h 0.40216 l 0.88899,2.47648 0.889,-2.47648 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path961"
d="m 77.4279,38.601151 h -1.12182 v -0.27517 h 0.38099 v -2.24365 h -0.38099 v -0.29633 h 1.12182 v 0.29633 h -0.381 v 2.24365 h 0.381 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path963"
d="m 79.79855,38.601151 h -0.33866 v -1.18533 c 0,-0.10583 -0.0212,-0.1905 -0.0212,-0.27516 -0.0212,-0.0847 -0.0423,-0.16934 -0.0635,-0.21167 -0.0423,-0.0423 -0.0847,-0.0847 -0.14817,-0.10583 -0.0423,-0.0423 -0.127,-0.0423 -0.21167,-0.0423 -0.10583,0 -0.21166,0.0212 -0.31749,0.0635 -0.10583,0.0423 -0.21167,0.10583 -0.29633,0.1905 v 1.56632 H 78.0417 v -2.11665 h 0.35983 v 0.254 c 0.10583,-0.10584 0.21166,-0.16934 0.33866,-0.23284 0.127,-0.0423 0.23283,-0.0635 0.35983,-0.0635 0.23283,0 0.40217,0.0635 0.52917,0.1905 0.12699,0.14817 0.16933,0.33867 0.16933,0.61383 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path965"
d="m 81.99987,38.008481 c 0,0.1905 -0.0635,0.33867 -0.23283,0.46567 -0.16934,0.127 -0.381,0.19049 -0.65617,0.19049 -0.14816,0 -0.29633,-0.0212 -0.42333,-0.0635 -0.14816,-0.0212 -0.254,-0.0635 -0.33866,-0.127 v -0.38099 h 0.0212 c 0.10583,0.0847 0.23283,0.14816 0.38099,0.1905 0.127,0.0423 0.27517,0.0847 0.381,0.0847 0.16933,0 0.29633,-0.0423 0.381,-0.0847 0.0847,-0.0423 0.127,-0.127 0.127,-0.23284 0,-0.0847 -0.0212,-0.14816 -0.0635,-0.19049 -0.0635,-0.0423 -0.14817,-0.0847 -0.27517,-0.10584 -0.0635,-0.0212 -0.127,-0.0423 -0.21166,-0.0423 -0.0847,-0.0212 -0.14817,-0.0423 -0.21167,-0.0635 -0.19049,-0.0423 -0.31749,-0.10583 -0.40216,-0.21166 -0.0847,-0.0847 -0.10583,-0.21167 -0.10583,-0.33867 0,-0.10583 0,-0.16933 0.0423,-0.25399 0.0423,-0.0847 0.0847,-0.14817 0.16933,-0.21167 0.0635,-0.0635 0.14817,-0.10583 0.27517,-0.127 0.10583,-0.0423 0.23283,-0.0635 0.35983,-0.0635 0.127,0 0.25399,0.0212 0.38099,0.0423 0.127,0.0423 0.23284,0.0635 0.3175,0.127 v 0.381 H 81.894 c -0.0847,-0.0847 -0.1905,-0.127 -0.3175,-0.16933 -0.12699,-0.0635 -0.25399,-0.0847 -0.38099,-0.0847 -0.127,0 -0.254,0.0212 -0.33867,0.0847 -0.0847,0.0423 -0.12699,0.127 -0.12699,0.21166 0,0.0847 0.0212,0.16933 0.0847,0.21167 0.0423,0.0423 0.127,0.0635 0.254,0.10583 0.0635,0 0.12699,0.0212 0.21166,0.0423 0.0847,0.0212 0.14817,0.0212 0.21166,0.0423 0.16934,0.0423 0.29634,0.10583 0.381,0.1905 0.0847,0.10583 0.127,0.21166 0.127,0.381 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path967"
d="m 84.37051,37.521651 c 0,0.16933 -0.0212,0.33867 -0.0635,0.48683 -0.0423,0.127 -0.127,0.254 -0.21166,0.35983 -0.0847,0.0847 -0.16933,0.14817 -0.29633,0.21167 -0.10584,0.0423 -0.23283,0.0635 -0.35983,0.0635 -0.10584,0 -0.21167,0 -0.29633,-0.0212 -0.0847,-0.0212 -0.16934,-0.0635 -0.27517,-0.127 v 0.88899 h -0.35983 v -2.89981 h 0.35983 v 0.23283 c 0.10583,-0.0847 0.21167,-0.14816 0.3175,-0.1905 0.127,-0.0635 0.254,-0.0847 0.381,-0.0847 0.25399,0 0.46566,0.0847 0.59266,0.27517 0.14816,0.1905 0.21166,0.46566 0.21166,0.80433 z m -0.35983,0.0212 c 0,-0.254 -0.0423,-0.44449 -0.12699,-0.57149 -0.0847,-0.127 -0.23284,-0.1905 -0.40217,-0.1905 -0.10583,0 -0.21166,0.0212 -0.31749,0.0635 -0.10584,0.0423 -0.1905,0.10583 -0.29634,0.16933 v 1.20649 c 0.10584,0.0423 0.1905,0.0635 0.27517,0.0847 0.0635,0.0212 0.14816,0.0212 0.23283,0.0212 0.21167,0 0.35983,-0.0635 0.46566,-0.1905 0.10584,-0.127 0.16933,-0.33866 0.16933,-0.59266 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path969"
d="m 86.69883,37.585151 h -1.54515 c 0,0.127 0.0212,0.254 0.0635,0.33867 0.0212,0.10583 0.0847,0.1905 0.14816,0.25399 0.0635,0.0423 0.14817,0.10584 0.23283,0.127 0.0847,0.0212 0.1905,0.0423 0.29633,0.0423 0.14817,0 0.29633,-0.0212 0.4445,-0.0847 0.14817,-0.0635 0.254,-0.10583 0.3175,-0.16933 v 0 0.381 c -0.10583,0.0635 -0.23283,0.10583 -0.35983,0.127 -0.127,0.0423 -0.254,0.0635 -0.40217,0.0635 -0.33866,0 -0.61382,-0.10583 -0.80432,-0.29633 -0.21167,-0.1905 -0.29633,-0.4445 -0.29633,-0.80433 0,-0.33866 0.0847,-0.61383 0.27516,-0.82549 0.1905,-0.1905 0.4445,-0.29634 0.74083,-0.29634 0.29633,0 0.50799,0.0847 0.65616,0.254 0.16933,0.14817 0.23283,0.40217 0.23283,0.6985 z m -0.33866,-0.27516 c 0,-0.16933 -0.0423,-0.3175 -0.14817,-0.42333 -0.0847,-0.10583 -0.23283,-0.14817 -0.42333,-0.14817 -0.1905,0 -0.33866,0.0423 -0.44449,0.16933 -0.127,0.10584 -0.1905,0.23284 -0.1905,0.40217 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path971"
d="m 88.81548,38.474151 c -0.127,0.0635 -0.23283,0.10583 -0.33866,0.127 -0.10583,0.0423 -0.23283,0.0635 -0.33867,0.0635 -0.14816,0 -0.29633,-0.0212 -0.42333,-0.0635 -0.127,-0.0635 -0.23283,-0.127 -0.33866,-0.21167 -0.0847,-0.0847 -0.14817,-0.21167 -0.21166,-0.33866 -0.0423,-0.14817 -0.0635,-0.3175 -0.0635,-0.48683 0,-0.35983 0.0847,-0.635 0.27516,-0.8255 0.1905,-0.1905 0.4445,-0.29633 0.76199,-0.29633 0.127,0 0.23284,0.0212 0.35984,0.0635 0.10583,0.0212 0.21166,0.0635 0.31749,0.10583 v 0.40217 h -0.0212 c -0.10583,-0.0847 -0.21166,-0.14817 -0.33866,-0.1905 -0.10584,-0.0423 -0.23283,-0.0635 -0.33867,-0.0635 -0.1905,0 -0.35983,0.0635 -0.48683,0.1905 -0.10583,0.14816 -0.16933,0.33866 -0.16933,0.61383 0,0.25399 0.0635,0.44449 0.16933,0.57149 0.127,0.14817 0.27517,0.21167 0.48683,0.21167 0.0635,0 0.14817,0 0.21167,-0.0212 0.0847,-0.0212 0.14816,-0.0423 0.21166,-0.0847 0.0423,-0.0212 0.10584,-0.0423 0.14817,-0.0847 0.0423,-0.0212 0.0847,-0.0423 0.10583,-0.0635 h 0.0212 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path973"
d="m 90.36064,38.601151 c -0.0635,0 -0.127,0.0212 -0.21167,0.0423 -0.0847,0 -0.14816,0 -0.21166,0 -0.21167,0 -0.381,-0.0423 -0.48683,-0.16934 -0.10584,-0.10583 -0.16933,-0.29633 -0.16933,-0.55033 v -1.12182 h -0.23284 v -0.3175 h 0.23284 v -0.59266 h 0.35983 v 0.59266 h 0.71966 v 0.3175 h -0.71966 v 0.95249 c 0,0.10584 0,0.21167 0,0.27517 0,0.0423 0.0212,0.10583 0.0635,0.16933 0.0212,0.0423 0.0635,0.0847 0.10583,0.10583 0.0423,0.0212 0.127,0.0423 0.23283,0.0423 0.0423,0 0.10583,-0.0212 0.16933,-0.0212 0.0635,-0.0212 0.10584,-0.0423 0.14817,-0.0635 v 0 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path975"
d="m 92.60429,37.563991 c 0,0.33866 -0.0847,0.61382 -0.254,0.80432 -0.1905,0.21167 -0.42333,0.29633 -0.71966,0.29633 -0.29633,0 -0.52917,-0.0847 -0.71966,-0.29633 -0.16934,-0.1905 -0.254,-0.46566 -0.254,-0.80432 0,-0.35983 0.0847,-0.635 0.254,-0.8255 0.19049,-0.21166 0.42333,-0.29633 0.71966,-0.29633 0.29633,0 0.52916,0.0847 0.71966,0.29633 0.16933,0.1905 0.254,0.46567 0.254,0.8255 z m -0.35983,0 c 0,-0.27517 -0.0635,-0.48683 -0.16933,-0.61383 -0.10584,-0.14817 -0.254,-0.21167 -0.4445,-0.21167 -0.1905,0 -0.33867,0.0635 -0.4445,0.21167 -0.10583,0.127 -0.16933,0.33866 -0.16933,0.61383 0,0.25399 0.0635,0.46566 0.16933,0.59266 0.10583,0.14816 0.254,0.21166 0.4445,0.21166 0.1905,0 0.33866,-0.0635 0.4445,-0.21166 0.10583,-0.127 0.16933,-0.33867 0.16933,-0.59266 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path977"
d="m 94.48811,36.886661 h -0.0212 c -0.0635,-0.0212 -0.10584,-0.0212 -0.16933,-0.0212 -0.0423,-0.0212 -0.10584,-0.0212 -0.16934,-0.0212 -0.10583,0 -0.21166,0.0212 -0.31749,0.0847 -0.10584,0.0423 -0.1905,0.10583 -0.29633,0.16933 v 1.50282 h -0.35984 v -2.11665 h 0.35984 v 0.3175 c 0.14816,-0.10583 0.27516,-0.1905 0.38099,-0.23283 0.10583,-0.0423 0.21167,-0.0847 0.3175,-0.0847 0.0635,0 0.10583,0.0212 0.14816,0.0212 0.0212,0 0.0635,0 0.127,0.0212 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path979"
d="m 114.0883,37.775651 c 0,0.10583 -0.0212,0.23283 -0.0635,0.33867 -0.0635,0.10583 -0.127,0.19049 -0.21167,0.27516 -0.10583,0.0635 -0.23283,0.127 -0.35983,0.16933 -0.14817,0.0635 -0.29633,0.0847 -0.48683,0.0847 -0.21166,0 -0.381,-0.0212 -0.55033,-0.0635 -0.16933,-0.0423 -0.3175,-0.0847 -0.48683,-0.16933 v -0.46566 h 0.0212 c 0.14817,0.10583 0.29633,0.21166 0.48683,0.27516 0.1905,0.0635 0.35983,0.0847 0.52916,0.0847 0.23284,0 0.42333,-0.0423 0.55033,-0.127 0.127,-0.0847 0.1905,-0.1905 0.1905,-0.33866 0,-0.127 -0.0423,-0.23283 -0.0847,-0.27517 -0.0635,-0.0635 -0.16933,-0.10583 -0.29633,-0.14816 -0.0847,-0.0212 -0.1905,-0.0423 -0.29633,-0.0635 -0.10583,-0.0212 -0.23283,-0.0423 -0.35983,-0.0635 -0.254,-0.0423 -0.42333,-0.14817 -0.55033,-0.27517 -0.127,-0.127 -0.1905,-0.29633 -0.1905,-0.48683 0,-0.23283 0.10583,-0.44449 0.3175,-0.59266 0.1905,-0.14816 0.4445,-0.21166 0.74083,-0.21166 0.21166,0 0.38099,0 0.55033,0.0423 0.16933,0.0423 0.31749,0.0847 0.44449,0.14816 v 0.4445 h -0.0212 c -0.10583,-0.0847 -0.254,-0.16933 -0.42333,-0.23283 -0.1905,-0.0635 -0.35983,-0.0847 -0.55033,-0.0847 -0.19049,0 -0.35983,0.0423 -0.48683,0.127 -0.10583,0.0847 -0.16933,0.1905 -0.16933,0.3175 0,0.12699 0.0212,0.21166 0.0847,0.27516 0.0635,0.0635 0.16933,0.127 0.3175,0.14817 0.0847,0.0212 0.1905,0.0423 0.35983,0.0635 0.14816,0.0423 0.27516,0.0635 0.35983,0.0847 0.21166,0.0635 0.381,0.14816 0.48683,0.25399 0.10583,0.10584 0.14817,0.27517 0.14817,0.46567 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path981"
d="m 116.43778,38.579981 h -0.35983 v -1.20649 c 0,-0.0847 0,-0.1905 -0.0212,-0.27517 0,-0.0847 -0.0212,-0.14816 -0.0635,-0.1905 -0.0212,-0.0635 -0.0635,-0.0847 -0.127,-0.12699 -0.0635,-0.0212 -0.127,-0.0212 -0.23283,-0.0212 -0.0847,0 -0.1905,0.0212 -0.29633,0.0635 -0.10584,0.0423 -0.21167,0.10583 -0.3175,0.19049 v 1.56633 h -0.35983 v -2.94215 h 0.35983 v 1.05833 c 0.127,-0.0847 0.23283,-0.14817 0.35983,-0.21167 0.10583,-0.0423 0.23283,-0.0635 0.35983,-0.0635 0.23284,0 0.40217,0.0635 0.52917,0.1905 0.10583,0.14817 0.16933,0.33867 0.16933,0.59266 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path983"
d="m 118.76609,38.579981 h -0.35983 v -0.21167 c -0.0212,0.0212 -0.0635,0.0423 -0.127,0.0847 -0.0423,0.0423 -0.10583,0.0635 -0.14816,0.0847 -0.0635,0.0423 -0.127,0.0635 -0.21167,0.0847 -0.0635,0.0212 -0.16933,0.0212 -0.25399,0.0212 -0.1905,0 -0.35984,-0.0635 -0.48684,-0.19049 -0.14816,-0.127 -0.21166,-0.27517 -0.21166,-0.48683 0,-0.14817 0.0423,-0.27517 0.10583,-0.381 0.0635,-0.10583 0.16933,-0.16933 0.29633,-0.23283 0.127,-0.0635 0.27517,-0.10584 0.46567,-0.127 0.16933,-0.0212 0.381,-0.0212 0.57149,-0.0423 v -0.0423 c 0,-0.0847 0,-0.14817 -0.0423,-0.21167 -0.0212,-0.0423 -0.0635,-0.0847 -0.10583,-0.127 -0.0635,-0.0212 -0.127,-0.0423 -0.1905,-0.0635 -0.0635,0 -0.14816,0 -0.21166,0 -0.10583,0 -0.21167,0 -0.3175,0.0423 -0.127,0.0212 -0.23283,0.0423 -0.35983,0.10584 h -0.0212 v -0.381 c 0.0635,0 0.16933,-0.0212 0.29633,-0.0635 0.14816,-0.0212 0.27516,-0.0212 0.40216,-0.0212 0.14817,0 0.27517,0 0.381,0.0423 0.10583,0.0212 0.21166,0.0635 0.29633,0.127 0.0635,0.0423 0.127,0.127 0.16933,0.21166 0.0423,0.10584 0.0635,0.21167 0.0635,0.33867 z m -0.35983,-0.508 v -0.59266 c -0.10583,0 -0.23283,0.0212 -0.38099,0.0212 -0.14817,0.0212 -0.254,0.0423 -0.33867,0.0635 -0.10583,0.0212 -0.1905,0.0635 -0.254,0.127 -0.0635,0.0635 -0.0847,0.14816 -0.0847,0.254 0,0.127 0.0212,0.21166 0.10584,0.27516 0.0635,0.0635 0.1905,0.0847 0.33866,0.0847 0.127,0 0.23283,-0.0212 0.33867,-0.0635 0.10583,-0.0423 0.19049,-0.10583 0.27516,-0.16933 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path985"
d="m 121.32724,37.500491 c 0,0.16933 -0.0212,0.33866 -0.0847,0.46566 -0.0423,0.14817 -0.10583,0.27516 -0.21166,0.35983 -0.0847,0.10583 -0.16933,0.16933 -0.29633,0.23283 -0.10584,0.0423 -0.21167,0.0635 -0.33867,0.0635 -0.127,0 -0.21166,0 -0.3175,-0.0212 -0.0847,-0.0423 -0.16933,-0.0635 -0.25399,-0.127 v 0.889 h -0.35983 v -2.89981 h 0.35983 v 0.23283 c 0.0847,-0.0847 0.1905,-0.14817 0.31749,-0.21167 0.10584,-0.0423 0.23284,-0.0635 0.381,-0.0635 0.254,0 0.4445,0.0847 0.59266,0.27517 0.127,0.1905 0.21167,0.46566 0.21167,0.80433 z m -0.381,0.0212 c 0,-0.27517 -0.0423,-0.46567 -0.127,-0.59267 -0.0847,-0.10583 -0.21166,-0.16933 -0.40216,-0.16933 -0.10583,0 -0.1905,0.0212 -0.29633,0.0635 -0.10583,0.0423 -0.21166,0.0847 -0.29633,0.16933 v 1.2065 c 0.0847,0.0423 0.16933,0.0635 0.254,0.0847 0.0635,0.0212 0.14816,0.0212 0.254,0.0212 0.19049,0 0.33866,-0.0635 0.46566,-0.1905 0.10583,-0.14817 0.14816,-0.33867 0.14816,-0.59267 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path987"
d="m 123.65556,37.563991 h -1.56632 c 0,0.12699 0.0212,0.25399 0.0635,0.33866 0.0423,0.10583 0.0847,0.16933 0.14816,0.23283 0.0847,0.0635 0.14817,0.10583 0.23283,0.14817 0.10583,0.0212 0.1905,0.0423 0.3175,0.0423 0.127,0 0.27517,-0.0212 0.42333,-0.0847 0.14817,-0.0635 0.254,-0.127 0.3175,-0.16933 h 0.0212 v 0.38099 c -0.127,0.0635 -0.254,0.10583 -0.381,0.127 -0.127,0.0423 -0.254,0.0635 -0.381,0.0635 -0.35983,0 -0.635,-0.10583 -0.82549,-0.29633 -0.1905,-0.1905 -0.29633,-0.46566 -0.29633,-0.80433 0,-0.33866 0.0847,-0.61383 0.27516,-0.82549 0.1905,-0.21167 0.4445,-0.29633 0.76199,-0.29633 0.27517,0 0.48684,0.0635 0.65617,0.23283 0.14817,0.16933 0.23283,0.40216 0.23283,0.71966 z m -0.35983,-0.27517 c 0,-0.1905 -0.0423,-0.33866 -0.127,-0.42333 -0.10583,-0.10583 -0.23283,-0.16933 -0.42333,-0.16933 -0.1905,0 -0.35983,0.0635 -0.46567,0.16933 -0.10583,0.127 -0.16933,0.254 -0.19049,0.42333 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path989"
d="m 126.44954,35.764831 -1.03716,2.81515 h -0.50799 l -1.016,-2.81515 h 0.40217 l 0.88899,2.47648 0.88899,-2.47648 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path991"
d="m 127.2327,36.124661 h -0.40216 v -0.38099 h 0.40216 z m -0.0212,2.45532 h -0.35983 v -2.11665 h 0.35983 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path993"
d="m 129.68802,37.563991 h -1.56632 c 0,0.12699 0.0212,0.25399 0.0635,0.33866 0.0423,0.10583 0.0847,0.16933 0.14816,0.23283 0.0847,0.0635 0.14817,0.10583 0.23283,0.14817 0.10583,0.0212 0.1905,0.0423 0.3175,0.0423 0.127,0 0.27516,-0.0212 0.42333,-0.0847 0.14816,-0.0635 0.254,-0.127 0.3175,-0.16933 h 0.0212 v 0.38099 c -0.127,0.0635 -0.254,0.10583 -0.38099,0.127 -0.127,0.0423 -0.254,0.0635 -0.381,0.0635 -0.35983,0 -0.635,-0.10583 -0.82549,-0.29633 -0.1905,-0.1905 -0.29634,-0.46566 -0.29634,-0.80433 0,-0.33866 0.0847,-0.61383 0.27517,-0.82549 0.1905,-0.21167 0.4445,-0.29633 0.76199,-0.29633 0.27517,0 0.48683,0.0635 0.65616,0.23283 0.14817,0.16933 0.23284,0.40216 0.23284,0.71966 z m -0.35984,-0.27517 c 0,-0.1905 -0.0423,-0.33866 -0.12699,-0.42333 -0.10584,-0.10583 -0.23284,-0.16933 -0.42333,-0.16933 -0.1905,0 -0.35983,0.0635 -0.46567,0.16933 -0.10583,0.127 -0.16933,0.254 -0.19049,0.42333 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path995"
d="m 132.88416,36.463331 -0.55033,2.11665 h -0.33866 l -0.52917,-1.62982 -0.55033,1.62982 h -0.31749 l -0.5715,-2.11665 h 0.381 l 0.38099,1.65099 0.52917,-1.65099 h 0.29633 l 0.55033,1.65099 0.35983,-1.65099 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332"
inkscape:connector-curvature="0" />
<path
id="path997"
d="M 42.608991,62.752131 H 181.82113 V 118.33539 H 42.608991 Z"
style="fill:none;stroke:#ff9933;stroke-width:0.52916276px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path999"
d="M 35.666376,55.280361 H 174.89968 V 110.86361 H 35.666376 Z"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#33cccc;stroke-width:0.52916276px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path1001"
d="M 28.744927,47.808581 H 167.97823 V 103.39183 H 28.744927 Z"
style="fill:#9bbb59;fill-opacity:1;fill-rule:nonzero;stroke:#77933c;stroke-width:0.52916667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

View File

@@ -0,0 +1,200 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="165.36458mm"
height="99.483337mm"
viewBox="0 0 165.36458 99.483337"
version="1.1"
id="svg3064"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
sodipodi:docname="vinspector_elements.svg">
<defs
id="defs3058" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.98994949"
inkscape:cx="261.33464"
inkscape:cy="225.25011"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:showpageshadow="false"
inkscape:window-width="1277"
inkscape:window-height="875"
inkscape:window-x="314"
inkscape:window-y="16"
inkscape:window-maximized="0" />
<metadata
id="metadata3061">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(201.36682,-127.81786)">
<rect
style="opacity:1;fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:#33cccc;stroke-width:0.52916667;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4147-0"
width="164.83542"
height="98.95417"
x="-201.10223"
y="128.08244"
inkscape:export-filename="D:\OCCT\master_CR27398_doc\dox\user_guides\qt_browsers\images\vinspector.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#93cddd;fill-opacity:1;fill-rule:evenodd;stroke:#33cccc;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4157-8"
width="155.951"
height="20.214758"
x="-197.10306"
y="132.31981"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#93cddd;fill-opacity:1;fill-rule:evenodd;stroke:#33cccc;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4159-9"
width="155.55411"
height="39.471096"
x="-197.06837"
y="157.2328"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.56444448;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-6"
width="109.47361"
height="11.118413"
x="-155.47618"
y="136.86798"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.36620289;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-1-6"
width="30.417513"
height="11.316654"
x="-192.77927"
y="136.76886"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.38666677px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-184.57181"
y="143.51102"
id="text5675-9"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5677-2"
x="-184.57181"
y="143.51102"
style="font-size:3.88055563px;line-height:1.25;stroke-width:0.28222224px">Update</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.38666677px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-118.07398"
y="143.87196"
id="text5683-7"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5685-7"
x="-118.07398"
y="143.87196"
style="font-size:3.88055563px;line-height:1.25;stroke-width:0.28222224px">Selection controls</tspan></text>
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.56444448;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-8-4"
width="79.254326"
height="23.947351"
x="-158.91849"
y="164.99469"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.38666654px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-143.42757"
y="176.27301"
id="text5683-5-4"
transform="scale(0.98830373,1.0118347)"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5685-3-59"
x="-143.42757"
y="176.27301"
style="font-size:3.83516741px;line-height:1.25;stroke-width:0.28222221px">Presentations tree view</tspan></text>
<rect
style="opacity:1;fill:#93cddd;fill-opacity:1;fill-rule:evenodd;stroke:#33cccc;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4157-8-7"
width="155.951"
height="20.214758"
x="-196.94507"
y="202.23282"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.36620289;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.29879999;stroke-opacity:1"
id="rect4195-1-6-6"
width="147.01831"
height="11.316654"
x="-192.62131"
y="206.68187"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.38666654px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-132.50854"
y="210.87439"
id="text5683-5-4-1"
transform="scale(0.98830373,1.0118347)"
inkscape:export-filename="F:\OCC\master_CR29018\dox\user_guides\inspector\images\vinspector.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"><tspan
sodipodi:role="line"
id="tspan5685-3-59-8"
x="-132.50854"
y="210.87439"
style="font-size:3.83516741px;line-height:1.25;stroke-width:0.28222221px">History view</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.8 KiB

View File

@@ -0,0 +1,578 @@
Inspector {#occt_user_guides__inspector}
===============================
@tableofcontents
@section occt_inspector_1 Introduction
This manual explains how to use Inspector.
@subsection occt_inspector_1_1 Overview
Inspector is a Qt-based library that provides functionality to interactively inspect low-level content of the OCAF data model, OCCT viewer and Modelisation Data.
This component is aimed to assist the developers of OCCT-based applications to debug the problematic situations that occur in their applications.
Inspector has a plugin-oriented architecture. The current release contains the following plugins:
| Plugin | OCCT component | Root class of OCCT investigated component |
| :----- | :----- | :----- |
| @ref occt_inspector_2_2 "DFBrowser"| OCAF | TDocStd_Application |
| @ref occt_inspector_2_3 "VInspector"| Visualization | AIS_InteractiveContext |
| @ref occt_inspector_2_4 "ShapeView"| Modelisation Data | TopoDS_Shape |
Each plugin implements logic of a corresponding OCCT component.
Each of the listed plugins is embeded in the common framework.
The user is able to manage which plugins should be loaded by Inspector.
Also he can extend number of plugins by implementing a new plugin.
@subsection occt_inspector_1_3 Getting started
There are two launch modes:
1. Launch **TInspectorEXE** executable sample. For more details see @ref occt_inspector_6 "TInspectorEXE" section;
2. Launch DRAW, load plugin INSPECTOR, and use **tinspector** command.
For more details see @ref occt_inspector_7 "Launch in DRAW Test Harness" section.
Note. If you have no Inspector library in your build directory, please make sure that OCCT is compiled with *BUILD_Inspector*
option ON. For more details see @ref occt_inspector_4 "Build procedure".
@section occt_inspector_2 Inspector
@subsection occt_inspector_2_1 Overview
Inspector consists of the following components:
* <b>buttons</b> to activate the corresponding plugin;
* <b>view area</b> to visualize the plugin content.
@figure{tinspector_elements.svg,"Plugins placement in Inspector",360}
@subsection occt_inspector_2_2 DFBrowser Plugin
@subsubsection occt_inspector_2_2_1 Overview
@figure{dfbrowser.png, "DFBrowser"}
This plugin visualizes content of TDocStd_Application in a tree view. It shows documents of the application,
hierarchy of TDF_Labels, content of TDF_Attributes and interconnection between attributes (e.g. references).
Additionally it has 3D view to visualize TopoDS_Shape elements stored in the document.
@subsubsection occt_inspector_2_2_2 Elements
@figure{dfbrowser_elements.svg, "DFBrowser Elements",360}
<b>OCAF tree view</b>
Each OCAF element has own tree view item:
| Type | Tree item | Text | Description |
| :----- | :----- | :----- | :----- |
| TDocStd_Application | Application | TDocStd_Application | It is the root of tree view. Children are documents.|
| TDocStd_Document | Document | entry : name | It is a child of Application item. Children are Labels and Attributes items.<br> Text view is an entry of the root label and the value of TDataStd_Name attribute for the label if it exists. |
| TDF_Label | Label | entry : name | It is a child of a Document or another Label item. Children and text view are the same as for Document item. |
| TDF_Attribute | Attribute | attribute type [additional information] | It is a child of a Label. It has no children. <br> Text view is the attribute type (DynamicType()->Name() of TDF_Attribute) and additional information (a combination of attribute values) |
Additional information of TDF_Attributes:
| Type | Text |
| :----- | :----- |
| TDocStd_Owner | [storage format] |
| TDataStd_AsciiString,<br> TDataStd_Name,<br> TDataStd_Real,<br> @ref occt_attribute_simple_types "other Simple types" | [value] |
| TDataStd_BooleanList,<br> TDataStd_ExtStringList,<br> @ref occt_attribute_list_types "other List types" | [value_1 ... value_n] |
| TDataStd_BooleanArray,<br> TDataStd_ByteArray,<br> @ref occt_attribute_array_types "other Array types" | [value_1 ... value_n] |
| TDataStd_TreeNode | [tree node ID ==> Father()->Label()] (if it has father) or <br> [tree node ID <== First()->Label()] (if it has NO father)|
| TDataStd_TreeNode(XDE) | [@ref occt_attribute_xde_tree_node_id "XDE tree node ID" ==> Father()->Label()] (if it has father), <br> [@ref occt_attribute_xde_tree_node_id "XDE tree Node ID" <== label_1, ..., label_n] (if it has NO father)|
| TNaming_NamedShape | [shape type : evolution] |
| TNaming_UsedShapes | [map extent] |
Custom color of items:
| OCAF element Type | Color |
| :----- | :----- |
| TDF_Label | <b>dark green</b>, if the label has TDataStd_Name attribute, <br><b>light grey</b> if the label is empty (has no attributes on all levels of hierarchy),<br> <b>black</b> otherwise |
| TNaming_NamedShape | <b>dark gray</b> for TopAbs_FORWARD orientation of TopoDS_Shape, <br> <b>gray</b> for TopAbs_REVERSED orientation of TopoDS_Shape, <br> <b>black</b> for other orientation |
Context popup menu:
| Action | Functionality |
| :----- | :----- |
| Expand | Expands the next two levels under the selected item |
| Expand All | Expands the whole tree of the selected item |
| Collapse All | Collapses the whole tree of the selected item |
<b>Property Panel</b>
Property panel is used to display content of Label or Attribute tree view items.
This control is used for content of Label or Attribute tree view items or Search result view.
Information is usually shown in one or several tables.
TDF_Attribute has the following content in Property Panel:
<table>
<tr><th>Type</th><th>Description</th><th>Content</th></tr>
<tr><td>TDF_Label</td>
<td> a table of [entry or attribute name, value]</td>
<td>@figure{property_panel_label.png, "",140}</td></tr>
<tr><td>TDocStd_Owner,<br> @ref occt_attribute_simple_types "Simple types", <br> @ref occt_attribute_list_types "List types"</td>
<td>a table of [method name, value]</td>
<td>@figure{property_panel_simple_type.png, "",140}</td></tr>
<tr><td>TDataStd_BooleanArray,<br> TDataStd_ByteArray,<br> @ref occt_attribute_array_types "other Array types"</td>
<td>2 controls: <br> * a table of [array bound, value], <br> * table of [method name, value]</td>
<td>@figure{property_panel_array.png, "",140}</td></tr>
<tr><td>TDataStd_TreeNode</td>
<td>2 controls: <br> * a table of [Tree ID, value] (visible only if Tree ID() != ID()), <br> * a tree view of tree nodes starting from Root() of the tree node. The current tree node has <b>dark blue</b> text.</td>
<td>@figure{property_panel_tree_node.png, "",140} </td></tr>
<tr><td>TDataStd_NamedData</td>
<td>tab bar of attribute elements, each tab has a table of [name, value]</td>
<td>@figure{property_panel_named_data.png, "",140}</td></tr>
<tr><td>TNaming_UsedShapes</td>
<td>a table of all the shapes handled by the framework</td>
<td>@figure{property_panel_tnaming_used_shapes.png, "",140}</td></tr>
<tr><td>TNaming_NamedShape</td>
<td>2 controls: <br> * a table of [method name, value] including CurrentShape/OriginalShape methods result of TNaming_Tools, <br> * an evolution table. <br> Tables contain buttons for @ref occt_shape_export "TopoDS_Shape export".</td>
<td>@figure{property_panel_tnaming_named_shape.png, "",140}</td></tr>
<tr><td>TNaming_Naming</td>
<td>2 controls: <br> * a table of TNaming_Name vlaues,<br> * a table of [method name, value]</td>
<td>@figure{property_panel_tnaming_naming.png, "",140}</td></tr>
</table>
<b>Dump view</b>
@figure{dump_attribute.png, "Dump of TDF_Attribute"}
Dump view shows result of <b>TDF_Attribute::Dump()</b> or <b>TDF_Label::Dump()</b> of selected tree view item.
<b>3D view</b>
3D View visualizes TopoDS_Shape elements of OCAF attribute via AIS facilities.
DFBrowser creates two kinds presentations depending on the selection place:
<table>
<tr><th>Kind</th><th>Source object</th><th>Visualization propeties</th><th>View</th></tr>
<tr><td>Main presentation</td>
<td>Tree view item:<br> TPrsStd_AISPresentation,<br> TNaming_NamedShape,<br> TNaming_Naming</td>
<td>Color: a default color for shape type of the current TopoDS_Shape</td>
<td>@figure{display_main_presentation.png, "",100}</td></tr>
<tr><td>Additional presentation</td>
<td>References in Property panel</td>
<td>Color: white</td>
<td>@figure{display_additional_presentation.png, "",100}</td></tr>
</table>
<b>Tree Navigation</b>
Tree Navigation shows a path to the item selected in the tree view.
The path is a sequence of label entries and attribute type name.
Each element in the path is selectable - the user can click on it to select the corresponding tree view item.
Navigation control has buttons to go to the previous and the next selected tree view items.
<b>Update Button</b>
Update button synchronizes content of tree view to the current content of OCAF document that could be modified outside.
<b>Search</b>
The user can search OCAF element by typing:
* TDF_Label entry,
* TDF_Attribute name,
* TDataStd_Name and TDataStd_Comment attributes value.
@figure{search.png,"Search"}
As soon as the user confirms the typed criteria, the Property panel is filled by all satisfied values.
The user can click a value to hightligt the corresponding tree view item. By double click the item will be selected.
@subsubsection occt_inspector_2_2_3 Elements cooperation
<b>Tree item selection</b>
Selection of tree view item updates content of the following controls:
* Navigation line
* Property Panel
* 3D View (if it is possible to create an interactive presentation)
* Dump View
@figure{dfbrowser_selection_in_tree_view.svg,"",360}
<b>Property Panel item selection </b>
If property panel shows content of TDF_Label:
* selection of the table row hightlights the corresponding item in tree view,
* double click on the table row selects this item in tree view.
If property panel shows content of TDF_Attribute that has reference to another attribute, selection of this reference:
* highlights the referenced item in TreeView,
* displays additional presentation in 3D view if it can be created.
@figure{property_panel_item_selection.svg,"",360}
Attributes having references:
| Type | Reference | Additional presentation
| :----- | :----- | :----- |
| TDF_Reference | TDF_Label | |
| TDataStd_ReferenceArray, <br> TDataStd_ReferenceList, <br> TNaming_Naming | one or several TDF_Label in a container | |
| TDataStd_TreeNode | TDF_Label | |
| TNaming_NamedShape | TDF_Label in Evolution table | selected TopoDS_Shapes in property panel tables |
| TNaming_UsedShapes | one or several TNaming_NamedShape | TopoDS_Shapes of selected TNaming_NamedShape |
@subsubsection occt_shape_export TopoDS_Shape export
Property panel of TNaming_NamedShape attribute has controls to export TopoDS_Shape to:
* BREP. The save file dialog is started to enter the result file name,
* @ref occt_inspector_2_4 "ShapeView" plugin. Dialog about exporting element to ShapeView is shown with a possibility to activate this plugin immediatelly.
@subsection occt_inspector_2_3 VInspector Plugin
@subsubsection occt_inspector_2_3_1 Overview
@figure{vinspector.png, "VInspector"}
It visualizes interactive objects displayed in AIS_InteractiveContext in a tree view with columputed selection
components for each presentation. It shows the selected elements in the context and allows to select these elements.
@subsubsection occt_inspector_2_3_2 Elements
@figure{vinspector_elements.svg,"VInspector Elements",360}
<b>Presentations tree view</b>
It shows presentations and selection computed of them. Also, the view has columns with information about state of visualization elements.
VInspector tree items.
| Type | Description |
| :----- | :----- |
| AIS_InteractiveContext | It is the root of tree view. Children are interactive objects obtained by *DisplayedObjects* and *ErasedObjects* methods.|
| AIS_InteractiveObject | It is a child of AIS_InteractiveContext item. Children are SelectMgr_Selection obtained by iteration on *CurrentSelection* |
| SelectMgr_Selection | It is a child of AIS_InteractiveObject. Children are SelectMgr_SensitiveEntity obtaining by iteration on *Sensitive* |
| SelectMgr_SensitiveEntity | It is a child of SelectMgr_Selection. Children are SelectMgr_SensitiveEntity obtaining by iteration on *OwnerId* |
| SelectBasics_EntityOwner | It is a child SelectMgr_SensitiveEntity. It has no children. |
Custom color of tree view items:
| OCAF element Type | Column | What | Color |
| :----- | :----- | :----- | :----- |
| AIS_InteractiveObject | 0 | Text | <b>dark gray</b>, it is in *ErasedObjects* list of AIS_InteractiveContext,<br> <b>black</b> otherwise |
| AIS_InteractiveObject, <br> SelectMgr_SensitiveEntity, <br> SelectBasics_EntityOwner| 1 | Background | <b>dark blue</b>, if there is a selected owner under the item, <br> <b>black</b> otherwise |
| SelectMgr_Selection,<br> SelectMgr_SensitiveEntity,<br> SelectBasics_EntityOwner| all | Text | <b>dark gray</b>, if *SelectionState* of SelectMgr_Selection is not *SelectMgr_SOS_Activated*,<br> <b>black</b> otherwise |
Context popup menu in tree view:
| Action | Item | Functionality |
| :----- | :----- | :----- |
| Export to ShapeView | AIS_InteractiveObject | Exports TopoDS_Shape of AIS_Interactive presentation to ShapeView plugin. <br> It should be AIS_Shape presentation and ShapeView plugin should be registered in Inspector<br> Dialog about exporting element to ShapeView is shown with a possibility to activate this plugin immediatelly. |
| Show | AIS_InteractiveObject | *Display* presentation in AIS_InteractiveContext |
| Hide | AIS_InteractiveObject | *Erase* presentation from AIS_InteractiveContext |
<b>Update</b>
It synchronizes content of the plugin to the current state of AIS_InteractiveContext.
It updates the presence of items and the current selection for the items.
<b>Selection controls</b>
Selection controls switch on/off the posibility to set selection in the context from VInspector plugin.
| Action | Tree view item | Functionality |
| :----- | :----- | :----- |
| Select Presentations | AIS_InteractiveObject | Calls *AddOrRemoveSelected* of interactive object for the selected item |
| Select Owners | SelectMgr_EntityOwner or <br> SelectMgr_SensitiveEntity | Calls *AddOrRemoveSelected* of SelectMgr_EntityOwner for the selected item |
Please note, that the initial selection in context will be cleared.
If the button is toggled, the button selection is active. Only one button may be toggled at the moment.
<b>History view</b>
At present the History view is under implementation and may be used only in a custom application where Inspector is loaded.
To fill this view, VInspectorAPI_CallBack should be redefined in the application and send signals about some actions applyed to context.
After, the call back should be given as parameter in the plugin.
If done, new items will be created in the history view for each action.
@subsubsection occt_inspector_2_3_3 Elements cooperation
Vinspector markes current selected presentations in AIS_InteractiveContext with blue background in tree items. Use "Update" button to synchronize VInspector selected items state to the context.
It is also possible to perform selection in context using "Selection controls" VInspector. However, it should be performed carefully as
it clears the current selection in AIS_InteractiveContext.
Selection change:
| From | To | Action | Result |
| :----- | :----- | :----- | :----- |
| AIS_InteractiveContext | VInspector | perform selection in AIS_InteractiveContext | Click "Update" button in VInspector and check "Selection" column: <br> AIS_InteractiveContext item has anount of selected objects,<br> some of AIS_InteractiveObject have filled value if it selection happens for this presentation or entity owner of it |
| VInspector | AIS_InteractiveContext | activate one of Selection controls and select one or several elements in tree view | The objects become selected in AIS_InteractiveContext |
@subsection occt_inspector_2_4 ShapeView Plugin
@subsubsection occt_inspector_2_4_1 Overview
@figure{shapeview.png, "ShapeView"}
This plugin visualizes content of TopoDS_Shape in a tree view.
@subsubsection occt_inspector_2_4_2 Elements
@figure{shapeview_elements.svg,"ShapeView Elements",360}
<b>TopoDS_Shape View</b>
Elements of the view are TopoDS_Shape objects.
This shape is exploded into sub-shapes using TopoDS_Iterator of the TopoDS_Shape.
Child sub-shapes are presented in the view as children of the initial shape.
Iterating recursively by all shapes we obtain a tree view of items shown in the ShapeView.
Columns of the View show some information about TopoDS_Shape of the item.
The most informative column is the last column of TopoDS_Vertex and TopoDS_Edge shape types.
For TopoDS_Vertex it contains the point coordinates,
for TopoDS_Edge it contains the first and the last point coordinates, the edge length and some other parameters.
Context popup menu in tree view:
| Action | Functionality |
| :----- | :----- |
| Load BREP file | Opens selected file and appends the result TopoDS_Shape into tree view |
| Remove all shape items | Clears tree view |
| BREP view | Shows text view with BREP content of the selected item. It creates BREP file in temporary directory of the plugin. |
| Close All BREP views | Closes all opened text views |
| BREP directory | Displays folder where temporary BREP files have been stored. |
@subsubsection occt_inspector_2_4_3 Elements cooperation
Selection of one or several items in TopoDS_Shape View creates AIS_Shape presentation for it and displays it in the 3D View.
@section occt_inspector_3 Common controls
@subsection occt_inspector_3_1 3D View
@subsubsection occt_inspector_3_1_1 Overview
@figure{3DView.png, "3D View"}
Control for OCCT 3D viewer. It creates visualization view components with possibilities to perform some
user actions for the view.
@subsubsection occt_inspector_3_1_2 Elements
@figure{3DView_elements.svg,"3DView Elements"}
3D View contains:
| Element | Functionality |
| :----- | :----- |
| 3D view | V3d viewer with mouse events processing |
| Context | choice of another context that should be used in the plugin. <br> It is possible to use the next contexts:<br> Own - context of this view, <br> External - context come in parameters which intializes plugin, <br> None - do not perform visualization at all |
| Multi/Single | Buttons defined what to do with the previous displayed objects: <br> Multi displays new presentations in additional to already displayed, <br> Single removes all previuos displayed presentations |
| Clean | Removes all displayed presentations |
| Fit All,<br> Fit Area,<br> Zoom,<br> Pan,<br> Rotation | Scene manipulation actions |
| Display Mode | Sets *AIS_Shading* or *AIS_WireFrame* display mode for all presentations |
@section occt_inspector_6 TInspectorEXE sample
Inspector functionality can be tried using this sample.
Use *inspector.bat* script file placed in binary directory of OCCT to launch it.
This script accepts the names of plugin's DLL that should be loaded. By default it loads all described above plugins.
@figure{TStandaloneEXE.png, "TStandaloneEXE"}
Click on the Open button shows the dialog to select a file. The user is able to select one of the sample files or load own one.
@figure{TStandaloneEXE_open.png, ""}
Depending on the active plugin, the following files should be selected in the dialog:
OCAF document or STEP files for DFBRowser and BREP files for VInspector and ShapeView plugins.
It is possible to click the file name in the proposed directory, enter it manually or using Browser button.
The last Loading icon becomes enabled if file name is correct.
By default TInspectorEXE opens the next files for plugins:
| Plugin DLL library name | Files |
| :----- | :----- |
| TKDFBrowser | step/screw.step |
| TKVInspector | occ/hammer.brep |
| TKShapeView | occ/face1.brep, <br> occ/face2.brep |
These files are found relatively *CSF_OCCTDataPath*.
Source code of TIspectorEXE is a good sample for @ref occt_inspector_8 "Using Inspector in a custom application".
@section occt_inspector_7 Launch in DRAW Test Harness
TKToolsDraw plugin is created to provide DRAW commands for Qt tools. Use INSPECTOR parameter of @ref occt_draw_1_3_3 "pload"
command to download commands of this library. It contains tinspector command to start Inspector under DRAW.
See more detailed description of the @ref occt_draw_13_1 "tinspector" command.
The simple code to start Inspector with all plugins loaded:
~~~~~
pload INSPECTOR
tinspector
~~~~~
@figure{drawexe_tinspector.png,"tinspector"}
Result of this command is the next:
- all available Plugins are presented in the Inspector. These are @ref occt_inspector_2_2 "DFBrowser", @ref occt_inspector_2_3 "VInspector" and @ref occt_inspector_2_4 "ShapeView".
- DFBrowser is an active plugin
- tree of OCAF is empty.
After, we should create objects in DRAW and update tinspector.
@section occt_inspector_8 Using in a custom application
To use Inspector in an application, the next steps should be done:
* Set dependencies to OCCT and Qt in application (Header and Link)
* Create an instance of TInspector_Communicator.
* Register plugins of interest in the communicator by DLL library name
* Initialize communicator with objects that will be investigated
* Set visible true for commumicator
C++ code is similar:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
#include <inspector/TInspector_Communicator.hxx>
static TInspector_Communicator* MyTCommunicator;
void CreateInspector()
{
NCollection_List<Handle(Standard_Transient)> aParameters;
//... append parameters in the list
if (!MyTCommunicator)
{
MyTCommunicator = new TInspector_Communicator();
MyTCommunicator->RegisterPlugin ("TKDFBrowser");
MyTCommunicator->RegisterPlugin ("TKVInspector");
MyTCommunicator->RegisterPlugin ("TKShapeView");
MyTCommunicator->Init (aParameters);
MyTCommunicator->Activate ("TKDFBrowser");
}
MyTCommunicator->SetVisible (true);
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Plugin | to be initialized by |
| :----- | :----- |
| TKDFBrowser | TDocStd_Application |
| TKVInspector | AIS_InteractiveContext |
| TKShapeView | TopoDS_TShape |
@section occt_inspector_4 Build procedure
By default the Inspector compilation is off.
To compile it, set the <b>BUILD_Inspector</b> flag to "ON". See @ref build_cmake_conf "Configuration process".
When this option is switched On, MS Visual Studio project has an additional tree of folders:
@figure{VStudio_projects.png,"Inspector packages in MS Visual Studio"}
@section occt_inspector_5 Sources and packaging
OCCT sources are extended by the /tools directory.
Distribution of packages participated in plugins:
| Sources packages| Plugin |
| :----- | :----- |
| DFBrowser, <br> DFBrowserPane, <br> DFBrowserPaneXDE, <br> TKDFBrowser | DFBrowser |
| VInspector, <br> TKVInspector | VInspector |
| ShapeView, <br> TKShapeView | ShapeView |
Other packages:
| Sources packages| Used in |
| :----- | :----- |
| TInspectorAPI, <br> TKInspectorAPI | Iterface for connection to plugin. |
| TreeModel, <br> TKTreeView | Items-oriented model to simplify work with GUI tree control. |
| View, <br> TKView | 3D View component |
| TInspector, <br> TKTInspector | Inspector window where plugins are placed |
| ToolsDraw, <br> TKToolsDraw | Plugin for DRAW to start Inspector |
In MSVC studio the separate folder contains Inspector projects.
@section occt_inspector_9 Glossary
* **Component** -- OCCT part, e.g. OCAF, VISUALIZATION, MODELING and others.
* **Plugin** -- library that is loaded in some executable/library. Here, the plugins are:
* DFBrowser,
* ShapeView,
* VInspector.
@subsection occt_attribute_simple_types TDF_Attribute Simple types
Types where the content is a single value
| Type | Kind of value |
| :----- | :----- |
| TDataStd_AsciiString | TDataStd_AsciiString |
| TDataStd_Comment | TCollection_ExtendedString |
| TDataStd_Integer | Standard_Integer |
| TDataStd_Name | TCollection_ExtendedString |
| TDataStd_Real | Standard_Real |
| TDF_Reference | TDF_Label |
| TDF_TagSource | Standard_Integer |
@subsection occt_attribute_list_types TDF_Attribute List types
| Type | Kind of value (container of) |
| :----- | :----- |
| TDataStd_BooleanList | Standard_Boolean |
| TDataStd_ExtStringList | TCollection_ExtendedString |
| TDataStd_IntegerList | Standard_Integer |
| TDataStd_RealList | Standard_Real |
| TDataStd_ReferenceList | TDF_Label |
@subsection occt_attribute_array_types TDF_Attribute Array types
| Type | Kind of value (container of) |
| :----- | :----- |
| TDataStd_BooleanArray | Standard_Boolean |
| TDataStd_ByteArray | Standard_Byte |
| TDataStd_ExtStringArray | TCollection_ExtendedString |
| TDataStd_IntegerArray | Standard_Integer |
| TDataStd_RealArray | Standard_Real |
| TDataStd_ReferenceArray | TDF_Label |
@subsection occt_attribute_xde_tree_node_id XDE tree node ID description
| GUID | Text |
| :----- | :----- |
| XCAFDoc::ShapeRefGUID() | Shape Instance Link |
| XCAFDoc::ColorRefGUID (XCAFDoc_ColorGen) | Generic Color Link |
| XCAFDoc::ColorRefGUID (XCAFDoc_ColorSurf) | Surface Color Link |
| XCAFDoc::ColorRefGUID (XCAFDoc_ColorCurv) | Curve Color Link |
| XCAFDoc::DimTolRefGUID() | DGT Link |
| XCAFDoc::DatumRefGUID() | Datum Link |
| XCAFDoc::MaterialRefGUID() | Material Link |

View File

@@ -1481,7 +1481,7 @@ General types of STEP entities imported by OCCT are listed in the table below:
|Datum_Feature|XCAFDoc_Datum|
|Datum_Target|XCAFDoc_Datum|
Processing of GD&T is realized in accordance with <a href="http://www.cax-if.org/documents/rec_pracs_pmi_v40.pdf">Recommended practices for the Representation and Presentation of Product Manufacturing</a> for AP242.
Processing of GD&T is realized in accordance with <a href="https://www.cax-if.org/documents/rec_pracs_pmi_v40.pdf">Recommended practices for the Representation and Presentation of Product Manufacturing</a> for AP242.
The general restriction is that OCCT STEP Reader imports GD&T assigned only to shapes (faces, edges, vertices, etc) or to shape groups from general shape model i.e. any constructive geometries are not translated as referenced shapes.
#### Dimensions

View File

@@ -17,4 +17,5 @@ OCCT User Guides are organized by OCCT modules:
* @subpage occt_user_guides__xde "Extended Data Exchange (XDE)"
* @subpage occt_user_guides__ocaf "Open CASCADE Application Framework (OCAF)"
* @subpage occt_user_guides__tobj "TObj package"
* @subpage occt_user_guides__test_harness "DRAW Test Harness"
* @subpage occt_user_guides__test_harness "DRAW Test Harness"
* @subpage occt_user_guides__inspector "Inspector"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

View 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

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

View File

@@ -91,6 +91,59 @@ XDE can read and write colors and layers assigned to shapes or their subparts (d
@figure{/user_guides/xde/images/xde_image006.png,"Colors and Layers",240}
@subsection occt_xde_1_7 Geometric Dimensions & Tolerances (GD&T)
GD&T are a type of Product and Manufacturing Information (PMI) that can be either computed automatically by a CAD system,
or entered manually by the user. For detailed information use <a href="https://www.cax-if.org/documents/rec_pracs_pmi_v40.pdf">CAx-IF Recommended Practices
for the Representation and Presentation of Product Manufacturing Information (PMI) (AP242)</a>
XDE can read and write GD&T data of the following types:
* dimensions, such as distance, length, radius and so on;
* geometric tolerances;
* datums, i.e a theoretically exact geometric references, such as point, line or plane, to which toleranced features are related.
XDE supports two presentations of GD&T data:
* semantic presentation, i.e. data is stored in a machine-consumable way and includes all information required to understand the
specification without the aid of any presentation elements;
* tessellated presentation, i.e. data is displayed in a human-readable way.
@subsection occt_xde_1_8 Clipping planes
XDE supports reading from STEP and storing named planes used for clipping.
Currently, XDE supports saving of clipping planes in XBF format only.
XDE provides capabilities for adding, editing and removing clipping planes.
@subsection occt_xde_1_9 Saved views
XDE supports reading from STEP views. Views allow to save information about camera parameters (position, direction, zoom factor, etc.)
and visible shapes, PMIs, used clipping planes and notes. Currently, XDE supports saving of clipping planes in XBF format only.
XDE provides the following view management capabilities:
* add/remove views;
* set view camera parameters;
* set visible shapes, PMIs, used clipping planes and notes.
@subsection occt_xde_1_10 Custom notes
Custom notes is a kind of application-specific data attached to assembly items, their attributes and sub-shapes. Basically, there are simple textual comments, binary data and other application-specific data. Each note is provided with a timestamp and the user who created it.
Notes API provides the following functionality:
* Returns the total number of notes and annotated items;
* Returns labels for all notes and annotated items;
* Creates notes:
- Comment note from a text string;
- Binary data note from a file or byte array;
* Checks if an assembly item is annotated;
* Finds a label for the annotated item;
* Returns all note labels for the annotated item;
* Adds a note to item(s):
- Assembly item;
- Assembly item attribute;
- Assembly item subshape index;
* Removes note(s) from an annotated assembly item; orphan note(s) might be deleted optionally (items without linked notes will be deleted automatically);
* Deletes note(s) and removes them from annotated items;
* Gets / deletes orphan notes.
@section occt_xde_2 Working with XDE
@@ -484,7 +537,7 @@ XDE can read and write colors and layers assigned to shapes or their subparts (d
@figure{/user_guides/xde/images/239_xde_12_400.png,"Motor Head",240}
In an XDE document, colors are managed by the class *XCAFDoc_ColorTool*. This is done with the same principles as for ShapeTool with Shapes, and with the same capability of having a tool on the Main Label, or on any sub-label. The Property itself is defined as an *XCAFDoc_Color*, sub-class of *TDF_Attribute*.
In an XDE document, colors are managed by the class *XCAFDoc_ColorTool*. It works basing on the same principles as ShapeTool works with Shapes. This tool can be provided on the Main Label or on any sub-label. The Property itself is defined as an *XCAFDoc_Color*, sub-class of *TDF_Attribute*.
Colors are stored in a child of the starting document label: it is the second level (0.1.2), while Shapes are at the first level. Each color then corresponds to a dedicated label, the property itself is a Quantity_Color, which has a name and value for Red, Green, Blue. A Color may be attached to Surfaces (flat colors) or to Curves (wireframe colors), or to both. A Color may be attached to a sub-shape. In such a case, the sub-shape (and its own sub-shapes) takes its own Color as a priority.
@@ -607,19 +660,395 @@ To remove a Color and all the references to it (so that the related shapes will
myColors->RemoveColor(ColLabel);
~~~~~
@subsection occt_xde_2_7 Geometric Dimensions & Tolerances (GD&T)
XDE can read and write GD&T assigned to shapes or their subparts (down to the level of faces and edges) to and from STEP formats.
In an XDE document, GD&T are managed by the class *XCAFDoc_DimTolTool*. It works basing on the same principles as ShapeTool works with Shapes. This tool can be provided on the Main Label or on any sub-label. The GD&T entities themselves are defined as the following sub-classes of *TDF_Attribute*:
* *XCAFDoc_Dimension* - for dimensions;
* *XCAFDoc_GeomTolerance* - for geometric tolerances;
* *XCAFDoc_Datum* - for geometric tolerance Datums.
A GD&T type is identified by the attributes listed above, i.e. *XCAFDoc_DimTolTool* methods working with particular entity types check
for presence of the corresponding attributes in passed labels. One can use methods of *XCAFDoc_DimTolTool* beginning with 'Is' for this purpose.
GD&T entities are stored in a child of the starting document label 0.1.4.
Each GD&T entity then corresponds to the dedicated label, the property itself is one of access classes:
* *XCAFDimTolObject_DimensionObject* - for dimensions;
* *XCAFDimTolObject_GeomToleranceObject* - for geometric tolerances;
* *XCAFDimTolObject_DatumObject* - for geometric tolerance Datums.
GD&Ts and Shapes are related to by Graph Nodes.
These definitions are common to various exchange formats, at least for STEP.
@subsubsection occt_xde_2_7_1 Initialization
To query, edit, or initialize a Document to handle GD&Ts of XCAF, use:
~~~~~
Handle(XCAFDoc_DimTolTool) myDimTolTool =
XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
~~~~~
This call can be used at any time. When it is used for the first time, a relevant structure is added to the document. This definition is used for all later GD&T calls and is not repeated for them.
@subsubsection occt_xde_2_7_2 Adding a GD&T
*XCAFDoc_DimTolTool* provides methods to create GD&T 'empty' entities:
* *AddDimension* - for a new dimension;
* *AddGeomTolerance* - for a new geometric tolerance;
* *AddDatum* - for a new geometric tolerance datum.
All methods create a sub-label for the corresponding GD&T entity of the tool master label and attach an attribute specific for the
created entity.
Here is an example of adding a new dimension:
~~~~~
TDF_Label aDimLabel = myDimTolTool->AddDimension();
if (!aDimLabel.IsNull())
{
// error processing
}
~~~~~
A similar approach can be used for other GD&T types.
@subsubsection occt_xde_2_7_3 Editing a GD&T
A newly added GD&T entity is empty. To set its data a corresponding access object should be used as it is demonstrated
below, where the dimension becomes the linear distance between two points.
~~~~~
Handle(XCAFDoc_Dimension) aDimAttr;
aDimLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimAttr);
if (!aDimAttr.IsNull())
{
Handle(XCAFDimTolObjects_DimensionObject) aDimObject = aDimAttr->GetObject();
// set dimension data
aDimObject->SetType(XCAFDimTolObjects_DimensionType_Location_LinearDistance);
aDimObject->SetPoint(thePnt1); // the first reference point
aDimObject->SetPoint2(thePnt2); // the second reference point
aDimObject->SetValue(theValue); // the distance value
//...
aDimAttr->SetObject(aDimObject);
}
~~~~~
A similar approach can be used for other GD&T types.
@subsubsection occt_xde_2_7_4 Linking GD&Ts
To link a GD&T entity with other OCAF labels (e.g. representing shapes) one should use the following methods:
* *SetDimension* - for dimensions;
* *SetGeomTolerance* - for geometric tolerances;
* SetDatum - for geometric tolerance datums.
These methods can take a single label or a sequence of labels. All previous links will be removed.
The example below demonstrates linking of a dimension to sequences of shape labels:
~~~~~
TDF_LabelSequence aShapes1, aShapes2;
aShapes1.Append(aShape11);
//...
aShapes2.Append(aShape21);
//...
aDGTTool->SetDimension(aShapes1, aShapes2, aDimLabel);
~~~~~
In addition, a special method *SetDatumToGeomTol* should be used to link a datum with a geometric tolerance.
@subsubsection occt_xde_2_7_5 Finding GD&Ts and reference shapes
*XCAFDimTolObjects_Tool* class provides basic capabilities for searching GD&Ts linked to shapes.
Using the tool one can get sequences of dimensions, geometric tolerances and datums linked with a shape. A series of related datums is also returned for geometric tolerances.
To get reference shapes for a GD&T entity one can use *GetRefShapeLabel* from *XCAFDoc_DimTolTool*.
*XCAFDoc_DimTolTool* provides methods to get lists of all dimensions, geometric tolerances and datums.
@subsubsection occt_xde_2_7_6 Storing custom data
Every GD&T entity in XDE is represented as a label with attached attribute identifying entity type. All specific data is
stored in sub-labels in standard OCAF attributes, such as *TDataStd_Integer*, *TDataStd_IntegerArray*, *TDataStd_RealArray* and so on.
Sub-label tags are reserved for internal use and cannot be used for storing custom data. The following tag ranges are reserved for
GD&T entities:
* 1 - 17 - for dimensions;
* 1 - 17 - for geometric tolerances;
* 1 - 19 - for datums.
Custom data can be stored in labels with tags beyond the ranges listed above.
@subsection occt_xde_2_8 Clipping planes
In an XDE document, Clipping planes are managed by the class *XCAFDoc_ClippingPlaneTool*. It works basing on the same principles as ShapeTool works with Shapes. This tool can be provided on the Main Label or on any sub-label. Clipping planes are stored in a child of the starting document label 0.1.8, where planes themselves are defined as *TDataXtd_Plane* attribute. *TDataStd_Name* attribute is used for naming.
To query, edit, or initialize a Document to handle clipping planes of XCAF, use:
~~~~~
Handle(XCAFDoc_ClippingPlaneTool) myClipPlaneTool =
XCAFDoc_DocumentTool::ClippingPlaneTool(Doc->Main());
~~~~~
This call can be used at any time. When it is used for the first time, a relevant structure is added to the document.
To add a clipping plane use one of overloaded methods *AddClippingPlane*, e.g.:
~~~~~
gp_Pln aPln = ...
Standard_Boolean aCapping = ...
TDF_Label aClipPlnLbl = myClipPlaneTool->AddClippingPlane(aPln, "Name of plane", aCapping);
if (aClipPlnLbl.IsNull())
{
// error processing
}
~~~~~
To remove a plane use *RemoveClippingPlane* method, e.g.:
~~~~~
if (!myClipPlaneTool->RemoveClippingPlane(aClipPlnLbl))
{
// not removed
}
~~~~~
The plane will not be removed if it is referenced in at least one view.
To change clipping plane and its name use *UpdateClippingPlane* method, e.g.:
~~~~~
gp_Pln aPln = ...
myClipPlaneTool->UpdateClippingPlane(aClipPlnLbl, aPln, "New name of plane");
~~~~~
Capping property can be changed using *SetCapping* method, e.g.:
~~~~~
Standard_Boolean aCapping = ...
myClipPlaneTool->SetCapping(aClipPlnLbl, aCapping);
~~~~~
*XCAFDoc_ClippingPlaneTool* can be used to get all clipping plane labels and to check if a label belongs to the ClippingPlane table, e.g.:
~~~~~
TDF_LabelSequence aClipPlaneLbls;
myClipPlaneTool->GetClippingPlanes(aClipPlaneLbls);
...
for (TDF_LabelSequence::Iterator anIt(aClipPlaneLbls); anIt.More(); anIt.Next())
{
if (myClipPlaneTool->IsClippingPlane(anIt.Value()))
{
// the label is a clipping plane
gp_Pln aPln;
TCollection_ExtendedString aName;
Standard_Boolean aCapping;
if (!myClipPlaneTool->GetClippingPlane(anIt.Value(), aPln, aName, aCapping))
{
// error processing
}
...
}
}
~~~~~
@subsection occt_xde_2_9 Saved views
In an XDE document, Views are managed by the class *XCAFDoc_ViewTool*. It works basing on the same principles as ShapeTool works with Shapes. This tool can be provided on the Main Label or on any sub-label. Views are stored in a child of the starting document label 0.1.7, where a view itself is defined as *XCAFDoc_View* sub-class of *TDF_Attribute*. Views and selected shapes, clipping planes, GD&Ts and notes are related to by Graph Nodes.
To query, edit, or initialize a Document to handle views of XCAF, use:
~~~~~
Handle(XCAFDoc_ViewTool) myViewTool =
XCAFDoc_DocumentTool::ViewTool(Doc->Main());
~~~~~
This call can be used at any time. When it is used for the first time, a relevant structure is added to the document.
To add a view use *AddView* method and an access *XCAFView_Object* object to set camera parameters, e.g.:
~~~~~
TDF_Label aViewLbl = myViewTool->AddView();
if (aViewLbl.IsNull())
{
// error processing
}
Handle(XCAFDoc_View) aViewAttr;
aViewLbl.FindAttribute(XCAFDoc_View::GetID(), aViewAttr);
if (!aViewAttr.IsNull())
{
Handle(XCAFView_Object) aViewObject = aViewAttr->GetObject();
// set view data
aViewObject->SetType(XCAFView_ProjectionType_Parallel);
aViewObject->SetViewDirection(theViewDir);
aViewObject->SetZoomFactor(2.0);
...
aViewAttr->SetObject(aViewObject);
}
~~~~~
To set shapes, clipping planes, GD&Ts and notes selected for the view use one of overloaded *SetView* methods of *XCAFDoc_ViewTool*.
To set only clipping planes one should use *SetClippingPlanes* method.
~~~~~
TDF_LabelSequence aShapes; ...
TDF_LabelSequence aGDTs; ...
myViewTool->SetView(aShapes, aGDTs, aViewLbl);
TDF_LabelSequence aClippingPlanes; ...
myViewTool->SetClippingPlanes(aClippingPlanes, aViewLbl);
~~~~~
To remove a view use *RemoveView* method.
To get all view labels and check if a label belongs to the View table use:
~~~~~
TDF_LabelSequence aViewLbls;
myViewTool->GetViewLabels(aViewLbls);
...
for (TDF_LabelSequence::Iterator anIt(aViewLbls); anIt.More(); anIt.Next())
{
if (myViewTool->IsView(anIt.Value()))
{
// the label is a view
...
}
}
~~~~~
To get shapes, clipping planes, GD&Ts or notes associated with a particular view use the following methods:
* *GetRefShapeLabel* - returns a sequence of associated shape labels;
* *GetRefGDTLabel* - returns a sequence of associated GDT labels;
* *GetRefClippingPlaneLabel* - returns a sequence of associated clipping plane labels;
* *GetRefNoteLabel* - returns a sequence of associated note labels;
* *GetRefAnnotationLabel* - returns a sequence of associated annotated labels.
And vice versa, to get views that display a particular clipping plane, GD&T or note use the following methods:
* *GetViewLabelsForShape* - returns a sequence of associated view labels for a shape;
* *GetViewLabelsForGDT* - returns a sequence of associated view labels for a GD&T;
* *GetViewLabelsForClippingPlane* - returns a sequence of associated view labels for a clipping plane;
* *GetViewLabelsForNote* - returns a sequence of associated view labels for a note;
* *GetViewLabelsForAnnotation* - returns a sequence of associated view labels for an annotated label.
@subsection occt_xde_2_10 Custom notes
In an XDE document, custom notes are managed by the class *XCAFDoc_NotesTool*. It works basing on the same principles as ShapeTool works with Shapes. This tool can be provided on the Main Label or on any sub-label. The Property itself is defined as sub-class of *XCAFDoc_Note* abstract class, which is a sub-class of *TDF_Attribute* one.
Custom notes are stored in a child of the *XCAFDoc_NotesTool* label, at label 0.1.9.1. Each note then corresponds to a dedicated label. A note may be attached to a document item identified by a label, a sub-shape identified by integer index or an attribute identified by GUID. Annotations are stored in a child of the *XCAFDoc_NotesTool* label, at label 0.1.9.2.
Notes binding is done through *XCAFDoc_GraphNode* attribute.
@figure{/user_guides/xde/images/xde_notes001.png,"Structure of notes part of XCAF document",240}
@subsection occt_xde_2_8 Reading and Writing STEP or IGES
@subsubsection occt_xde_2_10_1 Initialization
To query, edit, or initialize a Document to handle custom notes of XCAF, use:
~~~~~
Handle(XCAFDoc_NotesTool) myNotes =
XCAFDoc_DocumentTool::NotesTool(Doc->Main ());
~~~~~
This call can be used at any time. The first time it is used, a relevant structure is added to the document. This definition is used for all later notes calls and will not be repeated for them.
@subsubsection occt_xde_2_10_2 Creating Notes
Before annotating a Document item a note must be created using one of the following methods of *XCAFDoc_NotesTool* class:
- *CreateComment* : creates a note with a textual comment;
- *CreateBinData* : creates a note with arbitrary binary data, e.g. contents of a file.
Both methods return an instance of *XCAFDoc_Note* class.
~~~~~
Handle(XCAFDoc_NotesTool) myNotes = ...
Handle(XCAFDoc_Note) myNote = myNotes->CreateComment("User", "Timestamp", "Hello, World!");
~~~~~
This code adds a child label to label 0.1.9.1 with *XCAFDoc_NoteComment* attribute.
@subsubsection occt_xde_2_10_3 Editing a Note
An instance of *XCAFDoc_Note* class can be used for note editing.
One may change common note data.
~~~~~
myNote->Set("New User", "New Timestamp");
~~~~~
To change specific data one needs to down cast *myNote* handle to the appropriate sub-class:
~~~~~
Handle(XCAFDoc_NoteComment) myCommentNote = Handle(XCAFDoc_NoteComment)::DownCast(myNote);
if (!myCommentNote.IsNull()) {
myCommentNote->Set("New comment");
}
~~~~~
@subsubsection occt_xde_2_10_4 Adding Notes
Once a note has been created it can be bound to a Document item using the following *XCAFDoc_NotesTool* methods:
- *AddNote* : binds a note to a label;
- *AddNoteToAttr* : binds a note to a label's attribute;
- *AddNoteToSubshape* : binds a note to a sub-shape.
All methods return a pointer to *XCAFDoc_AssemblyItemRef* attribute identifying the annotated item.
~~~~~
Handle(XCAFDoc_NotesTool) myNotes = ...
Handle(XCAFDoc_Note) myNote = ...
TDF_Label theLabel; ...
Handle(XCAFDoc_AssemblyItemRef) myRef = myNotes->AddNote(myNote->Label(), theLabel);
Standard_GUID theAttrGUID; ...
Handle(XCAFDoc_AssemblyItemRef) myRefAttr = myNotes->AddNoteToAttr(myNote->Label(), theAttrGUID);
Standard_Integer theSubshape = 1;
Handle(XCAFDoc_AssemblyItemRef) myRefSubshape = myNotes->AddNoteToSubshape(myNote->Label(), theSubshape);
~~~~~
This code adds three child labels with *XCAFDoc_AssemblyItemRef* attribute to label 0.1.9.2. *XCAFDoc_GraphNode* attributes are added to the child labels and note labels.
@subsubsection occt_xde_2_10_5 Finding Notes
To find annotation labels under label 0.1.9.2 use the following *XCAFDoc_NotesTool* methods:
- *FindAnnotatedItem* : returns an annotation label for a label;
- *FindAnnotatedItemAttr* : returns an annotation label for a label's attribute;
- *FindAnnotatedItemSubshape* : returns an annotation label for a sub-shape.
~~~~~
Handle(XCAFDoc_NotesTool) myNotes = ...
TDF_Label theLabel; ...
TDF_Label myLabel = myNotes->FindAnnotatedItem(theLabel);
Standard_GUID theAttrGUID; ...
TDF_Label myLabelAttr = myNotes->FindAnnotatedItemAttr(theLabel, theAttrGUID);
Standard_Integer theSubshape = 1;
TDF_Label myLabelSubshape = myNotes->FindAnnotatedItemSubshape(theLabel, theSubshape);
~~~~~
Null label will be returned if there is no corresponding annotation.
To get all notes of the Document item use the following *XCAFDoc_NotesTool* methods:
- *GetNotes* : outputs a sequence of note labels bound to a label;
- *GetAttrNotes* : outputs a sequence of note labels bound to a label's attribute;
- *GetAttrSubshape* : outputs a sequence of note labels bound to a sub-shape.
All these methods return the number of notes.
~~~~~
Handle(XCAFDoc_NotesTool) myNotes = ...
TDF_Label theLabel; ...
TDF_LabelSequence theNotes;
myNotes->GetNotes(theLabel, theNotes);
Standard_GUID theAttrGUID; ...
TDF_LabelSequence theNotesAttr;
myNotes->GetAttrNotes(theLabel, theAttrGUID, theNotesAttr);
Standard_Integer theSubshape = 1;
TDF_LabelSequence theNotesSubshape;
myNotes->GetAttrSubshape(theLabel, theSubshape, theNotesSubshape);
~~~~~
@subsubsection occt_xde_2_10_6 Removing Notes
To remove a note use one of the following *XCAFDoc_NotesTool* methods:
- *RemoveNote* : unbinds a note from a label;
- *RemoveAttrNote* : unbinds a note from a label's attribute;
- *RemoveSubshapeNote* : unbinds a note from a sub-shape.
~~~~~
Handle(XCAFDoc_Note) myNote = ...
TDF_Label theLabel; ...
myNotes->RemoveNote(myNote->Label(), theLabel);
Standard_GUID theAttrGUID; ...
myRefAttr = myNotes->RemoveAttrNote(myNote->Label(), theAttrGUID);
Standard_Integer theSubshape = 1;
myNotes->RemoveSubshapeNote(myNote->Label(), theSubshape);
~~~~~
A note will not be deleted automatically.
Counterpart methods to remove all notes are available, too.
@subsubsection occt_xde_2_10_7 Deleting Notes
To delete note(s) use the following *XCAFDoc_NotesTool* methods:
- *DeleteNote* : deletes a single note;
- *DeleteNotes* : deletes a sequence of notes;
- *DeleteAllNotes* : deletes all Document notes;
- *DeleteOrphanNotes* : deletes notes not bound to Document items.
All these methods except for the last one break all links with Document items as well.
@subsection occt_xde_2_11 Reading and Writing STEP or IGES
Note that saving and restoring the document itself are standard OCAF operations. As the various previously described definitions enter into this frame, they will not be explained any further.
The same can be said for Viewing: presentations can be defined from Shapes and Colors.
There are several important points to consider:
* Previously defined Readers and Writers for dealing with Shapes only, whether Standard or Advanced, remain unchanged in their form and in their dependencies. In addition, functions other than mapping are also unchanged.
* XDE provides mapping with data other than Shapes. Names, Colors, Layers, Validation Properties (Centroid, Volume, Area), and Assembly Structure are hierarchic with rigid motion.
* XDE provides mapping with data other than Shapes. Names, Colors, Layers, GD&T, Clipping planes, Views, Validation Properties (Centroid, Volume, Area), and Assembly Structure are hierarchic with rigid motion. Currently, Clipping planes and Views writing supported for XBF format only.
* XDE mapping is relevant for use within the Advanced level of Data Exchanges, rather than Standard ones, because a higher level of information is better suited to a higher quality of shapes. In addition, this allows to avoid the multiplicity of combinations between various options. Note that this choice is not one of architecture but of practical usage and packaging.
* Reader and Writer classes for XDE are generally used like those for Shapes. However, their use is adapted to manage a Document rather than a Shape.
The packages to manage this are *IGESCAFControl* for IGES, and *STEPCAFControl* for STEP.
@subsubsection occt_xde_2_8_1 Reading a STEP file
@subsubsection occt_xde_2_11_1 Reading a STEP file
To read a STEP file by itself, use:
~~~~~
@@ -640,7 +1069,7 @@ if ( !reader.Transfer ( doc ) ) {
~~~~~
In addition, the reader provides methods that are applicable to document transfers and for directly querying of the data produced.
@subsubsection occt_xde_2_8_2 Writing a STEP file
@subsubsection occt_xde_2_11_2 Writing a STEP file
To write a STEP file by itself, use:
~~~~~
@@ -661,18 +1090,19 @@ if ( ! writer.Transfer ( Doc, mode ) ) {
IFSelect_ReturnStatus stat = writer.Write(file-name);
~~~~~
@subsubsection occt_xde_2_8_3 Reading an IGES File
@subsubsection occt_xde_2_11_3 Reading an IGES File
Use the same procedure as for a STEP file but with IGESCAFControl instead of STEPCAFControl.
@subsubsection occt_xde_2_8_4 Writing an IGES File
@subsubsection occt_xde_2_11_4 Writing an IGES File
Use the same procedure as for a STEP file but with IGESCAFControl instead of STEPCAFControl.
@subsection occt_xde_2_9 Using an XDE Document
@subsection occt_xde_2_12 Using an XDE Document
There are several ways of exploiting XDE data from an application, you can:
1. Get the data relevant for the application by mapping XDE/Appli, then discard the XDE data once it has been used.
2. Create a reference from the Application Document to the XDE Document, to have its data available as external data.
3. Embed XDE data inside the Application Document (see the following section for details).
4. Directly exploit XDE data such as when using file checkers.
@subsubsection occt_xde_2_91 XDE Data inside an Application Document
@subsubsection occt_xde_2_12_1 XDE Data inside an Application Document
To have XCAF data elsewhere than under label 0.1, you use the DocLabel of XDE. The method DocLabel from XCAFDoc_DocumentTool determines the relevant Label for XCAF. However, note that the default is 0.1.
In addition, as XDE data is defined and managed in a modular way, you can consider exclusively Assembly Structure, only Colors, and so on.

View File

@@ -1,3 +1,4 @@
#include <d3d9.h>
#include <windows.h>
// include required OCCT headers
@@ -619,7 +620,7 @@ public:
}
for (myAISContext()->InitSelected(); myAISContext()->MoreSelected(); myAISContext()->NextSelected())
{
myAISContext()->SetTransparency (myAISContext()->Current(), ((Standard_Real )theTrans) / 10.0, Standard_False);
myAISContext()->SetTransparency (myAISContext()->SelectedInteractive(), ((Standard_Real )theTrans) / 10.0, Standard_False);
}
myAISContext()->UpdateCurrentViewer();
}

View File

@@ -1,4 +1,11 @@
// This file contains a description of the UIKitSample and step-by-step instructions how to build and run it.
OCCT sample for iOS {#occt_samples_ios_uikit}
==================
UIKitSample consists of the Open CASCADE 3D Viewer which provides import of STEP files and toolbar with three buttons.
The first and second buttons serve for import hardcoded STEP files. The third button displays "About" dialog.
The viewer supports zoom, pan and rotate actions. The viewer supports selection of solids as well.
Installation and configuration:
1. Make sure you are running Mac OS version 10.12.1 or above and properly installed XCode version 8.1 or above.
@@ -9,8 +16,3 @@ Installation and configuration:
6. Select the UIKitSample and go to the "Build Settings" tab. After go to the section "Search Paths" and in the field "Header Search Paths" specify a path to the OCCT inc folder. Next in the field "Library Search Paths" specify a path/paths to the OCCT static libraries and Freetype2 static library folders.
7. Connect device and build sample for device or choose simulator as a target and build for simulator.
8. Run sample.
Description:
UIKitSample consists of the Open CASCADE 3D Viewer which provides import of STEP files and toolbar with three buttons.
The first and second buttons serve for import hardcoded STEP files. The third button displays "About" dialog.
The viewer supports zoom, pan and rotate actions. The viewer supports selection of solids as well.

View File

@@ -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

View File

@@ -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" />

View File

@@ -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">

View File

@@ -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 :

View File

@@ -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

View File

@@ -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

View File

@@ -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() {}

View File

@@ -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

View File

@@ -10,7 +10,6 @@
#include <OCC_App.h>
#include "OcafDoc.h"
#include "TOCAF_Application.hxx"
#include <TOcaf_Application.hxx>

View File

@@ -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));
}

View File

@@ -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

View File

@@ -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));
}

Some files were not shown because too many files have changed in this diff Show More