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

Compare commits

...

1162 Commits

Author SHA1 Message Date
ski
b3b55601fb 0025490: Error appears trying to start QT OCCT sample
Separate msvc.bat files were created for each qt sample to avoid errors.
2015-05-08 14:09:54 +03:00
vpa
2cf5ec3f1c 0026139: AIS_InteractiveContext::Display performance regression
Regression with VIS tests in release mode was fixed
2015-05-08 13:50:15 +03:00
apn
2124e769d1 0026194: Sometimes "testgrid" command runs every test many times
Added check for equal test directories in variable CSF_TestScriptsPath.
2015-05-08 10:15:18 +03:00
bugmaster
b767425413 Incrementation of OCCT version up to 6.9.0 2015-05-08 08:56:49 +03:00
vpa
ec81011f5b 0026139: AIS_InteractiveContext::Display performance regression
NCollection_Sequence in SelectMgr_SensitiveEntitySet was replaced by indexed data map
2015-05-08 08:56:33 +03:00
dbp
d4aaad5b82 0026029: Visualization - Poor performance of connected objects
Fix performance issue with SelectMgr_SelectableObjectSet.
2015-05-08 08:54:30 +03:00
apn
9319499b57 Update of unstable Boolean test cases 2015-05-08 08:54:29 +03:00
abv
bf3977c9f9 0026146: Visualization, Select3D_ISensitivePointSet - eliminate crash when clearing selections [only with TBB]
Remove classes Select3D_ISensitivePointSet and Select3D_BoundarySensitivePointSet; use Select3D_SensitivePoly directly for boundary selection.
Make last argument in Select3D_SensitiveFace non-default to ensure that value is always explicitly specified by the caller.
Inherit SelectMgr_FrustumBuilder from Standard_Transient to use normal Handle instead of NCollection_Handle.

Add test case bugs/vis/bug26146.
2015-05-08 08:54:28 +03:00
vpa
2157d6ac63 0026147: Visualization - restore the ability to pick only fully included objects in rectangular selection
2 modes of rectangular selection are available: inclusion-only and overlap-allowing;
The modes can be switched using method AllowOverlapDetection from StdSelect_ViewerSelector3d;
BVH for sensitive entities now builds if there is more than max number of leafs in collection;
Added option -allowoverlap to command vselect;
Interactive rectangular selection in Draw is now available in 2 modes:
- if the user starts selection from upper corners, only fully included objects will be selected;
- if the user starts selection from lower corners, both partially and fully overlapped objects will be selected.
2015-05-08 08:54:08 +03:00
apl
35c4a17c46 0025760: Visualization - precision factor added to ZNear, ZFar in method ZFitAll() of Graphic3d_Camera is not enough
Partial fix: increased epsilon to value reported in #0025670
2015-05-08 08:52:16 +03:00
apn
30a7308729 0026191: Different behavior of "bugs moddata_3 bug23471" test script on Windows and Linux platform
Deleted variable "res" which appears during loading draw
2015-05-08 08:51:49 +03:00
vpa
28ee613b27 0026159: Visualization - revise tolerance implementation for selection
Max tolerance is now applied to all objects and entities by default;
if there is an entity with a lower tolerance, selecting frustum will be recalculated for it.
The ability to set sensitivity for each entity individually is moved to protected section of SelectBasics_SensitiveEntity
SetPixelTolerance from AIS_InteractiveContext now sets custom tolerance that is applied to all sensitives.
Added -unset option to vselprecision command to disable custom tolerances.
Test case for issue #26159
2015-05-08 08:51:48 +03:00
kgv
fe3a29bc9a 0026165: Visualization, TKOpenGl - fix FBO blitting on some mobile devices
OpenGl_Texture::Init() - initialize FBO textures with GL_TEXTURE_WRAP_ set to GL_CLAMP_TO_EDGE,
since some devices do not support GL_REPEAT (which is default) in such combination.
OpenGl_Font::createTexture() - define texture parameters explicitly.

OpenGl_FrameBuffer::Init() create Depth render buffer object instead of texture
on devices which do not support GL_DEPTH24_STENCIL8.
2015-05-08 08:51:47 +03:00
mkv
2ff806d1ab 0025271: Wrong result obtained by solid classifier algorithm
Shape name was corrected
2015-05-08 08:51:46 +03:00
ski
edbca3bf00 0025825: Draw Harness, XSDRAWSTLVRML - drop command tovrml and XSDRAWSTLVRML_ToVRML
Command tovrml was eliminated.
2015-05-08 08:51:45 +03:00
apl
c070aa3915 0026172: Visualization, AIS_LocalContext - locally selected object should not stay in the viewer after deactivation in the local context
Fix for AIS_LocalContext::ClearOutdatedSelection()
Added test case bugs/vis/bug26172
2015-05-08 08:51:44 +03:00
nbv
9d32c463ad 0025890: Intersection algorithm produces curves overlaped
1. Function IntImp_Int2S::ChangePoint() has been added (see cdl for detail information).
2. Attempt to forbidden break WLine if it goes along surface boundary.

Code optimization.

2nd optimization

Test case for issue CR25890
2015-05-08 08:51:43 +03:00
mkv
4946f2d8ef 0025737: GCPnts_TangentialDeflection does not produce points to approximate a knee 2015-05-08 08:51:42 +03:00
abv
0bbdddae85 0026182: Calling ShapeFix_FixSmallFace.RemoveSmallFaces() always leads to stack overflow
Unused methods RemoveSmallFaces() and SplitFaces() are removed.
2015-05-08 08:51:41 +03:00
kgv
a7f510bfae 0026177: Coding rules - eliminate -Wdeprecated-register CLang warnings 2015-05-06 17:25:24 +03:00
kgv
11bf7051d9 0026167: Coding rules - eliminate -Wlogical-not-parentheses CLang warnings in GeomToStep 2015-05-06 17:22:49 +03:00
apl
0df8756310 0026155: TNaming, CurrentShape: order of shapes in Modification compound is unpredictable
CurrentShape(): replace TopTools_MapOfShapes with TopTools_IndexedMapOfShape
Added case: tests/bugs/caf/bug26155
2015-05-06 17:20:22 +03:00
msv
ff0a70a157 0026148: BRep_Tool::IsClosed failed to judge a closed edge on Poly_Triangulation.
The method signature has been changed by adding an argument TopLoc_Location.
2015-05-06 17:14:45 +03:00
ski
2f697f2f74 0026145: Geometry Sample crashes
Unacceptable usage of quantity coefficient was removed.
2015-05-06 17:11:10 +03:00
solomin_s
95db72f1f6 0026128: Visualization, TKOpenGl - fix misprint in external GLX context initialization
OpenGl_Window, GLX - push warning about missing caps in window Visual.
Allow initialization of alien GLX context.

Correction of misprinting
2015-05-06 17:06:59 +03:00
vpa
1c22cc2d27 0026121: Visualization - revise implementation of point sets used in Select3D_SensitiveFace
Code duplication was eliminated by removing constructors with handle input arrays
2015-05-06 17:02:54 +03:00
nbv
7693827d4a 0026118: Implement FastSewing algorithm
1. Develop special sewing algorithm.
2. DRAW-command "fastsewing" has been created (see help for detail information).
3. BRepLib::EnsureNormalConsistency() method has been added (see help for detail information).
4. DRAW-command correctnormals has been created (see help for detail information).

Test cases for this issue.

Correction of elapsed time in test-cases
2015-05-06 16:59:57 +03:00
mkv
97f3106c05 0026010: [OCCT 6.8.0 regression] BRepFeat_SplitShape returns invalid shapes 2015-05-06 16:48:29 +03:00
mkv
63073e35ce 0025844: Command checkshape does not detect error for case when degenerated edge does not contain geometric representation. 2015-05-06 16:44:28 +03:00
ibs
c259930b8e 0025713: CMake configuring procedure should allow to build OCCT as static libraries
BUILD_LIBRARY_TYPE variable added
2015-05-06 16:41:57 +03:00
ysn
2683e647de 0025390: Redesign of Technical Overview
Technical overview refactored; text duplicating information contained in user guides removed.
Some images are regenerated for better presentation.
Problems with formatting and section tags corrected in user guides.
2015-05-06 16:37:26 +03:00
mkv
4422364ec3 0025050: Shape can not be stored to VRML format 2015-05-06 16:34:36 +03:00
isk
29e2c6d247 0022785: Draw Harness - add possibility to remove a text drawn by the command vdrawtext
AIS_TextLabel - new public class to display simple text labels (based on MyTextClass private class from Draw Harness).
ViewerTest::Display() - add more reliable replacement for VDisplayAISObject() with no viewer update flag.

vdrawtext command redesign:
- Use new AIS_TextLabel class instead of private MyTextClass.
- Take object name and allow to clear labels from the Viewer.
- Use parameter name + parameter value syntax instead of strict list of mandatory arguments.
- Use [0; 1] range for colors and accept names.
- Drop redundant argument "isMultiByte".
- Support argument -noupdate to skip Viewer update.

Update test cases to new syntax of vdrawtext.
2015-05-06 15:06:47 +03:00
apv
2b5097c676 Modification due to behavior changes after integration for issues CR26138 and CR24923 2015-05-06 15:03:09 +03:00
bugmaster
16f82a28dc Update overview for OCCT 6.9.0 2015-05-06 15:03:05 +03:00
apn
806b45f2f2 0025670: Incorrect sprops/vprops/lprops check in heal drop_small_solids test cases
Procedure cmpprops in tests/heal/drop_small_solids/end is modified to correctly access top-level variables
2015-05-06 15:03:00 +03:00
ika
31024507f6 0026138: Problems with writing periodic BSplines into IGES
Remove making BSpline surfaces rational,
Add shifting of pcurves on periodic BSpline surfaces,
Add cutting of segment from such surfaces.
Add additional check for need of make segment

Update of test-cases according to the new behavior
2015-05-06 15:02:55 +03:00
drazmyslovich
ec26bf88a2 0024923: BRepMesh_CircleTool produces bad circles
Calculate radius of circumcircle as maximum difference between its center and vertices or reference triangle.
Draw test command OCC25547 has been implemented.
Small optimizations for speed.

Update of test-cases according to the new behaviour

Update of test-cases in group mesh
2015-05-06 15:02:50 +03:00
apn
cd37e04879 0026021: Integration boolean test cases
Added subgroups volumemaker, gdml_private and gdml_public

Moved scripts from public repository ti test cases

Added more TODOs to unstable test cases

Small corrections for unstable test cases
2015-05-06 15:02:44 +03:00
apl
985aed12ec 0026157: NCollection, TCollection packages - IndexedMap, IndexedDataMap ::Substitute() do not allow passing equal key for the same index
cosmetic remarks from msv
2015-05-06 15:02:37 +03:00
jgv
d66bd706ce 0026009: Wrong result of the test blend bfuseblend B7
Correction to avoid infinite loop

Minor correction

Update of test-case for issue #26009

Fix of compiler's warning
2015-04-30 14:47:57 +03:00
pkv
905522eef8 0025880: fuzzy booleans with multiple tools
New features:
class BOPTools_AlgoTools2D
method:
 Standard_Integer BOPTools_AlgoTools2D::AttachExistingPCurve
   (const TopoDS_Edge& aEold,
    const TopoDS_Edge& aEnew,
    const TopoDS_Face& aF,
    const Handle(IntTools_Context)& aCtx)
has been added.

Purpose:
  To attach P-Curve on surface of the face <aF>  from the edge <aEold>
   to the edge <aEnew>
   It returns 0 in case of success.

Changes:
1. class BOPTools_AlgoTools
method:
 Standard_Boolean BOPTools_AlgoTools::IsSplitToReverse
  (const TopoDS_Face& theFSp,
   const TopoDS_Face& theFSr,
   Handle(IntTools_Context)& theContext)

The condition for a point on the surface of a face has been changed.

2. class BOPAlgo_PaveFiller
method:
 void BOPAlgo_PaveFiller::MakePCurves()

The treatment of E/E common bocks has been changed
to use mechanism of attacment P-Curves [ I.1 ]

Test case for issue CR25880
2015-04-30 14:42:59 +03:00
mkv
76a2b7d1fb 0026152: Wrong result obtained by projection algorithm.
Test cases for issue CR26152
2015-04-30 14:37:40 +03:00
mkv
6ab722979b 0026130: PCurve creation failure 2015-04-30 14:34:11 +03:00
msv
46b2b6afa0 0025908: BSpline (U2 < U1) in HLRBRep_HLRToShape
Test case for issue CR25908
2015-04-30 14:26:06 +03:00
Roman Lygin
7b1c1b7cbb 0025971: Near B-Spline knots get merged after saving/restoring (exporting/importing)
Precision used to consider B-Spline knots identical is restricted to be not less than Precision::PConfusion() in Geom2d_BSplineCurve::Segment().

Affected tests updated (improvements)

Test case for issue CR25971
2015-04-30 14:19:34 +03:00
ink
062d7dfd62 0021727: BRepBuilderAPI_Copy (and possibly other similar tools) create new shape in Frozen state
Set the value of flag Frozen to false for shape created in BRepTools_Modifier. If shape is not newly created then value of flag Frozen don't changed.

Test-case for issue #21727
2015-04-30 14:11:07 +03:00
azn
96f3baccc5 0025619: CAST analysis: Avoid classes with a non-empty destructor and not implementing both an assignment operator and a copy constructor
- Fix compilation errors.
- Branch has been rebased on new master.

0025619: CAST analysis: Avoid classes with a non-empty destructor and not implementing both an assignment operator and a copy constructor

The problem has been removed from following classes:
- tsee_entity
- Select3D_PointData
- Standard_MMgrFactory
- ProjLib_OnSurface
- BinomAllocator
- OSD_PerfMeter
- StorageInfo
- OpenGl_UnpackAlignmentSentry
- IntPatch_InfoPD
- TableauRejection
- Draw_View
- BOPTest_Session
- BOPCol_MemBlock
- BSB_T3Bits
- NCollection_Handle::Ptr
- Buffer (from Standard_Boolean Message_MsgFile::LoadFile (const Standard_CString))
2015-04-30 14:04:02 +03:00
nbv
6b5b88d707 0024161: boolean operation hanging
The reason of hanging has been eliminated.

Test case for issue CR24161

Small correction of test case for this issue
2015-04-30 13:58:51 +03:00
pkv
f47b8d2b37 0025937: Failed Cut Edge or Face by HalfSpace.
Addressing the causes of warnings.

Test cases for issue CR25937
2015-04-30 13:51:04 +03:00
emv
5e18f91719 0026112: Exception is raised during perform of General Fuse operation
class BOPAlgo_WireSplitter
method
Standard_Boolean RefineAngle2D(const TopoDS_Vertex& aV,
                               const TopoDS_Edge& aE,
                               const TopoDS_Face& myFace,
                               const Standard_Real aA1,
                               const Standard_Real aA2,
                               Standard_Real& aA)

Protection from null vector.

Test case for issue CR26112
2015-04-30 13:33:11 +03:00
vpa
7ab159522a 0026069: Coding Rules - eliminate new warnings about redundant const qualifier in SelectMgr
SelectMgr_SensitiveEntity is now inherited from Standard_Transient;
Redundant const type qualifiers were removed from selection classes.
2015-04-30 13:26:34 +03:00
dbp
e99a2f7cae 0026081: Visualization, TKOpenGl - rebuild vertex attributes in order to not render large index arrays in OpenGL ES 2015-04-30 13:21:52 +03:00
abv
6ca1fa7070 0026064: distmini of two edges locks up
Method Extrema_GenExtCC::Perform() refactored to avoid very inefficient (O(N^2)) algorithm of removal of duplicate points at the end. Instead, duplications are checked when new points are added.

Fields are initialized in constructors of the class Extrema_GenExtCC; unused instances of generic classes (duplications) ELCC and ELCC2d removed.

Test case bugs/modalg_6/bug26064 added.
2015-04-30 13:19:23 +03:00
ibs
0a66e59dad 0025653: DRAW doesn't use installed 3rdparty libraries from its library folder located in install folder 2015-04-30 13:01:03 +03:00
ysn
ae3eaf7b15 0026087: Review of changes introduced into documentation since ver. 68
Proofreading of documentation changes that were not verified earlier and some date- and version- related changes in the overview.
2015-04-29 14:09:43 +03:00
mkv
ecd58be64a Correction of test-cases according to OCC23150 requirements (new format of checknbshapes command). 2015-04-24 14:56:15 +03:00
apn
7cb899171d Updated script so it creates bottle using fuse operation between body and thread. 2015-04-24 13:25:46 +03:00
apn
08f906ff37 Updated test case so that the output of each "dump" is checked against toroidal surface type (SurfaceOfRevolution is considered as an error). 2015-04-24 13:20:22 +03:00
kgv
38a0206f60 0026025: Visualization, TKOpenGl - stereoscopic output does not work
OpenGl_View::Render() - pass target FBO as parameter.
OpenGl_Context - revise Read/Write buffers management logic, taking into account FBOs.

Graphic3d_Camera::UpdateProjection() - setup LProjection and RProjection
the same as MProjection in case of Projection_MonoLeftEye/Projection_MonoRightEye
for API consistency.
2015-04-24 13:16:27 +03:00
pkv
b85b0b0731 0026080: Wrong result obtained by General Fuse operator.
Changes:
class IntTools_FClass2d
- method:
 TopAbs_State IntTools_FClass2d::Perform
 (const gp_Pnt2d& _Puv,
 const Standard_Boolean RecadreOnPeriodic) const
 has been changed.
 The value of tolerance
For the value of tolerance for classification,
the minimum (among UResolution, VResolution) value is used.

Test case for issue CR26080
2015-04-23 18:22:59 +03:00
isz
c87535af15 0025372: Visualization, TKOpenGl - suppress annoying verbose messages from NVIDIA OpenGL driver
OpenGl_GlCore42 - drop functions unrelated to OpenGL 4.2 core functionality
2015-04-23 17:52:13 +03:00
szy
57c718c4b9 0026061: TNaming_Selector crash in select method.
TNaming_Selector crash in select method.

TNaming_Localizer is protected from not expected input arguments.

Test case for issue CR26061
2015-04-23 17:30:43 +03:00
azv
d721c8eb3d 0024285: Updates of PLib::EvalPolynomial for code acceleration
Functions PLib::EvalPolynomial and PLib::NoDerivativeEvalPolynomial are refactored to allow generation of faster code:
1. Iteration by degree is made in outer loop
2. Avoided pointer arithmetic
3. Recursive templates are used to expand loop by dimension in specific cases (1-15)
2015-04-23 17:03:41 +03:00
emv
681cfe76b0 0026098: The result of General Fuse operation is self-interfered shape
class BOPTools_AlgoTools
method static Standard_Real IntersectCurves2d(const gp_Pnt& aPV,
                                const TopoDS_Face& aF,
                                const Handle(Geom_Surface)& aS,
                                const TopoDS_Edge& aE1,
                                const TopoDS_Edge& aE2)
Check the validity of the 2d intersection before applying the result.

Test case for issue CR26098
2015-04-23 17:00:57 +03:00
jgv
75d1222c2f 0025705: BRepOffsetAPI_MakeOffset regression in 0025298 2015-04-23 16:41:05 +03:00
apn
032158d63d 0024011: Can't offset a wire on face
Added test case bugs/modalg_6/bug24011
2015-04-23 16:38:53 +03:00
apn
b0deeecfba 0021624: BRepFeat_SplitShape produce invalid shape
Added test case bugs/modalg_6/bug21624
2015-04-23 16:34:15 +03:00
apn
35d1221827 0021351: Fail to compute derivatives of offset surface on trimmed surfaces on offsets on CN surfaces
Added test case bugs/modalg_6/bug21351
2015-04-23 16:29:58 +03:00
mkv
f3981c67c3 0022793: Boolean cut operation hangs computer
Test case for issue CR22793
2015-04-23 16:24:37 +03:00
vpa
8d64c0cc40 0026120: Visualization - segmentation fault in AIS_Selection
Added NULL-pointer checks
2015-04-23 16:16:23 +03:00
vpa
b3c433fea3 0026076: Visualization - empty bounding box of a shape after closing local context
Fixed handling of invalid bounding boxes;
Links related to temporary objects are now removed from selection structures;
Test case for issue #26076
2015-04-23 16:12:55 +03:00
vsr
2afd4e9888 0026109: Visualization - add ChangeAxisAspect(int) method to Graphic3d_GraduatedTrihedron 2015-04-23 16:09:35 +03:00
dbv
c3715b7477 0026028: Option for drawing MeshVS_Mesh as closed object
MeshVS_MeshPrsBuilder::DrawArrays now sets IsClosed flag to group according to MeshVS_DA_SupressBackFaces attribute in MeshVS_Drawer
2015-04-23 15:52:22 +03:00
apn
74f91efccd 0025767: "vdisplay" command rises exception
Added test case bugs/vis/bug25767
2015-04-23 15:47:45 +03:00
isz
58978f9bef 0025959: Draw Harness - do not turn on Z-clipping implicitly by mouse ring
Clipping planes now can not be switched on by mouse ring or both right and left mouse buttons. To do this, user has to press certain button or call certain command.
2015-04-23 15:28:42 +03:00
apl
699239e457 0025778: Gradient background will cut view if there is ClipPlane defined. 2015-04-16 16:39:58 +03:00
apn
3eac3f55a5 0022644: Incorrect result of Boolean operations (Fuse, Cut, Common)
Added test cases bugs/modalg_6/bug22644_1 bug22644_2 bug22644_3
2015-04-16 16:37:34 +03:00
apn
cc2b0ec0e3 0023138: BRepAlgoAPI_Fuse produce invalid result
Added test case bugs/modalg_6/bug23138
2015-04-16 16:34:01 +03:00
apn
687574c09d 0021507: Bug in BOP: bcut produces invalid result without notice
Added test case bugs/modalg_6/bug21507
2015-04-16 16:29:48 +03:00
kgv
867acdec68 suppress new warning in BRepTest 2015-04-16 15:41:45 +03:00
dbp
5682a02934 0026085: Shape is not displayed in wireframe mode with activated RayTracing 2015-04-16 14:25:55 +03:00
ski
5ae01c8551 0023150: Command sewing produce incorrect results on test grid csw.
Test for sewing command were updated to check reference information.

Commands for testing were moved to the file src/DrawResources/CheckCommands.tcl

Documentation overview was updated.
2015-04-16 14:14:28 +03:00
apn
67680042bc 0021821: Section of face by plane is not built due to small edges
Added test case bugs/modalg_6/bug21821
2015-04-16 14:10:25 +03:00
isz
0c015ee26c 0025815: Visualization - emit error message in case of texture loading fail
Added error message in case when texture cannot be loaded from file.
2015-04-16 14:06:16 +03:00
ifv
9dfbbfe673 0026038: Wrong result done by extrema for the circle and plane
Test cases for issue CR26038
2015-04-16 14:04:19 +03:00
apl
c40b7d580e 0025672: V3d_View::ConvertToGrid doesn't work for grid if the grid plane's origin is not identical to camera origin.
Patched V3d_View::ConverToGrid method to fix the problem
Added test function "vprivilegedplane" for setting/printing grid plane's coordinate system
Added test case bugs/vis/bug25672 to check the issue
remarks from kgv
Warnings eliminating (similar to CR25671)
2015-04-16 12:42:32 +03:00
dbv
d2d0f00268 0025746: Excessive memory use in math_Matrix
math_DoubleTab now statically allocates only 16 items for Buf
Removed indirection table from math_DoubleTab
2015-04-16 12:35:12 +03:00
apl
f25b82d624 0025671: V3d_View::Convert doesn't work as expected in GRID active mode.
Removed code of converting coordinates to grid in V3d_View::Convert, ::ConvertWithProj methods.
Added test case verifying MoveTo with activated grid and testing V3d_View::Convert, ::ConvertWithProj methods.
Added new test command "vconvert" for testing the conversion methods.

gcc compilation warnings
2015-04-16 11:49:18 +03:00
anv
8ba678133b 0026073: Changes were lost
Fixed small bug with empty handle usage
2015-04-16 11:41:48 +03:00
isz
af65fb1941 0025783: Visualization - allow Z-layer to draw 2D objects and to make it alternative to Overlay and Underlay
Add one more pre-defined Z-layer Graphic3d_ZLayerId_BotOSD.

Define new Transformation Persistence flags Graphic3d_TMF_2d and Graphic3d_TMF_2d_IsTopDown
for displaying objects in screen coordinates.
Anchor point defines angle of the screen to display the object in similar way as for Graphic3d_TMF_TriedronPers.

Extend Draw Harness command vdisplay with new options:
 -overlay as alias for -toposd.
 -underlay and -botosd.
 -noselect to prevent automatic selection activation.
 -dispMode and -highMode to define displaying and highlighting modes.
 -2d, -2dtopdown and -3d to manage displaying in screen coordinates.
 -trsfPers and -trsfPersPos for Transformation Persistence options.

Drop command vsettransmode, replaced by vdisplay.

Correction of test-case bugs vis bug641
2015-04-16 11:35:04 +03:00
ifv
ce77f9998a 0026041: GeomLib_Tool::Parameter method fails
Test-case for issue #26041
2015-04-16 11:30:11 +03:00
isk
494782f666 0026033: Coding rules - get rid from _Handle classes 2015-04-16 11:23:29 +03:00
vpa
7bb2b8293a 0026031: Visualization - fix out-of-range within Select3D_InteriorSensitivePointSet::GetPoints()
Removed unnecessary point duplication at initialization of planar polygons in Select3D_InteriorSensitivePointSet;

Test case for issue #26031
2015-04-16 11:21:17 +03:00
kgv
a21ab2c1a1 0025684: Extend TCollection_ExtendedString with method IsEmpty() 2015-04-16 11:16:55 +03:00
szy
4057f898f7 Backup() is not efficient in TDataStd array attributes.
Documentation improvement for set of attributes using 'Delta'.
2015-04-16 11:14:51 +03:00
dbv
85a975f112 0026035: Length dimension can't be built between two vertices in Draw
Fixed drawing length dimension for two vertices in Draw
Fixed exception when trying to draw length dimension for face-point or point-face
Fixed drawing length dimension for edge-vertex/point and vertex/point-edge
2015-04-16 11:12:48 +03:00
dbp
cf537aacf7 0026070: Ray tracing with reflections is poor on rotated presentation
Test case for issue CR26070
2015-04-16 11:05:37 +03:00
nbv
1d19db8dad 0025593: Number of intersection points for 2d curves depends on the order of arguments in command "2dintersect"
1. Unification of the polygons creation (it is regardless of arguments order).
2. Output of 2dintersect DRAW-command was changed.
3. Geom2dGcc_Circ2d2TanRadGeo.cxx:
     Precise intersection point found by Extrema Curve-Curve method (dot product between every tangent vector and vector between points on two curves must be equal to zero).
4. Some comments have been translated from French to English.

Some test case have been updated.

Changes in accordance with the last remark

Test case for issue CR25593
2015-04-16 10:34:12 +03:00
msv
346cf025a5 0025938: BRepBuilderAPI_Transform is not thread safe
ModifiedShape() method is made returning shape by value, not by reference.
2015-04-16 10:29:09 +03:00
kgv
124ee9c962 0026027: Visualization, AIS_TexturedShape - back face culling option should not be overridden by texturing aspect 2015-04-16 10:27:16 +03:00
isk
42f8ba5632 0025893: Visualization, TKOpenGl - do not use uninitialized memory to track Clipping Planes state 2015-04-16 10:19:11 +03:00
bugmaster
3186aee9b6 Correction of run.bat for VoxelDemo 2015-04-15 21:08:29 +03:00
ski
43ebf89c22 Correction pro file in order Treat WChar_t as Built in Type option was set to true 2015-04-13 16:42:48 +03:00
dbp
f483f2ed11 0025964: Visualization, TKOpenGl - compile RayTracing shader without texturing when no textures in use 2015-04-09 17:55:18 +03:00
dbp
91c60b5790 0025885: Visualization, ray tracing - Improve layer processing
Move Ray-tracing core from OpenGl_Workspace to OpenGl_View.
This patch also contains a number of useful architectural changes.
2015-04-09 17:50:03 +03:00
nbv
5b055f07b3 0025992: Method Geom2dAPI_InterCurveCurve::Segment(...) requires detail revision
1. Comment for IsOpposite() method has been amended.
2. Method Geom2dAPI_InterCurveCurve::Segment() has been rewritten in accordance with the Bug description requirements (described problem has been confirmed).

The reason of the exception has been eliminated
2015-04-09 17:08:03 +03:00
osa
306f5893ea 0026014: Visualization - the IsAutoTriangulated flag is ignored for AIS_ColoredShape
Add test case
2015-04-09 17:00:25 +03:00
msv
d585e74e51 0025394: Make it possible to store/retrieve the list-based attributes containing no items
Attention! It is not a complete patch.

First patch for Binary schema.

Fix for Xml schema.

Patch for the standard schema.

Added new Draw commands to test ExtStringList & ReferenceList attributes.

Fix of a small bug in ReferenceListDriver & improvement of Draw Get commands.

Replace tabs with spaces in newly added lines.

Test cases for issue CR25394
2015-04-09 16:54:46 +03:00
pkv
138ac5300a 0024803: improve the result of v/v interference for two vertices case
Changes:
class BOPTools_AlgoTools
- method:
void BOPTools_AlgoTools::MakeVertex(BOPCol_ListOfShape& aLV,
                                    TopoDS_Vertex& aVnew)
has been changed.
The section for case of two vertices  has been added

Test case for issue CR24803
2015-04-09 16:28:55 +03:00
nbv
6f7c5420f8 0026008: Wrong intersection 2D-curves obtained for pair of faces.
The workaround has been deleted from ProjLib_ComputeApprox.cxx file.

Test case for issue CR26008
2015-04-09 16:12:05 +03:00
nbv
b5ef9d9151 0025742: A partition of 2 shapes stresses a performance issue
1. Algorithm of aStepU1 computing was changed.
2. Interface to allow convert gp_XY(Z) to the math_Vector has been added.
3. Algorithm of point in V-boundaries computing has been changed.
4. Situation when intersection line walks along V-boundary of cylinder(s) is processed better.
5. Intersection lines are created with their individual step along U1 parameter.
6. Points processing has been moved to the assembly level.
7. Extend output of "bfuseblend" and "bcutblend" DRAW-command.
8. New option for "bfuseblend" and "bcutblend" command has been added.

Update Test cases

Test cases for issue CR25742
2015-04-09 15:32:07 +03:00
kgv
536d98e224 0025974: Visualization - fix misprints in method naming of Graphic3d_GraduatedTrihedron
V3d_View::GetGraduatedTrihedron() - return configuration structure directly.

OpenGl_View::TriedronDisplay() - do not re-create trihedron on each Display call.
OpenGl_Trihedron::Setup() - eliminate global variables.
OpenGl_PrimitiveArray::buildVBO() - release old VBOs before initialization.

ViewerTest.hxx - move out package header from .cdl file.
ViewerTest::ParseColor() - add new method to parse color arguments in common way.

vzbufftrihedron - improve command syntax.
vgraduatedtrihedron - add options -drawgrid and -drawaxes.
2015-04-09 15:14:21 +03:00
msv
24e40cc2dc 0026016: BRepPrimAPI_MakeRevol crash
Correctly treat the case when the line is a trimmed curve.

Test-case for issue #26016
2015-04-09 15:05:42 +03:00
ysn
e9e33e9167 0025840: Updating the documentation on Boolean Operations Algorithm
Integration of modifications in Boolean Operations guide. Correction of some errors.

New iteration of modifications and improvements.

Small changes

Correction of compilation warnings, some small semantic changes.

More modifications.
2015-04-09 14:52:13 +03:00
isk
cbca8a98e6 0025932: Visualization - method AIS_Shape::setWidth() should set line width for FaceBoundaryAspect 2015-04-09 14:27:26 +03:00
kgv
447c411576 0026012: Visualization, TKOpenGl - fix misprints in detection of high precision floats within OpenGL ES 2.0 2015-04-09 14:14:45 +03:00
jgv
d1db9125d0 0025894: BRepOffsetAPI_NormalProjection fails to projection an edge on a face
Test cases have been added
Fix for trimmed parameters case.
2015-04-09 14:10:36 +03:00
aml
aa9d6bec4e 0025980: Wrong result obtained by projection algorithm.
Possibility of "projection failed" state to non-analytical and non-spline surfaces added.
Test-case for issue #25980
2015-04-07 18:41:53 +03:00
bugmaster
41ed1ed236 Incrementation of OCCT version up to 6.9.0 2015-04-07 15:38:32 +03:00
vpa
f751596e46 0024623: Visualization - improve selection mechanism
Redesign of selection mechanism:
- implemented 3-level BVH tree for selection;
- selection now calculates in 3D space;
- intersection tests were moved to SelectMgr_BaseFrustum descendants;
- removed .cdl files in Select3D and .cdl related to selection in MeshVS;
- SelectMgr_ViewerSelectors are now shared between local and global contexts;
- transformations of sensitive entities are now stored in SelectMgr_SelectableObject only. Sensitive entities are independent from transformations, it is applied to SelectMgr_SelectingVolumeManager instance only;
- connected and multiple connected interactive objects are now represented by their child objects only for SelectMgr_SelectionManager;
- if interactive object has child objects, they will be stored as separate objects in SelectMgr_SelectionManager now.
- test cases bugs/vis/bug24623_1, bug24623_2, bug24623_3, bug24623_4 to test performance and memory issues.
2015-04-06 17:27:38 +03:00
nbv
7a91ad6e81 0025991: Cyclic dependency in OCCT detected by WOK compiler
The reason of possible exception has been eliminated.
2015-04-06 17:27:12 +03:00
kgv
7e859dff1b 0026004: Visualization - fix misprint in OpenGl_ShaderManager::prepareStdProgramPhong() 2015-04-06 17:26:48 +03:00
dbp
e135a1559a 0025539: Visualization, TKOpenGl - support environmental texture within built-in GLSL programs 2015-04-06 17:26:25 +03:00
kgv
a2e4f780c2 0025973: Visualization, TKOpenGl - support EAGLContext as alternative to NSOpenGLContext
OpenGl_FrameBuffer::InitWithRB() - add method to initialize FBO with Render Buffer Objects.
OpenGl_FrameBuffer::InitWrapper() - add new method to initialize FBO from currently bound in context.

Aspect_RenderingContext - define type explicitly to EAGLContext* / NSOpenGLContext* for ARC.
OpenGl_Window - allow initialization from alien context for OS X / iOS.
2015-04-06 17:26:01 +03:00
kgv
44ef962bdd 0025809: Visualization, TKOpenGl - fix texture mapping in capping
Test case for CR25809

Drop test case (opinion of kgv)
2015-04-06 17:25:36 +03:00
kgv
d4271fe56f 0026002: Visualization, TKOpenGl - detect alien Core Profile context
Read GL_CONTEXT_PROFILE_MASK flags.

Update of unstable test-case
2015-04-06 17:25:12 +03:00
mkv
269e9c3640 0007093: BRepLib::SameParameter() changes tolerance of shape, not involved into operation 2015-04-06 17:24:47 +03:00
aba
e1c659da58 0023484: Visualization, TKOpenGl - primitive arrays to become the only way to render geometry
OpenGl_CappingAlgo - draw capping plane using OpenGl_PrimitiveArray.
OpenGl_Trihedron - draw trihedron in wireframe mode using OpenGl_PrimitiveArray.

~OpenGl_Context() - release Delayed resources occured after deletion of Shared resources.

Draw Harness, vzbufftrihedron command - redraw viewer after trihedron definition.
2015-04-06 17:24:23 +03:00
kgv
dc5bfeae8b 0025990: Visualization - result of compilation depends on the order of included OCCT header files
Define GL_GLEXT_LEGACY within InterfaceGraphic.hxx
2015-04-06 17:23:59 +03:00
vpa
53a701974a 0025935: Visualization, TKV3d, Exception when displaying shell in the viewer
Fixed processing of double precision numbers in Visual3d_View::MinMaxValues;
Test case for issue #25935.
2015-04-06 17:23:35 +03:00
kgv
65360da3db 0025978: Visualization - setup font aliases for Android
Font_FontMgr - setup system fonts "Droid Sans Mono", "Droid Serif" and "Roboto" as aliases to "Courier", "Times" and "Arial" on Android.
Locate Android system fonts in directory "/system/fonts".

OpenGl_Text::FindFont() - print error message on missed fonts.
OpenGl_Text::render() - allow straightforward font rendering on OpenGL ES.

Do not use "Webdings" in tests.
Drop duplicating test case bugs/vis/bug21091_2.
2015-04-06 17:23:11 +03:00
pkv
fd372378a1 0025982: Wrong result obtained by General Fuse operator.
New features:
class BOPTools_AlgoTools2D
- method
void BOPTools_AlgoTools2D::AdjustPCurveOnFace
  (const BRepAdaptor_Surface& aBAS,
   const Standard_Real aFirst,
   const Standard_Real aLast,
   const Handle(Geom2d_Curve)& aC2D,
   Handle(Geom2d_Curve)& aC2DA)
has been added.
The method uses the refetence to BRepAdaptor_Surface object as parameter.
The fact allows to avoid redundant computations such as
BRepTools::UVBounds(....)

Changes:
 class BOPTools_AlgoTools2D
 - method:
void BOPTools_AlgoTools2D::AdjustPCurveOnFace
  (const TopoDS_Face& aF,
   const Standard_Real aT1,
   const Standard_Real aT2,
   const Handle(Geom2d_Curve)& aC2D,
   Handle(Geom2d_Curve)& aC2DA)
 has been changed.
 The changes are to provide the consistency with I.1

- method:
void BOPTools_AlgoTools2D::MakePCurveOnFace
  (const TopoDS_Face& aF,
   const Handle(Geom_Curve)& aC3D,
   const Standard_Real aT1,
   const Standard_Real aT2,
   Handle(Geom2d_Curve)& aC2D,
   Standard_Real& TolReached2d)
 has been changed.
The changes are to provide the consistency with I.1
The restricted surface is used as data for the projection algorithm.

Test case for CR25982
2015-04-02 14:40:48 +03:00
dbp
1804bb99a6 0025833: Visualization, ray tracing - Problems with the backside of triangles
Backside triangles are handled correctly by implementing two-sided lighting model. Ray-tracing shader was optimized (up to 25% performance increase).

Test case for CR25833
2015-04-02 14:38:42 +03:00
kgv
ef0bfc15cc 0025984: Visualization, OpenGl_Workspace::RedrawImmediate() - do not swap buffers within buffersNoSwap option 2015-04-02 14:38:39 +03:00
apn
a3ee6e9f77 0025993: References to enums are wrapped wrong in SWIG Java
Modified Graphic3d/Graphic3d_GraduatedTrihedron.hxx to prevent using const references to enumerations
2015-04-02 14:38:35 +03:00
apn
c1e0171c58 Modified TODOs in test cases bugs modalg_2 bug5805_* with number of issue #25925.
bugs/modalg_4/bug8842_7 - test stable OK (removed TODOs).
bugs/modalg_2/bug453_2 - added ?TODO according to unstable behavior (#25918)
bugs/moddata_1/bug22759 - updated reference data
bugs/vis/bug21091_4 bug21091_5 bug21091_6 bug21091_9 - updated reference data
sewing/tol_100/K1 - added ?TODO according to unstable behavior (test will be removed in #25471)
2015-03-27 16:26:17 +03:00
ski
2905ff1727 0025150: Java wrapper
Workaround name conflicts with OCCT methods for Java wrapper compilation
2015-03-27 11:05:02 +03:00
dbp
b34efb623c 0025710: Visualization - Eliminate all calls of glPushAttrib/glPopAttrib in TKOpenGl 2015-03-26 18:12:13 +03:00
apn
39d24c098c Update test cases bugs/moddata_3/bug25892_04-bug25892_12 for issue 25892 2015-03-26 18:10:35 +03:00
apn
3516cdec44 Update reference data for test case boolean/bsection/R9 2015-03-26 18:10:33 +03:00
mkv
aa5f963b81 Small correction of test case bugs/modalg_5/bug25416_3 for issue CR25416 2015-03-26 18:10:31 +03:00
apn
9aa684edf4 0025987: Integration part of modified unstable test cases
Unstable test cases were reviewed
Modified test cases using checktrend command
Modified test cases for Linux platform
Modified test cases for Debug mode
2015-03-26 18:10:29 +03:00
ifv
7331b4eec9 0025976: Conversion of an offset face from a spline into a spline face hangs-up the application
Tests-case for issue #25976
2015-03-26 18:10:25 +03:00
pkv
0a512187fd 0025969: Wrong result obtained by 2d classifier algorithm.
Class IntTools_FClass2d
method:void IntTools_FClass2d::Init(const TopoDS_Face& aFace,const Standard_Real TolUV)
has been changed.
The cases where derivattive angles that are near to PI are considered as a sign to avoid express treatment for that wire

Test case for CR25969
2015-03-26 18:10:23 +03:00
nbv
d4b867e617 0025416: Wrong section curve
1. Restriction line is processed in IntTools_FaceFace with using methods of GeomInt_IntSS class.
2. Check, if Restriction- and Walking-lines (or Restriction-Restriction lines) are coincided, has been added in IntPatch_ImpPrmIntersection.cxx (at that RLine is considered to be isoline only).
3. Check, if RLine and GLine are coincided, has been added in IntPatch_ImpImpIntersection.cxx.
4. Create new class IntPatch_PointLine, which is inherited from IntPatch_Line.
5. The reason of exception (in DEBUG MODE) has been eliminated.

New test cases for issue #25416 were added.

tests/bugs/modalg_5/bug24650 was modified.
2015-03-26 18:10:21 +03:00
Pawel
2a8523acca 0025954: GeomPlate_Surface::SetBounds formatting/logic mismatch
Corrected logic/formatting discrepancy.
2015-03-26 15:33:11 +03:00
kgv
d44e14e3f6 0025963: Define HashCode() for an unsigned int within armv7 target
OSD_EnvironmentIterator - do not use _NSGetEnviron() on iOS.
2015-03-26 15:31:24 +03:00
Pawel
a3ac9c24ce 0025953: BRepMesh_PairOfIndex::Prepend - variable assigned twice
Corrected index assignment.
Minor change in exception message.
2015-03-26 15:27:25 +03:00
dbp
07039714ab 0025652: Visualization, TKOpenGl - RayTracing initialization failures are not properly reported
Logging of GLSL warnings was added in ray-tracing core.
2015-03-26 15:23:19 +03:00
bugmaster
1dee069608 0025951: Exception in intersection operation.
The reason of the exception has been eliminated.
Integration of testing case for issue 25951

Adjusting test case for Linux platform
2015-03-20 13:31:55 +03:00
aml
1cdee2a613 0025892: Wrong result obtained by projection algorithm.
1) Treatment of case when projection algorithm to BSpline surface return null 2d curve.
2) Changed approximation of next step in default projection algorithm.
3) Special handling of surface of revolution added.

"Period jump" handling evaded in case when curve not computed.

Test cases for issue CR25892

Small correction of test cases fot CR25892
2015-03-19 17:08:25 +03:00
Pawel
4e2914a6a0 0025955: Visualization, AIS_Shape::UnsetColor() - fix storing color in a local variable
Removed the color declaration overriding another variable.
2015-03-19 17:08:24 +03:00
abv
936f43da8a 0025907: Optimization of testdiff command
- Work with strings optimized in Tcl procedures used in testdiff command
- CPU and memory differences output of testdiff command improved to give relative change in percents
- Cumulative CPU and memory differences are output for test grids
- In HTML output of testdiff command, deviations of memory and CPU measurements greater than 5% are colored (red or green)
- Search of image files in testdiff command corrected to avoid wrong attribution of image file to issues starting with the same first letters; images must start with the test case name, optionally followed by underscore or dash and arbitrary text
- Image_Diff tool optimized for the case if images are exactly the same
- Perf_Meter class output corrected, destructor made non-virtual
- DRAW command diffimage optimized to not save diff files if there is no difference
- Tests User Guide updated according to these changes and actual state
2015-03-19 17:08:23 +03:00
ika
08e464755d 0025912: Exception during reading STEP file with GD&T
add missing "break" statements.

Test case for issue CR25912
2015-03-19 17:08:22 +03:00
msv
457b01e271 0025718: Unstable work of tests in bug5805 series
Force stable work of the algorithm BRepAlgo_Loop by replacing DataMap collections with List and/or IndexedDataMap in order to provide iterations independent on the memory addresses.

Avoid uninitialized fields in default constructor of Extrema_POnSurf.

Mark bad tests as known bad.
2015-03-19 17:08:21 +03:00
aml
0a243bb4c4 0025928: Tool for comparing curves
I
New commands:
xdistcc - check distance between two 3d curves.
xdistcc2ds - check distance between 3d curve and curve on surface (projected curve).
xdistc2dc2dss - check distance between two curve on surface (projected curves).

This commands are print 3d distance between input objects built on even grid.
It is supposed that curves have same parametrization.

usage:
xdistcc curve1 curve2 startParam finishParam [NumberOfSamplePoints]
xdistcc2ds c c2d surf startParam finishParam [NumberOfSamplePoints]
xdistc2dc2dss c2d_1 c2d_2 surf1 surf2 startParam finishParam [NumberOfSamplePoints]

II
Doxygen documentation about "xdist" family added.
2015-03-19 17:08:20 +03:00
apn
e4ffdb1e40 0025901: Incorrect work of command OCC181 in test-cases bugs fclasses bug181_1 and bug181_2
Modified test cases
2015-03-19 17:08:19 +03:00
vpa
36132a2ec8 0025933: Visualization - Forward AIS_InteractiveObject::Redisplay() execution to AIS_InteractiveContext
AIS_InteractiveObject::Redisplay now redirects the execution to interactive context;
All calls to AIS_InteractiveObject::Redisplay were replaced by AIS_InteractiveContext::Redisplay

Small correction of test case
2015-03-19 17:08:18 +03:00
aba
a79f67f8d8 0025611: Displaying 'zbufftrihedron' interferes with 'graduatedtrihedron':
- Graphic3d_CGraduatedTrihedron:  moved to Graphic3d_GraduatedTrihedron, added Graphic3d_AxisAspect for axes parameters
- OpenGl_GraduatedTrihedron: moved to primitive arrays, used Graphic3d_GraduatedTrihedron to store parameters
- ViewerTest: corrected vgraduatedtrihedron, added new parameters
- Graphic3d_ArrayOfPrimitives: added AddVertex (Graphic3d_Vec3)
- Graphic3d_GraphicDriver::GraduatedTrihedronMinMaxValues corrected interface
2015-03-19 17:08:16 +03:00
drazmyslovich
41e259eb8b 0025910: The material with 0-density causes errors during writing STEP files
- properly process 0-density material - create STEP density structures if and only if the density is > 0
- properly process 0-density material - create STEP density structures if and only if the density is > 0, but preserve the already mapped structures

Test-case for issue #25910
2015-03-19 17:08:14 +03:00
azn
9bd59d1c5b 0025630: Possible memory leaks in BRepGProp_Vinert and BRepGProp_Sinert
Code refactoring of BRepGProp_Sinert and BRepGProp_Vinert classes.
- All static variables have been removed.
- Common functionality connected with Gauss integration has beem moved from BRepGProp_Sinert and BRepGProp_Vinert classes to the new BRepGProp_Gauss class.

Slight changes in the comments.

Fix compilation error.

Fix Sinert errors. Rebased on new master.

Elimination of constant conditional expression warnings.

Small fix in comment.
2015-03-19 17:08:13 +03:00
apn
dfa0d64a91 0025934: Review PERF test group
Remove perf subgroups which don't contain meaningful check
2015-03-19 15:48:37 +03:00
san
1a6751b196 0025931: Visualization - Possibility to initialize an environment texture by Image_PixMap instance 2015-03-19 15:47:15 +03:00
nbv
c4af16fbf3 0025898: Wrong result obtained by intersection algorithm.
The reason of the exception has been eliminated.

Test case for issue CR25898
2015-03-19 15:46:32 +03:00
ika
7f0b39bec9 0025843: Wire containing degenerated edge is not written to IGES / STEP
add check for edges with null 2D and 3D curves for STEP,
for IGES problem exists only with wires, where non-invalid edge is only one, and it is not the last in wire(fixed).

Test case for issue CR25843
2015-03-19 15:44:45 +03:00
mkv
4dcc5ecb4f Adjusting CPU time for Windows platform 2015-03-13 16:08:46 +03:00
ibs
b12a3e54fc 0025906: Visualization, V3d_View::Rotation() - eliminate erroneous viewer redraw within disabled immediate update
the superfluous view update of Rotation method removed because of used before Rotate method already does immediate update
2015-03-12 12:48:48 +03:00
azn
18ee2939c3 0025751: Eliminate GCC warning -Wunused-but-set-variable in gp_GTrsf2d.cxx for Android build
Exception macros conditions have been fixed.
2015-03-12 12:42:45 +03:00
jgv
0f9f1f4ea0 0025887: Invalid pipe construction
Test-case for issue #25887
2015-03-12 12:36:19 +03:00
szy
095999010f 0025524: XmlTObjDrivers_ModelDriver::Paste will cause crash when saving model. 2015-03-12 12:32:34 +03:00
msv
3062fdf993 0025876: Geom2dAPI_InterCurveCurve returns only one intersection point instead of two intersection points
Extend domain of circle to include all possible solutions.

Test case for issue CR25876

Correct test case

Period 'jump" handling algorithm changed.
2015-03-12 12:30:59 +03:00
jgv
b11a99d9c1 0025858: Incorrect result of open offset on single edge based on BSpline curve
Test-case for issue #25883
2015-03-12 12:28:14 +03:00
kgv
ee51a9fe3a 0025897: Visualization, TKOpenGl - disable FBO blitting after first failure on broken OpenGL context
OpenGl_Context::init() - detect OpenGL 2.0+ broken context by wrong GLSL version string.
Emit error messages when OpenGL context reports version higher than actually exported.

Improve logic of methods drawing Immediate presentations and swapping the Buffers.
OpenGl_Workspace::myTransientDrawToFront - repair functionality of this flag
to always render Immediate Objects into Back Buffer.
OpenGl_Workspace::myHasFboBlit - add new flag to disable FBO blitting after first failure.
2015-03-12 12:23:56 +03:00
aml
77e39787b4 0025841: Incorrect edge displaying
Handling of too big step changed.
Test-case for issue #25841

Small correction in test-case
2015-03-12 12:22:14 +03:00
aml
3629864d0b 0025886: Wrong result obtained by projection algorithm
Usage of current iteration approximation added if necessary.

Test-case for issue #25886
2015-03-12 12:19:31 +03:00
ysn
8d44b0a05f 0025674: Debug dev guide: misprint in Saving and dumping shapes and geometric objects section
Documentation changes and improvements suggested in bugs 25674, 25702 and 25882.
Some corrections for new content in debug.md
2015-03-12 12:14:12 +03:00
bugmaster
458c2c5828 Eliminating problem of TKOpenGl compilation 2015-03-05 17:11:08 +03:00
kgv
4e1523ef0b 0025854: Visualization, TKOpenGl - add option to request Core profile 3.2+
OpenGl_Caps::contextCompatible - new option to request compatibility/core OpenGL profile.
OpenGl_Window - request core profile when requested (WGL and Cocoa).
OpenGl_Context::CheckExtension() - retrieve extensions using glGetStringi().
OpenGl_Context::init() - set backward-compatible functions to NULL within core profile:
core11, core15, core20, core32back, core33back, core41back, core42back, core43back, core44back.
OpenGl_Context::BindDefaultVao() - create default VAO required for core profile.
OpenGl_Context::ReadGlVersion() - make method public.
OpenGl_ShaderManager - create programs using GLSL version 150 when available.
OpenGl_VertexBuffer, OpenGl_ShaderProgram, OpenGl_ShaderObject - use
functions set from core profile instead of compatibility.

TKOpenGl - escape deprecated functionality with runtime checks.

Command vcaps - add option -compatibleProfile to request core/compatibility profile.
NIS_View - prevenr rendering within Core profile (unsupported).

Test case for issue CR25854

Aspect_GraphicCallbackStruct::IsCoreProfile - add new field to the struct for NIS
2015-03-05 16:02:32 +03:00
osa
7f91733552 0025540: Visualization - discretization of the circle differs in shaded and wireframe modes.
1. "HilightDrawer" were added to SelectMgr_SelectableObject.
2. Static drawer in StdSelect_Shape was replaced by class member. It's value is taken from special HilightDrawer of Selectable() object.
3. Computed relative deflection is stored as absolute deflection to be used for sub-shapes.
4. The ColoredShape object was updated to use for sub-shapes relative deflection computed for main shape.
5. Test case was added.

Tuning of test-case bug25532
2015-03-05 15:58:26 +03:00
szy
076b125a90 0025501: TNaming::Displace calls itself recursively with default parameter.
Patch to fix misprint in method Displace ().
2015-03-05 15:51:51 +03:00
pkv
9a5a19e98f 0025818: IntTools_FaceFace throws Standard_ConstructionError with two unbounded planes
Changes:
class IntTools_FaceFace
    - method:
 void IntTools_FaceFace::Perform(const TopoDS_Face& aF1,
                                const TopoDS_Face& aF2)
The treatment of infinite planes was corrected.

Test case for issue CR25818
2015-03-05 15:48:54 +03:00
jgv
ef237d732d 0025858: Incorrect result of open offset on single edge based on BSpline curve
Test cases for issue CR25858
2015-03-05 15:48:49 +03:00
aml
9bf3177ff6 0025861: Wrong result obtained by projection algorithm.
Handling of trimmed analytical surfaces added in extrema PS.

New draw-command and test case for issue CR25861

Correction of test case for issue CR25861
2015-03-05 15:48:45 +03:00
ika
3163e9fdeb 0025013: ShapeFix_Wire tweaks for better results
Recalculate of tolerance before edge cutting

Test case for issue CR25013

add try to increase tolerance before splitting in singularity during PCurve adding.

Correction of test cases for issue CR25013
2015-03-05 14:53:00 +03:00
osa
4c5133866b 0023200: Visualization - prevent multiple triangulating of a shape that already has been triangulated
Add new flag IsAutoTriangulated to Prs3d_Drawer. It is True by default.
If this flag is True automatic re-triangulation with deflection-check logic will be applied.
Else this feature will be disable and triangulation is expected to be computed by application itself.

Change the syntax of vdefalts command.
Add new parameter -autoTriang for check of AutoTriangulated functionality.

Adjust camera position in test case bugs/xde/bug23969
2015-03-05 14:49:32 +03:00
msv
5149c3f34b 0025860: Buffer overrun in TopTools_ShapeSet::Read
Avoid out of array bounds read/write.
2015-03-05 14:41:35 +03:00
asl
1a75746e71 0025808: Visualization - Initialization of Prs3d_PointAspect by custom Graphic3d_AspectMarker3d
the constructor accepting the Graphic3d_AspectMarker3d is implemented

constructor with graphic3d aspect and SetAspect() method are implemented for other aspect classes

patch for non-initialized class fields
2015-03-05 14:40:04 +03:00
apn
50f32555af 0025849: Warnings on OCCT and PRODUCTS in 64-bit
Fix warnings.
2015-03-05 14:15:18 +03:00
ski
e94f2bfb11 0024898: Test "bugs modalg_1 buc60782_1" is incorrect
Test case was corrected.
2015-03-05 14:12:03 +03:00
kgv
a272ed9466 0025552: Visualization - provide the way to hide the object in specified view of the viewer
Add test case bugs/vis/bug25552
OpenGl_GraphicDriver - do not use View and Workspace identifiers on level of entire Driver
2015-03-05 13:52:43 +03:00
kgv
8621cdc2b7 0025867: Visualization, TKOpenGl - fix misprint in transformation persistence math
Added test case
2015-03-05 13:46:26 +03:00
osa
6262338c4b 0025773: Visualization - remove AIS_Drawer class and transfer its Link() logic to Prs3d_Drawer 2015-03-05 13:25:18 +03:00
apn
44b47a9a7e 0025853: Edges disappear or reappear when displaying new edges
Added test case bugs/vis/bug25853
2015-03-05 13:04:41 +03:00
apn
d2094e110f 0025765: Coding rules - clean up code from obsolete macro checks
Unused code paths (including definition of these macros and meaningless comments) were eliminated.
2015-03-05 13:02:27 +03:00
mkv
f1b0b4f9c6 Update for difference of behavior between 32 and 64 bit 2015-02-27 16:51:46 +03:00
pkv
a3476a9fe2 0025847: Wrong result obtained by General Fuse operator.
I. New features:
   No new features.

II. Changes:
II.1. class  BOPAlgo_PaveFiller
- method:
 void BOPAlgo_PaveFiller::PerformEE()
 has been changed.
 Intended set of VE interferences has been refined
 to avoid unwanted overlaps of pave blocks

- method:
 void BOPAlgo_PaveFiller::ForceInterfVE(const Standard_Integer nV,
                                       Handle(BOPDS_PaveBlock)& aPB,
                                       BOPDS_MapOfPaveBlock& aMPBToUpdate)
 The initialization of increment of VE interferences has been added.

- method:
 Standard_Boolean BOPAlgo_PaveFiller::ForceInterfVF
  (const Standard_Integer nV,
   const Standard_Integer nF)
 The initialization of increment of VF interferences has been added.

III. Modified entities:
 packages:
 BOPAlgo

Test case for issue CR25847
2015-02-26 13:40:16 +03:00
aml
9a6ea9c479 0017129: ShapeFix projector makes 2d curves with oscillations
Usage of Projlib added in case of uneven points distribution.
Test cases are updated to the new behavior.
Test cases for issue CR17129

Correction of test case for issue CR17129
2015-02-26 13:30:45 +03:00
aml
43e9197e9a 0025842: Wrong intersection 2D-curves obtained for pair of faces.
Handling of degenerated parametrization (like sphere) added in IWalker.

Minor corrections.

Test case for issue CR25842

Correction of test case for issue CR25842
2015-02-26 13:10:22 +03:00
kgv
760c21c2c4 0025851: Visualization, TKOpenGl - do not use FBO cache when GLSL is unavailable 2015-02-26 12:54:54 +03:00
nbv
c8187bb218 0025828: BRepAlgoAPI_Section fails for a solid and a face depending on order of arguments
If Walking-lines are coincided we kept line, which contains more points or has more length (because it is more precisely, most likely).

Test cases for issue CR25828
Some test cases were changed
2015-02-26 12:52:49 +03:00
ibs
5bffb88282 0025687: Visualization, XCAF - eliminate visual artifacts at the edges of faces
AIS_ColoredShape::Compute() - improve logic to split input shape into Closed and Open volumes
with back-face culling enabled when possible.

Change last argument of method StdPrs_ShadedShape::Add() from boolean to enumeration StdPrs_Volume
which controls parsing of Closed/Open volumes within input shape.
Make method StdPrs_ShadedShape::ExploreSolids() public.

Extend Draw Harness command vaspects with option -setvisibility to hide subshape (using AIS_ColoredShape).
Add new test cases bugs/bis/bug25687_1 and bugs/bis/bug25687_2.

the logic of bindSubShapes method clarified

Conflicts:

	src/AIS/AIS_ColoredShape.cxx

AIS_ColoredShape::dispatchColors considers the colors of displayed shapes in connection with specific priority

the color of specific shape can be exported from several ways: the color of this shape, the color of a compound containing this shape. The highest priority has the color of shape than the one of the compound. The color with highest priority will be displayed.

This patch accounts for the highest priority of the shape color.

For example: w - wire has GREEN color; e - edge has RED color; "w" contains "e"; all edges of "w" will be displayed in GREEN color except "e" edge, it will be displayed in RED color

Added sample generating model of Intel i7-4790 CPU on which the problem can be reproduced
2015-02-26 12:51:24 +03:00
dbv
a1096551c9 0025747: Bad IGES file after import and export with different units
- Fixed ellipse curve radius scale
- Fixed hyperbola curve radius scale
- Fixed plane surface scale
- Fixed cylindrical, conical, spherical, toroidal radius and axis scale

Test case for issue CR25747
2015-02-26 12:48:28 +03:00
aml
31b1749c42 0025246: Make methods Intervals and NbIntervals const in Adaptor3d_Curve and it descendants
Qualifier "const" added to NbIntervals and Intervals functions.

Fixed Standard_OVERRIDE macro description
Removed obsolete method declaration from Standard_Transient.cdl
2015-02-26 12:44:52 +03:00
bugmaster
69f86542ba Small update of pro file 2015-02-25 12:46:07 +03:00
bugmaster
50b994e73f Adjusting testing cases
1. bugs modalg_4 bug697_2 bug697_4 bug697_7 bug697_8 - unstable test cases after fix 25735
Its will be checked and modified during work with performance (issue 24232).

2. bugs mesh bug25364 was tuned for 64-bit Windows.

3. de step_1 ZQ2 fails (64-bit only). Issue 25848 was registered.

4. de step_3 D8 shows improvement (no checkape error) in 64-bit only, this is after 22598 and  issue 25797 was registered for that.

5. draft angle G8 improvement (algorithm produces some shape, but fails on checkshape).

6. perf ncollection A1 was tuned for 64-bit Windows.

7. de step_1 R9 - update reference data (according to 25176)
2015-02-20 17:17:34 +03:00
bugmaster
6ddebb77cb Adding 64 bit configuration 2015-02-20 14:23:58 +03:00
kgv
b86bb3df20 0025091: Visualization - use FBO for layer with immediate objects 2015-02-19 16:13:15 +03:00
jgv
af99433e4e 0025701: Problem with the symmetry of fillet on two perpendicular cylinders
Test case for issue CR25701
2015-02-19 16:10:25 +03:00
emv
bd28b2afac 0024646: Wrong result done by Boolean Operation algorithm
1. class BOPAlgo_PaveFiller
   method void BOPAlgo_PaveFiller::PerformEF()
   Do not create intersection vertices in case if it lies ON the boundary of the face.
2. class IntTools_Context
   New method
    Standard_Boolean IntTools_Context::IsPointInFace
        (const gp_Pnt& aP,
         const TopoDS_Face& aF,
         const Standard_Real aTol)
   has been implemented to check if the point IN the face.
3. class IntTools_EdgeFace
   method
    void IntTools_EdgeEdge::FindBestSolution(const Standard_Real aT11,
                                         const Standard_Real aT12,
                                         const Standard_Real aT21,
                                         const Standard_Real aT22,
                                         Standard_Real& aT1,
                                         Standard_Real& aT2)
   Treatment of the touching cases.

Test cases for issue CR24646

Correction of test cases for issue CR24646
2015-02-19 16:08:20 +03:00
mkv
7ad63454a5 0025729: algorith BRepOffset_MakeOffset(...) produces wrong result for join type Intersection
Test case for issue CR25729
2015-02-19 15:45:59 +03:00
jgv
172f635278 0025753: BRepOffsetAPI_ThruSections fails for a case with open sections
Test cases for issue CR25753

Deleting ttest cases for issue CR25753
2015-02-19 15:43:15 +03:00
isz
7121535194 0025136: Visualization - fix multiple Aspect_ColorScale usage issues
Update documentat if the class.
SetColor() and SetLabel() now work with 0-based index.
SetColor() now checks length of myColors.
Remove methods GetCurrentColor() and GetCurrentLabel().
Methods GetColor() and GetLabel() now can be used to get user-specified and default colors / labels.
Round down IntervNumber in FindColor().
DrawScale() - show labels even for one interval.

Redesign Draw Harness command vcolorscale, provide new options.
Update test cases which use vcolorscale command.
2015-02-19 15:16:19 +03:00
akz
696d81d000 0025823: Self Intersecting wire translated from STEP file
The number of points to divide the edge curve on a segments to compute a
boundary box does not provide a good tolerance. So a resultant boundary
box has an incorrect bounds. As a result the intersection near to a
tangent of curve does not detected.

Test case for issue CR25823
2015-02-19 15:14:57 +03:00
oan
0a9b38ef44 0025806: Stack overflow during meshing
Test-case for issue #25806
2015-02-19 15:11:54 +03:00
vsr
40738f9ad7 0025824: Infinite presentations should be excluded when computing gravity center of the view scene 2015-02-19 15:04:57 +03:00
pkv
59f520585b 0025838: Wrong result obtained by General Fuse operator.
Changes:
class BOPTools_AlgoTools
method:
   Standard_Boolean BOPTools_AlgoTools::GetFaceOff
  (const TopoDS_Edge& theE1,
   const TopoDS_Face& theF1,
   BOPTools_ListOfCoupleOfShape& theLCSOff,
   TopoDS_Face& theFOff,
   Handle(IntTools_Context)& theContext)
   has been changed.
   The comparison of the angles done with the angular tolerance value

Test case for issue CR25838
2015-02-19 15:03:26 +03:00
nbv
e002f1ce5b 0025819: Bad result of BOP cut on valid shapes
1. Algorithm of adjusting parameter to the surface boundaries has been changed.
2. Control First and Last parameters in BRepLib_CheckCurveOnSurface::Compute() function.

Test cases for issue CR25819
2015-02-19 15:00:51 +03:00
apn
7a7e8cf174 0025803: Defective tests contaminating current directory
Test cases save results in directory pointed by ${imagedir} Tcl variable. File names are initialized in scripts and passed to DRAW command as argument.
Tests User Guide was updated.

Remarks were corrected
2015-02-19 14:58:24 +03:00
abv
19589673b3 0025816: IGES export - edges within compound are lost if BREP mode (IGES 5.1) is used
Enable writing wires, edges, and vertices inside compound in IGES in BREP mode.
Create IGES group for compound even if it contains single shape.
2015-02-19 14:50:56 +03:00
azn
859a47c3d1 0025720: Incorrect code of math classes can lead to unpredicted behavior of algorithms
The calling of virtual methods has been removed from constructors & destructors:

math_BissecNewton
math_BrentMinimum
math_FRPR
math_FunctionSetRoot
math_NewtonFunctionSetRoot
math_NewtonMinimum
math_Powell
2015-02-19 14:49:11 +03:00
mkv
8d9052db19 Adjusting testing case due to changes in algorithm behavior. 2015-02-13 17:27:38 +03:00
bugmaster
8750c36a35 Adjusting new testing cases 2015-02-13 17:26:11 +03:00
akz
d088c9c2a1 0025699: Crash while importing STeP file
1) Try-catch block was added on a StepToTopoDS_TranslateEdgeLoop::Init() to
catch Standard_ConstructionError during the Curve conversion.

2) Checks of BSpline curve degree added to prevent construction error when converting edges to BSpline_Curve.
3) Warning message was added in case of incorrect curve definition.

Correct of the test cases according to the new error message added with fix

Conflicts:
	tests/de/step_1/R9

Modified test cases according to new reference data
2015-02-13 17:24:52 +03:00
azn
2c7b466ce6 0025779: Unable to compile math package in WOK
Source files for math cdl-classes have been recovered.
2015-02-13 11:16:05 +03:00
kgv
95b2678c73 0025822: Visualization, TKOpenGl - front material should be used instead of back material within distinguish mode turned off
add test case v3d/glsl/distinguish_off
2015-02-12 15:50:25 +03:00
vpa
42b96b07b5 0025624: Visualization - selection is incorrect in perspective mode in a specific case
Corrected computation of picking line for perspective camera;
Test case for issue 25624.
2015-02-12 15:45:58 +03:00
ifv
873c119ff1 0024255: Regressions in test cases on OCCT vc9 win64 Release
Updated test-cases from branch CR24255_3

0024255: Regressions in test cases on OCCT vc9 win64 Release

Small refactoring.

Fix for CASE bugs modalg_5 bug25298_09: FAILED (error)

Test-cases correction (bugs modalg_5 bugs25804_1, bug25704_2)
2015-02-12 14:40:14 +03:00
nbv
48e653b689 0025772: Boolean operation produces invalid result after patch for 0025416
Test case for this issue was added
2015-02-12 12:42:30 +03:00
ifv
b0091bc929 0025729: algorith BRepOffset_MakeOffset(...) produces wrong result for join type Intersection
Test case for issue CR25729
2015-02-12 12:19:43 +03:00
osa
2c12770c38 0025814: Visualization, Prs3d_WFShape::AddPolygon() - always use polygonal representation from edge regardless from requested deflection 2015-02-12 12:17:00 +03:00
aml
20f319cdb8 0025757: distmini returns wrong solution for ellipse/vertex
Analytical handling of degenerated cases added.

Test case for issue CR25757

Correction of test case for issue CR25757
2015-02-12 12:15:29 +03:00
akz
2bfe59b69c 0024881: Wrong status returned by ShapeFix_Wire::FixGaps3d () operation
The reason of FAIL status of FixGaps3d is that the trying to convert
curves to BSplines on valid edges (both adjacent points saticfy a
precision) leads to skipping of the convertation and gives wrong status.

Check of the gap on adjacent points before try ro convert curves was added.

Test-case for issue #24881
2015-02-12 12:09:00 +03:00
aml
fc0180e5f3 0025810: Exception in extrema operation.
Fixed computation of number of analytic intersection points.

Test case for issue CR25810
2015-02-12 12:05:44 +03:00
emv
e32045fd71 0025801: Some of the commands in BOPTest packages show the execution time without -t key
Unnecessary output of the execution time has been removed in the following commands:
 - bopcheck
 - bfillds
 - bbuild
 - bbop

Test case for issue CR25801
2015-02-12 12:03:29 +03:00
ibs
4af098bab9 0025723: Visualization, TKV3d - the center of rotation should be calculated taking into account structure visibility and selection flags
V3d_View::Gravity() - compute scene bounding box only including highlighted objects, if there are any, to provide context-oriented center of gravity.
Skip hidden objects, if there are any visible.
Do not return any value from this method.

Extend command vrotate with new flags -mouseStart and -mouseMove, to emulate rotation by mouse.

Unused argument theDi of VRotate disabled
2015-02-12 12:00:47 +03:00
pkv
0090ae85ab 0025788: Parallelization of the BOP Builder algorithm on second level
Changes:
class BOPAlgo_Builder
method:
  void BOPAlgo_Builder::FillIn3DParts
  (BOPCol_DataMapOfShapeListOfShape&,
   BOPCol_DataMapOfShapeShape&,
   const BOPCol_BaseAllocator& )
has been optimized and
modified to provide parallel treatment.

Correction of compilation errors

Test cases for issue CR25788
2015-02-12 11:58:02 +03:00
nbv
b70d2b0999 0025782: The result of intersection between two cylinders is incorrect
1. Cylinders are tangent to each other indeed. Fix processes this case.
2. Algorithm of intersection line computing (in case of cylinders with two parallel axes) has been changed.

Test cases for issue CR25782
2015-02-12 11:52:54 +03:00
akz
b8f2022f8c 0025176: STEP Reader - no error report if referenced entity has wrong type.
Interface_CheckTool does not reset the Check added to CheckList now.

Added test case bugs/xde/bug25176

Update reference data in test cases.

Resolving conflicts:
	tests/de/iges_3/A4
	tests/de/step_1/R7
	tests/de/step_2/H1
2015-02-12 11:37:11 +03:00
kgv
eea55df528 0025802: Adopt test cases bugs vis bug10781 and bug23227 for Intel graphics driver
Test case bugs/vis/bug10781 - use smaller line width in test case
(some Intel OpenGL drivers support only 7 pixels-width lines).
Test case bugs/vis/bug23227 - just check triangles count in feedback buffer is not 0.
2015-02-12 11:31:53 +03:00
aba
d584648954 0025804: Visualization, TKOpenGl - specify correct primitives type in OpenGl_BackgroundArray
Remarks: - counterclockwise order of vertices for gradient background array initialization.
2015-02-12 11:29:53 +03:00
kgv
5bd9ed9369 0025800: Visualization, TKOpenGl - disable GL_DITHER explicitly 2015-02-12 11:26:52 +03:00
kgv
348ff75335 0025732: Visualization, TKOpenGl - back face culling should not affect textured font rendering
OpenGl_TextFormatter - orient triangles in normal counter-clockwise order (GL_CCW).

Test-cases for issue #25732
2015-02-12 11:24:37 +03:00
abv
2fe4f8f37b Fix compiler warning and adjust test cases for integration to master 2015-02-06 13:55:31 +03:00
mkv
a41fbc10b9 Update new testing cases after renaming DRAW command 2015-02-06 13:13:42 +03:00
abv
7a5f12021e 0024500: Sudden exit of DRAW after multiple execution of test in cycle
Test commands for #23952 refactored to:
- avoid interaction with Tcl interpreter from thread functions (fixes sudden crash)
- get shapes outside of the thread functions (keeping only code being tested inside)
- run 100 threads instead of 2 (increases chance for data race to exhibit if present)

Linux compilation problems fixed.
2015-02-05 18:09:12 +03:00
kgv
8d3aa19e69 0025768: Visualization, Graphic3d_Structure - do not use invalid bounding boxes of empty groups
Prs3d_WFShape::Add() - do not create empty group

Graphic3d_Structure::minMaxCoord() - do not use uninitialized bounding box

Added test case bugs/vis/bug25768
2015-02-05 18:06:21 +03:00
aml
15b54261a3 0022598: Approximation of p-curve by 2D line
Check whether p-curve being projected can be approximated by straight line is made before full-scale projection, to improve performance.
If straight, pcurve is created as Line only if this will lead to the same range parameterization as 3d curve, otherwise BSpline of degree 1 is created.
Re-approximation of line pcurves by bsplines removed from ShapeFix_Edge.

Test case updating to new behavior.

Added "static" keyword to the  fixPeriodictyTroubles() function.

Update of test-cases according new behavior
2015-02-05 18:02:16 +03:00
ibs
9ccea0c628 0025791: Impossibility to generate projects for Foundation Classes without TclTk/Freetype using CMake
unset redundant variables
2015-02-05 16:37:32 +03:00
ika
0769561063 0024601: Unwanted spheres shown after Step-Import
Add check for outer boundary before creating wire from Vertex Loop on spheres.
Test case for issue CR24601
2015-02-05 16:26:00 +03:00
emv
a4d5c9abcc 0025766: Exception in BRepAlgo_Section
class TopOpeBRep_FacesIntersector
method
static void MergeWLinesIfAllSegmentsAlongRestriction(IntPatch_SequenceOfLine&           theSlin,
						     const Handle(Adaptor3d_HSurface)&  theSurface1,
						     const Handle(Adaptor3d_TopolTool)& theDomain1,
						     const Handle(Adaptor3d_HSurface)&  theSurface2,
						     const Handle(Adaptor3d_TopolTool)& theDomain2,
						     const Standard_Real                theTolArc)
Protection from null wlines has been added.

Test-case for issue #25766
2015-02-05 16:22:29 +03:00
aml
e8746a262f 0025635: Wrong result of 2D-extrema between two ellipsis
Fixed Lipschitz constant evaluation in case co-parametrized objects.
Fixed 2dextrema output.
Testcase update to new behavior.

Test cases for issue CR25635

Correction of test cases for issue CR25635
2015-02-05 16:14:55 +03:00
aml
3f733bb126 0025708: GeomAPI_ExtremaCurveCurve does not return all intersection points in 6.8.0
Added expanding coefficients between neighboring indexes, changed local optimization starting condition.

Test case for issue CR25708
2015-02-05 16:03:36 +03:00
vpa
14a35e5d91 0025675: Visualization - Fix problems and inefficiencies with frustum culling
Removed unnecessary overlap check in traverse of layer items;
Slight optimization of calculations in overlap detection methods in OpenGl_BVHTreeSelector.
2015-02-05 15:54:23 +03:00
msv
c7b59798ca 0024826: Wrapping of parallelisation algorithms
Simple primitives to parallelize loops type "for" and "foreach" were implemented. The primitives encapsulates complete logic for creating and managing parallel context of loops. Moreover the primitives may be a wrapper for some primitives from 3rd-party library - TBB.

To use it is necessary to implement TBB like interface which is based on functors. For example:

Class Functor
{
public:
  void operator() ([proccesing instance]) const
  {
    //...
  }
};

In the body of the operator () should be implemented thread-safe logic of computations that can be performed in parallel context. If parallelized loop iterates on the collections with direct access by index (such as Vector, Array), it is more efficient to use the primitive ParallelFor (because it has no critical section).

All parts of  OCC code which are using tbb were changed on new primitives.

0024826: Wrapping of parallelisation algorithms

Small fix.
2015-02-05 15:51:05 +03:00
ink
a61133c8c7 0025780: checkshape raises an exception Standard_OutOfMemory.
Improved method BRepCheck_Wire::Propagate

Added test cases bugs/modalg_5/bug25780
2015-02-05 15:41:22 +03:00
kgv
298fdbfb18 0025790: Drop unimplemented method ShallowCopy() from TCollection_HSequence.cdl 2015-02-05 15:29:23 +03:00
akz
0bb1f1133c 0025740: VrmlData_Scene::WriteArrIndex() writes extra point indices.
Reason of bug: at the end of writing indices the "buf" was written double times.
Fix: At the end of operation skip one WriteLine.

Test case for issue CR25740
2015-02-05 15:27:45 +03:00
akz
f5fa6b335c 0025279: OCCT fails to read VRML file created by OCCT
1) Version of VRML format is added to VrmlAPI_Writer::Write() and VrmlAPI::Write() to allow use the both versions of the VRML by one writer.
2) Unification of the command to write VRML of both versions. Now "writevrml" command can write VRLM files of v1.0 and v2.0, with wireframe/shaded/both representations. Parameter "Deflection" was removed (next commit will remove meshing, so parameter will be useless).
3) Meshing is removed from writers of both (v1.0 and v2.0) versions. Shaded representation is skipped in case when a mesh does not exist.
Wireframe representation checks the existence of a mesh before. If the mesh exists, a deflected edges are taken from the mesh, otherwise - are generated with the default deflection.
4) Drawing of redundant edges is removed in wireframe representation of VRML version 1.0 (a grid on non-plane surfaces does not match a real edges of TopoDS_Shape and does not match representation in version 2.0).

Test case for issue CR25279
2015-02-05 15:02:52 +03:00
aml
31e0b8e84c 0025770: Possible "invalid memory access"
Memory problems fixed.
2015-02-05 14:56:43 +03:00
aba
0b0320e76e 0025475: Visualization, TKOpenGl - draw background using primitive arrays
Move background arrays to separate class OpenGl_BackgroundArray
for texture and gradient arrays.

Eliminated warnings on Linux
2015-02-05 14:49:28 +03:00
akz
843e15cd32 0025689: IGESCAFControl_Writer crash in constructor.
Cause of bug is that the IGESData_BasicEditor is created before an initialization of IGESControl_Controller::Init(). IGESData_BasicEditor cannot find template "iges", so the model is still empty after creation.

1) Added a default constructor to the IGESData_BasicEditor. Can be initialized via Init() method.
2) Added some null checks in the places, where are provided access to the model (IGESData_BasicEditor's member).
3) Initialization of the IGESData_BasicEditor was placed after initialization if the IGESControl_Controller.
2015-02-05 14:45:46 +03:00
akz
b9c1e44004 0025357: STL writer does not check the given shape for existing triangulation and remeshes shape using BRepMesh in force mode.
StlTransfer.cxx, function StlTransfer::BuildIncrementalMesh(...) fills the StlMesh_Mesh. Before this fix the StlTransfer always force meshing of the passed shape.

Now meshing is completely removed from the StlTransfer. StlWriter can return error status now, for example, if a mesh of the passed shape is empty. In this case file will be not created.

Added test case bugs/xde/bug25357

Avoid the warning on gcc compiler.
Test scripts were modified according to the fix.
     1) bug23192, bug22670, bug23193: removed "isParallel" flag from the command
         arguments. Manually meshing of the shape (as far as meshing was removed
         from STL writer).
     2) bug22898: before the fix writestl always remeshes the shape with a
         deflection, related to the boundery box of the shape. For "hammer" shape
         there is a 38.9076 deflection for mesh. Differences between before writing
         and after reading are dedicated to fact that stl writes triangulation as
         an elements of the spahe (like faces, edges etc.)
2015-02-05 14:40:24 +03:00
pkv
402bfe81c0 0025769: Replace BOPCol_Array1 with NCollection_Vector
New features:
1. class NCollection_BaseVector
    method:
    void SetIncrement(const Standard_Integer aIncrement)
    has been added.
    The method allows to set the size of increment dynamically
    [ not in constructor ].

2 class BOPCol_Array1
    has been removed.

Changes:
1. classes
BOPDS_DS
BOPDS_InterfFF
BOPDS_Iterator
BOPDS_VectorOfCurve
BOPDS_VectorOfFaceInfo
BOPDS_VectorOfIndexRange
BOPDS_VectorOfInterfEE
BOPDS_VectorOfInterfEF
BOPDS_VectorOfInterfEZ
BOPDS_VectorOfInterfFF
BOPDS_VectorOfInterfFZ
BOPDS_VectorOfInterfVE
BOPDS_VectorOfInterfVF
BOPDS_VectorOfInterfVV
BOPDS_VectorOfInterfVZ
BOPDS_VectorOfInterfZZ
BOPDS_VectorOfListOfPassKeyBoolean
BOPDS_VectorOfListOfPaveBlock
BOPDS_VectorOfPoint
BOPDS_VectorOfShapeInfo
BOPAlgo_PaveFiller
QANewModTopOpe_Tools
have been modified to take into account New features: 1 and 2

2. class BOPTest_Chronometer
has been modified to use the driver of the type
OSD_Timer instead OSD_Chronometer
2015-02-05 14:32:08 +03:00
dbp
b990e5579a 0025328: Visualization, TKOpenGl - support text rendering within built-in GLSL programs 2015-02-05 14:28:04 +03:00
ski
bcf50875e3 0025734: GCC warnings in Android build
Warnings were fixed.

Fixed wrong re-initialization.
2015-02-05 14:24:12 +03:00
ski
5fd3308acd 0023971: Possibility to extract all error messages from test log
It is possible now to extract all error messages from test log using key "-errors"

Conflicts:
	src/DrawResources/TestCommands.tcl
2015-02-05 14:14:54 +03:00
ski
433673e0dd 0023992: it's required to save log information of test command in (specified) file
It is possible now to save log information of test command in specified file.

Print information on count of found test cases before tests start

Sound signal at the end of the test

Used meminfo -h to control memory

Titles of differences in images produced by testdiff command were changed.
2015-02-05 14:12:11 +03:00
kgv
e3414ada99 0025758: Visualization, TKOpenGl - texture initialization fails on Intel HD 4600 in ray tracing test
Unbind global texture sampler right after its usage.
2015-02-05 13:53:35 +03:00
kgv
1e99558fbd 0025762: Visualization, TKOpenGl - fix debug assertion within OpenGl_Workspace::UploadRaytraceData() 2015-02-05 12:51:58 +03:00
pkv
34a0b4463a 0025735: Wrong solid is considered as valid by checkshape
Changes:
class BRepCheck_Solid
method:
   void BRepCheck_Solid::Minimum()
has been changed. The treatment of shells with INTERNAL faces has been added.

Added test case bugs/modalg_5/bug25735

Added TODOs in test cases according to issue 25735.
2015-02-05 12:50:14 +03:00
mkv
4e0311752a 0025632: IGES writer looses face orientation
Update new tensing cases for issue
2015-01-30 13:52:25 +03:00
aml
9bf0740bed 0025631: Bounding box is too big for the face.
Fixed start and finish indexes of poles in case of trimmed bspline surface.

Test case for issue CR25631
2015-01-29 15:10:41 +03:00
akz
4366363b04 0023328: Importing VRML files with "scaleOrientation" not possible
If-else blocks "scale" and "scaleOrientation" was swapped. Now the comparing and interpretation of these key-words is correct.

Added test case bugs/xde/bug23328
2015-01-29 14:24:31 +03:00
ika
2157cfd0ef 0025632: IGES writer looses face orientation
Adding reversing surfaces before writing for reversed faces

Test case for issue CR25632
2015-01-29 14:15:30 +03:00
abv
fd3ba7a1d9 0025717: Non reentrant (and hence non-thread-safe) math_RealRandom / _IntegerRandom
Classes math_IntegerRandom and math_RealRandom, and method Random2 in math_Recipes, removed. Class math_BullardGenerator is used instead.
2015-01-29 14:09:42 +03:00
vpa
0bb09048e2 0025679: Visualization, TKOpenGl - View frustum culling clips wrong objects
Corrected area calculation for degenerated AABBs in BVH_Box;
Test case for issue 25679.
2015-01-29 14:05:40 +03:00
imn
df515f16ce 0025743: Add FixMode parameter to DropSmallSolids operator 2015-01-29 14:03:06 +03:00
nbv
b2af2f567d 0025715: Intersection between cylinders produces excess vertices
1. Curve boundaries were more precised.
2. Some test cases were changed in accordance of their new behavior.
3. Code fragment for WLines joining was moved to higher level (for more universal using in the future).

Code was changed in accordance with the last remark.

Added test cases bugs/modalg_5/bug25715_1 bug25715_2 bug25715_3
2015-01-29 14:01:10 +03:00
Roman Lygin
a70f58235a 0025712: Non-deterministic behavior of ShapeFix_Solid
Test-case for issue #25712
2015-01-29 13:58:05 +03:00
jgv
c7806cb6e6 0025704: BRepOffsetAPI_MakeOffset: some customer's cases are processed incorrect
Added test cases bugs/modalg_5/bug25704_1 - bug25704_6
2015-01-29 13:46:54 +03:00
azn
6da30ff153 0025622: CAST analysis: Avoid invocation of virtual Methods of the declared Class in a Constructor or Destructor
The Delete() methods have been deleted from the following classes:
- Adaptor2d_Curve2d
- Adaptor3d_Curve
- Adaptor3d_Surface
- AppBlend_Approx
- AppCont_Function
- AppParCurves_MultiCurve
- AppParCurves_MultiPoint
- ApproxInt_SvSurfaces
- BRepPrim_OneAxis
- BRepSweep_NumLinearRegularSweep
- BRepSweep_Translation
- BRepSweep_Trsf
- DBC_BaseArray
- GeomFill_Profiler
- HatchGen_PointOnHatching
- math_BFGS
- math_FunctionSet
- math_FunctionSetRoot
- math_FunctionWithDerivative
- math_MultipleVarFunction
- math_MultipleVarFunctionWithHessian
- math_MultipleVarFunctionWithGradient
- math_Powell
- math_NewtonMinimum
- math_NewtonFunctionSetRoot
- math_BissecNewton (just add virtual destructor)
- math_FRPR
- math_BrentMinimum (just add virtual destructor)
- OSD_Chronometer
- ProjLib_Projector

Virtual methods Delete() or Destroy() of the transient inheritors is not changed (-> separate issue).
Classes Graphic3d_DataStructureManager and PrsMgr_Presentation without changes.
2015-01-29 13:43:36 +03:00
ysn
e2b55410ff 0023640: Documentation for local sewing with BRepBuilderAPI_Sewing is missing
Fix for bug 23640.
Merging the rest of Technical Overview content into User's Guides.

-Correct UG sections concerning Sewing.
-Correct comments in the code referring to old location of sewing algorithm.
2015-01-29 13:23:12 +03:00
msv
07f1a2e68c 0025719: Boolean operations can crash
Suppress math_BFGS constructor that calls the method Perform that in its turn calls the virtual method IsSolutionReached.
2015-01-29 13:13:59 +03:00
abv
618617fe06 0023880: Integration of grid "ncl" into the new testing system
Function perf_sprint_all_meters added in OSD_PerfMeter.h to allow printing to string buffer rather than stdout. Macro PERF_PRINT_ALL converted to functional form.

Command dperf added in DRAW to print and conditionally reset all meters.
Description of these tools is added in Debug Hints.

Modified output of command QANTestNCollectionPerformance.
Added test case perf/ncollection/A1

Modified ratio of performance to check all platforms

Small correction of test-case for Windows platform
2015-01-29 13:10:14 +03:00
azv
76eeac70cf 0025582: SIGSEGV in thrusections of circle segments
Eliminating regressions

Fixed compilation warning ('di' : unreferenced formal parameter).

Added test bugs/modalg_5/bug25578
2015-01-29 12:55:54 +03:00
azv
52ba6031e8 0025706: SIGSEGV after making existing BSplineCurve rational
1. Eliminated exception after conversion non-rational B-spline to rational
2. Implemented DRAW command setweight to change weights of B-spline
3. Test cases were added
2015-01-29 12:54:52 +03:00
azv
0fe1715f01 0025582: SIGSEGV in thrusections of circle segments
1. Implemented using of trimmed circular curve
2. Added test case
2015-01-29 12:54:49 +03:00
azv
79186c39b3 0025578: SIGSEGV in BRepSweep_Rotation in case of singularities
Eliminating degenerated edges
2015-01-29 12:54:45 +03:00
azv
89bc1237a4 0025711: Get rid of static variable islambdadefined in AppParCurves_BSpGradient.gxx 2015-01-29 12:54:42 +03:00
apn
bdde45c38c 0025346: Wrong result of General Fuse operation
Added test cases bugs/modalg_5/bug25346_1 bug25346_2
2015-01-29 12:28:30 +03:00
István Csanády
dba608bb39 0025692: Boolean operations minor improvement
Method IntPolyh_MaillageAffinage::TriContact() improved so that local objects for detailed analysis are not created if algorithm exits by simple conditions checked at the beginning.
2015-01-29 12:26:39 +03:00
azv
27a6612865 0020040: Difference in treatment of closed curves in BRep_Builder::UpdateEdge
Test case was added

Modified test cases to extract the shell from the solid and check it for closeness.
2015-01-22 17:44:39 +03:00
azv
da72a17c80 0025656: Specification of semantic of Closed flag of an edge
1. Using of the "Closed" flag was unified:
  a) this flag is applicable for TopoDS_Wire and TopoDS_Shell only, because these entities may hedge an area in 2D space or a volume in 3D space correspondingly;
  b) other types of TopoDS shapes are passing over this flag;
  c) changing of this flag should be controlled by high-level algorithms (not BRep_Builder).
2. Implemented verification of the closedness of edges. An edge is closed if and only if its first and last vertices are the same.
3. Test cases were changed according to new behavior.
2015-01-22 17:37:32 +03:00
kgv
a195430212 0024394: Visualization - implement more general way for rendering of immediate objects
Move OpenGl_Structure::myZLayer to base class Graphic3d_CStructure.
Graphic3d_ZLayerId - introduce new pre-defined ZLayers.
Do not clear Depth buffer twice for default ZLayer.

AIS_InteractiveContext::Display() - add new argument AIS_DisplayStatus to specify displaying status.

Drop unused Graphic3d_CPick and related methods.
Drop OpenGl_Structure::myNamedStatus - use flags from parent class Graphic3d_CStructure directly.
OpenGl_LayerList ::ChangeLayer(), ::ChangePriority - fix structure remove from unexpected layer.
Merge class OpenGl_PriorityList into OpenGl_Layer.

PrsMgr_PresentationManager::mySelectionColor - store selection color as field of Presentation Manager.
PrsMgr_Presentation class - do not declare private methods as virtual.
PrsMgr_Presentation::Highlight() - extend method syntax and drop methods ::Color() and ::BoundBox().

PrsMgr_PresentableObject - store ZLayer in presentable object
to display object presentations in required layer directly
(without displaying it in wrong layer first).

test/mesh/end - force re-displaying the shape to compute mesh anew

Test-case for issue
2015-01-22 17:31:53 +03:00
emv
92e24f9d36 0025722: Wrong implementation of SetFuzzyValue method
The following methods
  void BOPAlgo_ArgumentAnalyzer::SetFuzzyValue(const Standard_Real theFuzz)
  void BOPAlgo_Builder::SetFuzzyValue(const Standard_Real theFuzz)
  void BOPAlgo_PaveFiller::SetFuzzyValue(const Standard_Real theFuzz)
  void BOPDS_DS::SetFuzzyValue(const Standard_Real theFuzz)
  void BRepAlgoAPI_BuilderAlgo::SetFuzzyValue(const Standard_Real theFuzz)
  void BRepAlgoAPI_Check::SetFuzzyValue(const Standard_Real theFuzz)
have been corrected.

Added test case bugs/modalg_5/bug25722
2015-01-22 17:26:52 +03:00
pkv
19dcfc1bdb 0025721: Wrong result obtained by Common operator.
Changes:
class BOPTools_Set
 method:
    void BOPTools_Set::Add(const TopoDS_Shape& theS,
                       const TopAbs_ShapeEnum theType)
  has been changed. The treatment of INTERNAL edges has been added.

Added test case bugs/modalg_5/bug25721
2015-01-22 17:21:30 +03:00
ski
8f7e78f4de 0025569: Tests 24959_1 and 24959_2 are not correct
Test cases were corrected to check triangulation deflection
2015-01-22 17:15:08 +03:00
nbv
99c5f9f045 0025697: Regression : Section obtained after command "bsection" in Test Harness is incorrect.
Interface of bopcurves DDRAW-command were extended. Now it is possible to obtain
a) only 3D-curves;
b) 3D-curves and 2D-curves on one of surfaces intersected (surface can be selected);
c) 3D-curves and 2D-curves on every surface intersected.

Use "help bopcurves" to see detail information.

Added test cases bugs/modalg_5/bug25697_1 bug25697_2

Small changes in test case bugs/modalg_5/bug25697_2
2015-01-22 17:12:26 +03:00
emv
1b7ae95146 0025597: Invalid curve on surface in the result of General Fuse operation
1. The tool of computing the max distance between 3D curve and its 2d representation on the face
has been moved from static methods in BOPTools_AlgoTools class to BRepLib_CheckCurveOnSurface class.
2. The tools has been applied to 2d curves built during Boolean Operation
and to some intersection curves.
3. The functions
  Standard_Boolean BOPTools_AlgoTools::ComputeTolerance
    (const TopoDS_Face& theFace,
     const TopoDS_Edge& theEdge,
     Standard_Real& theMaxDist,
     Standard_Real& theMaxPar)
and
  Standard_Boolean IntTools_Tools::ComputeTolerance
    (const Handle(Geom_Curve)& theCurve3D,
     const Handle(Geom2d_Curve)& theCurve2D,
     const Handle(Geom_Surface)& theSurf,
     const Standard_Real theFirst,
     const Standard_Real theLast,
     Standard_Real& theMaxDist,
     Standard_Real& theMaxPar)
have been developed for easy access to BRepLib_CheckCurveOnSurface functionality.

class IntTools_FaceFace
method void IntTools_FaceFace::ComputeTolReached3d()
Case for Plane/BSpline intersection added for treatment.

Test case for issue CR25597

Fix for regression boolean bsection N7.

class BOPAlgo_PaveFiller
method
  void BOPAlgo_PaveFiller::UpdateFaceInfo
    (BOPDS_DataMapOfPaveBlockListOfPaveBlock& theDME,
     const BOPCol_DataMapOfIntegerInteger& theDMV)
Updating Face Info information with new vertices created in PostTreatFF.

Correction boolean/bsection/N2

Updated test cases.
2015-01-22 17:02:30 +03:00
dbp
e2da917a1c 0025703: Visualization - Decrease number of samplers used in ray-tracing mode
This patch eliminates 3 samplers used in ray-tracing mode:

//! Texture buffer of data records of bottom-level BVH nodes.
Handle(OpenGl_TextureBufferArb) myObjectNodeInfoTexture;
//! Texture buffer of minimum points of bottom-level BVH nodes.
Handle(OpenGl_TextureBufferArb) myObjectMinPointTexture;
//! Texture buffer of maximum points of bottom-level BVH nodes.
Handle(OpenGl_TextureBufferArb) myObjectMaxPointTexture;

Serialized data contained in corresponding texture buffers were added to global scene buffers:

//! Texture buffer of data records of high-level BVH nodes.
Handle(OpenGl_TextureBufferArb) mySceneNodeInfoTexture;
 //! Texture buffer of minimum points of high-level BVH nodes.
Handle(OpenGl_TextureBufferArb) mySceneMinPointTexture;
//! Texture buffer of maximum points of high-level BVH nodes.
Handle(OpenGl_TextureBufferArb) mySceneMaxPointTexture;

This modifications leads also to small performance improvement (~2%) due to higher texture cache efficiency. Some modifications in traversal function (GLSL code) also improve performance (~3%).
2015-01-22 16:47:52 +03:00
Roman Lygin
71595c2970 0025694: Change STEP exporter to use AP214 IS by default
Test-case for issue #25694
2015-01-22 16:44:51 +03:00
aml
55b05039a4 0025663: Expand math_PSO class description
math_PSO class description extended.
2015-01-16 17:35:54 +03:00
mkv
6b0e8bd1a9 Adjusting new testing cases 2015-01-16 13:32:55 +03:00
san
89cc29b0b5 0025661: Visualization - AIS_InteractiveContext::Load() is not symmetric to the local context method
Register theIObj in the selection manager to prepare further activation of selection
2015-01-15 18:33:37 +03:00
azn
cbff1e5531 0025621: CAST analysis - Avoid constructors not supplying an initial value for all non-static data members
The constructors of classes from following files have been fixed to ensure that all non-static fields are initialized:

    Adaptor2d_Line2d.cxx
    Adaptor3d_IsoCurve.cxx
    Adaptor3d_OffsetCurve.cxx
    AdvApp2Var_ApproxAFunc2Var.cxx
    AIS_Dimension.cxx
    AIS_InteractiveContext.cxx
    Aspect_DisplayConnection.cxx
    BiTgte_CurveOnEdge.cxx
    BiTgte_CurveOnVertex.cxx
    BRepAdaptor_CompCurve.cxx
    BRepMesh_Circle.hxx
    BRepMesh_Delaun.cxx
    BRepToIGES_BREntity.cxx
    ChFi2d_AnaFilletAlgo.cxx
    ChFi2d_ChamferAPI.cxx
    ChFi2d_FilletAlgo.cxx
    ChFi2d_FilletAlgo.hxx
    Extrema_ExtPExtS.cxx
    Font_FTFont.cxx
    GccEnt_QualifiedCirc.cxx
    Geom2dAdaptor_Curve.cxx
    IGESData_IGESEntity.cxx
    IGESData_DefSwitch.cxx
    IGESToBRep_CurveAndSurface.cxx
    LDOM_XmlReader.cxx
    math_TrigonometricFunctionRoots.cxx
    NCollection_ListNode.hxx
    ProjLib_CompProjectedCurve.cxx
    ProjLib_ComputeApproxOnPolarSurface.cxx
    Select3D_Box2d.hxx
    Select3D_PointData.hxx
2015-01-15 18:22:32 +03:00
aml
460f4f693a 0025662: Project command produce wrong 2dcurve
Concatenation algorithm fixed to work over periodic bspline surfaces.

Test case for issue CR25662
2015-01-15 15:41:26 +03:00
aml
edbf88ba99 0025649: crvtpoints command return wrong deflection in output.
Deflection computation algorithm changed to PSO+NewtonMinimum.

Correction of test case
2015-01-15 15:38:49 +03:00
aml
4f0d73a918 0025660: Project command produce wrong 2dcurve
Changed starting point of Newton optimization.

Test case for issue CR25660
2015-01-15 15:35:07 +03:00
aml
fa89e0828b 0025596: GCPnts_TangentialDeflection creates wrong point distribution for visualization
Added check to small step after adding new point to prevent possible jump over local splash. If check failed then old step restored.
2015-01-15 15:30:12 +03:00
kgv
cd0a63dd7b 0025466: Visualization - Impossible to change the display mode when a local context is opened
Remove irrelevant check from method AIS_InteractiveContext::SetDisplayMode().

Test case for issue CR25466
2015-01-15 15:26:51 +03:00
kgv
63d907e787 0025664: Visualization - dynamic highlighting should not be discarded on re-displaying independent object
Clear list of immediate presentations in proper place - in AIS_LocalContext::manageDetected()
instead of AIS_LocalContext::Unhilight().
2015-01-15 15:18:08 +03:00
pkv
43cb001124 0025700: Ensuring uniform control of the functionalities of the Boolean operations algorithm at the level of DRAW application
Changes:
1.
Class BOPTest_Chronometer
The class definition that depends on TBB has been removed

2.
For the following commands:
>bop s1 s2 [tol]
>bopcommon r s1 s2 [tol]
>bfuse r s1 s2 [tol]
>bcut s1 s2 [tol]
>btuc r s1 s2 [tol]
>bsection r s1 s2 [-n2d/-n2d1/-n2d2] [-na] [tol]
>mkvolume r b1 b2 ... [-c] [-ni] [-s] [tol]
>bopcheck Shape [level of check: 0 - 9] [-t -s] [-tol tol]
>bopargcheck Shape1 [[Shape2] [-F/O/C/T/S/U] [/R|F|T|V|E|I|P|C|S]] [#BF] [-tol tol]
>bfillds [-s -t] [tol]
the syntax has been changed. Parameter [tol] has been removed.

The value "tol"  (i.e. Fuzzy Value) is option for the algorithm.

If it is necessary, the value "tol" can be set by the command:
>bfuzzyvalue value

see
http://tracker.dev.opencascade.org/view.php?id=25614
for more details

3.
For the following commands:
>bopcheck Shape [level of check: 0 - 9] [-t -s] [-tol tol]
>bfillds [-s -t] [tol]
>bbuild r [-s -t]
>bbop r op [-s -t]
the syntax has been changed. Parameter [-s] has been removed.
Parameter [-s] was to provide the sequential mode of the computations.

The mode of the computations is option for the algorithm.

The mode of the computations can be set by the command:
 >brunparallel [0/1]
       1 -sets the parallel mode of the computations
       0 -sets the sequential mode of the computations

see
http://tracker.dev.opencascade.org/view.php?id=25614
for more details
2015-01-15 15:15:47 +03:00
kgv
49297cb6bd 0025691: Visualization, TKService - fix font corruption on FreeType 2.5.4 2015-01-15 15:12:15 +03:00
ski
c857a60abe 0023922: Systematic review of TODO tests
Small corrections for test cases with "TEST INCOMPLETE" result.

TODO statements with "TEST INCOMPLETE" were checked and corrected.
2015-01-15 15:08:27 +03:00
jgv
6504f8cd28 0025657: Bad result of Fillet operation
Comments have been precised.

Test case for issue CR25657

Fix of regression

Additional test case.
2015-01-15 15:05:06 +03:00
ski
97c44f4156 0023626: It's impossible to open files containing localisation characters in the name
Files containing localisation characters can be opened and saved now properly.
2015-01-15 14:59:40 +03:00
ink
bcf045cfdc 0025523: Fail to read back solid written to STEP
Fixed a exception occurred during reading step file

Test case for issue CR25523
2015-01-15 14:53:44 +03:00
vro
c31e0defd7 0025634: Checking of compliance of vertices and pcurve fails
A fix + a checkedge draw-command to check the fix.

Test case for issue CR25634
2015-01-15 14:48:31 +03:00
azn
6a38ff486c 0025616: Avoid Classes using "new" to allocate Instances but not defining a copy Constructor
The empty copy constructor, assignemnts operator, default constructors added to the following classes:
The following classes use “new” function without Handles:
- Select3D_PointData
- BSB_T3Bits
- IntPatch_InfoPD
- LDOM_StringElem
- BinomAllocator
- ProjLib_OnSurface
- Standard_MMgrFactory

Useless declaration of default constructor have been deleted.
2015-01-15 14:42:36 +03:00
dbp
c8be748cd4 0025532: Visualization - fix cross-references between AIS_ConnectedInteractive and connected presentation
New test case added.
2015-01-15 14:38:59 +03:00
dbp
df932fdfb2 0025222: Visualization - provide distance field builder in the Math/BVH package
A distance field is a representation where, at each point within the field, the distance from that point to the closest point on the object is specified.
In addition to distance, other properties may be derived from the distance field, such as the direction to the surface, and when the distance field is signed, we may also determine if the point is internal or external to objects within the domain.
The distance field has been found to be a useful construction within the areas of computer vision, physics, and computer graphics. In particular, distance fields can be used for generating realistic visual effects and collision detection.

Fix compilation warning when using GCC.
2015-01-15 14:34:57 +03:00
kgv
2195ab9699 0025629: Visualization, AIS_InteractiveContext - code clean up
Drop confusing method AIS_InteractiveContext::Clear() which is the same as ::Remove().
AIS_InteractiveContext::Display() - fix double viewer update on first display of presentation.
AIS_InteractiveContext::DisplayedObjects() - fix objects retrieval from local contexts.
AIS_InteractiveContext::Load() - do not bind object twice.

Drop code blocks for debug output.
Code clean up.
2015-01-15 14:04:57 +03:00
san
270675f51e 0025650: Visualization - AIS_Line::ComputeSelection() should not ignore the selection mode argument
Only selection mode 0 is supported from now on.
2015-01-15 14:01:47 +03:00
emv
bc88a67737 0025669: Unable to compile BOPTest package in WOK
package BOPTest
BOPTest_Chronometer.hxx has been added to FILES.
2014-12-27 08:18:30 +03:00
mkv
4cf9a9f0ea Cosmetic update testing cases. 2014-12-26 13:03:40 +03:00
abv
92ac0eb708 0025570: New Tcl sample scripts created for CAD Assistant
Three new sample scripts created during development of CAD Assistant for Android added in samples/tcl:

- Penrose.tcl: creation of Penrose triangle made of boxes resembling ones from OCC logo
- pencil.tcl: creation of colored pencil model
- snowflake.tcl: creation of 2d drawing of snowflake
2014-12-26 12:26:10 +03:00
msv
ee6bb37b7f 0025545: TopLoc_Location::Transformation() provokes data races
Get rid of postponed calculation of transformation.
Remove unused methods.
Add command OCC25545 to reproduce the bug with data races.

- Get rid of C++11 lambda construction
- make code compilable with no HAVE_TBB defined
- add test case bugs/fclasses/bug25545
2014-12-25 18:32:22 +03:00
dbp
312a4043c2 0025351: Visualization - provide pseudo random number generator in OCCT ray-tracing core 2014-12-25 18:24:26 +03:00
vpa
51023771f9 0025627: SelectedShape() and HasSelectedShape() of AIS_InteractiveContext class do not work as expected.
Location calculation in SelectedShape() was corrected;
Method HasSelectedShape() that does not take into account shape decomposition was added.

Test case for issue 25627
2014-12-25 18:22:21 +03:00
ibs
bbe97eddea 0025651: GL_LUMINANCE8 should be defined for android case
GL_LUMINANCE8 defined
2014-12-25 18:20:32 +03:00
oan
f43eff9ffe 0025612: Introduce possibility to disable adaptive reconfigutation of triangles in BRepMesh
Remarks from PDN: flag has been renamed to ControlSurfaceDeflection

Test-case for issue #25612
2014-12-25 18:19:02 +03:00
aml
fe79003598 0025489: GCPnts_TangentialDeflection gives incorrect distribution of points
Fixed last point handling: now we try to check interval with last point instead of adding it to output set of points.

Test case for issue CR25489

Correction of test case for issue CR25489
2014-12-25 18:12:23 +03:00
emv
b9f6147d75 0025600: Wrong result of Boolean FUSE operation
class BOPTools_AlgoTools
1. method Standard_Boolean FindPointInFace(const TopoDS_Face& aF,
                                 const gp_Pnt& aP,
                                 gp_Dir& aDB,
                                 gp_Pnt& aPOut,
                                 Handle(IntTools_Context)& theContext,
                                 GeomAPI_ProjectPointOnSurf& aProjPL,
                                 const Standard_Real aDt,
                                 const Standard_Real aTolE)
Use different method of finding a point in the face if the start and projected points are close to each other.

2. method Standard_Real MinStep3D(const TopoDS_Edge& theE1,
                        const TopoDS_Face& theF1,
                        const BOPTools_ListOfCoupleOfShape& theLCS,
                        const gp_Pnt& aP)
The min 3D step has been increased for the spherical faces.

Test case for issue CR25600

Correction of test case for issue CR25600
2014-12-25 18:09:43 +03:00
nbv
7c32c7c41f 0025531: Difference in intersection result on Windows and Linux platform is very significant
1. Dump of WLine is shown with more precise.
2. Equation solving with more precise.
3. Dump of Multy-line.
4. Code optimization.

Some test cases were updated in accordance with their new behaviour.

Correction of test cases for issue CR25531
2014-12-25 18:06:15 +03:00
emv
ee5ee7db3b 0025625: Boolean COMMON cannot be built
class BOPTools_AlgoTools2D
method void BOPTools_AlgoTools2D::Make2D (const TopoDS_Edge& aE,
                                   const TopoDS_Face& aF,
                                   Handle(Geom2d_Curve)& aC2D,
                                   Standard_Real& aFirst,
                                   Standard_Real& aLast,
                                   Standard_Real& aToler)

Perform projection with the tolerance of the edge.

Test case for issue CR25625
2014-12-25 18:01:31 +03:00
azv
8ac0cf5265 0024411: SplitShape produces shape with incorrectly parameterized periodic 3D curve
Implemented additional flag into Geom_TrimmedCurve to adjust or not the periodic curve inside the first period.

API of Geom2d_TrimmedCurve is changed according to Geom_TrimmedCurve.

Test-case for issue #24411
2014-12-25 17:58:45 +03:00
pkv
49b0c452e2 0025614: Provide API access to the new fuctionalities of Boolean Components
I. New features:
1.1. class BOPAlgo_PaveFiller
method:
void BOPAlgo_PaveFiller::SetArguments(const TopTools_ListOfShape& theLS)
has been added to provide the setting argumemts  through
TopTools_ListOfShape

1.2. class BOPAlgo_Builder
method:
void BOPAlgo_Builder::SetArguments(const TopTools_ListOfShape& theLS)
has been added to provide the setting argumemts  through
TopTools_ListOfShape

1.3. class BOPAlgo_BOP
method:
void BOPAlgo_BOP::SetTools(const TopTools_ListOfShape& theLS)
has been added to provide the setting tools through
TopTools_ListOfShape

1.4. class BRepAlgoAPI_BuilderAlgo
construcror:
BRepAlgoAPI_BuilderAlgo::BRepAlgoAPI_BuilderAlgo
  (const BOPAlgo_PaveFiller& aPF)
has been added to provide the construction
of the object using BOPAlgo_PaveFiller object

method:
void BRepAlgoAPI_BuilderAlgo::SetArguments
 (const TopTools_ListOfShape& theLS)
has been added to provide the setting argumemts

method:
const TopTools_ListOfShape& BRepAlgoAPI_BuilderAlgo::Arguments()const
has been added to provide access to the argumemts

1.5. class BRepAlgoAPI_BooleanOperation
method:
void BRepAlgoAPI_BooleanOperation::SetTools
  (const TopTools_ListOfShape& theLS)
has been added to provide the setting tools

method:
const TopTools_ListOfShape& BRepAlgoAPI_BooleanOperation::Tools()const
has been added to provide access to the tools

1.6. class BRepAlgoAPI_Common
construcror:
BRepAlgoAPI_Common::BRepAlgoAPI_Common
(const BOPAlgo_PaveFiller& aPF)
has been added to provide the construction
of the object using BOPAlgo_PaveFiller object

1.7. class BRepAlgoAPI_Cut
construcror:
BRepAlgoAPI_Cut::BRepAlgoAPI_Cut
(const BOPAlgo_PaveFiller& aPF)
has been added to provide the construction
of the object using BOPAlgo_PaveFiller object

1.8. class BRepAlgoAPI_Fuse
construcror:
BRepAlgoAPI_Fuse::BRepAlgoAPI_Fuse
(const BOPAlgo_PaveFiller& aPF)
has been added to provide the construction
of the object using BOPAlgo_PaveFiller object

1.9. class BRepAlgoAPI_Section
construcror:
BRepAlgoAPI_Section::BRepAlgoAPI_Section
(const BOPAlgo_PaveFiller& aPF)
has been added to provide the construction
of the object using BOPAlgo_PaveFiller object

1.10. class BOPTest
method:
void BOPTest::APICommands(Draw_Interpretor& theCommands)
has been added to provide tcl commands to launch the algorithms
implemented in BRepAlgoAPI package using DRAWEXE application.

Commands:
 >bapibuild r
   performs General Fuse algorithm.
     r -the result of the operation

 >bapibop r type
   performs Boolean Operation agorithm
      r -the result of the operation
      type -type of the operation:
        0-common
        1-fuse
        2-cut
        3-cut21
        4-section

method:
void BOPTest::OptionCommands(Draw_Interpretor& theCommands)
has been added to provide tcl commands to set/get the options that is
necessary for the algorithms implemented in BRepAlgoAPI package.

Commands:
 >boptions
   dump the state of current options

  >brunparallel [0/1]
   1 -sets the parallel mode of the computations
   0 -sets the sequential mode of the computations

  >bfuzzyvalue value
    sets the fuzzy value

-------------------------------------------------------------------------------------------------------------
II. Changes:
II.1. class BRepAlgoAPI_BuilderAlgo
methods:
const TopTools_ListOfShape& BRepAlgoAPI_BuilderAlgo::Generated
  (const TopoDS_Shape& aS)
const TopTools_ListOfShape& BRepAlgoAPI_BuilderAlgo::Modified
  (const TopoDS_Shape& aS)
Standard_Boolean BRepAlgoAPI_BuilderAlgo::IsDeleted
  (const TopoDS_Shape& aS)
Standard_Boolean BRepAlgoAPI_BuilderAlgo::HasModified() const
Standard_Boolean BRepAlgoAPI_BuilderAlgo::HasGenerated() const
Standard_Boolean BRepAlgoAPI_BuilderAlgo::HasDeleted() const
has been redefined to provide access to the history

II.1. class BOPTest
method:
void BOPTest::APICommands(Draw_Interpretor& theCommands)
has been added to provide tcl commands to launch the algorithms
implemented in BRepAlgoAPI package using DRAWEXE application.

method:
void BOPTest::OptionCommands(Draw_Interpretor& theCommands)
has been added to provide tcl commands to set/get the options that is
necessary for the algorithms implemented in BRepAlgoAPI package.

II.2. class BRepAlgoAPI
method:
void BRepAlgoAPI::DumpOper(const Standard_CString theFilePath,
                           const TopoDS_Shape& theShape1,
                           const TopoDS_Shape& theShape2,
                           const TopoDS_Shape& theResult,
                           BOPAlgo_Operation theOperation,
                           Standard_Boolean isNonValidArgs)
has been removed. The contents has been shifted into the file:
BRepAlgoAPI_BooleanOperation.cxx

II.3. classes QANewModTopOpe_Glue, QANewModTopOpe_Intersection
the modifications have been done to provide the consistency with the
modifications in BRepAlgoAPI package [I].
-------------------------------------------------------------------------------------------------------------
III. Modified entities:
packages:
BOPAlgo
BRepAlgoAPI
BOPTest
QANewModTopOpe

Test cases for issue CR25614
2014-12-25 17:55:50 +03:00
azv
6219c44ce7 0025584: Wrong result obtained by PerformInfinitePoint Test
Implemented additional verification of periodicity of B-spline surfaces when calculating UV-bounds

Test case for issue CR25584
2014-12-25 17:53:21 +03:00
jgv
73d0a668b3 0025592: Bad result of Fillet operation
Comments have been added.

Test case for issue CR25592
2014-12-25 16:48:05 +03:00
azv
b7d2387022 0025591: Command mkshell produces wrong shell
The functionality to decide, whether the edge is degenerated, was shared via BRepLib_MakeFace. The verification of producing degenerated edges was added to BRepLib_MakeShell.

Test case for issue CR25591
2014-12-25 16:44:20 +03:00
kgv
656ec77a10 0025608: TKernel, NCollection_UtfIterator - fix iteration of surrogate pairs in UTF-16 2014-12-25 16:39:05 +03:00
nbv
2283570591 0025275: Diferent result of reading operation from *.igs and *.stp file for WINDOWS and LINUX platform
Symbol SUB (ASCII-code 0x1A) should be considered as End-Of-File both on WINDOWS and LINUX (and on other) system.
2014-12-25 16:36:41 +03:00
kgv
032c140ff1 0025580: Visualization, TKOpenGl - create GLushort index buffer in OpenGl_Quadric::createArrays() when sufficient 2014-12-25 16:29:46 +03:00
eap
7c8996f49f 0025604: To provide info on what has been done by DropSmallSolids operator 2014-12-25 16:27:27 +03:00
mkv
d5a9d0da1c Adjusting new testing case for issue 25378 2014-12-16 15:46:58 +03:00
oan
edf3cf25a2 Correction of the merge CR25519 and CR25593 2014-12-15 13:11:05 +03:00
bugmaster
da2db6a705 0025520: To provide info on what has been done by Shape Process and Shape Fix
Messages are registered in ShapeExtend_MsgRegistrator added to ShapeCutom and ShapeUpgrade packages
All operators of ShapeProcess_OperLibrary are instrumented with MsgRegistrator

0025520: To provide info on what has been done by Shape Process and Shape Fix

Update SHAPE.fr

Fix some messages (minor change)
2014-12-12 14:19:09 +03:00
oan
e275de58af Resolving compilation problem 2014-12-12 10:49:02 +03:00
myn
8422b578d7 0025529: ShapeProcessAPI: introduce DropSmallSolids operator
Implemented DropSmallSolids operator

Source code corrected and optimized; tests added

tests improved
2014-12-11 17:35:41 +03:00
apn
f05f2e3430 0024938: BRepMesh_IncrementalMesh hangs
Added test case bugs/mesh/bug24938

Small corrections in test case bugs/mesh/bug24938
2014-12-11 17:22:43 +03:00
oan
74da0216d7 0025378: Building of triangulation for distored surfaces can take very long using BRepMesh_IncrementalMesh
New parameter MinSize has been introduced to BRepMesh and GCPnts_TangentialDeflection;

Check length of remaining part of curve for min size parameter instead of distance between two points to avoid large gaps in case highly distorted BSpline surfaces;

Produce fine mesh for sphere and fix other surface;

Test cases for issue CR25378

Correction of test cases for issue CR25378
2014-12-11 17:17:06 +03:00
pkv
949df2b64b 0025509: Wrong shape considered as valid by checkshape
New features:

1. class BRepCheck_Solid
The class is to check a solid per se.
The scan area is:
 i.  Shells that overlaps each other
     Status:  BRepCheck_InvalidImbricationOfShells

 ii.  Detached parts of the solid (vertices, edges)
       that have non-internal orientation
       Status:  BRepCheck_BadOrientationOfSubshape

 iii.  For closed, non-internal shells:
 iii.1 Shells containing entities  of the solid that
      are outside towards the shells
      Status:  BRepCheck_SubshapeNotInShape

 iii.2 Shells that encloses other Shells
     (for non-holes)
      Status:  BRepCheck_EnclosedRegion

Changes:

1. enumeration BRepCheck_Status
members:
 InvalidImbricationOfShells,
 EnclosedRegion,
has been added

2. class BRepCheck
method:
void BRepCheck::Print(const BRepCheck_Status stat,
                      Standard_OStream& OS)
has been modified to take into account II.1

3. class BRepCheck_Analyzer
method:
void BRepCheck_Analyzer::Put(const TopoDS_Shape& S,
                             const Standard_Boolean B)
has been modified to take into account I.1

4. class BRepTest
function:
void StructuralDump(Draw_Interpretor& theCommands,
 const BRepCheck_Analyzer &theAna,
 const Standard_CString   ShName,
 const Standard_CString   Pref,
 const TopoDS_Shape       &theShape)
has been modified to take into account I.1, II.1

Test cases for issue CR25509

Correction of test cases for issue CR25509
2014-12-11 16:54:05 +03:00
ski
ccadc126ba 0023493: Incorrect QAGetPixelColor usage
Usage of QAGetPixelColor were checked and corrected.

Using simple comparison instead of regexp.

Improved usage of command vreadpixel for standard colors.

Command QAGetPixelColor was dropped from TKQADraw.

Procedures "checkcolor" and auxiliary "checkpoint" were moved to DrawResources/TestCommands.tcl

Some test cases using "checkcolor" for picking line color were simplified.

Procedures checkcolor and checkpoint were changed to handle situation when pixel is out of view.

Removed unnecessary use of command "vaspects -setwidth" in tests.

Revert -setwidth change in test bugs/vis/bug23525
2014-12-11 16:48:05 +03:00
msv
a4bb1420ca 0025568: SIGSEGV in thrusections with edge without 3D curve
-Set algorithm flag NotDone if there is a non-degenerated edge with absent 3D curve.
-Check IsDone flag in thrusection command.
-Add test case bugs/modalg_5/bug25568.

Small correction of test case for issue CR25568
2014-12-11 16:43:55 +03:00
aml
70d08ce5b2 0025558: It is impossible to restore attached shape
Condition of adding one last knot corrected.

Test-case for issue #25558
2014-12-11 16:41:21 +03:00
nbv
3d58dc498b 0025124: [Feature request] Removal of continuity checks for offset geometries
Sometimes curve or surface, which is defined as C0, has continuity G1 or above. Offset can be built from these shapes.
Therefore, this extended checking was added into SetBasisCurve and SetBasisSurface methods.

Main changes in function BRepOffset_Tool::ExtentFace(...):
*  "return" is added if intersection (in 2D-space) between two edges in a face cannot be found.

Basis curve/surface continuity value found (if G1-checking is OK) is set up as BasisContinuity (see myBasisCurveContinuity and myBasisSurfContinuity members which is returned by GetBasisCurveContinuity and GetBasisSurfContinuity() methods). This fact is used in Geom2dAdaptor and in GeomAdaptor classes.

Possibility is entered, which allows for basis elements of offset curve/surface to avoid of C0-checking.

Test cases were changed according to their new behavior.

Test-cases for issue #25124
2014-12-11 16:38:14 +03:00
jgv
68cdb44b0a 0025193: Bad Intersection curveobtained by Surface/Surface Intersection Algorithm.
Test case for issue CR25193

Correction of test case for issue CR25193
2014-12-11 16:36:42 +03:00
aml
fa0f5a5558 0025561: OCCT can't compile with OCCT_DEBUG flag
Restored function "Value" with old signature used in OCCT_DEBUG block.
2014-12-11 16:32:09 +03:00
kgv
f4fa7f0c16 0025546: Visualization - remove unused methods and classes from package Aspect
Remove global methods Aspect::ToCString(), Aspect::ValuesOfFOSP(), Aspect::Inverse().
Remove class Aspect_Edge, Aspect_Array1OfEdge and Aspect_EdgeDefinitionError.
Remove enumerations Aspect_TypeOfFont, Aspect_TypeOfText, Aspect_CardinalPoints,
Aspect_TypeOfRenderingMode, Aspect_TypeOfColorSpace, Aspect_FormatOfSheetPaper.

update MFC samples
2014-12-11 16:30:32 +03:00
ifv
db005e48df 0024643: No section curve between plane and cone
Test case for issue CR24643

Correction of test case for issue CR24643
2014-12-11 16:28:16 +03:00
kgv
d0607a766f 0025575: Visualization - remove V3d_Static.hxx 2014-12-11 16:21:36 +03:00
oan
13cd069dbc 0025519: BRepMesh can break mesh regularity for BSpline surfaces
Compute parameters to produce regular grid and add new internal points according to calculated values.
Use intervals as an additional parameters to determine regular grid for BSpline surfaces.

Test case for issue CR25519

Correction of test case for issue CR25519

Correction of test cases for issue CR25519
2014-12-11 16:20:31 +03:00
aml
b49eaa701f 0025559: SIGSEGV in TKMath when computing max tolerance of curve on surface
Fixed possible being outside the boundaries. Changed check math_Recipes to work with NaN, Inf, Ind.

Test case for issue CR25559
2014-12-11 16:18:07 +03:00
oan
d315303da2 0025547: static class mehtods not exported in BrepMesh_GeomTool
Test case for issue CR25547
2014-12-11 16:15:45 +03:00
azv
3922a2ec0f 0025555: Wrong result of classification of a point relative to solid
Implemented additional verification that the point found by Extrema is placed inside the face. This way turns off searching the additional inner point.

Test case for issue CR25555
2014-12-11 16:07:29 +03:00
azv
be09e9bf18 0025468: GeomConvert_ApproxSurface should have a constructor for adaptors
Additional constructors were implemented into classes:
GeomConvert_ApproxCurve
GeomConvert_ApproxSurface
Geom2dConvert_ApproxCurve
2014-12-11 16:04:17 +03:00
aba
8a864791fe 0025492: the selected subshape does not have topological relationship with orginal shape in OCC680:
returned identity owner location if the selectable object has identity transformation.
2014-12-11 16:00:27 +03:00
jgv
e11c1bc433 0025557: Draw command "openoffset" fails on customer's shape with big values of offset
Test cases for issue CR25557
2014-12-11 15:44:43 +03:00
msv
21b7d8be4c 0025453: SIGSEGV in BRepFill_Sweep::BuildShell
Fixed the bug causing exception when the first edge in generated sweep occurs to be degenerated.

Comments have been added.

Test-case for issue #25453
2014-12-11 15:41:12 +03:00
kgv
076ca35c3f 0025544: Visualization, TKOpenGl - support grayscale textures
Image_PixMap::ImgFormat - extend enumeration by ImgAlpha and ImgAlphaF.
OpenGl_Workspace::setTextureParams() - specify GL_REPLACE for 1-component textures with disabled modulation.
OpenGl_Texture::GetDataFormat() - return GL_LUMINANCE format for ImgGray format and GL_ALPHA for ImgAlpha.

vmarkerstest - override pixel format for grayscale images to ImgAlpha.

Add test case bugs/vis/bug25544_graytexture.
2014-12-11 15:37:15 +03:00
oan
a319f03ff9 0021593: Small improvement
New parameter for BRepMesh; Test case
2014-12-11 15:26:53 +03:00
bugmaster
c0bd0de183 Adjusting new testing cases 2014-12-05 14:39:29 +03:00
dbp
558e68ea11 0025398: Modeling Algorithms - Provide shape proximity detector
Correction of test case for issue CR25398
2014-12-05 12:17:58 +03:00
ink
06696fd835 0025518: Colors are not written to IGES 5.3
Writing of colors to IGES Face (510) and Solid (186) entities allowed since this is used by CAD systems (even if not allowed by IGES standard).
Color assigned to surface, face and solid entities to ensure that different CAD systems will recognize them.

Test-case for issue #25518
2014-12-04 15:49:00 +03:00
ski
0b309a75c4 0023983: Cpulimit doesn't kill test cases
Modified command cpulimit using OSD_Timer and method ElapsedTime()

Enabled elapsed time control on Linux.

Added resetting of elapsed timer.

Unused variables were removed

Definition of OSD_Timer aTimer was replaced.

Correction of thread terminating on linux.
2014-12-04 15:46:42 +03:00
aml
368cdde60e 0024988: Wrong result done by projection algorithm
Wrong border 1.0e-9 jump has deleted. Added periodicity information when projecting to surface.
Period "jump" bug fixes.

AppCont_LeastSquare conversion to non cdl class.
AppCont_Function + AppCont_FunctionTool combined in one class providing the same functionality and converted to non cdl.
Testcase modification.

Test cases for issue CR24988

Fixed incorrect comparison.
2014-12-04 15:46:41 +03:00
nbv
e8feb725a4 0025465: Excess vertex in the result of CUT operation
Branches CR25465 and CR25488 were squashed and rebased on the current MASTER (12/01/2014)
2014-12-04 15:46:40 +03:00
kgv
a6964ce627 0025511: Visualization - drop redundant viewer option V3d_View::Transparency()
Visual3d_ViewManager, activate texturing by default.

Update Qt sample
2014-12-04 15:46:38 +03:00
abv
21087d914b 0024944: New custom-built Tcl is source of distribution problems
Option to link to MS run-time library statically added in description of building of Tcl/Tk from sources

Spelling corrections

Order of sections corrected in "Debug tools and hints"
2014-12-04 15:46:37 +03:00
san
7fd6425dc4 0025528: Visualization - Exception on removing an interactive object from a local context
AIS_LocalContext::Remove() corrected to unbind the argument from
myActiveObjects at the very end. Also some code clean up applied
(e.g. duplicated AddOrRemoveSelected() call removed, formatting corrected).

code formatting
2014-12-04 14:20:18 +03:00
kgv
3ea0a91b70 0025484: Visualization - group sub-shapes with the same style in XCAFPrs_AISObject::Compute() 2014-12-04 14:12:11 +03:00
mkv
e159a66863 Adjusting CPU time for new testing cases. 2014-12-01 12:06:02 +03:00
emv
d2d9e8dc0e 0025470: Wrong result of COMMON operation
Fix for correct splitting of infinite faces.

Test cases for issue CR25470
2014-11-28 13:49:46 +03:00
kgv
7e7bbb3a9e 0025514: TKernel, OSD_Timer - do not accumulate error in timer within queries in running state
Test-case for issue #25514

Update of test-case
2014-11-28 13:49:45 +03:00
aml
150e93a7f2 0025487: Extrema_GenExtPS needs to be optimized
Better caching and cashe usage in Extrema_GenExtPS.

Test-cases for issue #25487

Update of test-cases
2014-11-28 13:49:44 +03:00
msv
4a913f2102 0025503: BRepMesh - IncrementalMesh always re-meshes the shape even if existing triangulation satisfies the given deflection
Test case for issue CR25503

Correction of test cases for issue CR25503
2014-11-28 13:49:43 +03:00
kgv
6c6aadb1ff 0025304: Visualization, TKOpenGl - support texturing within built-in GLSL programs 2014-11-28 13:49:42 +03:00
kgv
abdf0b107e 0025474: Visualization, TKOpenGl - support lighting + colored vertices within built-in GLSL programs 2014-11-28 13:49:41 +03:00
emv
b1d15f53b3 0025477: Boolean Operations with additional tolerance - Fuzzy Boolean operations
Implementation of Fuzzy Boolean operations. Such operations allow to perform Boolean operations on the shapes
with near-coincidence between the entities of these shapes, i.e. between shapes in which some entities from one shape
are intended to be coincide with some entities from the other, but the coincidence is not precise.

API for Boolean operations has been improved to have a possibility to add new options.

Modified entities:
1. New option of setting additional tolerance have been added to the following classes:
class BOPAlgo_ArgumentAnalyzer
class BOPAlgo_BOP
class BOPAlgo_Builder
class BOPAlgo_MakerVolume
class BOPAlgo_PaveFiller
class BOPDS_DS
class BRepAlgoAPI_BooleanOperation
class BRepAlgoAPI_Check
class BRepAlgoAPI_Common
class BRepAlgoAPI_Cut
class BRepAlgoAPI_Fuse
class BRepAlgoAPI_Section

2. Following draw commands have been modified to support new functionality:
BOP commands:
bop b1 b2 [tol]
bcommon r b1 b2 [tol]
bcut r b1 b2 [tol]
bfuse r b1 b2 [tol]
bsection r s1 s2 [-n2d/-n2d1/-n2d2] [-na] [tol]
mkvolume r b1 b2 ... [-c] [-ni] [-s] [tol]
bfillds [-s -t] [tol]

Check commands:
bopcheck Shape [level of check: 0 - 9] [-t -s] [-tol tol]
bopargcheck [-F/O/C/T/S/U] [/R|F|T|V|E|I|P|C|S]] [#BF] [-tol tol]

3. Two new classes have been added to API to provide the root interface for algorithms
class BRepAlgoAPI_Algo
class BRepAlgoAPI_BuilderAlgo

Fix to eliminate the warning.

Test-cases for issue #25477
2014-11-28 12:24:39 +03:00
osa
49e1a5c7e9 0025507: Visualization - the method V3d_View::Place() is incorrect
Test was updated

Correction of test case for issue CR25507
2014-11-28 12:21:10 +03:00
apn
aa627f0805 0025339: Draw command "mkoffset" does not take into account "intersection" mode on faces
Added test case bugs/modalg_5/bug25339
2014-11-28 12:16:07 +03:00
kgv
8bcdd6976a 0025527: Documentation - remove redundant references to OpenCL 2014-11-28 12:01:14 +03:00
apn
ee0a5d2528 0023460: Update QT products samples
Rename all generation-vc-projects.bat (in OCCT) to genproj.bat.
Fixed warnings in VoxelDemo.
2014-11-28 11:58:39 +03:00
bugmaster
0059facbbf Incrementation of OCCT version up to 6.8.1 dev 2014-11-21 16:16:50 +03:00
mkv
90a9485514 0025354: Intersection operation
Adding test cases
2014-11-21 16:12:48 +03:00
bugmaster
f70d6437bd 0025494: Wrong result obtained by projection algorithm
Calculation of last parameter of projected curve was changed for the projecting of a curve to surface of revolution, if the curve is intersected with the axis of revolution

Test case for issue CR25494
2014-11-21 16:10:52 +03:00
razmyslovich
9bb81d6ce8 0025498: CMake refuses to build OCCT without any 3rd party libraries
Adding guards for empty CMake variables
2014-11-21 15:46:01 +03:00
kgv
e0608a8d27 0025459: Visualization - AIS_ColoredShape::SetMaterial() should not reset custom colors 2014-11-21 15:43:12 +03:00
pkv
e83c01bfc0 0025505: General Fuse produces self-intersection shape
Changes:
class BOPAlgo_BuilderSolid
method:
void BOPAlgo_BuilderSolid::PerformAreas()

The misprint has been corrected

Test case for issue CR25505
2014-11-21 15:42:31 +03:00
azv
c84d6e55ea 0025504: Exception raised during projection curve on surface
Avoid moving of projected point to a boundary of surface

Test case for CR25504
2014-11-21 15:36:40 +03:00
kgv
a86ce5a64a 0025500: Visualization, TKOpenGl - global trihedron should not inherit transformation from last object
Test case for CR25500
2014-11-21 15:34:50 +03:00
jgv
a791eb69f4 0025491: BRepOffsetAPI_MakeOffset algorithm crashes on customer's shape and big value of offset
Test case for CR25491

Correction of test case for issue CR25491
2014-11-21 15:33:13 +03:00
gka
34e923b5c2 0025455: fixshape works at the second attempt
Added check and fix of tolerances of all vertices after performing all fixes.
It is necessary to avoid situation when point of vertex belonging a few faces was changed for current face
but edges containing this vertex belonging before fixed face are not taking into account.
Mode FixVertexTolMode to manage check tolerance of vertices was added in ShapeFix_Shape
class. (default value is equal to -1)
Method to change FixVertexTolMode mode  FixVertexTolMode() was added in ShapeFix_Shape class

Test case for CR25455
2014-11-21 14:53:03 +03:00
nbv
baf72cd2e7 0025488: Wrong result of two trimmed cylinders intersection
1. Function IsSame(...) for IntSurf_PntOn2S was added (see IntSurf_PntOn2S.cdl for detail information).
2. Inserting additional points is forbidden if existing WLine contains only two points coincided.

Test-case for issue #25488
2014-11-21 14:47:57 +03:00
oan
80d659a5a6 0025469: BRepMesh corrupts triangulation of another not connected shape
Do not clean polygons that are created for different faces not connected with current shape.
Remove old code producing additional points for BSpline curves due to fix #24959.

Test cases fir issue CR25469

Revert changes producing additional points for BSpline curves with C1 continuity

Test cases fir issue CR25469

Correction of test cases for issue CR25469
2014-11-21 14:19:28 +03:00
oan
d0a994c7f1 0025479: BRepTools::Clean() cleans all edge polygons, even related to different shapes 2014-11-21 14:11:43 +03:00
jgv
32a15d12db 0025480: Incorrect result of BRepOffsetAPI_MakePipe
Test case for CR25480
2014-11-21 14:05:24 +03:00
isk
4ca4bbe8bd 0025436: Visualization - AIS_InteractiveContext::HilightPreviousDetected() should switch from first value in the list to the last 2014-11-21 14:02:43 +03:00
kgv
8cf06aa236 0025483: Visualization, TKOpenGl - fix memory leak due to unused stack in OpenGl_StateInterface 2014-11-21 14:00:10 +03:00
pkv
0da4579283 0025456: BOPAlgo_CheckerSI reports an error on the given shape
Changes:
1. class IntTools_FaceFace
         method:
         void IntTools_FaceFace::MakeCurve(const Standard_Integer Index,
                                    const Handle(Adaptor3d_TopolTool)& dom1,
                                    const Handle(Adaptor3d_TopolTool)& dom2)

The value of testing parameter has been changed for the cases of infinite curves

Test case for issue CR25456
2014-11-21 13:58:36 +03:00
jgv
4590b5516c 0025451: BRepFilletAPI_MakeFillet fails on customer's shape when small radius of fillet is given
Test-case for issue #25451

Update of test-cases
2014-11-21 13:56:37 +03:00
pkv
cf2439de58 0025449: Excess vertex in result of General Fuse operation.
Changes:
1. class IntTools_EdgeFace
     method:
     Standard_Boolean IntTools_EdgeFace::CheckTouchVertex
     (const IntTools_CommonPrt& aCP,
     Standard_Real& aTx)

The parametric size of the contact zone between vertex and face has been changed

Test cases for issue CR25449
2014-11-21 13:51:18 +03:00
pkv
ceb31c6156 0025450: Common operation returns wrong shape
Changes:
class BOPAlgo_PaveFiller
 method:
 void BOPAlgo_PaveFiller::PerformEF()

 The index of the face has been added in post-treatment map

Test cases for issue CR25450

Correction of test case for issue CR25450
2014-11-21 13:49:09 +03:00
jgv
93442c6f24 0025460: BRepOffsetAPI_ThruSections fails on customer's shape (wing on 11 sections)
Test-case for issue #25460
2014-11-21 13:47:03 +03:00
pkv
393598ebd6 0025432: Wrong result obtained by MakerVolume operator.
Changes:
class BOPTools_AlgoTools
static function:
Standard_Boolean FindPointInFace(const TopoDS_Face& aF,
                                 const gp_Pnt& aP,
                                 gp_Dir& aDB,
                                 gp_Pnt& aPOut,
                                 Handle(IntTools_Context)& theContext,
                                 GeomAPI_ProjectPointOnSurf& aProjPL,
                                 const Standard_Real aDt,
                                 const Standard_Real aTolE)

Binormal calculation starts from the point located outside the tolerance circle of the edge

Test case for issue CR25432

Correction of test cases for issue CR25432
2014-11-21 13:44:45 +03:00
aml
7da00517d4 0025321: Test case bugs/modalg_5(010)/bug24981 hangs in Debug mode on Debian60-64 platform
Eliminated possible inifite loop when projecting curve on surface.
2014-11-21 13:36:28 +03:00
azv
eb7404bf16 0024697: Exception is raised during projection of the curve on the surface
The curve is trimmed since now in the boundaries of surface

Test case for issue CR24697

Behavior for trimming periodic curves was changed
2014-11-21 13:35:20 +03:00
aba
7a733b194b 0025430: DRAW Test Harness: dimensions demo fails
- corrected vdimparam help string;
- added section model file to prevent changing of subshapes order after explode call
2014-11-21 13:33:11 +03:00
apn
82b4c24940 Update of template for compilation in debug mode 2014-11-10 13:14:44 +03:00
bugmaster
32d5cd7b98 Incrementation of OCCT version up to 6.8.0 2014-11-07 17:56:30 +03:00
kgv
7f2debb25f 0025195: Samples - add Java sample for Android 4.x 2014-11-07 17:53:53 +03:00
ibs
80eb96707a 0025149: Samples - add Qt5/QML sample for Android 4.x 2014-11-07 17:53:52 +03:00
emv
c088aa932f 0025446: The method BRepAlgoAPI_BooleanOperation::IsDeleted() returns TRUE for the faces contained in the result of BOP
1. The method
  Standard_Boolean BOPAlgo_Builder::IsDeleted
    (const TopoDS_Shape& theS)
  has been modified to return TRUE only if the shape theS has been deleted.
2. Added new draw (QA) command OCC25446 to test this method.
2014-11-07 17:10:49 +03:00
apn
46c99a694f 0025420: Wrong result obtained by General Fuse operator.
Added test case bugs/modalg_5/bug25420
2014-11-07 14:20:40 +03:00
bugmaster
db348d8c53 Update CMakeLists.txt for standard mfc sample 2014-11-07 14:18:45 +03:00
kgv
93e572caa0 0025438: Visualization, TKOpenGl - always setup viewport within OpenGl_Workspace::Redraw()
suppress new warning
2014-11-07 14:01:42 +03:00
oan
49cfd13dca 0025445: Draw command incmesh should support all parameters used in BRepMesh
Test-case for issue #25445
2014-11-06 16:05:48 +03:00
apn
2fa97a4304 0025270: OCCT fails to calculate extrema between extruded surface and line
Added test case bugs/modalg_5/bug25270
2014-11-06 16:03:16 +03:00
Roman Lygin
2dc8b7cc5b 0025439: Enabling shape binary persistence without OCAF 2014-11-06 16:01:02 +03:00
pdn
947085567f 0025367: IGES and BRep persistence - support unicode file names on Windows
OSD_OpenFile.hxx header is created for using in file open operations with Unicode names.

Fix for STEP files reading.

Adding test cases for issue 25367
Update test case for issue 25364
Update test cases due to improvements
2014-11-06 13:55:51 +03:00
oan
2caff0b32f 0025364: BRepMesh is not able to triangulate the shape with fine deflection
Don't create data structures for whole set of faces. Necessary structures are created directly in BRepMesh_FastDiscret.
Don't copy nodes data during scaling, single structure is used.

Remove lines used for debug

Fix sphere: resolve problem came from merging.

Keep code clean - remove unnecessary logic, expected to be used for complicated restoration process.

Test cases for issue CR25364
2014-11-05 17:58:23 +03:00
kgv
e3573bb9ec 0025438: Visualization, TKOpenGl - always setup viewport within OpenGl_Workspace::Redraw() 2014-11-05 17:54:49 +03:00
duv
c827ea3a68 0024381: Visualization, TKOpenGl - revise matrices stack and usage of temporary matrices
0025301: Visualization, TKOpenGl - transpose matrix manually before glUniformMatrix4fv()

OpenGl_View::ReleaseGlResources() - release GL resources of trihedron, do not destroy it
2014-11-05 17:54:48 +03:00
kgv
00ea319b16 0025442: Visualization, TKOpenGl - prevent inclusion of system header glxext.h
Define GLX_GLXEXT_LEGACY in addition to GL_GLEXT_LEGACY to prevent implicit
inclusion of header GL/glxext.h by system header GL/glx.h

Update glext.t to current state.
2014-11-05 17:48:03 +03:00
kgv
f3fb84ce21 0025443: Documentation - update packages names in Building 3rd-party libraries on Linux
Update README files for samples
2014-11-05 17:44:12 +03:00
isz
18006a0f10 0025343: Visualization - Update user's guide and DRAW commands description
Redesign of Visualisation user guide's structure with some changes in the guide.
Update Draw_test_harness user guide. Added dimension commands to DRAW test harness.
Update of prerequisites and building 3rd party tools sections
Move VIS draw tests to Draw Test Harness section.

Additionally, fix bugs 24117 and 25353.
Correct output of new imaged in PDF in modeling algos guide and errors introduced by bug 24699 in the overview.
2014-11-05 17:44:03 +03:00
razmyslovich
b350f6ee1e 0025174: Provide ShapeCustom and BRepModifier with ProgressIndicator and ReShape features
Conflicts:
	src/TNaming/TNaming_Name.cxx
2014-11-05 17:32:34 +03:00
aml
2958244411 0024934: Section: crash for two faces
Added protection from null vertexes.

Test case for issue CR24934
2014-11-05 17:27:09 +03:00
ski
2c5b6d9c12 0024548: Ray Tracing mode not available in MFC samples
Ray tracing functionality was added to OCCT MFC samples.
2014-11-05 17:17:47 +03:00
apn
a806787bd6 0025157: Face missing depending the angle of revolution
Added test case bugs/mesh/bug25157
2014-11-05 17:07:33 +03:00
apn
5e5ce65be4 0022125: TCollection_ExtendedString: conversion from UTF-8 to unicode
Added test case bugs/fclasses/bug22125
2014-11-05 17:04:46 +03:00
azv
6fb3418ea1 0025413: Line-Shape intersection algorithm became 400 times slower
Changed the procedure of creating initial samples

Test-case for issue #25413
2014-11-05 17:02:58 +03:00
abv
0797d9d30a 0025418: Debug output to be limited to OCC development environment
Macros ending on "DEB" are replaced by OCCT_DEBUG across OCCT code; new macros described in documentation.
Macros starting with DEB are changed to start with "OCCT_DEBUG_".
Some code cleaned.
2014-11-05 16:55:24 +03:00
apn
a507ffd9d7 0025307: Problems resulted from re-triangulation
Added test case bugs/mesh/bug25307
2014-11-05 16:51:08 +03:00
apn
3edc7eea42 0024519: Intersection of a cylinder and a plane does not return
Added test case bugs/modalg_5/bug24519
2014-11-05 16:49:15 +03:00
apn
dbf0485ef0 0025281: BRepMesh_IncrementalMesh does not return
Added test case bugs/mesh/bug25281
2014-11-05 16:48:00 +03:00
ifv
43dbdb15db 0025427: Algorithm of building plane from wire hangs
Test-case for issue #25427
2014-11-05 16:47:36 +03:00
bugmaster
3908084224 Update for building with MS Visual C++ without VTK 3rdparty products 2014-11-05 15:53:31 +03:00
nbv
e98e39903b 0025410: Tool for extended check of validity of the curve on the surface
Modifications:
1. class BOPTools_AlgoTools
1.1. method
 Standard_Boolean BOPTools_AlgoTools::ComputeTolerance
  (const Handle(Geom_Curve)& theCurve3D,
   const Handle(Geom2d_Curve)& theCurve2D,
   const Handle(Geom_Surface)& theSurf,
   const Standard_Real theFirst,
   const Standard_Real theLast,
   Standard_Real& theMaxDist,
   Standard_Real& theMaxPar)
  It computes the max distance between points taken from 3D and 2D curves by the same parameter

1.2. method
 Standard_Boolean BOPTools_AlgoTools::ComputeTolerance
  (const TopoDS_Face& theFace,
   const TopoDS_Edge& theEdge,
   Standard_Real& theMaxDist,
   Standard_Real& theParameter)
  Computes the valid value of the tolerance for the edge using the function above.

2.  Added possibility to check shape on the validity of the curves on the surfaces.
2.1. New status BOPAlgo_InvalidCurveOnSurface has been added to the enumeration BOPAlgo_CheckStatus
2.2. class BOPAlgo_ArgumentAnalyzer
 method
   void BOPAlgo_ArgumentAnalyzer::TestCurveOnSurface()
 It checks each edge/face pair in the shape using the method ComputeTolerance from BOPTools_AlgoTools and stores invalid pairs to myResults.
 Invalid pairs are those which contain the edge with tolerance value less then the value computed by the ComputeTolerance method.

2.3. class BOPAlgo_CheckResult
 Added new fields:
    myMaxDist1 : Real from Standard;
    myMaxDist2 : Real from Standard;
    myMaxPar1  : Real from Standard;
    myMaxPar2  : Real from Standard;
 and corresponding setters and getters.
 These fields are used to store the results of the TestCurveOnSurface() check.

3. Added new option to the bopargcheck command and two new commands.
class BOPTest_CheckCommands
3.1. command bopargcheck
 As it is using the BOPAlgo_ArgumentAnalyzer class to check the shapes
 it checks also the validity of the curves on the surfaces.
 The output for the invalid shapes is following:

Draw[]> bopargcheck b2 /ic #f
Made faulty shape: s1COnS_1 (MaxDist = 0.0013334343378738308, MaxPar = 0.02884285498274167)
Made faulty shape: s1COnS_2 (MaxDist = 0.0013334340648766174, MaxPar = 0.02884285497934707)
Made faulty shape: s1COnS_3 (MaxDist = 0.0013335086668628978, MaxPar = 1.4133051942712607)
Made faulty shape: s1COnS_4 (MaxDist = 0.0013335086525838983, MaxPar = 1.4133051942713901)
Faulties for FIRST  shape found : 4
---------------------------------
Shapes are not suppotrted by BOP: NO
Self-Intersections              : NO
Check for SI has been aborted   : NO
Too small edges                 : NO
Bad faces                       : NO
Too close vertices              : NO
Too close edges                 : NO
Shapes with Continuity C0       : NO
Invalid Curve on Surface        : YES  Cases(4)  Total shapes(8)

Faulties for SECOND  shape found : 0

 The compounds s1COnS_* contain pair of edge and face.
 MaxDist is maximal distance between points taken from 3D curve of the edge and 2D curve of that edge on the face.
 MaxPar is a parameter in which the MaxDist is reached.

 To disable this check it is necessary to use option /S (bopargcheck shape /S).

3.2. command xdistef
 Usage of the command:
   xdistef edge face
 It computes distance between points taken from 3D curve of the edge and 2D curve of that edge on the face.
 Example:
Draw[]> explode s1COnS_1
s1COnS_1_1 s1COnS_1_2
Draw[]> whatis s1COnS_1_1
s1COnS_1_1 is a shape EDGE FORWARD Modified Orientable
Draw[]> whatis s1COnS_1_2
s1COnS_1_2 is a shape FACE FORWARD Modified Orientable
Draw[]> xdistef s1COnS_1_1 s1COnS_1_2
Max Distance = 0.0013334343378738308; Parameter on curve = 0.02884285498274167

3.3. command checkcurveonsurf
 Usage of the command:
  checkcurveonsurf shape.
 It checks each edge/face pair in the shape using the method ComputeTolerance from BOPTools_AlgoTools.
Example:
Draw[]> checkcurveonsurf b2
Invalid curves on surface:
edge e_0 on face f_0 (max dist: 0.0013334343378738, parameter on curve: 0.0288428549827417)
edge e_1 on face f_0 (max dist: 0.0013334340648766, parameter on curve: 0.0288428549793471)
edge e_2 on face f_1 (max dist: 0.0013335086668629, parameter on curve: 1.4133051942712607)
edge e_3 on face f_1 (max dist: 0.0013335086525839, parameter on curve: 1.4133051942713901)

Sugestions to fix the shape:
explode b2 e;
settolerance b2_6 0.0013335086668629;
settolerance b2_7 0.0013334343378738;
settolerance b2_8 0.0013334340648766;
settolerance b2_10 0.0013335086525839;

The command gives suggestions to fix the shape by increasing tolerance values of the invalid edges.
In some cases the tolerance values suggested by the tool can be very large.
Such values should be used very carefully, because setting large tolerance values to the sub-shapes
of the shape can make it non valid (self-interfered) or lead to unexpected result when using
such shapes in some operations (boolean for example).

Test case for issue CR25410
2014-10-30 14:27:29 +03:00
kgv
05e2200bbf 0025422: Visualization, TKOpenGl - support re-assignment of new window to existing View
Do not throw "Window already defined" exception in Visual3d_View/V3d_View.
Handle window change within OpenGl_GraphicDriver::View().

OpenGl_GraphicDriver - introduce dedicated methods to initialize/release shared OpenGL context.
::InitEglContext() to using existing EGL context.

OpenGl_Context - always enable NPOT textures on OpenGL ES 2.0

OpenGl_Workspace - do not call glDisable/glEnable(GL_TEXTURE_2D) on GL ES

OpenGl_GraphicDriver::ReleaseContext() - release EGL context on destruction

OpenGl_GraphicDriver::InitEglContext() - escape method implementation with HAVE_EGL macros

OpenGl_ShaderManager - clear shader programs on shared context invalidation
2014-10-30 13:52:02 +03:00
emv
524a5f7aa7 0025337: Regression to version 6.7.1 : boolean operations fail on two planar circular faces lying in the same plane
class IntTools_EdgeEdge
method
  void IntTools_EdgeEdge::FindSolutions(const IntTools_Range& theR1,
                                        const IntTools_Range& theR2,
                                        const Bnd_Box& theBox2,
                                        IntTools_SequenceOfRanges& theRanges1,
                                        IntTools_SequenceOfRanges& theRanges2)
Looking for the solutions of the intersection between edges with greater precision.

Test cases for the issue.
2014-10-30 13:49:30 +03:00
apn
1ccc9700f8 0024404: The function BRepTools::UVBounds gives wrong result for the face
Added test case bugs/modalg_5/bug24404
2014-10-30 13:46:45 +03:00
apn
2b111fe8ba 0022829: Incorrect result of boolean Fuse operation
Added test case bugs/modalg_5/bug22829
2014-10-30 13:45:05 +03:00
aml
db91484119 0025368: BREPExtrma DistShapeShape gives wrong result for Sphere and Line
Changed analytical Sphere/Line and Cylinder/Line extrema algorithms. Now they search perpendicular and intersection points.
Test cases added.
2014-10-30 13:43:04 +03:00
nbv
02effd356b 0025292: Face/Face intersection algorithm gives different results for different order of the arguments
Method of adjusting was corrected.

Test cases for issue CR25292
2014-10-30 13:25:45 +03:00
pkv
b858a6984e 0025184: Non-deterministic order of wires in the result of General Fuse
The source is brought in line with the current version

Test case for issue CR25184
2014-10-30 13:19:31 +03:00
apn
32c3693332 0022872: BRepClass3d_SolidClassifier::PerformInfinitePoint fails
Added test case bugs/modalg_5/bug22872
2014-10-30 13:05:31 +03:00
apn
6e953e43f6 0024746: Bug in BRepAlgoAPI
Added test case bugs/modalg_5/bug24746
2014-10-30 12:59:35 +03:00
apn
3798da68bc 0021898: Empty result of intersection between a surface of revolution and a line
Added test case bugs/modalg_5/bug21898
2014-10-30 12:58:51 +03:00
mkv
2da38dd24c 0025354: Intersection operation
Update dimensions tcl sample due to new order of edges after explode.
2014-10-30 12:58:05 +03:00
vro
fcc61cc4c9 0025405: STL reader doesn't keep shared nodes
An improved RWSTL::ReadFile() method + a draw-command returning the number of nodes and triangles for a MeshVS_Mesh object based on STL mesh data source.

An indexed map of points is replaced by a CellFilter of XYZ objects already implemented in BRepBuilderAPI.
Also, BRepBuilderAPI_VertexInspector became exported for TKTopAlgo library (Standard_EXPORT is added for the methods of this class).

Standard_EXPORT is removed for in-line methods of BRepBuilderAPI_VertexInspector

Test-case for issue #25405

Update of test-cases, according to new behavior
2014-10-30 12:19:36 +03:00
ski
4084fb643c 0025387: Error appears during export to STEP operation in ImportExport MFC sample
Combo-box for selection of translation mode is available in Export to STEP and CSFDB files.
Default valuer for STEP export mode is set to As Is, i.e. automatic selection.

Added #define in function CFileDialog because it takes only 6 parameters in Visual Studio 2005.
2014-10-30 12:12:56 +03:00
apn
db4d439c8f 0023249: BRepFeat_SplitShape could not split a simple face by edge
Added test case bugs/modalg_5/bug23249
2014-10-30 12:10:34 +03:00
aml
1eaf1cc1dc 0025380: Intersection curve cannot reach boundary of surface
Changed next point computation in IntWalk_PWalker.cxx.
Now trying to walk over another isoline if new point is too close to previous.

Test case for issue CR25380
2014-10-30 12:05:56 +03:00
pdn
e1aa24d84b 0025424: Performance regression on step import
Regression was caused by checking of shell closeness on each face add iteration. Fixed.

Test case for issue CR25424
2014-10-30 12:00:28 +03:00
san
a0c202521d 0025400: Visualization, TKOpenGl - Structure disappears if assigned a non-default Z layer
- BVH tree in the target Z layer was not updated when OpenGl_Structure
was moved to another Z layer.
- vpriority DRAW command added to test how BVH tree is updated when
display priority is changed
- Test case for Z layers and display priorities added

Handle -noupdate argument within vpriority command
2014-10-30 11:58:22 +03:00
aml
032d027214 0025407: Exception in extrema operation.
Special handling of curve / surface of extrusion case is deleted.
Corresponding test case fixed.

Test cases for issue CR25407
2014-10-30 11:46:34 +03:00
dbp
50d0e1cefd 0025414: Visualization - Optimize ray-tracing performance
This patch increases ray-tracing performance up to 12% in regular mode, and up to 36% in FSAA mode.
2014-10-30 11:44:37 +03:00
pkv
67e36f0c7a 0025408: Wrong result obtained by General Fuse operator.
Changes:

class BOPTools_AlgoTools2D
        method:
    void BOPTools_AlgoTools2D::AdjustPCurveOnFace
      (const TopoDS_Face& aF,
       const Standard_Real aFirst,
       const Standard_Real aLast,
       const Handle(Geom2d_Curve)& aC2D,
       Handle(Geom2d_Curve)& aC2DA)

The location of 2D-curve is adjusted to face boubaries if necessary
using the precision value in parametric space

Unnecessary comments are removed

Test case for issue CR25408
2014-10-30 11:43:34 +03:00
aba
1c9d151726 0025403: Wrong storage of model units in AIS_AngleDimension: corrected AIS_Drawer model units setters; added parameters to vdimensin and vdimparam commands. 2014-10-30 11:40:24 +03:00
vro
09f5e48e01 0025397: Iteration on a tree of nodes is too slow
Added "const Handle(TDataStd_TreeNode)&" for the method TDataStd_ChildNodeIterator::Value().
2014-10-30 11:34:56 +03:00
bugmaster
28746337be Update of testing cases after integration fixes for issue 25354 and 25406 2014-10-24 15:35:41 +04:00
kgv
afbdee68fa 0025417: Visualization, OpenGl_Context - fix preprocessor check to load GL functions on OS X 2014-10-24 11:18:52 +04:00
kgv
5e6a855aa9 0025411: BVH package - eliminate warning about hidden overloaded method ::Box
Correction of merge error

Fix for compilation
2014-10-24 11:11:38 +04:00
nbv
9256a43d09 0025374: [6.8.0beta regression] gp_Trsf2d::SetMirror() looses transformation form
1. Elements of gp_TrsfForm have been documented
2. gp_Trsf2d class has been reverted to non-regression case.

Update of test-cases
2014-10-24 10:53:44 +04:00
vro
7a13ab2df1 0025361: Sample "Voxel" crashes during "Demo - Collisions" demonstration
Deletion of an array was incorrect.
2014-10-23 16:26:59 +04:00
vro
ac730776d8 0025352: Analytical calculation of fillets 2d: an improvement of precision
Already calculated points of the fillet are used instead of getting of the points on curve by a parameter.
2014-10-23 16:24:48 +04:00
jgv
903f7584b8 0025406: BRepOffset_MakeOffset algorithm fails on the face with two degenerated edges on u-iso null curves
Test cases for issue CR25406
2014-10-23 16:20:56 +04:00
apn
09c597c998 0025244: CMake building procedure should support VTK usage
Added functionality for searching VTK products.

Added procedure install for VTK.
2014-10-23 16:20:55 +04:00
pkv
8591531065 0025354: Intersection operation
I. New features:
I.1 class BOPAlgo_Section
     The class clontains the algorithm to build a result of Secton between the arguments.
     The result of Section consists of vertices and edges.
     The result of Section contains:
     1. new vertices that are subjects of V/V, E/E, E/F, F/F interferences
     2. vertices that are subjects of V/E, V/F interferences
     3. new edges that are subjects of F/F interferences
     4. edges that are Common Blocks
     5.a vertex is included in result of Section only when it is not shared
     between the edges of the result of Section

The class BOPAlgo_Section inherits the functionality of root class BOPAlgo_Builder

1.2 class BOPTest_Objects
method:
BOPAlgo_Section& BOPTest_Objects::Section()
has been added to get access to BOPAlgo_Section object

II. Changes:
II.1. class BOPAlgo_BOP
method:
void BOPAlgo_BOP::BuildSection()
has been removed
methods:
void BOPAlgo_BOP::CheckData()
void BOPAlgo_BOP::Prepare()
void BOPAlgo_BOP::PerformInternal1(const BOPAlgo_PaveFiller& theFiller)
const TopTools_ListOfShape& BOPAlgo_BOP::Generated
  (const TopoDS_Shape& theS)
have been modified to eliminate references on Section operation

II.2. class BOPAlgo_PaveFiller
method:
void BOPAlgo_PaveFiller::UpdateFaceInfo
  (BOPDS_DataMapOfPaveBlockListOfPaveBlock& theDME)
modified to prevent the usage of negative index in Data Structure

II.3. class BOPTest_Objects
static function:
Standard_Integer bopsection(Draw_Interpretor& di, Standard_Integer n, const char** a)
has been modified to use BOPAlgo_Section object instead of BOPAlgo_BOP object

static function:
Standard_Integer bbop(Draw_Interpretor& di,
                      Standard_Integer n,
                      const char** a)
has been modified to use BOPAlgo_Section object instea of BOPAlgo_BOP object

II.4. class BRepAlgoAPI_BooleanOperation
field:
myBuilder
the type has been changed from BOPAlgo_BOP* to BOPAlgo_Builder*
method:
void BRepAlgoAPI_BooleanOperation::Build()
has been modified  to use BOPAlgo_Section object

II.5. class QANewModTopOpe_Tools
method:
Standard_Boolean QANewModTopOpe_Tools::HasSameDomain(
                                                   const BOPAlgo_PBOP& theBuilder,
                                                     const TopoDS_Shape& theFace)

void QANewModTopOpe_Tools::SameDomain(
                                      const BOPAlgo_PBOP&   theBuilder,
                                      const TopoDS_Shape&   theFace,
                                      TopTools_ListOfShape& theResultList)

the type of the parameter <theBuilder> has been modified
to use BOPAlgo_Builder* instead of BOPAlgo_BOP*

II.6. The method:
const TopTools_ListOfShape& BOPAlgo_BOP::Generated
  (const TopoDS_Shape& theS)
has been removed
2014-10-23 16:20:54 +04:00
kgv
905428003c 0025412: BRepMesh_FastDiscretFace::tryToInsertAnalyticVertex() - fix invalid comparison
Remove unused field BRepMesh_FastDiscretFace::myWithShare.
Remove "virtual" from method of class <anonymous>::FixedVExplorer.
2014-10-23 16:20:52 +04:00
kgv
7c58a2abc0 0025411: BVH package - eliminate warning about hidden overloaded method ::Box
Conflicts:
	src/OpenGl/OpenGl_SceneGeometry.hxx
2014-10-23 16:20:51 +04:00
msv
75827e7628 0025396: Crash occurs when using TBB allocator on an Intel architecture not supporting SSE2 instructions
During initialization of memory manager, check if SSE2 instructions are supported, when MMGT_OPT=2 is in effect. If not then use MMgrRaw instead of MMgrTBBalloc. It is to avoid runtime crash when running on a CPU that supports SSE but does not support SSE2 (some modifications of AMD Sempron).

Fix broken compilation on MSVC for x64 platform

Correct the last fix.
2014-10-23 16:20:50 +04:00
dbp
3fb72902ea 0025349: Graphic3d_MaterialAspect::Color() returns a value different from that set by the method Graphic3d_MaterialAspect::SetColor
Fix bug with default color of clip plane.
2014-10-23 16:20:49 +04:00
apn
876d1f2a2c 0022196: Problem with puting texture on the bottle.brep shape
Test case bugs/modalg_2/bug22196 was modified to apply texture.
2014-10-23 16:20:48 +04:00
apn
0cc44c4730 0023911: Invalid output of command Xdump
Improved output of Xdump command using Draw_Interpretor.

Improved output of Xdump command using Standard_SStream.

OStream is used instead of SStream.

Test cases for issue CR23911
2014-10-23 16:20:47 +04:00
san
e21b2bc603 0025399: Visualization - XCAFPrs_AISObject ignores global aspect settings
Copying of the default drawer's parameters added.
2014-10-23 16:20:46 +04:00
abv
3415763e74 0025401: Some warnings could be eliminated
Do not redefine macro "strcasecmp" on Windows (MSVC) if it is already defined.
Some useless declarations and comments removed.
2014-10-23 16:20:46 +04:00
jgv
0e0f7a7cde 0025334: BRepOffsetAPI_MakeOffset algorithm crashes on some customer's shape
Test cases for issue CR25334
2014-10-23 16:20:45 +04:00
kgv
ba9e14dfb9 0025373: Visualization, AIS_MultipleConnectedInteractive - transformation persistence flags are ignored for connected objects
Provide method AIS_MultipleConnectedInteractive::Connect() taking transformation persistence flags.
Copy transformation persistence flags from original objects when called Connect() without extra arguments.
2014-10-23 16:20:43 +04:00
msv
191082ac71 0025344: Draw variables do not follow the scope of TCL level
Use NCollection_Map instead of instantiation of TCollection_Map

Test-cases for issue #25344

Correct error in test script: the shape variable assigned by the command 'restore' must not be referred by '$'.
2014-10-23 16:20:42 +04:00
kgv
a69a08ee9e 0025294: Visualization, PrsMgr_Presentation - detach connected presentations on destruction 2014-10-23 16:20:41 +04:00
msv
5e452c37ee 0025348: Method Assign of NCollection containers must not change own allocator of the target
Correct according to remarks of reviewer:
- Assign() and operator=() should implement equal approach to allocators
- Protect all collections against assignment to itself with operator=()

Test-case for issue #25348
2014-10-23 16:20:40 +04:00
kgv
86766b0ee0 0025381: Visualization - XCAFPrs_AISObject ignores visibility flag for sub-shapes
Test case for issue CR25381
2014-10-23 16:20:39 +04:00
apl
bc67757515 0024965: Problem in local selection mode with selected objects staying in the viewer
Added method to clear outdated selection of entity owners on recompute (update) of selection.
Added test case to check selection behavior in local context.

Cosmetic corrections
2014-10-23 16:20:38 +04:00
kgv
40f70ac929 0025371: Visualization - raise exception in AIS_ConnectedInteractive::Connect() on invalid argument
Indicate API misuse by program exception.
2014-10-23 16:20:37 +04:00
dbp
25ef750e44 025306: Visualization, TKOpenGl - support texturing within RayTracing
Fix bug with overlay OpenGL text.
2014-10-23 16:20:36 +04:00
aml
f82a9555dc 0025376: Inconsistence between function and derivatives evaluation in Extrema_GlobOptFuncCS.
Changed "value" function behavior in Extrema/Extrema_GlobOptFuncCS.cxx. Now it compute square distance between point on curve and point on surface.

Fixed description in Extrema_GlobOptFuncCC.
2014-10-23 16:20:35 +04:00
osa
ed06327034 0025332: Visualization - rewrite MinMaxValues methods to using of Bnd_Box 2014-10-23 16:20:34 +04:00
apn
e1cbc34c5f 0023698: BRepBuilderAPI_Copy creates invalid copy
Added test case bugs/modalg_5/bug23698
2014-10-23 14:00:26 +04:00
isz
196b01482b 0025359: In Draw Test Harness: content of menu-items "Curves" and "Surfaces" is increased after each sample launching
Menus "Curves" and "Surfaces" are destroyed now (if they exist) before displaying.
2014-10-23 13:58:48 +04:00
apl
ba4feb7629 0025265: Perspective projection - selecting front point of two 2014-10-23 13:23:30 +04:00
abv
0644bfa483 Fix compilation without TBB (VC9) 2014-10-17 16:58:48 +04:00
mkv
4292bee12a Correction of testing cases 2014-10-17 16:40:22 +04:00
bugmaster
83a8694888 Eliminating of warning 2014-10-17 16:38:33 +04:00
abv
aefdc31bf0 0025266: Debug statements in the source are getting flushed on to the console
Suppress remaining couts in packages explicitly mentioned in the original bug description

Correction of test cases for issue CR25266
2014-10-16 16:45:55 +04:00
apn
a520f6eb9a 0025313: Review of TODOs in test cases for unused platforms
TODOs for unused platforms were deleted. Issue 22988 was closed.
2014-10-16 16:45:27 +04:00
nbv
9e20ed5793 0023547: Tests failures in debug mode
1. DRAW-commands for curve/surface continuity returning were changed.
2. Output of "distmini" DRAW-command is amended.
3. Function MinMax() was moved from Standard_Real to IntPatch_ImpImpIntersection_4.gxx.
4. Incorrect computing of nbcurveC1 in Geom2dConvert::C0BSplineToC1BSplineCurve(...) function was liquidated.

Test cases were changed.
2014-10-16 16:45:13 +04:00
dbv
63c629aa3a 0025266: Debug statements in the source are getting flushed on to the console
Output to cout activated previously in Debug mode by #ifdef DEB is suppressed by using macro <PACKAGE>_DEB instead of DEB
2014-10-16 16:44:56 +04:00
kgv
7aa1b65c2a 0025369: Visualization, Image_AlienPixMap - handle UTF-8 names in image read/save operations on Windows
Test-case for issue #25369
2014-10-16 16:14:06 +04:00
kgv
54a16ee447 0025340: Visualization, AIS_InteractiveContext - properly apply selection filters at Neutral point
Do not use myMainSel->OnePicked() in AIS_InteractiveContext::MoveTo().

Test-case for issue #25340
2014-10-16 16:08:27 +04:00
nbv
058f130eff 0025100: Self-intersection of surfaces with using GeomAPI_IntSS rises run-time check failure
1. Bug command added.
2. Dynamic array is used in place of static.
2014-10-16 15:58:19 +04:00
kgv
01d5be80b8 0025370: Visualization - misprint in PrsMgr_PresentationManager::Connect()
fix theMode -> theOtherMode
2014-10-16 15:50:42 +04:00
san
6d17debbe9 0025383: Broken vrecord command
Pass HWND of the current 3D view to OpenGl_AVIWriter::StartRecording()
in order to make it work.
2014-10-16 15:46:36 +04:00
abv
94dea18e8b 0025365: Regressions after changes in IsClosed flag
Restore previous behavior of BRep_Tool::IsClosed() for shells: empty shells and shells containing only INTERNAL or EXTERNAL sub-shapes are considered non-closed.
2014-10-16 15:43:55 +04:00
apl
6262a3032c 0025363: Visualization - add test command for V3d_View::FitAll by view area 2014-10-16 15:38:44 +04:00
dbv
5203f74183 0021802: Not all names are transferred from STEP to IGES via XDE
Method IGESCAFControl_Writer::WriteNames now iterates over all nested assemblies and collects names for shapes.
Regression fix
Test-case for issue #21802
2014-10-16 15:36:14 +04:00
emv
4691b61a72 0025319: Bop Common produces strange results with same shapes.
class BOPAlgo_Builder
method
  void BOPAlgo_Builder::FillIn3DParts
    (BOPCol_DataMapOfShapeListOfShape& theInParts,
     BOPCol_DataMapOfShapeShape& theDraftSolids,
     const BOPCol_BaseAllocator&)
Sort faces before its classification relatively to the solid.

Test cases for issue CR25319

Correction of test cases for issue CR25319
2014-10-16 15:31:11 +04:00
emv
2a2e3ecdc7 0025245: General Fuse operation regression
class BOPDS_DS
method:
  void BOPDS_DS::InitPaveBlocks(const Standard_Integer theI)
Correct treatment of internal edges.

Test cases for the issue.

Correction of test cases for issue CR25245
2014-10-16 15:27:31 +04:00
emv
d46546cdcd 0023753: Test case bugs modalg_2 bug19793_2 works too long on Linux platform
class IntTools_ShrunkRange
method void IntTools_ShrunkRange::Perform()
Fix to avoid creation of small section edges.

Correction of test case for issue CR23753
2014-10-16 15:15:13 +04:00
osa
f0ecc0cc24 0025358: Visualization - method V3d_View::Reset has incorrect condition for update 2014-10-16 15:10:04 +04:00
kgv
5b37e9d143 0025366: Method AIS_MultipleConnectedInteractive::AcceptShapeDecomposition() should be exported 2014-10-16 15:04:31 +04:00
vro
8e1e79f052 0025317: Failure on attempt to save an Ocaf document with a long double array attribute in a Xml file
A draw-command SetRealArrayValue. It is necessary to reproduce the crash.
A fix + some additional draw-commands
Test cases for issue CR25317
2014-10-16 15:02:30 +04:00
duv
7d9e854bdc 0025276: Visualization - Lighting is broken if some kinds of transformation applied to a shape
In order to solve the problem, triangle vertices order is inverted in
mirrored mesh (triangulation). Mesh considered to be mirrored if its
transformation matrix determinant is less than 0.

To handle AIS object mirror transformations "Mirrored" flag stored in
OpenGl_Structure. If this flag is enabled, glFrontFace (GL_CW) applied
before the draw call.

New DRAW commands for visualization level transformations added.
2014-10-16 14:58:33 +04:00
pdn
c60370656c 0007570: Exception in ShapeFix_Wireframe::FixSmallEdges
Exception fixed by checking if subshape removed completely.

Test-case for issue #7570
2014-10-16 14:26:12 +04:00
kgv
256f9ac0ad 0025303: Visualization, TKOpenGl - dynamically disable unused light sources in generated GLSL program 2014-10-16 13:44:18 +04:00
bugmaster
2c2cebb3f7 Adding dependencies from tbb 2014-10-16 13:26:16 +04:00
mkv
eb46b12346 Correction of test case for issue CR25142 2014-10-10 16:38:30 +04:00
abv
ab860031bd 0025202: Incorrect value of IsClosed flag in shapes produced by some algorithms
Method BRep_Tool::IsClosed() extended to analyze closure of wires in addition to shells and solids.
External and Internal edges and vertices are ignored in this check.
Analysis of compounds is disabled.

Update of flag Closed according to actual state is added in most places where new shells are constructed.

Draw-command and test case for issue CR25202
2014-10-10 16:28:36 +04:00
apl
2bc75a1bce 0024802: "help" command shouldn't apply implicit rules in definition process of what command description it should show
-When in "help <command>" <command> was exactly found in existing draw commands, then helpstring for this <command> is displayed,
  else "help" fails and error message is displayed
 -When "*word" or "word*" or any other combination is given in args, then help command performs typical wildcard search.
2014-10-10 16:22:45 +04:00
dbp
e3709f1d0a 025314: Usage of smart pointers for dynamically allocated memory in BVH 2014-10-10 16:16:23 +04:00
isz
ab91ab6fea 0025231: DRAW - make top level menu useful
-Meaningful texts are provided instead of commands in File menu (e.g. restore->Load Shape (restore))
-tk_getOpenFile is used in "open file" dialogs
-tk_chooseDirectory is used in "change directory" dialog
-Added menu "Help" with submenus "System info", "Commands", "About", "User Guide"
-Added menu "Samples" with submenu "View samples"
-Added menu "Load" with submenus "pload <Module>"
2014-10-10 16:08:26 +04:00
azn
fcf15f5ca3 0025310: Regressions in visualization
- Memory management in the BRepMesh_FastDiscret class is changed. Now the unused face attributes is immediately removed.
2014-10-10 16:05:55 +04:00
dln
15534713ba 0024699: Visualization - prototype interoperation of TKOpenGl viewer with Direct3D viewer
Add new C# sample which allow to render the OCCT scene to a Direct3D context in a WPF application.
DirectX SDK is required in order to build this sample.
2014-10-10 15:06:42 +04:00
kgv
2ab7a755c2 Sync res/resource.h from src/resource.h 2014-10-10 12:54:45 +04:00
bugmaster
09711f3720 Incrementation of OCCT version up to 6.8.0beta
Correction of license statements
2014-10-10 12:54:43 +04:00
ysn
beb18c1f6e 0022859: Developers guide with code samples
A user's guide for VTK Interactive Services has been added in the documentation

quick fix

Minor corrections in documentation syntax
2014-10-09 16:34:09 +04:00
duv
d81101039f 0025335: Visualization - method ::SelectedShape() in AIS_LocalContext and AIS_InteractiveContext overrides shape transformation
Shape location overriding fixed by combining AIS object transformation and shape location.
Also incorrect highlight presentation (and sensitive) placement was possible.
2014-10-09 16:31:02 +04:00
mkv
de6f281fe9 0023886: Visualizing planar faces with "notches" depends heavily on the deflection coefficient
Test cases for issue CR23886
2014-10-09 16:29:33 +04:00
apl
4a350f9410 0024606: DepthFitAll and ZFitAll do not eliminate z-clipping
Test case for non-regression verification

Correction of test case for issue CR24606
2014-10-09 16:25:20 +04:00
mkv
e2fd181c29 0023400: Triangulation of thin ring contains gap
Test case for issue CR23400
2014-10-09 16:22:09 +04:00
mkv
432a8df015 0024127: Mesh generated with BRepMesh_FastDiscret does not reflect a deflection setting \n Test case for issue CR24127 2014-10-09 16:20:27 +04:00
mkv
6e24232219 0022614: Scaling fails with linear (p-)curves
Test cases for issue CR22614
2014-10-09 16:18:46 +04:00
apl
fb4b684a95 0024966: Problem in local selection mode with selected objects staying in the viewer after erase
Entity owners built from decomposition of parent interactive shape are now treated when erasing shape in local selection context

Correction of test case for issue CR24966
2014-10-09 16:15:46 +04:00
apl
b6d587e35a 0025316: Draw viewer commands - display (erase) objects in local selection context 2014-10-09 16:13:27 +04:00
gka
519b544671 0025333: Result wires obtained after TestHarness command "connectedges" contains internal edges
Fix contains protection in order to avoid addition in result wires INTERNAL or EXTERNAL edges during connecting edges in wires.

Test case for issue #25333
2014-10-09 16:04:15 +04:00
esa
ab1469893c 0025329: ExprIntrp_GenExp can not parse unary plus
Formatting

Test case for issue CR25329
2014-10-09 16:02:15 +04:00
osa
3910bc6501 0025331: Visualization - method V3d_View::ConvertWithProj returns incorrect value 2014-10-09 16:02:14 +04:00
aba
4716247158 0025284: Problems with standard MFC samples
- OCAF sample Save Document option: corrected conversion from LPCTSTR to Standard_CString
 - HLR sample: corrected mouse move event handling for HLR 2D view; Corrected CSelectionDialog view displaying and updating
 - Geometry sample: CGeometryDoc correction to avoid code duplication
 - OCC_3dBaseDoc: corrected DragEvent() handler for proper emulation of rectangle selection.
 - Viewer3d sample: moved resource files (resource.h; resource.hm; AISToolbar.bmp) from /src to /res

Code style changes

Fixed "About" dialog error in release.

Corrected dimension dialogs

Workaround for dimensions sample: AIS_LocalContext::SelectedShape() doesn't take into account TopoDS shape local transformation, and operates with selected interactive transformation.
2014-10-09 16:02:12 +04:00
dbp
679d38788d 0025159: Collections and common types in BVH package are named in non-conformant manner
Fix GCC compilation errors.
2014-10-09 16:02:10 +04:00
dbp
0ef61b502b 0025234: Implementing LBVH builder
Performs fast BVH construction using LBVH building approach. Algorithm uses spatial Morton codes to reduce the BVH construction problem to a sorting problem (radix sort -- O(N) complexity). This Linear Bounding Volume Hierarchy (LBVH) builder produces BVH trees of lower quality compared to SAH-based BVH builders but it is over an order of magnitude faster (up to 4M triangles per second).
2014-10-09 16:02:09 +04:00
dbp
3a7a70135c 0025227: Visualization - optimize BVH binned builder
BVH binned builder is used for different rendering aspects, such as view frustum culling, ray-tracing, and (in future) for selection. It is desirable to improve builder performance. This simple patch decreases BVH building time for 30-35%.
2014-10-09 16:02:07 +04:00
apl
30d33e7141 0024716: OSD_Path - remove excessive validity checks and allow non-ascii strings
First commit. Update for new IR
2014-10-09 16:02:05 +04:00
mkv
cca0f261aa 0025191: There is no intersection vertex between edges
Test case for issue CR25191
2014-10-09 14:11:09 +04:00
msv
39ef94f8f5 0025324: Make OCCT collections copy-constructible
Since TCollection package is going to be obsolete we change only classes that are currently needed to have copy constructor.
2014-10-09 14:08:57 +04:00
san
61aa7f3d3c 0025251: Visualization - Isolated vertex is invisible in shading mode
BVH_BinnedBuilder class corrected to split several objects
with null bounding box (e.g. two or more vertices).

Test case for issue CR25251
2014-10-09 14:04:21 +04:00
apl
cddbf6a985 0024717: TKOpenGl - globally defined clipping planes blink when operating with view
Specify viewer (global) clippings in correct view transformation space.

Correction of test case for issue CR24717
2014-10-09 13:49:06 +04:00
pdn
a0fc422a3a 0025267: Implementation of callback before DRAW exit
Callback mechanism implemented.

Do the same treatment at DRAW exit on UNIX

Add comments to the new methods

Change callback type to be a function pointer
2014-10-09 13:43:24 +04:00
san
50b830a09b 0025142: Visualization breaks triangulation on shared solids in composite solid model
Test case for 0025142: Visualization breaks triangulation on shared solids in composite solid model

Do not clean the triangulation in StdPrs_ShadedShape::Tessellate() and
let the triangulation tool process the sub-shapes properly.
Treat triangulation consistently in all AIS classes (AIS_Shape, AIS_TexturedShape).

Test cases for issue CR25142
2014-10-09 13:39:25 +04:00
abv
ada5f62195 Definition of Unicode symbol in test corrected 2014-10-03 11:27:04 +04:00
kgv
c7ccbb77a0 update OpenGl_Window constructor arguments in OpenGl_Window_1.mm 2014-10-03 10:19:14 +04:00
pdn
9df7f42944 0025261: NCollection, set of improvements
The following improvements were implemented:
* two additional allocators were introduced
  * Allocator which used WinHeap
  * Accumulating memory allocator
* Access to Allocators in lists are provided
* Access optimization in data map (seek and find functions returning reference or pointer to value in one shot)

Warning fixed
2014-10-02 16:01:17 +04:00
oan
848fa7e315 0025154: Collections in BRepMesh package are named in non-conformant manner
- BRepMesh converted to nocdlpack,
- Collections are defined in namespace BRepMesh,
- Doxygen comments corrected to use @ instead of \.
2014-10-02 15:42:13 +04:00
pdn
d9ff84e8ea 0022484: UNICODE characters support
Initial UNICODE (UFT-8) characters support for OCCT file operations

Fix for compilation errors and fix for StepFile (avoid objects in pure c code)

Fixes for set unicode symbols to OCAF and visualization
2014-10-02 15:40:11 +04:00
jgv
d3dfddaebc 0025272: Regression in BRepOffsetAPI_MakePipe: invalid shape is created
Fix of regressions
Test-case for issue #25272
2014-10-02 15:36:28 +04:00
kgv
8625ef7e94 0025282: Visualization, OpenGl_PrimitiveArray - provide built-in GLSL programs as alternative to FFP
Enumerations Visual3d_TypeOfModel, V3d_TypeOfShadingModel.
- Remove unused values V3d_MULTICOLOR, V3d_HIDDEN, Visual3d_TOM_INTERP_COLOR.
- Add per-pixel shading mode - V3d_PHONG, Visual3d_TOM_FRAGMENT.

Draw Harness command vrenderparams.
Add option -shadingModel to setup Shading Model.

OpenGl_Caps::ffpEnable - new option to switch FFP/built-in GLSL programs.
OpenGl_ShaderManager - add built-in GLSL programs.

Draw Harness command vcaps.
- Fix command syntax to meet coding rules.
- Add option -ffp to activate/disable built-in GLSL programs.

GLSL API changes.
- Rename vertex attribute occColor -> occVertColor.
- Introduce vec4 occColor uniform variable for light-less shaders.
- Introduce float occPointSize uniform variable for marker programs.

OpenGl_VertexBuffer::bindAttribute() - activate normalization for non-GL_FLOAT types,
since color attribute is defined as 32-bit vector of 4 unsigned byte values.

OpenGl_Context - add methods SetColor4fv() and SetPointSize()
for parameters redirection to active GLSL program
(as alternative to glColor4fv() and glPointSize()).

OpenGl_ShaderProgram - define default precision for float types
in Fragment Shader within OpenGL ES 2.0+ context.

OpenGl_AspectMarker, initialize Aspect_TOM_O_POINT display list
in the same way as sprite texture.

OpenGl_Texture, do not use sized internal formats on OpenGL ES.
2014-10-02 14:29:19 +04:00
kgv
25b97fac40 0025147: Visualization, TKOpenGl - support EGL as alternative to GLX
Aspect_Window - add interface methods NativeHandle() and NativeParentHandle().
OpenGl_Window - pass OpenGl_GraphicDriver instance to the constructor.
OpenGl_Caps - add option to disable buffers swap at the end of frame redraw.
2014-10-02 14:29:17 +04:00
kgv
6b62b2da81 0025291: Draw Harness, ViewerTest - replace command vchangecamera to vcamera and improve syntax
Make vcamera command syntax more clear.
Restore command vraytrace as alias to vrenderparams.
Replace occurencies of atof() by Draw::Atof() in ViewerTest_ViewerCommands.cxx.
2014-10-02 14:25:55 +04:00
kgv
fe551aef6c 0023745: Draw Harness, ViewerText - vdrawtext command should not modify global text aspect
Test case for issue CR23745
2014-10-02 14:24:19 +04:00
kgv
8316c618a4 0025289: Draw Harness, ViewerTest - support RGB color definition as input for vsetcolor and vaspects commands 2014-10-02 14:16:53 +04:00
pkv
9c0b61f308 0025285: Wrong result of General Fuse operation for an edge and a face.
Changes:
class BOPTools_AlgoTools2D
    method:
void BOPTools_AlgoTools2D::AdjustPCurveOnFace
  (const TopoDS_Face& aF,
   const Standard_Real aFirst,
   const Standard_Real aLast,
   const Handle(Geom2d_Curve)& aC2D,
   Handle(Geom2d_Curve)& aC2DA)

The adjustment value for 2D curve has been calrified with precision value in parametric space

Test case for issue CR25285
2014-10-02 14:11:16 +04:00
dbp
735dc1d26e 0024930: Visualization - SetMaterial/UnsetMaterial/UnsetColor are not implemented for AIS_TexturedShape
Correction of test case for issue CR24930
2014-10-02 14:06:07 +04:00
aba
0499eb0670 0025235: Draw Harness - improve commands vdimension and vdimparam
Make commands syntax to meet coding rules.
Correct angle dimension initialization to allow ellipse input geometry with equal radii.
Change default value of arrow angle for dimensions (from 20 to 12 degrees).
Add arlength, arangle, textmode, textsize to vdimension and vdimparam Draw commands.
Add color parameter to vdimension and vdimparam.
Display dimensions by default.

Add dimensions demo script samples/tcl/dimensions.tcl.

Add file for test case for issue CR25235
2014-10-02 14:03:02 +04:00
nbv
52d4584155 0025109: Check PolygonOnTriangulation contained in edges
1. New status "BRepCheck_InvalidPolygonOnTriangulation" is added.
2. Small correction of output of "checkshape" command result.

Test cases were changed.

Test case for issue CR25109

Some test cases were changed according to their new behavior.
2014-10-02 13:54:54 +04:00
vro
8e7c8ccf3a 0025098: Visualization, Select3D_SensitiveCurve - fix computation of the depth
Draw Harness, add option -entities to command vstate.
Within new option command displays information about detection entities.
2014-10-02 13:50:03 +04:00
jgv
c19dd45ee0 0025298: New option of BRepOffsetAPI_MakeOffset algorithm: processing of sharp corners in mode GeomAbs_Intersection
Test cases for issue CR25298
2014-10-02 13:36:53 +04:00
kgv
1c1e319d1e 0025290: .gitignore - do not track generated files with extensions aps, opensdf, ipch 2014-10-02 13:34:15 +04:00
aml
e322db461d 0025269: Make parallel version of boolean operations avaible from DRAW
new command bsetparallelmode added.
usage: bsetparallelmode [1/0].

Documentation for new command "bsetparallelmode" added.
2014-10-02 13:33:43 +04:00
mkv
d32dc118f1 0025084: Incorrect PCurve construction
Test case for issue CR25084
2014-10-02 12:27:23 +04:00
mkv
a6844d20f1 Update of testing cases due to changes in issue 23106 2014-09-29 15:28:56 +04:00
abv
01a7df1b18 0025101: Typo in code documentation of gp_Trsf::SetValues
Documentation of methods Multiply() and Multiplied() corrected in classes gp_(G)Trsf(2d)
2014-09-29 15:15:08 +04:00
abv
973001bfce 0025247: Ensure correct end-of-line in test scripts 2014-09-26 17:30:59 +04:00
abv
008297e1e8 0025101: Typo in code documentation of gp_Trsf::SetValues
Documentation of methods Multiply() and Multiplied() corrected in classes gp_(G)Trsf(2d)
2014-09-26 17:29:04 +04:00
abv
476e84b169 Added info on VTK availability in dversion command; VTK tests are corrected to report SKIPPED status if VIS is not available 2014-09-26 17:29:03 +04:00
abv
868dbdbae4 0025005: Global function HashCodes() is not exported on Windows
HashCodes() is exported
2014-09-26 17:29:02 +04:00
abv
8e8070c47d 0025000: Missing implementation of method NCollection_SparseArrayBase::changeValue()
Method changeValue() removed from NCollection_SparseArrayBase, ChangeValue() of NCollection_SparseArray is used instead
2014-09-26 17:29:01 +04:00
pkv
59427cbc91 0025263: Wrong result of cut operation.
Changes:
class BOPDS_DS
method:
void BOPDS_DS::InitPaveBlocks(const Standard_Integer theI)

The treatment of internal edges has been added.

Test case for issue CR25263
2014-09-26 17:15:12 +04:00
emv
92ae0f2fe3 0025232: Functionality to create solids from set of shapes
Purpose:
The algorithm is to build solids from set of shapes.
It uses the BOPAlgo_Builder algorithm to intersect the given shapes and build the images
of faces (if needed) and BOPAlgo_BuilderSolid algorithm to build the solids.
Steps of the algorithm:
1. Collect all faces: intersect the shapes if necessary and collect  the images of faces,
   otherwise just collect the faces to the <myFaces> list.
   All faces on this step added twice, with orientation FORWARD and REVERSED;
2. Create bounding box covering all the faces from <myFaces> and create solid box from corner points
   of that bounding box (myBBox, mySBox). Add faces from that box to <myFaces>;
3. Build solids using faces from <myFaces> using BOPAlgo_BuilderSolid algorithm;
4. Treat the result: Eliminate solid containig faces from <mySBox>;
5. Fill internal shapes: add internal vertices and edges into created solids;
6. Prepare the history.

Fix for regression.
class BOPAlgo_BuilderSolid:
The tolerance value used in BRepClass3d_SolidClassifier has been increased.

Test cases for issue CR25232

Small correction to eliminate the warning.
2014-09-26 17:12:29 +04:00
abv
7277133aa9 0025072: Environment variable MMGT_REENTRANT is still mentioned in the Overview although it was removed
References to MMGT_REENTRANT are removed from docs
2014-09-26 16:38:50 +04:00
pdn
c1e18dd843 0025259: Incorrect split on toroidal surface in LocOpe
Current implementation can fail in case if several alternative directions in wire creation are possible.
The proposed fix provides:
* define the most left direction in UV
* usage of indexed map to provide deterministic behavior

Error message is put into exception raised in case if split is not possible
2014-09-26 16:36:43 +04:00
oan
ceb418e13f 0023106: BRepMesh_IncrementalMesh returns wrong status
Fix compilation errors on Linux platform

Squeeze compilation warnings on Linux

Fix regressions

Back RemoveFaceAttribute for further reasons

Fix retrieving of polygon by index

Fix applying of location

Test case for issue CR23106

Fix memory leak regression 'test bugs vis bug79' occurred due to incorrect memory cleaning of inherited objects by MMgtRaw::Free through BRepMesh_IEdgeTool;

Replace BRepMesh_PDiscretRoot by pure pointer to BRepMesh_DiscretRoot;

Fix IVtkOCC_ShapeMesher.
2014-09-26 16:32:25 +04:00
anv
709e97a0c1 0024961: MeshVS: revision of DRAW commands
meshfromstl - display MeshVS_Mesh object in a way consistent with vdisplay command
meshdel - deleted, vremove to be used instead
meshshowall - set empty maps of hidden IDs instead of null handles
meshhidesel - initialize the maps of hidden IDs to avoid exception
meshmat - add optional transparency argument and enable transparency in the viewer if not yet done
meshvectors - command for testing VectorPrsBuilder added

MeshVS: DRAW commands improving
Updating test cases due to previous changes
Small bug in MeshVS_ElementalColorPrsBuilder fixed
vselmode fix
Small correction of test cases for issue CR24961
2014-09-26 16:27:01 +04:00
dbv
ec661e4333 0024159: Colors are not imported for Step-Files created with Inventor 2014
Method STEPConstruct_Styles::LoadStyles() now imports StepVisual_StyledItem entities even if they was defined without StepVisual_MechanicalDesignGeometricPresentationRepresentation or StepVisual_DraughtingModel entity

Update of reference data
2014-09-26 16:23:58 +04:00
bugmaster
f99b44099f Removing TODO in testing cases due to improvements 2014-09-26 14:29:56 +04:00
bugmaster
f1c9c9d76b Update of documentation in part of platforms used for certification 2014-09-26 12:51:03 +04:00
jgv
d2388a818c 0024959: GCPnts_TangentialDeflection does not implement functionality by its meaning in case of BSpline with local splash
In GCPnts_TangetialDeflection curve divided in C_N intervals on which sample points (still 3) is computed.

Test cases for issue CR24959
2014-09-25 16:01:05 +04:00
nbv
7a8c6a36e6 0025194: It is necessary to orthogonalize transformation matrix in gp_Trsf and gp_Trsf2d classes
1. Method "SetValues()" for gp_Trsf2d class is added.
2. Method Orthogonalize for gp_Trsf2d and gp_Trsf classes was added.
3. Unused arguments from "SetValues()" method for gp_Trsf was deleted.
4. Output of AppParCurves_MultiPoint Dump  was corrected.
5. Method of right projected point choosing was corrected in ProjLib package.
6. Some test cases were changed according to their new behavior.
2014-09-25 15:58:39 +04:00
nbv
b89b1e0816 0025248: Curve-Surface intersection algorithm raises exception
All necessary comments are into the program code.

Test case for issue CR25248
2014-09-25 15:58:37 +04:00
aml
d538d7a221 0024589: Draw Harness - disable floating-point exceptions by default
OSD::SetSignal() called with Standard_False argument to have FPEs disabled.

Test cased modification:
de step_4 G7 - fixed reference data.
de iges_2 H9 - Fixed reference data. According to input file, there are big tolerance edge and surface, which leads to big tolerance in ref data, result and image has changed due to usage of these shapes instead of omitting them.
de end - changed behavior in case of big isolines, now isolines not break fit command in certain places.

Modeling algorithms:
Fixed 0.0 / 0.0 uncertainty in circle to quasi-angular bspline conversion.

Correction of test cases for issue CR24589
2014-09-25 15:58:35 +04:00
jgv
d8726c7c6b 0025207: GCPnts_QuasiUniformDeflection achieves incorrect result on some curve.
Test case for issue CR25207
2014-09-25 15:58:34 +04:00
kgv
ca3c13d1e8 0025219: Visualization, TKOpenGl - disable code paths unavailable on OpenGL ES 2.0 2014-09-25 15:58:33 +04:00
pdn
7dc9a40776 0025258: Uninitialized class field in IntPatch_CSFunction
Field f is initialized by zero
2014-09-25 15:58:30 +04:00
pdn
a2ca2a304f 0025257: Expr should use names for comparing
Expression should use string names for comparing, fixed
2014-09-25 15:58:29 +04:00
pdn
0d1b4a2271 0025256: Small optimization in Convert comp bezier to BSpline
Optimization and code cleaning of CompBezierCurvesToBSplineCurve::Perform
2014-09-25 15:58:28 +04:00
pdn
d780e37a83 0025255: API to control storage with triangulation in BinTools
Method to govern writing shape with or without triangles added
2014-09-25 15:58:27 +04:00
pdn
4f93349381 0025254: Protection on null pcurves in tgtfaces BRepLib
Check is pcurves are present is implemented.
2014-09-25 15:58:25 +04:00
pdn
5792217118 0025253: gp_trsf code cleaning
More accurate code of transformation type definition
2014-09-25 15:58:24 +04:00
pdn
71598a83cd 0025252: Slow down in reading of .brep on VS2011
Reading of .brep is slow down on VS2011 due to problems in realization reading ASCII strings to real. Implementation of dedicated function for reading of reals was implemented
2014-09-25 15:58:22 +04:00
isz
07dd6e9bee 0025230: Test case for selection in perspective views
Implemented test for selections in perspective view by point, by rectangle and by polygon.
2014-09-25 15:58:21 +04:00
jgv
59af51e3c1 0025243: BRepFeat_SplitShape algorithm processes incorrect faces with degenerated edges
Test case for issue #25243
2014-09-25 15:58:20 +04:00
apv
53f532f5ed 0025178: Visualization - edges of the model are still clipped after vfit command
Test case for issue #25178
2014-09-25 15:58:18 +04:00
emv
3e594885aa 0025237: Wrong result of COMMON operation
Modifications in Edge/Edge intersection algorithm:
1. Condition to create common part of type TopAbs_EDGE is changed.
2. Correct treatment of closed edges.

Small correction to eliminate warning.

Test case for issue #25237
2014-09-25 15:58:17 +04:00
apl
d33222c108 0025129: Visualization - add interactive object for Points Cloud objects
New class AIS_PointCloud for displaying point sets.
Update Graphic3d_ArrayOfPoints, OpenGl_PrimitiveArray and OpenGl_VertexBuffer classes to be able to use normals for points.

Add Draw Harness command vpointcloud.
Add test case v3d/point_cloud/sphere.

Move protected method AIS_Shape::DisplayBox() to public function StdPrs_WFDeflectionRestrictedFace::AddBox().

Small correction of grids.list for v3d tests
2014-09-25 15:58:15 +04:00
abv
a9b30f0acb 0025077: [OOP] Explicit initialization of copy constructor
Explicit calls of copy constructor of base class added where compiler warnings are reported

Minor correction
2014-09-25 15:58:14 +04:00
jgv
d804b26d77 0024910: Offset of solid is not created
Optimization of local function

Test case for issue #24910
2014-09-25 15:58:13 +04:00
jgv
ba4181452c 0025205: BRepOffsetAPI_MakeFilling algorithm's documentation is insufficient 2014-09-25 15:58:11 +04:00
pkv
955b3e7102 0025242: Wrong result of cut operation.
1. class BOPDS_Iterator
method:
void BOPDS_Iterator::Intersect()
The ttreatment of solid/* interferences has been added.

2 class BOPAlgo_PaveFiller
protected methods:
void BOPAlgo_PaveFiller::PerformVZ()
void BOPAlgo_PaveFiller::PerformEZ()
void BOPAlgo_PaveFiller::PerformFZ()
void BOPAlgo_PaveFiller::PerformZZ()
has been added.
The methods are to Compute
Vertex/Solid
Edge/Solid
Face/Solid
Solid/Solid
interferences.

3. class BOPAlgo_PaveFiller
protected method:
void BOPAlgo_PaveFiller::PerformFF()
Empty interferences has not been added in the interferences' table

4. class BOPAlgo_CheckerSI
protected methods:
void BOPAlgo_CheckerSI::PerformVZ()
void BOPAlgo_CheckerSI:PerformEZ()
void BOPAlgo_CheckerSI::PerformFZ()
void BOPAlgo_CheckerSI::PerformZZ()
has been removed.

5. class BOPAlgo_BOP
protected method:
void BOPAlgo_BOP::BuildRC()
void BOPAlgo_BOP::BuildSolid()
changed to treat non-interferred solids and keep it in the result as they were

Test case for issue #25242
2014-09-25 15:58:10 +04:00
dbp
418864aea1 0025164: BVH_Box::Area() might be called on uninitialized data 2014-09-25 15:58:09 +04:00
kgv
eaf5c5e010 0025216: WNT_Window - remove unused fields and types (WNT_WindowData)
Clean up InterfaceGraphic.hxx

OpenGl_Window - do not use removed macros WINDOW

Small correction of test case for issue CR25216
2014-09-25 15:58:07 +04:00
khlebnikov
c1c03615f6 0025024: BSplCLib::PrepareInsertKnots reports incorrect number of poles
Added test bugs fclasses bug25024
2014-09-25 15:58:06 +04:00
bugmaster
34028c1ff3 Update of test cases for Debug mode 2014-09-19 13:39:33 +04:00
drazmyslovich
de10d8b144 0025175: avoid unsafe 3D curve usages
Test case for issue CR25175
2014-09-18 15:54:42 +04:00
kgv
9bf6baed3c 0025215: Porting to Android - fix minor issues
STEPConstruct_AP203Context = pw_gecos member of passwd struct disabled in android case.
Standard_Atomic - correct usage of __atomic_inc()/__atomic_dec().
Standard_CLocaleSentry - Android doesn't support locales in the C library.
Standard_MMgrOpt - use "/dev/zero" and "/dev/null" for allocation of memory blocks on Android.
OSD_Chronometer - fix compilation on Android.
OSD_Disk, OSD_signal - fix headers inclusion on Android.
2014-09-18 15:45:43 +04:00
kgv
aaf512f112 0025217: Draw Harness - activate GLSL warnings output within command vgldebug 2014-09-18 15:27:58 +04:00
kgv
7d3e64ef5e 0025213: Visualization, TKOpenGl - do not use deprecated built-ins in GLSL shaders
Inherit NCollection_Buffer from Standard_Transient, do not use incomplete NCollection_Handle.

OpenGl_Context, add methods ActiveProgram(),BindProgram()
to manage currently active GLSL program.
Add method ::ToUseVbo().

OpenGl_ShaderProgram, setup locations of pre-defined vertex attributes
occVertex, occNormal, occTexCoord, occColor before linkage.
Remove methods OpenGl_ShaderProgram::Bind(), ::BindWithVariables()
and ::Unbind() - OpenGl_Context::BindProgram() should be used instead.

Introduce class OpenGl_VertexBufferCompat, which emulates VBO
behavior on systems without VBO (compatibility with broken OpenGL drivers on Windows).

OpenGl_PrimitiveArray - use OpenGl_VertexBufferCompat when VBO is unavailable,
remove duplicated code. Use OpenGl_VertexBuffer::HasNormalAttribute()
method to activate lighting.

OpenGl_Text - use OpenGl_VertexBufferCompat, eliminate duplicated code.

Changes in OpenGl_VertexBuffer, drop methods BindFixed()/UnbindFixed().
Superseded by new methods BindAllAttributes()/UnbindAllAttributes()
which handle active GLSL program, when it is set.
2014-09-18 15:24:07 +04:00
ibs
9f33b387e2 0024888: Refactoring of OCCT CMake meta-project
user sees just dirs of libs, shared libs and headers of 3rdparty products
documentation updated

3rdparty search priority was fixed: 1. user paths; 2. system paths
3rdparty debug usage fixed
vtk search introduced
occt information, generated by wok, was divided onto two files: occt_toolkits.cmake and occt_inc_toolkits.cmake
additional behavior of cmake search for freetype 2.5.1 and above

CMake (version < 3.0) don't know about new place of config/ftheader.h in freetype 2.5.1. There are cases when cmake seeks config/ftheader.h in defined place (3RDPARTY_FREETYPE_DIR variable), doesn't find it and start new search in system places. If system has own freetype header- cmake will find it and 3RDPARTY_FREETYPE* variables will point to different places. This situation is avoided

tcl, freetype, vtk are checked before usage of it (CSF variables usage)
tbb search mechanism was refactored
freetype search is processed by default cmake mechanism
tcl search is processed by default cmake mechanism

3rdparty macro seeks debug libraries (and release if debug ones aren't found); 3rdparty dll is sought in win case only

ADD_SUBDIRECTORY preferred to SUBDIRS

gendoc.bat search for tclsh.exe in user's system

0025141: CMake / MinGW: link recipe fails due to long command

0025146: Porting to Android

OCCT documentation updated. "Building with CMake and ADT for Android" article added

[CMAKE] custom.sh.in uses library variables instead unused dll ones.

-DDEBUG remove from CMAKE_CXX_FLAGS_DEBUG and CMAKE_C_FLAGS_DEBUG

hide unused 3rdparty in android case

also messages of freetype search mechanism slightly updated
2014-09-18 15:22:41 +04:00
isz
8aeeca44df 0025229: Cappings have gray tint if setting color with vclipplane command
-Now in ViewerTest_ViewerCommands's method VClipPlane() Graphic3d_TypeOfMaterial::SetAmbientColor() and
     Graphic3d_TypeOfMaterial::SetDiffuseColor() are used instead of
     Graphic3d_TypeOfMaterial::SetColor()
    -New test case added: tests\bugs\vis\bug25229

-Formatting
2014-09-18 15:20:09 +04:00
kgv
4e18052b7d 0025198: Draw Harness - add -noupdate option to vsetlocation command
Add sample for demonstrating display of multiple objects, evaluating viewer performance, and scene animation

cosmetics
2014-09-18 15:17:44 +04:00
abv
1521659a7d 0024723: Not implemented methods in Visual3d and V3d
Removed unused enum V3d_TypeOfProjectionModel and methods V3d_View::SetProjModel(), V3d_View::ProjModel()
2014-09-18 15:13:02 +04:00
jgv
9ffd84adf5 0025225: Failure of 2d offset algorithm on two wires with arc
Test cases for issue CR25225

Correction of test case bugs/modalg_4(009)/bug745_4 for issue CR25225
2014-09-18 15:01:17 +04:00
pkv
6303cb1205 0025228: Wrong result of General Fuse operation for an edge and a face.
Changes:

class BOPTools_AlgoTools3D
method:
void BOPTools_AlgoTools3D::DoSplitSEAMOnFace
(const TopoDS_Edge& aSplit,
 const TopoDS_Face& aF)

The treatment of seam edges for the periodic surfaces has been changed.

Test case for issue CR25228
2014-09-18 14:51:21 +04:00
aml
963532f8a2 0024504: Wrong result obtained by Exterma Curve/Curve.
Test case added.
2014-09-18 14:45:58 +04:00
isz
b353b9b435 0025093: Visualization - deletion of SelectMgr_SelectableObject does not invalidate owners
-Unstaged useless changes from CR0025093
-Now handles to Entity_owner are nullified in SelectMgr_Selection destructor

-Code formatting
2014-09-18 14:43:58 +04:00
azn
f6d08024e1 0024117: Enhance documentation of BRepMesh_IncrementalMesh
Updating BRepMesh users guide.

0024117: Enhance documentation of BRepMesh_IncrementalMesh

Updating BRepMesh users guide.

Correct mistake in parameter naming.
2014-09-18 14:38:14 +04:00
abv
a347ef35b4 0025236: Sample DRAW script to demonstrate XDE features
New sample added for XDE; test cases added for this and some other samples; description of Tcl samples in Overview updated
2014-09-18 14:30:08 +04:00
kgv
0179bbc641 0025204: Visualization, PrsMgr_PresentationManager::Presentation() - do not return last presentation when requested one is not found 2014-09-18 14:28:28 +04:00
emv
6aa39ac3ad 0025223: Wrong result done by projection algorithm
class ProjLib_ComputeApprox
method
 ProjLib_ComputeApprox::ProjLib_ComputeApprox
   (const Handle(Adaptor3d_HCurve)   & C,
    const Handle(Adaptor3d_HSurface) & S,
    const Standard_Real              Tol )

Using Precision::PConfusion() as a 2d tolerance when shifting the projected curve.

Test case for issue CR25223
2014-09-18 14:27:31 +04:00
abv
53c888d174 Fix WOK extraction when environment variable HAVE_VTK is not defined 2014-09-12 20:08:45 +04:00
aba
7cf07fa506 Update of service files 2014-09-12 17:37:50 +04:00
nbv
e6cd097703 0025224: The section curve between two cylindrical faces is incomplete
Algorithm of seeking point on boundaries is amended.

Test case for issue CR25224
2014-09-11 16:42:08 +04:00
nbv
3e9b53cbf9 0025014: ShapeAnalysis_WireOrder produces Standard_RangeError on empty wire (debug mode only)
The reason of exception is liquidated.

Test case for issue CR25014

Clean obsolete commented out code
2014-09-11 16:39:56 +04:00
bugmaster
24b40f605a Removing TODOs because test case is OK on all platforms 2014-09-11 15:19:54 +04:00
aba
52f99d93a9 0022877: Implementation of DRAW commands for non-regression testing:
- TKIVtkDraw toolkit provides IVtk packages functionality in DRAW.

- it allows to create VTK interactive view in regular or virtual mode (virtual windows),
  display OCC objects and dump them.

- TKIVtkDraw provides also test commands: ivtlinit, ivtkdisplay, ivtkerase, ivtksetdispmode,
   ivtksetselmode, ivtkmoveto, ivtkselect, ivtkfit, ivtkdump, ivtkbgcolor.

Corrected offscreen rendering mode.

Moved vinit command from /v3d/begin script to avoid unused occ view in ivtk tests.
2014-09-11 13:39:44 +04:00
aba
913a4c4ab0 0024904: Visualization - Integration of VIS component:
Added new toolkit TKIVtk:
- TKIVtk toolkit includes IVtkVTK, IVtkTools, IVtkOCC, IVtk packages.
- TKIVtk provides OCC interface for VTK library functionality: it allows to use VTK window and event managment for OCC objects (shapes)

Porting on VTK 6:
- shape source inherits vtkPolyDataAlgorithm now (vtkPolyDataSource was removed form VTK as deprecated functionality).
- added factory auto-initialization in IVtkVTK_View
- remove using of deprecated methods of pipeline mechanism.

Get rid from warning in SelectMgr_SelectableObject. Removed firendship from  SelectMgr_SelectableObject.

Corrected projector parameters for selection algorithm.

Removed unneeded picking algorithm modification.
2014-09-11 13:35:31 +04:00
abv
1ffd3d70c2 0025226: Reference Manual -- list of classes in package is polluted
Documentation generator corrected to avoid adding irrelevant classes to the package list.
2014-09-11 12:40:06 +04:00
isz
2bd4bfac0d 0025190: Visualization - class OpenGl_StructureShadow is defined as local in OpenGl_Structure.cxx
Created OpenGl_StructureShadow.hxx and OpenGl_StructureShadow.cxx

Edited OpenGl/FILES
2014-09-11 12:37:16 +04:00
ifv
6e0fd076ae 0024886: BRepOffsetAPI_NormalProjection failure
Test case for issue CR24886
2014-09-11 12:34:38 +04:00
bugmaster
1e2fb24474 Correction for compilation of OCCT on MacOS 2014-09-10 15:06:56 +04:00
mkv
d9bd2bf756 Adjusting testing cases for Debug mode 2014-09-05 14:02:28 +04:00
apn
03155c18a5 0020716: Eliminate usage of "config.h" header file
All inclusions of "config.h" were removed.

All places where macros defined by config.h were checked and removed

Small corrections for mac os.

Unused code in file OSD_Disk.cxx was removed.

Unused macros and includes were removed from samples and code.

Added necessary includes for MacOS.

Correct new additional compilation warning on Linux platform.

Fix for error in OSD_Chronometer on Debian70/Fedora18
2014-09-05 10:41:05 +04:00
dbv
71b73fde24 0025181: Incrementation of OCCT version up to 6.8.0.dev 2014-09-05 09:55:51 +04:00
jgv
1f205411c1 0025210: Wrong result of conical projection (BRepProj_Projection algorithm)
Test case for issue CR25210
2014-09-04 14:28:33 +04:00
oan
66190a47bb 0025179: BRepMesh cannot build a mesh on specific geometry
Check for zero division in GCPnts_TangentialDeflection

Check that mid point does not coincide with end points

Test case for issue CR25179
2014-09-04 14:24:06 +04:00
ifv
189062565f 0025068: ShapeAnalysis_FreeBounds::ConnectEdgesToWires returns wires with not valid Closed flag
Test case for issue CR25068
2014-09-04 14:08:15 +04:00
aml
31cf9c5f7d 0025199: Bad tolerance edge generated by blend algorithm
Fixed incorrect surface borders computing.

Test cases for issue CR25199
2014-09-04 14:00:41 +04:00
jgv
2a78ec6a07 0025192: Unification of LineConstructor algorithms used by GeomInt_IntSS and BOP
Small correction.

Correction of test case bug/modalg_5/bug24472
2014-09-04 13:50:37 +04:00
kgv
a315743983 0025182: Standard_OVERRIDE - add alias for C++11 "override" specifier 2014-09-04 13:46:42 +04:00
mkv
0bd2a43ff5 Correction of compilation warnings on Windows platform 2014-09-01 20:04:06 +04:00
duv
0717ddc132 0024837: Visualization - revise design and implementation of connected Interactive Objects
0023422: Selection problems when using SetLocation.
0024756: AIS_ConnectedInteractive does not support nested AIS_ConnectedInteractive
0025103: Visualization - Regression in interactive detection

Each PrsMgr_PresentableObject has list of PrsMgr _PresentableObject called myChildren.
Transformation PrsMgr_PresentableObject applied to its children every time when its own transformation affected. This hierarchy does not propagate to Graphic3d level and below.

PrsMgr_PresentableObject send its combined (according to hierarchy) transform down to Graphic3d_Structure.

AIS_ConnectedInteractive and AIS_MultiplyConnectedInteractive are reused but behavior has been changed.

AIS_ConnectedInteractive now is an instance of object. It reuses geometry of connected object but have own transformation, material, visibility flag etc. This connection propagated down to OpenGl level to OpenGl_Structure. For this task old “connected” mechanism has been reused.

AIS_MultiplyConnectedInteractive represents assembly which doesn’t have its own presentation. Assemblies are able to participate is scene hierarchy and intended to handle a grouped set of instanced objects. It behaves as single object in terms of selection. It applies high level transform to all sub-elements since it located above in the hierarchy.

All AIS_MultiplyConnectedInteractive are able to have child assemblies. Deep copy of object instances performed when one assembly attached to another.

Correction test cases for CR24837

Test cases for issue CR23422

Test cases for issue CR24756

Test cases for issue CR25103

Viewer3d sample fixed.
2014-08-28 17:38:17 +04:00
abv
e3e895af61 0024977: There are compilation errors in products csharp sample
Minor corrections in OCCT code and docs
2014-08-28 17:38:15 +04:00
san
10b9c7dfc0 0025133: TKOpenGl - Crash on closing a view containing presentations with capping
OpenGl_Element destruction and resource deallocation methods now accept
a pointer to OpenGl_Context instead of a handle to avoid double deletion
of the context.
2014-08-28 17:38:13 +04:00
san
4769a39529 0025132: Visualization - treat any TopoDS_Solid as closed volume
Advanced mechanism implemented:
- BRep_Tool::IsClosed() method is used to detect non-manifold solids and open shells
- Non-manifold solids are split into closed and open shells

Adding message in test case
2014-08-28 17:38:11 +04:00
mkv
6da50d2610 0023948: Wrong intersection between a surface of revolution and a plane.
Adding testing cases
2014-08-28 17:38:09 +04:00
apv
fd0344601b 0024581: BuildSweep fails to trim components of resulting shape at spine knuckles when parameter -C is used
Test-case for issue #24581
2014-08-28 17:38:08 +04:00
bugmaster
17d84c0ae8 Adding test cases for issue 25167, 25168, 25169 2014-08-22 14:15:41 +04:00
nbv
ecc4f1489d 0024915: Wrong intersection curves between two cylinders
Existing method of Cylinder-Cylinder intersection computing is based on finding the analytic line (as a function of one argument) and converting one into the walking-line with set of equidistant (along the line parameter) points.

The main advantage of applied method is using adaptively computed step. Necessary step is computed into every point of the obtained walking-line. At that we receive final walking-line directly (without preliminary analytic line) and we determine moments more precisely, when it should be split (see IntPatch_ImpImpIntersection_4.gxx).

The main disadvantages is bad working this method for non-trimmed cylinders (with infinite bounds), because step value is depend on the boundaries values.

More over, new method always returns walking-line, while intersection result can be an analytic curve (lines, circle, ellipse). That is NO good. Therefore, analytic curve is computed by existing method.

In conclusion, in spite of covering almost all more often meeting cases, new method has limited application. Then we should use the existing old method.

Additionally, method MinMax() is added (see Standard_Real.hxx file). It uses into new algorithm.

Some test cases is changed according to their new behavior.

Test case for issue CR24915 is added.

Into GeometryTest_APICommands.cxx only tabulations were chaged.

"Extending" of isolines (see Geom2dHatch_Hatcher.cxx).

Small correction of test case for issue CR24915.
2014-08-21 15:54:02 +04:00
martinsiggel
d15f387afa 0022680: Empty result after STEP import
Fixed identical knots not correctly handled in STEP import

Test cases for issue CR22680

Correction test cases for CR22680
2014-08-21 15:51:20 +04:00
drazmyslovich
eab2c8518e 0025169: STEP Reader - allow opened shells to be an outer for ManifoldSolidBrep
Allow opened shells to be an outer for ManifoldSolidBrep
2014-08-21 15:51:19 +04:00
drazmyslovich
bedd79c434 0025167: STEP Reader - allow NextAssemblyUsageOccurance to accept ProductDefinitionShape as child instead of ProductDefinition
Workaround to allow NextAssemblyUsageOccurance accepting ProductDefinitionShape as child instead of ProductDefinition
2014-08-21 15:51:18 +04:00
drazmyslovich
8a8be2aabe 0025168: STEP Writer - empty AppliedGroupAssignment can cause exception in RWStepAP214_RWAppliedGroupAssignment class
Function WriteStep is fixed
2014-08-21 15:51:16 +04:00
drazmyslovich
38deba5d7f 0025166: STEP Reader - allow GEOMETRIC_SET entity to accept non-geometric children
Allow GEOMETRIC_SET entity to accept GeometricRepresentationItem children

Modification to avoid cyclic dependency between STEPControl and StepToTopoDS packages

Test cases for issue CR25166
2014-08-21 15:51:15 +04:00
vro
d91b3986ed 0025153: Retrieval of arguments of selection crashes the application
A check on NULL is added into TDF_Tool::OutReferences() static methods.

Test cases for issue CR25153
2014-08-21 15:51:13 +04:00
jgv
73920cd481 0024949: Segmentation Violation during pipe creation
Test cases for issue 0024949

Correction of test case for issue CR24949
2014-08-21 15:51:12 +04:00
mkv
95a2cf2f74 0017126: Vizualisation in 3d viewer in Draw hungs up
Test cases added
2014-08-21 15:51:10 +04:00
emv
a967f10410 0025043: there is no possibility to know what exactly subshape of source shape has detected problems by BRepAlgoAPI_Check
Since there is a possibility to run the check on self-intersection (BOPAlgo_CheckerSI algorithm) in non-destructive mode (source shape will not be modified)
there is no need to make copies of the arguments of BRepAlgoAPI_Check.

Test case added
2014-08-21 15:51:09 +04:00
pkv
fc88faf18a 0025163: Wrong result of common operation for faces.
Changes:
class BOPAlgo_WireSplitter
static function:
Standard_Boolean RefineAngle2D(const TopoDS_Vertex& aV,
                               const TopoDS_Edge& aE,
                               const TopoDS_Face& myFace,
                               const Standard_Real aA1,
                               const Standard_Real aA2,
                               Standard_Real& aA)
The contents of Domain 2D for the straight line has been changed.

class BOPTools_AlgoTools2D
method:
void BOPTools_AlgoTools2D::AdjustPCurveOnFace
  (const TopoDS_Face& aF,
   const Standard_Real aFirst,
   const Standard_Real aLast,
   const Handle(Geom2d_Curve)& aC2D,
   Handle(Geom2d_Curve)& aC2DA)
The treatment of cylindrical surfaces has been changed taking into account
existing values of tolerances of the edges.

Test cases for issue CR25163
2014-08-21 15:51:08 +04:00
aml
1d33d22bd7 0025086: Implementation PSO in package math
Porting Particle Swarm Optimization (PSO) to math package.
2014-08-21 15:51:06 +04:00
jgv
10ee997695 0025111: Incomplete section curve between Conical and Toroidal surfaces
Correction of test cases for CR25111

Test cases for issue CR25111
2014-08-21 15:51:05 +04:00
jgv
21678ea94a 0025106: Command "splitshape" does not split attached face by attached edge
Test cases for issue CR25106
2014-08-21 15:51:03 +04:00
apn
1ba5bcdc40 0025161: Exception in draw trying pload ALL (espesially TOPTEST)
Deleted following includes in src/SWDRAW/SWDRAW.cxx :
#include <XSAlgo/XSAlgo.hxx>
#include <XSAlgo/XSAlgo_AlgoContainer.hxx>
2014-08-21 15:51:02 +04:00
kgv
da8bb41da6 0025158: Visualization, OpenGl_Context - support EGL as alternative to WGL and GLX 2014-08-21 15:51:01 +04:00
san
aeb722e31a 0024610: Visualization, Visual3d_View::MinMaxValues() - skip erased objects while computing bounding box for Fit All operations
"vfit" takes into account erased objects

Visual3d_View::MinMaxValues() corrected to ignore hidden Graphic3d_Structure instances,
unused Graphic3d_StructureManager::MinMaxValues() removed.

Correction of test-case
2014-08-21 15:51:00 +04:00
san
53b15292f1 0025099: Visualization - Option to show vertices of a shape
Option to display all vertices of a shape by AIS_Shape implemented
in addition to the old behavior (when only isolated vertices were drawn).

Eliminate new compiler warning
2014-08-21 11:30:42 +04:00
apl
0304f71151 0024444: Compilation issues on some not fully POSIX compliant Unix systems
- Standard package.
- OSD package.
- Aspect package.
- Xw package.
2014-08-15 11:00:07 +04:00
osa
72b11796c5 0025137: The methods "Convert" point defined in the reference frame of the view into the projected point and backwards are not consistent 2014-08-14 12:24:35 +04:00
aba
c398b00ed8 0023649: Visualization, AIS_LocalContext - make highlighting of already selected objects consistent with and without Shift modifier
1) Add SelectMgr_EntityOwner::IsSelected() and  SelectMgr_EntityOwner::SetSelected() methods to determine if corresponding  entity is selected.
    They replace functionality of SelectMgr_EntityOwner::State() methods that are deprecated now.
2) AIS_InteractiveContext::ToHilightSelected() and AIS_InteractiveContext::SetToHilightSelected() is to be used to enable highlighting of selected objects.
3) By default selected objects are highlighted (new behavior)
4) Add ViewerTest_ViewerCommands: vhighlightselected command to enable/disable 'highlight selected objects' mode.
5) AIS_LocalContext, AIS_InteractiveContext : style changes in Select and ShiftSelect methods.
6) Add test cases /bugs/vis bug23649_1 and  /bugs/vis bug23649_2 to test highlighting of selected objects in local context.
7) Add test cases /bugs/vis bug23649_3 and  /bugs/vis bug23649_4  to test highlighting of selected objects in neutral point.

Updated test case
2014-08-14 12:21:54 +04:00
emv
5b98e25d8e 0025127: Wrong result done by General Fuse algorithm
class BOPTools_AlgoTools
method
  Standard_Boolean BOPTools_AlgoTools::IsSplitToReverse
    (const TopoDS_Face& theFSp,
     const TopoDS_Face& theFSr,
     Handle(IntTools_Context)& theContext)

Reverse normal direction for REVERSED faces.

Test case for issue CR25127
2014-08-14 12:17:03 +04:00
emv
7a76337e89 0025128: Memory leak in BOPDS_DS::Paves()
class BOPDS_DS
 method
   void BOPDS_DS::Paves(const Standard_Integer theEdge,
                        BOPDS_ListOfPave& theLP)
class BOPDS_PaveBlock
 method
   void BOPDS_PaveBlock::Update(BOPDS_ListOfPaveBlock& theLPB,
                                const Standard_Boolean theFlag)

Using NCollection_Array1 class to ensure proper allocation and deallocation of memory.
2014-08-14 11:59:05 +04:00
apv
5a89733fd4 0024834: Allocation of memory for exception message must not throw another exception
Removing warnings
2014-08-13 17:44:46 +04:00
ski
1951a27c98 0024863: CLang warnings -Wint-to-void-pointer-cast
Warning was fixed.

Remarks were applied.

- class VMap in Draw was removed
- NCollection_DataMap is used to store objects
- name of object is used to associate Tcl variable with the object
- creation and changing of objects are correclty handled

Redundant casts were removed.

Initial value is restored if variable is protected.
Tests for bug #24863 were added.

Some test cases and tcl command "save" were improved.

Useless using of upvar was removed.
2014-08-07 14:33:28 +04:00
msv
de9a2842e1 0024908: Make OSD_MallocHook working under MSVS 2012
Additionally, insert a code in the inline method place_for_breakpoint in order to have any instruction in object code for placement of a break point.
2014-08-07 14:25:27 +04:00
msv
6d1dc3e82c 0025112: Undo of modification of the attribute TDataStd_IntPackedMap works wrong
Test case for issue #25112
2014-08-07 14:22:24 +04:00
Roman Lygin
5402ccdda6 0025122: Expose internal static function ComputeDeviation from ShapeAnalysis_Edge.cxx 2014-08-07 14:18:10 +04:00
kgv
353474f083 0025121: Visualization, OpenGl_Text - correct scaling factor for fixed-size text at 3D point
Test case for issue #25121
2014-08-07 14:14:28 +04:00
kgv
616d8d0a78 0025116: BRepTools - do not force Message_ProgressIndicator updates on each minor iteration 2014-08-07 14:02:06 +04:00
apv
2d7b28ac98 0024834: Allocation of memory for exception message must not throw another exception
Update of test case to eliminate 64-bit architecture from testing
2014-08-07 13:56:19 +04:00
bugmaster
bc02c7cab1 Update for problem of warning with Exception 2014-08-01 17:06:45 +04:00
kgv
576f8b111b 0024943: Port MFC samples to UNICODE for compatibility with VS2013
Add vc12 project files for MFC samples.

CMake - add Unicode option for MFC samples

CMake - do not set MFC option globally

Update description of Cmake building procedure for MFC sample

Correction of cmake.md and automake.md

0024943: Port MFC sample to UNICODE for compatibility with VS2013
The formatting of developer guides about OCCT building with various build systems has been improved.

automake article clean up
2014-07-31 14:44:38 +04:00
abv
9d0fc01b3f 0025105: Remove TColgp_DataMapOfIntegerCirc2d 2014-07-31 14:44:34 +04:00
abv
ffc26091ca 0025067: Change default location of test results
Generation of default path for test results corrected to have "results" as subdirectory and not prefix.

Parsing images in test results restricted to take only files with name of the test case without suffix or with suffix separated by underscore or dash, to avoid fetching images from different test case if its name starts like current test case.
2014-07-31 14:44:32 +04:00
abv
2961777a50 0024992: missing implementation for GeomConvert_CompCurveToBSplineCurve::Clear()
Method GeomConvert_CompCurveToBSplineCurve::Clear() implemented
2014-07-31 14:44:31 +04:00
apv
f07434e2cc 0002845: Regression of work of selections for STEP translator.
Adding test case
2014-07-31 14:44:30 +04:00
apv
e4b5c45aa6 0023010: Error with a .stp model during transfer from STEPCAFControl_Reader to document
Adding test case
2014-07-31 14:44:29 +04:00
apv
870722965d 0023969: It's impossible to display shape in 3dviewer. Wrong displaying in axo.
Adding test case
2014-07-31 14:44:28 +04:00
apv
9a05760b6b 0022470: Crash during IGES import
Adding test case
2014-07-31 14:44:26 +04:00
bugmaster
5435450fc5 Update standard CSharp projects up to VC++ 2010 2014-07-31 14:44:25 +04:00
jgv
6a442250c4 0025021: New option of BRepOffsetAPI_MakeOffset algorithm: open result for open wire
Test cases for issue CR25021
2014-07-31 13:06:44 +04:00
ika
1fa7cb8c3a 0023950: Names and visibility of points not saved when writing XCAF Document into STEP
Add new mode of writing vertices and parameter to switch on this mode.

Add description of new parameter (write.step.vertex.mode) into documentation.

Small correction of draw-command and test case for issue CR25095

test case correction

Small correction of test case for issue CR23950
2014-07-24 13:50:36 +04:00
ifv
8e007da7af 0025095: Wrong result obtained by projection algorithm
Test cases for issue CR25095
2014-07-24 13:32:20 +04:00
kgv
d4f1753b9c 0025094: Visualization, Visual3d_View - code clean up
Remove debug and obsolete code. Apply coding rules.
2014-07-24 13:24:41 +04:00
dbp
37ac4a67fc 0024926: MeshVS - improve generation of primitive arrays
Remove redundant code.

Fix GCC compilation warnings.

Bug fix in MeshVS_ElementalColorPrsBuilder.
2014-07-24 13:23:17 +04:00
oan
14434f3e6c 0025088: Revert or change API of BRepMesh_IncrementalMesh to prevent possible errors occurred due to changed order of parameters
Revert old constructor
2014-07-24 13:13:47 +04:00
ika
846c92e0f5 0025092: COMPSOLIDs are not exported to STEP
Now COMPSOLID is translated like a set of SOLIDs.

Test cases for issue CR25092
2014-07-24 13:08:13 +04:00
kgv
9cc773b5ad 0025090: Visualization - drop Graphic3d_Group::MyIsEmpty flag
Small correction for issue CR25090
2014-07-24 13:03:59 +04:00
duv
0e330c8cf5 0024872: Support of emission color in Phong shader and ray-tracing
Test cases for issue CR24872
2014-07-24 12:59:19 +04:00
mkv
7d7ddef39f 0023191: Visualization - small objects displayed with visual artifacts
Test case for issue CR23191
2014-07-24 12:52:25 +04:00
bugmaster
16aec6a441 Update mfc sample after integration issue 0025071 2014-07-18 13:35:24 +04:00
bugmaster
95f8573c29 Adjusting testing case for debug mode 2014-07-18 12:36:39 +04:00
mkv
2df4b1d33d Correction of testing cases for issue CR24979 2014-07-18 10:36:41 +04:00
kgv
ac83e94f8b 0025074: Intf_Polygon2d - add virtual destructor 2014-07-17 14:16:56 +04:00
abv
c67cd62ecf 0025057: Message_Algorithm fails to find messages defined for base class
New method HasMsg() is added in Message_MsgFile class to check if message with given key is registered.
That method is used in Message_Algorithm to check if message is defined on given level of class hierarchy.

Generation of error message in Message_MsgFile::Msg() is revised: now it includes a message key and gets added to the registry, to avoid re-generation in case of multiple requests.
Access to message registry maintained by the Message_MsgFile class is protected from concurrent access by mutex.
2014-07-17 14:14:09 +04:00
mkv
cd7c40f5af 0025080: [Regression] Problem of meshing narrow face
Test case for issue CR25080
2014-07-17 14:10:52 +04:00
dbp
113493b0f1 0024979: Optimize Extrema_GenExtCS
The patch changes the algorithm of choosing the initial approximation for Newton's method. Instead of searching for a point on the fine shifted grid, the algorithm performs initial search for candidate points in the original coarse grid (which is cached in new version). After that particle swarm optimization (PSO) is used to localize the global minimum. This algorithm optimizes a problem by having a population of candidate solutions ("particles"), and moving these particles around in the search-space according to simple mathematical formula over the particle's position and velocity. Each particle's movement is influenced by its local best known position but, is also guided toward the best known positions in the search-space, which are updated as better positions are found by other particles. This strategy has reported good results in solving complex global optimization problems.

Current patch implements initial version of PSO for using in Extrema_GenExtCS class. Typically new approach allows to reduce the number of evaluations by 5-10 times. There are only few cases there the numbers of evaluations are comparable.
2014-07-17 14:07:42 +04:00
vro
5a44311151 0025003: Selection of a face fails if sensitive triangulation is computed with interior flag = false
A check on length is added to avoid manipulation with a vector of null length.
2014-07-17 14:03:53 +04:00
aml
797d11c6f5 0025058: Regression of performance of BRepExtrema_ExtCC (1000 times slower)
Added initial values approximation to improve performance.
Local optimization start coefficient fixed.

Test case for issue CR25058
2014-07-17 13:51:44 +04:00
duv
6bc6a6fc07 0024996: Visualization - newly displayed objects are clipped until first
camera movement

AutoZFit operation now may be applied on Visual3d_View level.
Visual3d_View tracks Graphic3d_Structure updates and call AutoZFit within
Visual3d_View::Redraw if necessary.
In order to get AutoZFit functionality on Visual3d_View level ZfitAll
method moved from V3d_View into Graphic3d_Camera. AutoZFit method and
AutoZFitMode flag now part of Visual3d_View.

Test case for issue CR24996
2014-07-17 13:47:38 +04:00
san
9dba391d4c 0025071: Visualization - Inconsistent deflection values used by AIS_Shape
Fix misprint

Small correction for issue CR25071
2014-07-17 13:40:05 +04:00
kgv
f29db51421 0025075: BRepMesh - eliminate new x86_64 compiler warnings
BRepMesh - fix compilation without TBB support

Code style
2014-07-17 13:38:09 +04:00
mkv
c308fbd7c7 0024901: Visualization - Incorrect area filled with capping color
Test case for issue CR24901
2014-07-17 13:32:08 +04:00
mkv
90cdb15d4a 024539: Visualization (new camera) - small objects displayed with visual artifacts
Test case for issue CR24539
2014-07-17 13:26:45 +04:00
skv
214df550f6 0025064: TCollection modification for Salome porting 2014-07-17 13:23:27 +04:00
kgv
ecc1d911d1 0025066: Visualization - fit all is malfunction when bounding box is set through Graphic3d_Group::SetMinMaxValues()
Ensure bounding box is marked as valid.
2014-07-17 12:12:08 +04:00
san
a7b491fc50 0025008: wrong PPM generated in mage_AlienPixMap::savePPM 2014-07-17 12:06:53 +04:00
duv
8d3f219f5d 0025017: Visualization - materials in Raytracing are messed up 2014-07-17 12:04:04 +04:00
duv
3c64852756 0025063: Visualization - 2D objects are not displayed at some camera positions
Minimum thresolds introduced to zfit operation and to camera SetDistance() method.

Test case for issue CR25063
2014-07-17 11:32:47 +04:00
ifv
0272e74033 0025028: BRepAlgo::ConcatenateWire raises an exception
Test case for issue CR25028
2014-07-17 11:27:43 +04:00
apl
347423b2c2 0025060: Capping breaks highlighting of shaded AIS_Shape with displayed edges
Capping algorithm - remember and restore depth function mode.
2014-07-17 11:23:21 +04:00
kgv
fe9fc66996 0023814: Drop plugin interface for Graphic3d_GraphicDriver instantiation
Drop Graphic3d_GraphicDriver::Begin() and ::End() methods.
Initialization is performed within driver constructor.

Drop dummy argument for Graphic3d_GraphicDriver constructor with library name.
Display connection now should be set instead

Drop Graphic3d::InitGraphicDriver() function and Graphic3d.hxx header.
Application code should explicitly link against TKOpenGl toolkit and instantiate OpenGl_GraphicDriver class.

Drop MetaGraphicDriverFactory implementation within TKOpenGl.
2014-07-17 11:09:43 +04:00
kgv
2a40d51c15 0025059: Visualization - mutable transformed structure still invalidates BVH tree for culling
Take into account IsMutable flag within Visual3d_View::ReCompute() method.
2014-07-17 11:03:55 +04:00
bugmaster
7ed22e71e0 correction of misprints 2014-07-11 13:42:53 +04:00
apn
d4d12e8b20 Modified cpulimits in test cases in Debug mode.
Modified test case mesh/data/standard/V4 for issue 24968.
2014-07-11 12:29:19 +04:00
oan
9a148b08df Fix compilation errors for mfc samples. 2014-07-11 11:02:27 +04:00
ika
1aa6b1c9e2 0024990: StepWrite fails on the attached shape
Add check to avoid exception
Test cases for issue CR24990
2014-07-10 14:55:27 +04:00
abv
87f42a3fb6 0024335: Draw Harness - support grids list in testgrid command
Arguments of command testgrid specifying test group and grid to be executed now can be a list of file masks (space or comma separated).
One more optional argument added allowing to specify masks for test cases to be run.
2014-07-10 14:53:40 +04:00
mkv
a987c2f484 0022978: Shading for a pipe shape is wrong
Test case for issue CR22978
2014-07-10 14:52:44 +04:00
oan
fc9b36d630 0025039: Improvement of code structure of general and supporting tools implemented in BRepMesh
Removed CDL declarations; Data collections are replaced by NCollections; Small code refactoring.
Remove definition of BRepMesh class. Code refactoring of BRepMesh_IncrementalMesh.
Function BRepMesh_Write storing BRepMesh_DataStructureOfDelaun to BRep file is added for debug needs.
Static method BRepMesh_GeomTool::IntLinLin has been added to eliminate code duplications in BRepMesh_Dealun and BRepMesh_CircleTool.
BRepMesh_CircleTool simplified method to find circumcircle.

Fix merging conflicts
Remove redundant function
Fix compilation warning on MacOS
Revert changes occurred during rebase
Resolved merging conflicts
Use parallel flag with BRepMesh_FastDiscret

Test cases for issue CR25039_2
2014-07-10 14:51:50 +04:00
Roman Lygin
b6c0b841ec 0024925: Enabling OCAF persistence without setting environment variables
Add test case bugs/caf/bug24925
Merging with current master IR-2014-07-03
2014-07-10 14:48:55 +04:00
kgv
a9568545f1 0025052: Visualization - activation of all Clipping Planes within driver limit leads to broken planes management
Aspect_GenId::Available(), include size of the queue with recently freed identifiers
Aspect_GenId.cxx - remove tabulation symbols
Test cases for issue CR25052
2014-07-10 14:45:58 +04:00
dbv
74618acf3d 0025010: Use AIS_ColoredShape for display of XCAF documents
Added methods HasUIsoAspect and HasVIsoAspect to AIS_Drawer
XCAFPrs_AISObject has been converted to non-cdl class
XCAFPrs_AISObject now inherits from AIS_ColoredShape
XCAFPrs_AISObject::Compute method has been rewritten in accordance with the new inheritance.
Regression fix
2014-07-10 14:44:29 +04:00
ink
ebfb9ce298 0024876: Add protection of shapes against modification of geometry
Added flag "locked" for protection of geometric data in the shapes (including tolerances).
Modification test case to avoid regression.
2014-07-10 14:42:49 +04:00
oan
01a6e62bc2 0024968: Impove BRepMesh_Classifier to cope with intersection of huge number of wires
BRepMesh_Classifier: Two-pass approach for intersection check with possibility to run it in parallel mode.
First pass - bounding boxes of segments are checked for overlapping;
Second pass - intersection point is calculated in case if overlapping is detected.

Make NCollection_UBTree::ChangeLastNode() exported due to compilation error on Linux platform.
Reason: method does not depend on template parameters, so it should be available.

Revert previous change and try to use another trick for Linux

Fix compilation warning on MacOS: remove redundant constant
Fix regressions: do not consider insignificant loops in case of self intersections on the same wire.
More sugar solution for compilation errors on NCollection_EBTree on Linux

Test cases for issue CR24968
2014-07-10 14:41:09 +04:00
dbv
0e9d3b83b8 0025051: Compilation issues on OS X 10.6.8
Added define to prevent inclusion of system glext.h on Mac OS X 10.6.8
2014-07-10 14:39:06 +04:00
kgv
595a42a43f 0025047: Visualization - public methods of OpenGl_AspectFace, OpenGl_AspectLine and OpenGl_AspectMarker classes are not exported 2014-07-10 14:37:44 +04:00
bugmaster
069eca4f44 Increment version of OCCT up to 6.7.3 2014-07-09 11:05:23 +04:00
bugmaster
d58d4282a6 Adding solution and project for VC++ 2010 2014-07-04 13:33:20 +04:00
apn
8106f9bc2c Modified test cases in de group according to new behavior in issues 24983 and 24958 2014-07-04 12:42:15 +04:00
kgv
dbe51192a3 Do not include removed headers from package Aspect in samples (0025038) 2014-07-04 11:12:36 +04:00
apn
9f2e7daaa9 Update of header of files in context of License text 2014-07-03 17:23:56 +04:00
razmyslovich
0d4e350159 0024983: For the incorrect seam edge in STEP file no fix is provided
fix the notched edges twice per face - before checking for missing seam and after
Test case correction for issue CR24983
Add check for invalid Surface of linear extrusion (with basis curve - line and extrusion direction parallel to this line) during converting STEP surface
Small corrections of test cases for issue CR24983
2014-07-03 17:16:39 +04:00
razmyslovich
9cbe629085 0024958: Numerous ShapeFix_IntersectionTool code fixes
Optimize periodic normalization.
not needed split edge, if one of parts is too small
Small corrections of test cases for issue CR24958_2
2014-07-03 17:14:36 +04:00
apn
1e07a0faf2 Modified test case for issue 23753 2014-07-03 17:11:24 +04:00
apv
e6087fad55 Modified test case for issue 23698 2014-07-03 17:11:22 +04:00
aml
5493d33411 0025004: Extrema curve/curve incorrect result
Fixed bug in extrema clustering algorithm.
Tolerances changing is available now.
Testcase with Branin function added.

Test cases for issue CR25004
2014-07-03 17:11:20 +04:00
aml
5b14f80036 0024817: Can not sew two circular faces in non-manifold mode
IndRef parameter usage fixed. Obsolete code deleted.
Test case for issue CR24817
2014-07-03 17:11:18 +04:00
osa
a89742cf17 0024819: TKOpenGl - extend the ray-tracing core by visualization of lines, text and point sprites
OpenGl_GraphicDriver::Redraw() - do not recompute structures more than required
OpenGl_Workspace::Raytrace() - bind proper FBO before clearing it
Visual3d_View::Redraw() - perform automatic 2nd redraw on device lost
2014-07-03 15:50:27 +04:00
kgv
8d3865d870 0025040: Visualization - capping plane is drawn at wrong position when created by copy
OpenGl_CappingPlaneResource - use -1 instead of 0 as default uninitialized modification counter.
2014-07-03 15:48:46 +04:00
kgv
89e5391a31 0025038: Visualization - remove unused classes from package Aspect 2014-07-03 15:47:57 +04:00
aba
57ad5cbd5d 0025034: Highlighted dimension objects are not in Detected list of AIS_InteractiveContext:
Detected sequence in local ind interactive contexts is filled with interactive objects, not with AIS_Shape only.
2014-07-03 15:45:26 +04:00
bugmaster
0a36ca0a40 Update of header of files in context of License text 2014-06-27 16:23:13 +04:00
bugmaster
623c29a5b6 Removing non ascii characters 2014-06-27 15:43:50 +04:00
vpa
aade732dda 0025036: Compilation errors in occt qt Voxel sample
Graphic3d_CBounds was replaced by Graphic3d_BndBox4f
2014-06-27 15:23:40 +04:00
mkv
c9fb852983 Adjusting testing cases for debug mode 2014-06-27 15:21:44 +04:00
emv
b1574471ff 0025002: Wrong result done by Boolean Operation algorithm
class IntTools_FaceFace
method
  static Standard_Boolean DecompositionOfWLine(const Handle(IntPatch_WLine)& theWLine,
                                      const Handle(GeomAdaptor_HSurface)&            theSurface1,
                                      const Handle(GeomAdaptor_HSurface)&            theSurface2,
                                      const TopoDS_Face&                             theFace1,
                                      const TopoDS_Face&                             theFace2,
                                      const IntTools_LineConstructor&                theLConstructor,
                                      const Standard_Boolean                         theAvoidLConstructor,
                                      IntPatch_SequenceOfLine&                       theNewLines,
                                      Standard_Real&                                 theReachedTol3d,
                                      const Handle(IntTools_Context)& aContext)

Correct treatment of WLines with only one point before or after the boundary point.

Test case for issue CR25002
2014-06-26 13:04:04 +04:00
vsr
75c5def578 0024985: Control of maximum degree and number of segment in the Pipe Shell algorithm
Fix merge problem: pass myMaxDegree and myMaxSegments to BRepFill_Sweep algorithm
2014-06-26 13:02:42 +04:00
anv
af4b4ba9e5 0025031: Incorrect initialization function call
Incorrect function call removed
2014-06-26 13:01:42 +04:00
pkv
465d1fba7c 0024157: Parallelization of assembly part of BO
The branch CR24157_12 deals with the parallelization of building the solids in case of lot internal faces.
Test case for issue CR24157
2014-06-26 13:00:50 +04:00
emv
2d2aa6f1a6 0025019: Command "bsection" in Test Harness with flag build pcurve on second shape works slowly.
class IntTools_FaceFace
method
  void IntTools_FaceFace::Perform(const TopoDS_Face& aF1,
                                  const TopoDS_Face& aF2)
Change the approximation flags according to the order of faces.

Test case for issue CR25019
2014-06-26 12:59:15 +04:00
vpa
b7cd4ba795 0024307: TKOpenGl - efficient culling of large number of presentations
Implement SAT intersection tests and frustum culling algorithm using BVH trees.

New Draw command vfrustumculling to manage frustum culling.
Add test cases bugs/vis/bug24307_1 and bugs/vis/bug24307_2.
Remove CALL_DEF_BOUNDBOX and CALL_DEF_BOUNDS.
2014-06-26 12:57:26 +04:00
kgv
c1c1aefa71 0025027: Visualization - 2D layer viewport is updated incorrectly on resize
Test case for issue CR25027
2014-06-26 12:51:04 +04:00
kgv
2c5643b6a7 0025026: Visualization, Graphic3d_Plotter - remove unused class 2014-06-26 12:49:39 +04:00
aba
31c0e2194e 0024902: Visualization, StdPrs_ShadedShape - advanced processing of Compounds containing mixture of closed Solids and open Shells
StdPrs_ShadedShape, add flag theToExploreSolids to method ::Add().
Previously the tool collected triagnulations from all Faces into single graphic group.
The automated algorithm for back-face culling activation has to disable culling
when within closed Solids single Compound contains also open Shells.
Now tool is able to optionally (enabled by default) split these two categories of primitives
into dedicated groups with independent back-face culling settings.

In addition, this closed flag is now stored in Graphic3d_Group::myIsClosed which allows
capping algorithm OpenGl_CappingAlgo to automatically filter improper groups.
2014-06-26 12:47:54 +04:00
apn
7bbe90f2a7 Modified TPS in test cases bugs/modalg_5/bug24157_8 bug24157_9 2014-06-20 11:42:59 +04:00
ibs
7d0496dd6d 0025020: checkoverlapedges doesn't have the check for degenerated edges
the check for degenerated edges added
Test case for issue CR25020
2014-06-19 13:29:51 +04:00
jgv
e01907f12a 0024964: ThruSections crashes the DRAW.exe
Test case for issue CR24964
2014-06-19 13:27:59 +04:00
oan
9bdafcbe2d 0023631: Infinite memory consumption in BRepMesh
Check is the shape to be meshed has correct poly data, i.e. PolygonOnTriangulation of particular edge connected to the same Triangulation data structure as stored inside a parent face.
Adding test cases for issue CR23631 bugs/mesh/bug23631
Parallel checking of faces/edges
Make BRepMesh_IncrementalMesh class imported from BRepMesh package.
Resolve GCC warnings on Linux platform
Fix compilation errors on MacOs: remove mutable modificator on reference fields.
2014-06-19 13:26:20 +04:00
kgv
0ae61cf3b3 0025018: Draw Harness - misprint in argument "-settransparancy" for command vaspects 2014-06-19 13:21:30 +04:00
razmyslovich
44a87d6967 0025012: ShapeFix_Wire checks the wrong parameter for the curve during SameParameter check
SameParameter check is fixed to verify the correct pairs of parameters
2014-06-19 13:20:18 +04:00
razmyslovich
a060129f78 0025011: IntAna_QuaQuadGeo can crash with out-of-bounds exception
Fix the crash in IntAna_QuadQuadGeo by checking the number of intersections
2014-06-19 13:18:36 +04:00
apn
f49c31097c Modified CPU limit in test cases inDebug mode. 2014-06-17 17:18:18 +04:00
apv
0c67424831 Added QA command OCC23950 and test case bugs/xde/bug23950 for issue 23950 2014-06-11 14:44:42 +04:00
razmyslovich
acbb658afe 0024998: The incorrect _USE_MATH_DEFINES definition in Standard_math.hxx prevents the clean build for client applications
Add #ifndef clause to avoid redefinition compile error
2014-06-11 10:49:20 +04:00
jgv
e9216c6acf 0024985: Control of maximum degree and number of segment in the Pipe Shell algorithm 2014-06-11 10:47:59 +04:00
vro
8bcb4f55cc 0024987: Visualization - Add missing implementation of Select3D_SensitiveTriangulation::DetectedTriangle()
A missed method is implemented.
2014-06-11 10:46:58 +04:00
san
26e17b5721 0024989: Visualization - workaround vc12 32-bit compiler optimizer bug resulted in crash in AIS_Axis
Test case for issue CR24989
2014-06-11 10:45:56 +04:00
abv
e3a6386d18 0024971: Incomplete interface of NCollection classes
NCollection classes amended to be compatible with TCollection equivalents:

- List and Maps: copy constructor is used for placement of new items in collection instead of assignment operator, thus default constructor is not necessary any more for the item class
- Constructors with additional argument of element type added in array classes operated by Handle, defined by NCollection_DefineHArray*.hxx, allowing to initialize array immediately by specified value
- Non-const methods First() and Last() are added in List class, and method Value() in TListIterator class
- Method Append() accepting Handle(HSequence) provided in NCollection_DefineHSequence.hxx
- Default implementation of global function IsEqual() is provided as template (using operator ==)

Code using lists and maps of sequences is refactored to operate sequence by Handle (since Sequence does not to have public copy constructor).

In addition, error checking code is simplified to use macros _Raise_if instead of custom #ifdefs with the same meaning.
Comments within declaration of instances of generic classes in CDL removed.

Fixed bug in copy constructor of NCollection_BaseVector leading to corrupt data if original vector is empty; simplistic test command for vectors is added.
2014-06-11 10:44:16 +04:00
emv
655fddc854 0024981: IntTools_FaceFace enters to infinite loop on the attached case
class IntTools_Tools
method
  Standard_Boolean IntTools_Tools::AdjustPeriodic
      (const Standard_Real thePar,
       const Standard_Real theParMin,
       const Standard_Real theParMax,
       const Standard_Real thePeriod,
       Standard_Real &theNewPar,
       Standard_Real &theOffset,
       const Standard_Real theEps)
The new function has been implemented for fast adjustment of pcurves to the range of surface.
Test case correction for issue CR24981
2014-06-11 10:41:58 +04:00
emv
a4e383e1b8 0024939: Incorrect result of Fuse operation
Modification:
class IntTools_EdgeEdge
For correct computation of resolution for curves of type Hyperbola and Parabola two new static functions have been implemented:
static
  Standard_Real ResolutionCoeff(const BRepAdaptor_Curve& theBAC,
                                const IntTools_Range& theRange);
static
  Standard_Real Resolution(const Handle(Geom_Curve)& theCurve,
                           const GeomAbs_CurveType theCurveType,
                           const Standard_Real theResCoeff,
                           const Standard_Real theR3D);

bugs moddata_2 bug26_2 - improvement.
Test case for issue CR24939
Test case correction for issue CR24939
2014-06-05 14:24:03 +04:00
pkv
f284355851 0024973: Incorrect PCurve construction
class: BOPTools_AlgoTools2D
method:
void BOPTools_AlgoTools2D::MakePCurveOnFace
  (const TopoDS_Face& aF,
   const Handle(Geom_Curve)& aC3D,
   const Standard_Real aFirst,
   const Standard_Real aLast,
   Handle(Geom2d_Curve)& aC2D,
   Standard_Real& TolReached2d)
has been modified to provide the conformity with the location of the surface

Test case for issue CR24973
2014-06-05 14:22:21 +04:00
pkv
36f4947b8d 0024952: Possibility to break Boolean operations algorithm by user request
class: BOPAlgo_Algo
method:
void BOPAlgo_Algo::SetProgressIndicator
  (const Handle(Message_ProgressIndicator)& theObj)
Purpose: Set the Progress Indicator object <theObj>.

method:
void BOPAlgo_Algo::UserBreak() const
Purpose: Breaks the execution if the break signal is indicated.
2014-06-05 14:20:15 +04:00
ski
9b0fb8cdd0 0024972: Problem of the influence of the includes order during compilation
All necessary files were included.
Unused files from package PColStd were removed.
2014-06-05 14:18:44 +04:00
oan
c764e804ba 0024945: Extrema_ExtPElC::Perform does not consider angular tolerance when calculates angle between two vectors
Consider angular tolerance during calculation of angle between two vectors for protection against deviations that are significantly less than tolerance.
Simplified code to reduce number of comparison
Added QA command OCC24945 and test case bugs/moddata_3/bug24945
2014-06-05 14:17:23 +04:00
abv
5e5b6f81c1 0024955: Misuse of DownCast
Code where DownCast was applied to Handle of the type being not a base class of the target one is revised and (hopefully) corrected.
Code corrected following review remarks
GeomConvert::CurveToBSplineCurve() is called even for b-spline curves to ensure that result is non-periodic
Check for conic is corrected
2014-06-05 14:15:52 +04:00
abv
3a01a933af 0024240: Separation of header files for QANCollection into hxx and cxx
Files in QANCollection tests reorganized to avoid placing code in header files
2014-06-05 14:12:23 +04:00
abv
ddf2fe8eeb 0024911: Avoid using virtual functions in NCollection classes
NCollection_BaseCollection class, relevant header files, and macro DEFINE_BASECOLLECTION removed.
Hence methods Assign() from other compatible (via inheritance of BaseCollection) collections are not available any more, as well as base Iterator class.

All methods of Iterator classes are made non-virtual, allowing their inline expansion for better performance.

OCCT-specific operators new and delete added to collection classes and removed from iterator classes.
2014-06-05 14:12:18 +04:00
bugmaster
598fcce93c Update of CMakeLists.txt for Microsoft Visual Studio 2013 2014-06-02 14:32:23 +04:00
abv
774d889744 0024974: GCC compiler warnings 'backslash inside comment'
Backslash at the end of the line within comment escaped by dot to avoid GCC warning
2014-05-29 17:30:17 +04:00
dbp
2ad228f691 0024951: Qt samples - fix compilation after changes in Raytracing API
Compilation errors in qt samples were fixed.
2014-05-29 16:47:32 +04:00
ika
16c7b64236 0024055: Reading a STEP file produces invalid shape
Add checks for cone-like surfaces during seam fixing
Delete check for missing degenerated edge for cones in FixMissingSeam() function, because this check is exist in FixPeriodicDegenerated(). Check for uniqueness of wire is unnecessary after this.
Update of test-cases
2014-05-29 16:44:57 +04:00
nbv
8696d65d2c 0024889: Geom2dAPI_InterCurveCurve produces result with parameter outside the curve limits
1. DRAW-command for testing was created (see QABugs_19.cxx)
2. Alignments were changed in other files.

Main Changes are into IntCurve_IntConicConic_1.cxx file (variable isOutOfRange was added).
If found intersection point is out of range, minimal distance between corresponding ends of interval is taken. If this distance is less than tolerance, this point replaces found intersection point. Otherwise, found intersection point is ignored.
Modified QA command OCC24889 and added test case bugs/modalg_5/bug24889
2014-05-29 16:40:04 +04:00
gka
dc244065a9 0024960: Value of result tolerance after "fixshape" is bigger than value of set "Maximal tolerance".
Description of using "Maximal tolerance" and "Minimal tolerance" values in class ShapeFix_Shape was updated.
2014-05-29 16:32:21 +04:00
aml
9fae8c7367 0024937: New compile warning in Extrema_GenExtCC.gxx on MacOS
Compilation warning eliminated.
2014-05-29 16:28:00 +04:00
nbv
f379643fc0 0024953: Draw crashed after execution of test case bugs/modalg_5/bug24764
Reason of exception was liquidated.
2014-05-29 16:25:13 +04:00
aml
2fe0e897e3 0024946: Wrong result obtained by Extrema Curve/Curve
Fixes in Extrema Curve/Curve algorithm and in corresponding testcase.
Added test case bugs/modalg_5/bug24946
2014-05-29 16:23:18 +04:00
dbp
79a35943dd 0024831: Make iterators of NCollection classes STL-compatible
STL-compatible iterators returned methods begin() and end() are provided in collection classes from NCollection package.
NCollection_Array1::Iterator is redesigned to use pointer instead of index.
Iterators of Sequence, Array, and Vector are extended by new methods to iterate backwards.

Use of SortTools_QuickSortOfReal is replaced by std::sort() in a few places (where possible).
2014-05-29 16:19:55 +04:00
ika
574d723693 0023951: Visibility of free, simple shapes not saved when writing XCAF Document into STEP
Delete check for top-level shape during writing invisibility property.
Added QA command OCC23951.
Fix crash in QA command OCC23951: initialize document, initialize shape.
Added test case bugs/xde/bug23951
Modified QABugs/QABugs_19.cxx to avoid warnings
2014-05-29 16:18:19 +04:00
Roman Lygin
70167e6982 0024931: Stack overflow when writing large shapes to XML
Added QA command OCC24931 and test case bugs/fclasses/bug24931
2014-05-29 16:11:21 +04:00
ski
ff8178ef85 0024784: Move documentation in CDL files to proper location
Mostly duplicated comments were removed and missing ones were moved
into dedicated class CDL files.
Some more duplicated comments were removed from CDL files.
Correction of merge
2014-05-29 16:06:49 +04:00
azn
bdd1223f46 0022240: Bad triangulation of transformed shapes
Correction of out transformation for the curves on plane surface.
Added test case bugs/vis/bug22240
Modified test cases according to new behavior.
2014-05-29 15:40:25 +04:00
nbv
69b43824ac 0024807: Exception in ShapeAnalysis_FreeBounds::ConnectEdgesToWires
The reason for the exception was that given compound contains only edges with INTERNAL orientation (there are not any wires or faces). Consequently, given shape is non-manifold a priory.
New fix handles some cases.
Added test case bugs/modalg_5/bug24807
2014-05-29 15:37:42 +04:00
pkv
1e143abba6 0024940: WOK: Cyclic dependency detected between: BOPInt IntTools
Classes  BOPInt_Context, BOPInt_ShrunkRange, BOPInt_Tools have been removed.
Package BOPInt has been removed
Classes IntTools_Context, IntTools_ShrunkRange have been added to replace corresponding BOPInt_ classes.
The classes provide same functionality as corresponding BOPInt_ classes.
Classes :
BOPAlgo_ArgumentAnalyzer
BOPAlgo_Builder
BOPAlgo_BuilderArea
BOPAlgo_BuilderFace
BOPAlgo_BuilderSolid
BOPAlgo_CheckerSI
BOPAlgo_PaveFiller
BOPAlgo_ShellSplitter
BOPTools_AlgoTools3D
BRepFill_TrimShellCorner
IntTools_BeanFaceIntersector
IntTools_EdgeFace
IntTools_FaceFace
IntTools_Tools
have been modified to use new classes IntTools_Context IntTools_ShrunkRange

Class IntTools_Tools has been modofied to provide the functionality that was in BOPInt_Tools.
2014-05-29 15:27:31 +04:00
ski
68bd84a5f0 0024862: CLang warnings -Wint-to-pointer-cast
Warning is fixed.
2014-05-29 15:13:55 +04:00
jgv
d92035598f 0024920: Invalid result of Pipe construction
Added test case bugs/modalg_5/bug24920
2014-05-29 15:12:29 +04:00
azn
ab58a62baa 0024219: Strange if-statement in BrepMesh_IncrementalMesh
Simplifying if-statement in the Update(const TopoDS_Face& F) and Update(const TopoDS_Edge& F) methods from BrepMesh_IncrementalMesh class.
Translating French comment to English.
2014-05-29 15:09:46 +04:00
abv
2a54ebbf29 0024897: Possibility of uncontrolled exit if scanner fails in ExprIntrp
Macro YY_FATAL_ERROR() is defined in ExprIntrp.lex in order to have exception instead of program exit in case of scanner error. Fixed-length string buffers are replaced by TCollection_AsciiString to avoid buffer overflow.
Some code refactoring: declarations of functions moved to header file, unused global declarations and variables removed, compiler warnings fixed or disabled, obsolete EDL file removed.
Test case for issue CR24897
Correction of MSVC compiler warning when scanner is generated using Flex 2.5.35 on Linux
2014-05-29 15:06:48 +04:00
abv
cae42e78e5 0024941: Need whitespace between predecessor tokens for CLang in c++11 mode
Whitespace added between macro OCC_VERSION_STRING and string literals when concatenation of string literals is used.
2014-05-29 15:03:15 +04:00
emv
b6a21c7e6d 0024950: Wrong result of Boolean CUT operation
Modification:
class BOPAlgo_PaveFiller
method BOPAlgo_PaveFiller::PutBoundPaveOnCurve().
Create bounding paves for each section curve separately.
Added test case bugs/modalg_5/bug24950
2014-05-29 15:02:07 +04:00
abv
6e33d3ced2 0024830: Remove redundant keyword 'mutable' in CDL declarations
Redundant keyword 'mutable' removed in CDL files.
In IGESConvGeom_GeomBuilder, unused methods MakeXY() and MakeXYZ() removed.
Method StepAP214_AutoDesignGroupAssignment::Init() replicating same method of the base class is removed as it causes CDL extraction error after above (seemingly irrelevant) changes.
2014-05-29 14:58:25 +04:00
apn
99c68ea35f Deleted TODOs in test cases in Debug mode. 2014-05-23 12:42:44 +04:00
apn
c7ac7603b0 Increased cpulimits in test cases. 2014-05-23 12:38:03 +04:00
dbp
bc8c79bbd5 0024887: Visualization - revise and extend Raytracing controls
Fix material test case.
Fix ray-tracing test case and sample.
2014-05-22 19:00:18 +04:00
duv
dc9ef964d2 0024864: Implementing refractions in ray-tracing
Refraction index passed to raytrace shader.
For transparent objects implemented ray refraction according to refraction index.
Transparent materials modified to look better with refractions.
2014-05-22 18:19:18 +04:00
abv
4bc0bb8ab1 0024936: Remove unused package IncludeLibrary
Unused package IncludeLibrary and file IGESToBRep/project.pxx removed.
2014-05-22 18:17:53 +04:00
aba
3ae590318e 0024835: Graphic structure for highlighting is not erased if presentable object for highlight is deleted
Corrections in highlight state checks.
2014-05-22 18:16:11 +04:00
emv
f56518cdbe 0024879: Wrong result of General Fuse operation
Modifications:
1. class BOPAlgo_WireSplitter
  1.1. Removed static method RecomputeAngles(...).
  1.2. Minor corrections.
2. class BOPTools_AlgoTools
  2.1 method GetFaceOff
  For definition of an angles between faces the same step in 3D space has been used for all faces in the list.
  To define that step new static function MinStep3D has been implemented.

Added test case bugs/modalg_5/bug24879
Deleted unnecessary TODOs in test case bugs/modalg_2/bug497_3
2014-05-22 18:13:24 +04:00
nbv
59495dbe8a 0023511: The function BRepTools::UVBounds provides icorrect result for a face
Range of changing of some analytic curves is computed by other methods. It allows computing face's boundaries with more precise.
Tolerance was increased to provide successful work of some algorithms.
Functions BRepOffsetAPI_MiddlePath::Build() and ApproxWithPCurves(...) (file IntTools_FaceFace.cxx) were changed according to new result of algorithm's work.
It is possibly for "outboundaried faces" (see bug#23675) to compute incorrect UV-Bounds, when first parameter is more than last. To avoid it, extended control of computed bounds was added.
Function for fail sameparameter fixing was added to HLRAppli_ReflectLines to avoid creation bad shapes after algorithm's work.

In file ShapeFix_ComposeShell.cxx only text formatting was changed.

Some test cases are changed according to their new behavior.
Added test case bugs/moddata_3/bug23511
2014-05-22 17:55:31 +04:00
dbp
0734c53d68 0024832: Performance of new boolean operations has become worse
Replace C pointers with handles.
Encapsulate handles in Extrema_ExtPExtS and Extrema_ExtPRevS classes.
2014-05-22 17:54:23 +04:00
pkv
f1baf495b6 0024157: Parallelization of assembly part of BO
The modifications deal with the parallelization of P-curves computations.
Added test cases bugs/modalg_5/bug24157_1 ... bug24157_9
2014-05-22 17:50:46 +04:00
dbp
945c35291e 0024928: Visualization - FSAA is not working in ray-tracing mode 2014-05-22 17:36:16 +04:00
aba
48cc825e83 0002883: It is impossible to set material, color and transparency to compound
Fast shading presentation update on setting color, material and transparency for AIS_Shape:
- Iterate through all groups not only last one.
- Iterate through all presentation (to change presentations in all viewers).

Added test cases bugs/vis/bug2883_1 and bugs/vis/bug2883_2
2014-05-22 17:33:56 +04:00
aba
5ad539d2e0 0006897: Impossible to change edge line type in 3D View
Added command vsetedgetype; added test case bugs/vis/bug6897 to test edge type management.
vunsetedgetype DRAW command was added and test case was updated.
added -force option to set edge type commands to force redisplay.
Otherwise  primitive aspects are updated without object redisplaying.
2014-05-22 17:31:10 +04:00
kgv
0e93d9e5b8 0024430: vviewlist draw command does not added name of viewer created by XShow draw command
Remove ViewerTest_Tool, keep only one unified way to create viewer using ViewerTest - ViewerTest::ViewerInit().
Remove test case bugs/vis/buc60851 and command BUC60851.
Added test case bugs/xde/bug24430
2014-05-22 17:27:27 +04:00
pkv
63def8e679 0024933: Inconsistent results of self-interferences checker in SALOME and DRAW Applications.
class BOPAlgo_CheckerSI
   - methods:
void BOPAlgo_CheckerSI::Perform()

class BOPAlgo_ArgumentAnalyzer
   - methods:
void BOPAlgo_ArgumentAnalyzer::TestSelfInterferences()

The changes have been done to provide the consistence
between results in SALOME Application and DRAW Application

The sytax of the command "bopcheck" has been changed:
bopcheck Shape [level of check: 0 - 9] [-t -s]
The options:
 -t - display elapsed CPU time
 -s - run in serial (non-parallel) mode. The default mode is parallel.

Modified test cases bugs/modalg_5/bug24029 and bugs/modalg_5/bug24764 according to changed output format of the "bopcheck" command.
2014-05-22 17:25:13 +04:00
dln
6268cc68d7 0024885: Getting rid of "TKAdvTools" toolkit
"TKAdvTools" toolkit was deleted.
And packages from this toolkit were:
- GraphDS -> deleted
- GraphTools -> moved to WOK
- Dynamic -> deleted
- Materials -> deleted
- Expr -> moved to TKMath
- ExprIntrp -> moved to TKMath
- TKAdvTools -> deleted
All references of the "TKAdvTools" toolkit were removed
2014-05-22 17:21:44 +04:00
aba
011b361de5 0024509: Suspect unused variable in TPrsStd_ConstraintTools.cxx
- AIS_TypeOfDist is not used for length dimension construction;
- Added opportunity to build TPrsSrd length constraint on one edge.
- length dimension in TPrsStd_ConstraintTool is build on one or two shapes, but not on three.
Added validation of dimension plane.
Warnings were corrected.
2014-05-22 17:13:50 +04:00
ika
1ee621b661 0024024: Slow import of specific STEP data
Add using bounding boxes to accelerating of import
Replace Map of bounding boxes with array.
fix cosmetic mistake
Improving check for periodic cases.
2014-05-22 17:10:55 +04:00
jgv
8e81749770 0024880: Invalid result of pipe creation
Modified test case bugs/modalg_5/bug24840 according to new behavior. Added checkshape.
2014-05-22 17:04:11 +04:00
razmyslovich
c471a1ba18 0024924: ShapeFix_SplitTool doesn't verify the new range after cutting an edge
Validate the new cut range before setting it to edge
2014-05-22 17:01:54 +04:00
razmyslovich
16a1f26537 0024922: ShapeAnalysis_Wire::CheckIntersectingEdges doesn't report an intersection point if it is inside of tolerance even only on edge
Fix the tolerances check for an intersection point in ShapeAnalysis_Wire::CheckIntersectingEdges
2014-05-22 17:00:07 +04:00
razmyslovich
72952ef2b8 0024921: ShapeAnalysis_Curve::ValidateRange doesn't adjust the range for periodic curves
Fix the sequence of conditional checks and always try to adjust the range for periodic curves
2014-05-22 16:58:25 +04:00
razmyslovich
3f5bebe804 0024919: ShapeFix can crash time-to-time due to inproper interator handling inside of Approx_SameParameter::Build function
Check inter variable to be inside of the desired range
2014-05-22 16:56:19 +04:00
apn
8581b51995 Added TODO in unstable test case. 2014-05-16 14:15:54 +04:00
apn
76e9222246 Chenge extension of shape in test case bugs/moddata_3/bug24800 2014-05-16 14:15:11 +04:00
apn
7b3ce7dc84 Increase cpulimits in test cases (for debug mode). 2014-05-16 14:14:27 +04:00
dbp
44c7c33eb0 0024855: Revision of parameters of standard materials
Improve consistency and visual appearance of predefined OCCT materials in various rendering modes, including ray-tracing:
- Increase the specular exponents (shininesses) for metallic surfaces: Brass, Bronze, Copper, Gold, Pewter, Silver, Steel, Chrome, Aluminum.
- Revise specular colors for metals: Copper, Gold, Aluminum, Silver (according to "Real-Time Rendering, 3rd Edition", AK Peters 2008).
- Increase diffuse reflection of metals: Silver, Aluminum, Chrome (to make them brighter in OpenGL mode).
- Extend Material definition by Refraction Index.
  Advanced rendering methods based on shaders or ray-tracing can utilize it to produce refraction effects.

In addition:
- Introduce three translucent materials: Water, Glass, and Diamond.
- Add Charcoal for modeling dark diffuse surfaces.

Add new TCL-based sample (materials.tcl) and test case (tests/v3d/materials/bug24855).
2014-05-15 19:59:28 +04:00
ysn
013a854956 0024854: Merge of Technical Overview from opencascade.org site into the documentation
The Technical overview has been reviewed and extended:
with the sections (and other pieces of text) present on org, but missing in the documentation, most important:
  - Extended Data exchange
  - Sewing
  - Mesh
with more inter-page links reproducing left-column "more about" links
some images from site, mostly in "Data Exchange" Section.
2014-05-15 17:55:22 +04:00
ifv
29d778bf16 0024896: BRepExtrema is giving wrong intersection point between curve and planar face
Added test case bugs/moddata_3/bug24896. Modified unstable test cases and increased cpu limit in bugs/modalg_5/bug24190.
2014-05-15 17:54:30 +04:00
gka
004e846676 0024899: Time of computation of intersection points with help of class BRepIntCurveSurface_Inter is big.
Sorting by intersection of bounding boxes of faces with line or box built for curve was added.
Recursive call method Find() was replaced on sequential call.
Added method Init  to initialize algorithm by separate curve for intersection of shape by multiple curves.
Added possibility to intersect shape by multiple curves in DRAW command.

Added test case bugs/modalg_5/bug24899
2014-05-15 17:53:14 +04:00
aml
4bbaf12b67 0024608: Development of methods of global optimization of multivariable function
math_GlobOptMin - new global optimization minimization algorithm
Extrema_GlobOptFuncCC, Extrema_ExtCC, Extrema_ExtCC2d - implementation of GlobOptMin algorithm to extrema curve / curve
Extrema_CurveCache - deleted as obsolete code
ChFi3d_Builder.cxx  - fixed processing of extrema
math_NewtonMinimum.cxx - fixed step to avoid incorrect behavior
Test cases modification to meet new behavior.
2014-05-15 17:51:44 +04:00
abv
97385d6142 0024841: Remove duplicated and/or unused instances of collections
Removed duplicated instantiations of TCollection classes:
- BRepMAT2d_SequenceOfBasicElt: duplicates MAT_SequenceOfBasicElt
- BRepMesh_NodeHasherOfDataStructureOfDelaun, BRepMesh_IDMapOfNodeOfDataStructureOfDelaun: not used
- QADNaming_DataMapOfShapeOfName: duplicates DNaming_DataMapOfShapeOfName
- TDF_LabelLabelMap: not used
- Graphic3d_SequenceOfAddress: not used
- CDM_StackOfDocument: duplicates ListOfDocument (after fix on #24742)
- Draw_MapOfFunctions: duplicates Plugin_MapOfFunctions
- ExprIntrp_SkackOfNames: duplicates TColStd_ListOfAsciiString (after fix on #24742)
- in package Storage: (H)SeqOfPersistent, MapPSDHasher, (H)SeqOfCallback: not used

In addition, inheritance of MeshVS_ColorHasher from TColStd_MapIntegerHasher is dropped as it is useless but leads to problems if TColStd_MapIntegerHasher is converted to template.
First of the two overloaded functions Draw::Load() removed as it is unused.
Removed unused classes and files from PCollection and related packages.
2014-05-15 17:50:04 +04:00
kgv
a096a7a58a 0024907: Compilation fails on vc12 (VS2013)
Include <algorithm> when needed.
2014-05-15 17:49:13 +04:00
abv
fab29dc11a 0024913: BRepOffsetAPI_ThruSections::CreateSmoothed contains unused declaration of GeomFill_SectionGenerator
Unused local variable deleted
2014-05-15 17:48:17 +04:00
kgv
9efc0d1470 0024912: Remove unused Graphic3d_Strips 2014-05-15 17:47:29 +04:00
pkv
a34f083b8c 0024914: Micro edge is created during Boolean Operations
class IntAna_QuadQuadGeo
The changes have been done to provide the treatment the cases
when the value of the angle between the planes is small and
the origin of intersection line should be refined.

class IntTools_FaceFace
The changes have been done to provide the treatment of faces
in cases when both are based on planar surfaces.
The UV-bounds have been extended to provide correct solutions
as it has been done for all other cases with plane-based faces.

Added test case bugs/modalg_5/bug24914
Modified length of result shape in test case bugs/modalg_1/bug10232
2014-05-15 17:46:34 +04:00
abv
6421543502 0024916: Use custom-built Tcl instead of ActiveTcl distribution
Added instructions for building Tcl/Tk from sources
Remove Overview.md (artifact or changing case on Windows)
Correction of misprints in the documentation.
2014-05-15 17:44:08 +04:00
bugmaster
b1a3427054 Removing file duplicate 2014-05-15 17:23:14 +04:00
kgv
c2a388f884 0024873: Draw Harness, ViewerTest - add command vbounding to show presentation bounding box
Test cases for issue CR24873
findPresentation() - fix wrong type of the argument
2014-05-08 13:01:46 +04:00
emv
6a43d224e4 0024799: [regression] BRepAlgoAPI_Common returns empty result
To track the modification of the source vertices, the new vertices, created in PostTreatFF, have been added to myShapesSD map.
2014-05-08 12:46:00 +04:00
abv
82fc327c7d 0024893: CLang warnings -Wlogical-not-parentheses for gce_Done comparisons
Incorrect comparison in condition within RiseIf macro fixed
2014-05-08 11:57:59 +04:00
kgv
7ccd27ca04 0024892: AIS_TexturedShape::ShowTriangles overloads mismatch 2014-05-08 11:56:13 +04:00
nbv
e97a6598fe 0024829: sprops with precision throws an exception
Reason of exception is reading nonexistent element of array.

Test case for issue CR24829
2014-05-08 11:55:10 +04:00
osa
18f4e8e28d 0024894: TKOpenGl - refactor OpenGl_FrameBuffer and OpenGl_Texture classes. 2014-05-08 11:51:35 +04:00
abv
eb1ebea490 0024877: GCC 4.4.5 compiler warnings on Debian when OCCT is bult using CMake
Warnings fixed
2014-05-08 11:44:51 +04:00
kgv
fc8eab5e09 0024882: Visualization - default orientation is ignored
Restore lines removed from V3d_View constructors.
2014-05-08 11:42:36 +04:00
duv
550f3b8b22 0024867: Visualization - polygon offsets look broken
If specific layer setting is not enabled, default value extracted from current OpenGl state will be used.
Default value fix.
Updated test case bugs/vis/bug24867
Linux warning fixed.
2014-05-08 11:41:06 +04:00
szy
372ceec4ce 0024869: OCAF testing framework extending
OCAF testing framework extending.
Test case for issue CR24869
2014-05-08 11:36:43 +04:00
dbp
7389f96df0 0023804: Visualization - unexpected color modulation during texture mapping
AIS_TexturedShape - use material set to the Drawer, not default undefined one

Test case for issue CR23804
2014-05-08 11:27:28 +04:00
dln
54f7544df6 0024742: Remove rarely used collection classes: Set
Classes NCollection_Set and NCollection_HSet removed as unused (along with NCollection_DefineSet.hxx and NCollection_DefineHSet.hxx).

Classes TCollection_Set and TCollection_HSet removed (along with TCollection_SetIterator and TCollection_SetList nested classes).
Code previously using Set classes updated to equivalent use of Sequence (Adaptor3d and Visual3d packages) or TColStd_PackedMapOfInteger (BRepAlgo package).

In Adaptor3d_CurveOnSurface, calculation of continuity intervals refactored so as to build and store sorted sequence of reals, instead of collecting them to set, copying to array, and then sorting.
2014-05-08 09:13:55 +04:00
dln
6af4fe1c46 0024742: Remove rarely used collection classes: Stack
Generic class TCollection_Stack removed (along with TCollection_StackIterator and TCollection_StackNode).

Code using TCollection_Stack changed to equivalent use of TCollection_List (replacing Push -> Prepend, Top -> First, Pop -> RemoveFirst).
2014-05-08 09:13:28 +04:00
dln
bd2de3965e 0024742: Remove rarely used collection classes: SList
Generic "TCollection_SList" class and nested "TCollection_SListNode" class moved (as non-generic) to the "TopLoc" package (the only place where they were instantiated).
Names of these classes changed to "TopLoc_SListOfItemLocation" and "TopLoc_SListNodeOfItemLocation".

"NCollection_SList" class removed as unused (along with NCollection_DefineSList.hxx).
2014-05-07 16:07:51 +04:00
dln
3125ebb6f3 0024742: Remove rarely used collection classes: Queue
Generic "TCollection_Queue" class removed (along with "TCollection_QueueNode" and three instantiations in TColStd). Template class TCollection_Queue removed.

The code using queue classes converted to use lists for the same purpose (replacing Push -> Append, Front -> First, Pop -> RemoveFirst). In OpenGl_Context, list is used as stack instead of queue, for it looks more natural for release of resources (last allocated - first released).
2014-05-07 16:07:49 +04:00
dln
b439bc5856 0024742: Remove rarely used collection classes
"TCollection_Array1Descriptor" and "TCollection_Array2Descriptor" classes were removed as unused.
2014-05-07 16:07:48 +04:00
kgv
73192b3746 0024847: CLang warnings -Wdeprecated-writable-strings in OpenGl_Display
Remove obsolete properties, remove OpenGl_Display class.
Fix compilation on Linux
2014-04-30 13:39:53 +04:00
abv
db3cb1cede 0024858: Convert class V3d_ListOfTransient to non-CDL
Class V3d_ListOfTransient converted to non-CDL form (pure HXX)
2014-04-30 13:37:15 +04:00
aml
5546828378 0024513: Suspicious code highlighted by 0024510
Blend_Walking_1: value returned by TestArret() deleted.
IntTools_EdgeFace: deleted redundant parameter ff2 and anIsProj2 associated with ff2, since ff2 = !ff1. Refactoring.
ProjLib_ProjectedCurve: treatment of surface of revolution is symmetric for surface of revolution now. Refactoring.
2014-04-30 13:35:48 +04:00
pkv
c26b5a34bc 0024157: Parallelization of assembly part of BO
The branch deals with the parallelization of Post-Treatment part of the Builder
2014-04-30 13:32:21 +04:00
abv
85bcc07243 0024884: expand the list of short compiler names in CMake meta-project
List of compiler short names expanded (added: gcc, gxx, mingw, clang, intel); generation of install folder name is corrected to include compiler name without spaces even if short name is not recognized.

Tcl search was fixed (tcl8.6 has higher priority than tcl or tcl8.5);
Search for fb2build.h of freetype 2.5.1 was corrected

THRDPARTY_PATH is included into LD_LIBRARY_PATH
2014-04-30 13:07:09 +04:00
abv
66fb4d9a40 0024707: Problem building C# sample win VC 10
Need to check and correct Target Framework in C# projects after conversion to new versions of Visual Studio described in the sample documentation
2014-04-30 13:07:07 +04:00
apn
21761b6feb 0024347: problem by tolerance of the distance of Face and Vertex
Added test case bugs/modalg_5/bug24347
2014-04-30 13:07:06 +04:00
apn
1a25084d99 0024811: Intersection is insufficient
Added test case bugs/modalg_5/bug24811
2014-04-30 13:07:04 +04:00
apn
242da3e5ef 0024496: Crash on BRepAlgoAPI_Section
Added test case bugs/modalg_5/bug24496
2014-04-30 13:07:03 +04:00
ibs
32856b630d 0024629: Possibility to install binaries in vc*/bin(d), vc*/lib(d) directories
Install occt folder now can contain several occt configurations

- custom.bat/sh was added to include specific (for each occt config) custom.bat/sh files
- specific custom.bat/sh is added for each configuration (e.g., custom_vc9_win32_d.bat), generated by cmake and included within custom.bat/sh
- draw.bat has three argument, e.g., vc9 win32 debug (as occt behavior)
- sample.bat has one or four arguments, e.g., sample_name vc8 win64 release
- PATH is not changed. DRAWEXE.exe is called from specific folder

patched custom.[bat/sh].[main/in] files have higher priority than origin ones

Documentation was updated to describe new features of CMake

Seeking process of OpenCL include folder was fixed
2014-04-30 13:07:01 +04:00
ibs
33839ae65b 0024810: "Patch" feature should be introduced in OCC CMake building procedure
BUILD_PATCH_DIR variable added
patched source/project files have higher priority to be included than origin source files
2014-04-30 13:07:00 +04:00
bugmaster
b8d1c74226 Incrementation of OCCT version up to 6.7.2 dev 2014-04-29 13:47:40 +04:00
mkv
74be04cbbf Update of testing cases for debug mode and MacOS 2014-04-25 14:32:32 +04:00
ika
7719318359 0024218: ShapeFix_Face requires double execution to produce valid shape when FixSplitFaceMode is in effect
Test case for issues CR24218
2014-04-24 16:50:20 +04:00
msv
a73267f24b 0024834: Allocation of memory for exception message must not throw another exception
- Add QA draw command OCC24834
- Make functions allocate_message/deallocate_message use malloc/free instead of operator new/delete
- Eliminate compilation error on Linux

Test case for issue CR24834
2014-04-24 16:50:19 +04:00
mkv
86b03c9774 0024376: BMP image cannot be read
Test case for issues CR24376
2014-04-24 15:43:38 +04:00
vro
bf4bf038c8 0024852: Crash on storage of an Ocaf document in XML file format
Blanks are removed.
A check is implemented to correct a GUID in case of presence of the blanks.

Test case for issues CR24852
2014-04-24 15:43:36 +04:00
jgv
5ec5d80d0e 0024842: Crash on change of HLR-algo in top and bottom views of customer's shape
Test cases for issues CR24842
2014-04-24 15:43:34 +04:00
pkv
69b558c435 0024861: Extra solid is in the result of General Fuse Operation
I. New features:
No new features.

II. Changes:
II.1. class BOPAlgo_ShellSplitter
   - statc function:
void RefineShell(TopoDS_Shell& theShell);
has been addded.
The function provides splitting connexity block of faces when the block begins with
the face that is intended to be internal.

II.2. class BOPAlgo_ShellSplitter
   - statc function:
Standard_Boolean IsClosedShell(const TopoDS_Shell& theShell);
has been modified to process empty shells.

II.3. class BOPAlgo_ShellSplitter
   - method:
void BOPAlgo_ShellSplitter::SplitBlock(BOPTools_ConnexityBlock& aCB);
has been modified to process connexity blocks of faces when the block
begins with the face that is intended to be internal [ II.1 ].

III. Modified entities:
packages:
BOPAlgo

Test case for issue CR24861
2014-04-24 15:43:33 +04:00
ski
7759e404df 0024857: CLang warnings -Wunused-function
Unused functions were removed.
2014-04-24 15:43:31 +04:00
emv
d8a24e8394 0024798: Boolean operation CUT produces incorrect result
Face classifier has been used to check adjustment of 2d curve for the face.

Test case for issue CR24798
2014-04-24 15:43:30 +04:00
ski
53ca691b7b 0024853: CLang warnings -Wunused-const-variable
Unused variables were removed.
2014-04-24 15:43:28 +04:00
jgv
475604b446 0024840: Exception in BRepOffsetAPI_MakePipe
Test cases for issues CR24840 and CR24849
2014-04-24 15:43:26 +04:00
ski
276130e701 0024845: CLang warnings -Wunused-variable
Unused variables were removed.
2014-04-24 15:43:25 +04:00
gka
a874a4a076 0024800: Point of intersection was not found for 2d offset curve.
For fix this case in method Geom2dInt_Geom2dCurveTool::NBSamples() number of samples for 2d offset and trimmed curve is computed as max value from number of samples for other curve and number of samples for basis curve.

Test case for issue CR24800
2014-04-24 15:43:24 +04:00
mkv
790a8bbcbf 0024827: Incorrect result of projection of an edge on a face
Test cases for issue CR24827
2014-04-24 15:43:00 +04:00
abv
857ffd5e57 0024814: Avoid using explicit names of Handle classes
Sources corrected replacing Handle_XXX by Handle(XXX)
2014-04-22 18:36:12 +04:00
ski
6fc9d72d9d 0024856: CLang warnings -Wunused-private-field
Actual warnings were fixed.
2014-04-22 11:33:46 +04:00
ski
9a86ffeb7e 0024843: CLang warnings -Wconstant-logical-operand
Logical expression is corrected to take into account input argument
2014-04-21 19:58:55 +04:00
emv
a743e2e5e8 0024823: Hang up in "bopcheck" command
Modifications:
class IntTools_EdgeEdge
 1. method
   Standard_Boolean IntTools_EdgeEdge::FindParameters(
      const BRepAdaptor_Curve& theB
      const Standard_Real aT1,
      const Standard_Real aT2,
      const Standard_Real theRes,
      const Standard_Real thePTol,
      const Bnd_Box& theCBox,
      Standard_Real& aTB1,
      Standard_Real& aTB2)

   Added protection for large values of parameters of the edges.

 2. methods
    static Standard_Boolean BndCommon(const Bnd_Box& theB1,
                                      const Bnd_Box& theB2,
                                      Bnd_Box& theBOut)
   and
    IntTools_EdgeEdge::FindSolutions()

   have been removed as redundant.

Test case for issue CR24823
2014-04-21 19:58:54 +04:00
emv
6092c0c8c4 0024844: Wrong result of Boolean Cut operation.
Small correction in intersection between Cone and Torus with collinear axes.

Test case for issue CR24844
2014-04-21 19:58:52 +04:00
jgv
2a62d88323 0024793: Documentation of methods using BRepFill_TypeOfContact has to be updated according to changes introduced in OCCT 6.7.0 2014-04-21 19:58:51 +04:00
ski
5c08e1988c 0024846: CLang warnings -Wunneeded-internal-declaration
Unused function was removed.
2014-04-21 19:58:45 +04:00
emv
819f58c71f 0024820: CLang compiler warning -Wreturn-stack-address
The signature of the function BOPDS_DS::CommonBlock(const Handle(BOPDS_PaveBlock)& thePB)
has been changed to return handle, not a reference to handle.
2014-04-21 19:58:43 +04:00
ski
c29a9290af 0024818: CLang warnings -Wlogical-not-parentheses
CLang warnings -Wlogical-not-parentheses were fixed.
2014-04-21 19:58:42 +04:00
apn
26fd0d96ea Deleted TODO in test case de/step_3/E6 regarding to issue 24249. 2014-04-18 14:41:47 +04:00
apn
5dc2ede9ad Deleted unnecessary TODOs in test cases with improvements on MacOS platform. Small corrections of test cases for MacOS. 2014-04-18 14:37:15 +04:00
kgv
871fa1038d 0024406: Visualization - crash on re-usage of the same primitive array
Redesign Graphic3d_ArrayOfPrimitives
Store vertices data in buffer objects managed using smart-pointers
- no more low-level memory corruption by memory releasing after VBO creation.
Remove broken hasEdgeInfos.

Interleave vertex attributes (position, color, normal, uv) in single buffer.
Remove from Graphic3d_ArrayOfPrimitives methods ::Orientate().
Remove structures Graphic3d_PrimitiveArray, CALL_DEF_PARRAY.
Add support for 2D vertex arrays.

Graphic3d_Group - remove array or primitive arrays.
Introduce more universal method Graphic3d_Group::AddPrimitiveArray().

Fix warning
2014-04-17 18:01:51 +04:00
pkv
c002793be1 0024851: Extra vertex is in the result of Boolean Fuse Operation
class IntTools_FaceFace
   - statc function:
void CorrectSurfaceBoundaries(const TopoDS_Face&  theFace,
                              const Standard_Real theTolerance,
                              Standard_Real&      theumin,
                              Standard_Real&      theumax,
                              Standard_Real&      thevmin,
                              Standard_Real&      thevmax)
The faces based on cylidrical surface has been added to the list of candidates to extend the boundaries

Test case for issue CR24851
2014-04-17 16:22:56 +04:00
vro
f18ccc8cd6 0024822: Solve selection fails after copying
The method ::Paste() copies myIndex now.
Test case for issue CR24822
2014-04-17 16:19:25 +04:00
ibs
46aed280cc 0024249: Crash on ShapeFix_Shape
MAIN CHANGES:
FixAddNaturalBound: the boundaries of "natural bound addition" are restricted: a face, that does not contains an outer wire, should not have any infinite UV boundaries due to new face building (with using a surface) requires specified UV boundaries.
FixAddNaturalBound: myResult is updated in FixAddNaturalBound when the method creates a new face with natural boundary. myResult is required to be updated for next "fix small-area wires" algorithm
IsPeriodicConicalLoop: incorrect working BRepTools_WireExplorer was replaced on TopoDS_Iterator.
a natural bound is added to all the faces are constructed with UV-periodical surfaces (not only sphere and torus; e.g., closed b-splines)

other:
ShapeAnalysis: ReverceSeq renamed to ReverseSeq
BRep_Tool Pnt and Tolerance has the check for null TShape
Test cases for issue CR24249

required null checks were added
test cases were corrected according to their new behavior
Correction test case for issue CR24249
2014-04-17 16:17:16 +04:00
azn
e28d7e62f9 0024775: False detecting of intersection in BRepMesh_Classifier class.
Increased checking accuracy of endpoints touching of segments.
Code formatting improvement.
Test case for issue CR24775
Correction test case for issue CR24775
2014-04-17 16:13:51 +04:00
ski
31249d1967 0024848: CLang warnings -Wunused-value
Warning should be fixed.
2014-04-17 16:10:41 +04:00
pkv
a20983607c 0024639: Parallelization FillDS part of BO
The contents dealing with:
Parallel computation of Face/Face interferences;
Parallel computation of Edge/Edge interferences (Post-Treatment Level);
Parallel intersection of bounding boxes (BOPDS_Iterator Level).
2014-04-17 16:09:02 +04:00
pkv
8620e18d6e 0024825: Fit Boolean Operation Algorithm to treat multiple arguments.
class BOPTest
class BOPAlgo_BOP
class BOPAlgo_Builder
class BOPTest
class BRepFeat_Builder
class BRepFeat_MakeCylindricalHole

The format of the command has been changed:
bbop r op [-s -t]
The following options has been added:
-s - run in serial mode
-t  - print the CPU time

Test cases for issue CR24825
2014-04-17 16:05:14 +04:00
kgv
d7515f9afb 0024821: CLang warning -Wunsequenced in StdSelect_ViewerSelector3d 2014-04-17 16:01:22 +04:00
abv
2cb4424136 0024805: Eliminate unused static functions and methods: ShallowDump(), ShallowCopy(), STANDARD_TYPE(...)
Implementation of global functions STANDARD_TYPE() for types not inheriting Standard_Transient or Standard_Persistent are eliminated.

Global functions and class methods ShallowCopy() are removed; also removed unused classes Visual3d_PickPath and Visual3d_PickDescriptor.

Global functions and class methods ShallowDump() are removed, except for classes Standard_GUID, TopLoc_Datum, and TopLoc_Location as the latter are still used in some Debug printouts.
2014-04-17 15:59:15 +04:00
duv
c5751993f2 0024785: Visualization - Modifying z-layers concept to gain more control over OpenGl depth buffer.
Cosmetic fixes.
glDepthFunc fix.
2014-04-17 15:57:28 +04:00
ysn
1a457208fe 0024649: Update user's guide for Boolean operations
New User's Guide on Boolean operations added.
2014-04-17 15:55:05 +04:00
ysn
77906c4cef 0024578: Typos in Developer Guide "Building OCCT from sources"
Dev guides for building 3rd party products and "short guide" to WOK have been reviewed.
2014-04-17 15:49:13 +04:00
ysn
4ee1bdf4e9 0024602: Documentation Code Snippets missing sign
Fix for bug 24602 about missing <, >, " and some other signs.
Also a major review of documetation to fix wrong formatting issues.
2014-04-17 15:47:16 +04:00
apn
828fb3291f Added TODO in test case for Debug mode 2014-04-11 13:57:24 +04:00
dbv
4fc7830275 0024759: Crash on STEP import, when reading a file exported in non-"C" locale
Fix for step reading
Add test case bugs/xde/bug24759
2014-04-10 20:14:10 +04:00
kgv
ca0c0b11ac 0024534: Improve design of Image_PixMap class
Remove template methods Image_PixMap::EditData(), ::ReadData().
Add template method Image_PixMap::ChangeValue().
Remove redundant parameter for Image_PixMap::Clear() method.

Make Image_PixMapData non-template class. Introduce NCollection_Buffer.
2014-04-10 19:49:50 +04:00
aml
927513c009 0024538: BRepFill_CompatibleWires.cxx, implementation of function PlaneOfWire() is suboptimal
Implementation improvements and refactoring in PlaneOfWire() function.
2014-04-10 19:49:49 +04:00
dln
f62de37212 0024708: Convertation of the generic classes to the non-generic. Part 2
Generic classes from "AppParCurves" package:
    "AppDef_SmoothCriterion", "AppDef_LinearCriteria" and "AppDef_Variational" moved to the corresponding non-generic classes "AppDef_SmoothCriterion", "AppDef_LinearCriteria" and "AppDef_Variational" to "AppDef" package. Also several "*.cxx" files of "AppDef_Variational" class merged to one ".cxx".
Generic class from "IntImp" package:
    "IntImp_ZerCOnSSParFunc" moved to the corresponding non-generic class "IntPatch_CSFunction" to "IntPatch" package.
Next unused generic classes were removed:

- IntCurveSurface_SurfaceTool
- Intf_InterferencePolygon3d
And some other minor changes.
2014-04-10 19:49:38 +04:00
duv
84c71f29e4 0024520: Implementing affine transformations in ray-tracing 2014-04-10 19:21:21 +04:00
osa
ea095e0edb 0024797: TKOpenGl, OpenGl_PointSprite - the assert is absent during incorrect object releasing. 2014-04-10 19:21:19 +04:00
pkv
e30616a780 0024639: Parallelization FillDS part of BO
The contents dealing with the parallel computation of Vertex/Face interferences.
2014-04-10 19:21:18 +04:00
omy
ba06f8bbee 0024722: Move functionality of WOK command wgendoc to OCCT tool gendoc
Command gendoc improved to:
- generate Reference Manual documentation (OCCT classes reference) with option -refman; option -overview can be used for generation of overview documentation;
- generate PDF documents for all User Guides automatically (for files listed in FILES_PDF.txt);
- check availability of third-party tools (Doxygen, Inkscape etc.) and properly report warnings and errors.
- use templates of configuration files for third-party tools instead of their generation. These template files are located in dox/resources folder

Tcl scripts are moved from dox folder to adm.
Doxygen warnings are eliminated.
Moved all auxilary functions to occaux.tcl.
Fixed Reference manual generation on *nix platform.
Fixed PDF generation on *nix platforms.
2014-04-10 19:21:16 +04:00
emv
87696ff746 0024809: Exception is raised during perform of "bfillds" command on attached shape
On attached shape command "bfillds -s" hangs in Test Harness on the long time. In debug mode exception is raised.
Vectors are normalized before calculation of an angle.
Added test case bugs/modalg_5/bug24809
2014-04-10 19:21:15 +04:00
agv
622d7f53f5 0024812: Provide VS2012 debugger visualizer for OCCT types 2014-04-10 19:21:13 +04:00
kgv
d41f6af3f2 0024792: Remove unused hacks for compilers without STL 2014-04-10 19:21:12 +04:00
kgv
91720fc5f3 0024804: OSD_PerfMeter documentation is broken 2014-04-10 19:21:10 +04:00
ibs
90e82f7007 0024808: cmake does not compile mfc sample
OCC_StereoConfigDlg.cxx/h were added into mfcsample CMakeLists.txt meta-project
2014-04-10 19:21:09 +04:00
emv
aa74e2352f 0024656: Exception on current version of OCC libraries during perform of boolean operation (Regression)
Added protection for null vector.
Test case for issue CR24656
2014-04-10 17:54:55 +04:00
ifv
0e4e12407f 0024766: Wrong result for distmini between a TopoDS_Shell and a TopoDS_Edge on version 6.6.0.
Test case for issue CR24766
Modified test case bugs/modalg_5/bug24766
2014-04-10 17:53:04 +04:00
szy
d01cc61d44 0024755: TDF_Label::AddAttribute() reverses the order of added attributes
Test case and new draw command for issue CR24755
Fix of regression linked with test case bug24047.
Fix of bug361 regression on Linux.
2014-04-10 17:51:32 +04:00
kgv
65812bd0e4 0024791: Visualization - highlighting is not cleared in local selection on some OpenGL drivers
Force GL commands execution by glFlush().
2014-04-10 17:49:14 +04:00
mkv
e6c9f595cf 0023972: Exception thrown when intersecting two cones
DRAW command and test case for issue CR23972
2014-04-10 17:46:18 +04:00
abv
3c15cf3d8b New compiler warnings (vc10 64-bit) fixed in BOPCol_TBB.hxx 2014-04-10 17:46:17 +04:00
kgv
5cff985ad0 0024795: TKOpenGl - new compilation warnings in OpenGl_Workspace_Raytrace.cxx 2014-04-10 17:46:15 +04:00
dbp
762b6cecec 0024572: Improvement performance of BRepExtrema_DistShapeShape
Fix compilations issues.
Fix compilation issues with GCC.
2014-04-10 17:43:44 +04:00
kgv
11500a8529 0024794: Drop unused files Standard_osd_ffi.c and Standard_symlink.c 2014-04-10 17:40:53 +04:00
abv
ced8e75119 0024625: Upgrade Bison to version 2.2 or above
Eliminate MSVC warnings in code generated by Bison 2.41 on Linux
2014-04-10 17:14:20 +04:00
abv
f58f9b92cb Fix for building lex scanners on Windows when scanner is generated by flex 2.5.35 on Linux 2014-04-09 15:07:37 +04:00
apn
0fbfbd6029 0024731: Incomplete section of a surface by plane
Added test case bugs/modalg_5/bug24731
2014-04-04 16:26:26 +04:00
apn
fbdb9e838c Added TODO in unstable test case de/step_3/E6. 2014-04-04 14:17:19 +04:00
apn
1cc4346c77 Increase CPU limit in test case bugs/modalg_5/bug24758_2 in Debug mode. 2014-04-04 14:16:15 +04:00
dbp
fc73a20256 0024739: TKOpenGl - port ray-tracing from OpenCL to GLSL for better integration and portability
RayTracing - disable reflections by default
Fix possible compilation issue on Mac OS X.
2014-04-04 14:15:08 +04:00
dln
54e37688ef 0024778: Convertation of the generic classes to the non-generic. Part 9
Generic classes:

 "GccIter_Circ2d2TanOn",
 "GccIter_Circ2d3Tan",
 "GccIter_Lin2d2Tan",
 "GccIter_Lin2dTanObl"

from "GccIter" package were converted to the non-generic classes and moved to the "Geom2dGcc" package. Names of this classes were changed to:

 "Geom2dGcc_Circ2d2TanOnIter",
 "Geom2dGcc_Circ2d3TanIter",
 "Geom2dGcc_Lin2d2TanIter",
 "Geom2dGcc_Lin2dTanOblIter".

And their internal classes:

 "GccIter_FunctionTanCuCuOnCu",
 "GccIter_FunctionTanCuCuCu",
 "GccIter_FunctionTanCirCu",
 "GccIter_FunctionTanCuCu",
 "GccIter_FunctionTanCuPnt",
 "GccIter_FunctionTanObl"

also converted to the non-generic and moved to the "Geom2dGcc" package(their declarations were moved to "Geom2dGcc.cdl").

Enumerations" Type1, Type2 and Type3 were moved to "Geom2dGcc.cdl".

Package "GccIter" was deleted.
2014-04-04 12:57:43 +04:00
dln
578ce4bebf 0024773: Convertation of the generic classes to the non-generic. Part 7
1) Generic classes:

 "GccGeo_Circ2dTanOn",
 "GccGeo_Circ2d2TanRad",
 "GccGeo_Circ2d2TanCen",
 "GccGeo_Circ2d2TanOnRad",
 "GccGeo_CurvePGTool"

from "GccGeo" package converted to the non-generic classes and moved to the "Geom2dGcc" package. Names of this classes were changed to:

 "Geom2dGcc_Circ2dTanOnGeo",
 "Geom2dGcc_Circ2d2TanRadGeo",
 "Geom2dGcc_Circ2d2TanCenGeo",
 "Geom2dGcc_Circ2d2TanOnRadGeo",
 "Geom2dGcc_CurveToolGeo".

Also "GccGeo_PanGenCurve" unused generic class was deleted. And "GccGeo" package was deleted.
2014-04-04 12:57:41 +04:00
dln
0b85f9a605 0024761: Convertation of the generic classes to the non-generic. Part 5
1) Generic class "GccEnt_QualifiedCurv" from "GccEnt" package converted to the non-generic class and moved to the "Geom2dGcc" package. Name of this class was changed to "Geom2dGcc_QCurve".

2) Generic classes "HatchGen_ElementGen", "HatchGen_ElementsGen", "HatchGen_HatchingGen" and "HatchGen_Hatcher" from "HatchGen" package converted to the non-generic classes and moved to the "Geom2dHatch" package. Names of this classes were changed to "Geom2dHatch_Element", "Geom2dHatch_Elements", "Geom2dHatch_Hatching" and "Geom2dHatch_Hatcher". Also all instantiations of the "internal" classes of this classes were moved to the "Geom2dHatch.cdl".

3) Generic classes "Extrema_GExtCC", "Extrema_GExtCC2d", "Extrema_GLocateExtCC" and "Extrema_GLocateExtCC2d" from "Extrema" package converted to the non-generic classes. Names of this classes were changed to "Extrema_ExtCC", "Extrema_ExtCC2d", "Extrema_LocateExtCC" and "Extrema_LocateExtCC2d". Also all instantiations of the "internal" classes of this classes were moved to the "Extrema.cdl".
2014-04-04 12:57:39 +04:00
dln
e2065c2fb9 0024763: Convertation of the generic classes to the non-generic. Part 6
Next generic classes:

 "Contap_ArcFunction",
 "Contap_ContourGen",
 "Contap_HContToolGen",
 "Contap_HCurve2dToolGen",
 "Contap_Line",
 "Contap_Point",
 "Contap_SurfFunction",
 "Contap_SurfProps"

from "Contap" package were converted to the non-generic classes. Names of several classes were changed:

 "Contap_Contour",
 "Contap_HContTool",
 "Contap_HCurve2dTool",
 "Contap_Line",
 "Contap_Point"

 Also all instantiations of the "internal" classes of this classes were moved to the "Contap.cdl". And sources of the "Contap_ContourGen" class were merged to one .cxx file.
2014-04-04 12:57:37 +04:00
dln
424cd6bb64 0024774: Convertation of the generic classes to the non-generic. Part 8
Generic classes:

 "GProp_CGProps",
 "GProp_SGProps",
 "GProp_VGProps",
 "GProp_VGPropsGK",
 "GProp_TFunction" (internal),
 "GProp_UFunction" (internal)

from "GProp" package converted to the non-generic classes and moved to the "BRepGProp" package. Names of several classes were changed to:

 "BRepGProp_Cinert",
 "BRepGProp_Sinert",
 "BRepGProp_Vinert",
 "BRepGProp_VinertGK".

Also all instantiations of the "internal" classes of this classes were moved to the "Geom2dHatch.cdl". For new "BRepGProp_TFunction" and "BRepGProp_UFunction" internal classes two new "*.cdl" files were created.
2014-04-04 12:57:35 +04:00
jgv
4a6165733f 0023892: Missing intersection edge between two faces.
Test case for issue CR23892
2014-04-04 12:57:33 +04:00
abk
c858bb1084 0024712: Extend DRAW commands "vertex" and "extrema". Create test to check all points for bug 23830.
DRAW command "vertex" was extended to create vertex from point.
DRAW command "extrema" was extended and unified: both extrema points are outputted to DRAW in case of too close points;
parameters of extremal points are outputted.
35 shapes were added for anti-regression tests.
Second DRAW test was created for bug CR23830.

Move shapes to shape-repository
2014-04-04 12:57:32 +04:00
kgv
acc625609d 0024405: TKernel - add aligned allocator class Standard_MMgrAligned
New class NCollection_AlignedAllocator.
New macros STANDARD_ALIGNED.
New methods Standard::AllocateAligned() and Standard::FreeAligned().
Add missing Standard_EXPORT
2014-04-04 12:57:30 +04:00
kgv
ad3217cd8d 0024762: Visualization - new interactive object AIS_ColoredShape with customized subshapes presentations
AIS_Shape, ::SetColor(), ::SetMaterial(), ::SetTransparency(), ::SetWidth() - improve consistency.
Setup color for marker aspect as well.
vaspects - new command superseeds vsetcolor, vsetmaterial, vsettransparancy, vsetwidth
and their unset analogs. Improve syntax and arguments validation.
OpenGl_AspectMarker::SetAspect() - do not reset myMarkerSize when sprite is unchanged.
Extend NCollection_IndexedDataMap - Iterator::Key() and FindFromKey() with value copying.

Add test case bugs vis bug24762_coloredshape.
2014-04-04 12:57:29 +04:00
kgv
8abada55ca 0024777: Visualization - AIS_InteractiveContext::MoveTo() doesn't keep detected object at first call
Draw Harness, ViewerTest - ignore rectangular selection for empty rectangle
2014-04-04 12:57:27 +04:00
dbv
7da5f7b1c2 0024757: DRAW: Move commands fixshape, tolerance, and similar to MODELING
Package SWDRAW has been moved to TKTopTest toolkit. Class SWDRAW_ToVRML has been moved to XSDRAWSTLVRML_ToVRML
Removed unused classes:
SWDRAW_ShapeBuild
SWDRAW_ShapeConstruct
XSDRAW_Shape
Removed NSPApply command
Test script update
Removed xtrace command
2014-04-04 12:57:25 +04:00
pkv
a0a3f6aca4 0024639: Parallelization FillDS part of BO
The contents dealing with the parallel computation of Vertex/Face interferences.
2014-04-04 12:57:23 +04:00
jgv
c0ade4c610 0024767: Crash on making edges in HLRBRep 2014-04-03 16:11:26 +04:00
apl
544da5a477 0024747: TKOpenGl - Mesa fails to destroy context if it set to current thread 2014-04-03 15:35:13 +04:00
kgv
af324faa80 0023710: Simplification of presentation managment classes
Merge PrsMgr_Presentation3d into PrsMgr_Presentation
Cosmetics
2014-04-03 15:34:13 +04:00
kgv
4349c10e18 0024754: Remove constructor for static class TopOpeBRep_PointGeomTool 2014-04-03 15:31:45 +04:00
pkv
80db570166 0024764: Alien subshapes occured in result of 'bopcheck' operation
class BOPAlgo_ArgumentAnalyzer
   - method:
void BOPAlgo_ArgumentAnalyzer::TestSelfInterferences()
The new shapes has been excluded from the treatment

void BOPAlgo_CheckerSI::PostTreat()
The new shapes has been excluded from the treatment

Standard_Integer bopcheck
  (Draw_Interpretor& di, Standard_Integer n,  const char** a )
The new shapes has been excluded from the treatment.
The interferences of the type */Solid has been included in the treatment.

Test case for issue CR24764
2014-04-03 15:30:30 +04:00
mkv
dd8f1b191b Update of test cases for Debug 2014-03-28 16:02:51 +04:00
abv
900f72291b 0024765: Compile errors on Mac OS X with GCC 4.2
Sequence replaced by handle in map, to avoid involvement of copy constructor (private)
2014-03-28 15:55:26 +04:00
szy
2cb0e21313 0024535: Bad type cast in TDocStd_Document::Update()
Eliminating of GCC compiler warning on breakage of C pointer aliasing rules.
2014-03-28 15:55:25 +04:00
kgv
b64d84be99 0024752: Visualization - inherit OpenGl_Group from Graphic3d_Group
Graphic3d_Group is now abstract class and should be instantiated
using Graphic3d_Structure::NewGroup() method.
Graphic3d_CGroup has been removed.

The groups list is no more duplicated within Graphic3d_Structure and OpenGl_Structure.
Removed unused/duplicated fields from Graphic3d_Group.

Prs3d_Presentation - remove redundnant field myCurrentGroup.
PrsMgr_Presentation3d::Erase(), ::Clear() - avoid possible NULL dereference.
OpenGl_GraphicDriver/Graphic3d_GraphicDriver - group management methods have been removed
(moved to Graphic3d_CStructure and Graphic3d_Group interfaces).

Graphic3d_Group::GroupPrimitivesAspect() - copy IsEmission flag
Fix wrong iterator
Fix compilation issues
2014-03-28 15:55:24 +04:00
emv
6b1fe48c8a 0024751: Performance improvements in the Edge/Edge intersection algorithm
Added new static method PointBoxDistance() to compute distance between point and bounding box.
Removed method IntTools_EdgeEdge::FindRoughRanges().
Test cases for issue CR24751
2014-03-28 15:55:21 +04:00
jgv
9ba2c30f1a 0024738: BRepOffsetAPI_MakePipe algorithm fails on circular path and section (the case where result is part of sphere)
Test case for issue CR24738
2014-03-28 15:55:20 +04:00
nbv
b9cd9e62c3 0024684: Command fixshape hangs up on the attached shape
Algorithm of seeking of any internal point into given face is corrected.
Test case for issue CR24684
2014-03-28 15:55:18 +04:00
abv
07b5cb8f23 0024758: Sample DRAW scripts for demonstrating sweeping algorithm
Two scripts added:
samples/tcl/drill.tcl: creates model of a twist drill bit
samples/tcl/cutter.tcl: creates simplified model of a milling cutter
Added test cases bugs/modalg_5/bug24758_1 bug24758_2
2014-03-28 15:55:17 +04:00
jgv
15173a087b 0024633: Incorrect projection of a curve on a surface
Test cases for issue CR24633
2014-03-28 15:55:16 +04:00
szy
3497d55234 0024565: MgtBRep persistence bug
Fix of the persistence bug (exception with message "Persistant CurveRep is Null").
Creating new draw command for testing CR24565
Revert license header corruption
Correction for new draw command OCC24565
Test case for issue CR24565
2014-03-28 15:55:14 +04:00
pkv
505abfb89f 0024639: Parallelization FillDS part of BO
Modifications to avoid compilation errors
2014-03-28 15:55:13 +04:00
duv
ca1028006d 0024354: TKOpenGl - location modification of multi-connected shape has no effect when object is drawn by GLSL program 2014-03-28 15:55:11 +04:00
kgv
30194ce331 0024745: Needless inheritance of OSD_MemInfo from Standard_Transient 2014-03-27 16:38:24 +04:00
abv
bbd47d8f35 0024748: Remove unused instantiations of collection classes
Removed:
- packages PColPGeom, PColPGeom2d
- in Geom package: classes SequenceOfBoundedSurface, (H)SequenceOfSurface
- in TColGeom package: classes Array1OfBoundedCurve, (H)Array1OfBoundedSurface, HArray1OfBoundedCurve, (H)Array2OfBoundedSurface, (H)Array2OfBSplineSurface, HArray2OfBezierSurface, (H)SequenceOfBoundedSurface, HSequenceOfSurface
- in TColGeom2d package: classes (H)Array1OfGeometry, (H)Array1OfBoundedCurve, HSequenceOfGeometry
2014-03-27 16:37:21 +04:00
dln
a104bb8fe2 0024734: Convertation of the generic classes to the non-generic. Part 4
Generic classes "LProp_FuncCurExt", "LProp_FuncCurNul" and "LProp_NumericCurInf" from "LProp" package converted to the non-generic classes and moved to the "Geom2dLProp" package. Therefore names of this classes were changed to "Geom2dLProp_FuncCurExt", "Geom2dLProp_FuncCurNul" and "Geom2dLProp_NumericCurInf".
Generic class "Sweep_LinearRegularSweep" from "Sweep" package converted to the non-generic classes and moved to the "BRepSweep" package. Therefore name of this class was changed to "BRepSweep_NumLinearRegularSweep". Also 2 internal classes of "BRepSweep_NumLinearRegularSweep" moved to "BRepSweep.cdl".
Generic classes "Primitives_Wedge" and "Primitives_OneAxis" from "Primitives" package converted to the non-generic classes and moved to the "BRepPrim" package. Therefore names of this classes were changed to "BRepPrim_GWedge" and "BRepPrim_OneAxis". Also enum "Direction" moved to BRepPrim. Therefore all "Primitives" package was deleted.
And some other minor changes were done.

Internal classes Array2OfShapes and SequenceOfShapes from BRepSweep_NumLinearRegularSweep replaced to Array2OfShape and SequenceOfShape from TopTools.
2014-03-27 16:30:38 +04:00
dln
04f7bd75e3 0024683: Convertation of the generic classes to the non-generic. Part 1
Generic classes from "BRepApprox" package:
    "BRepApprox_ApproxLineGen" and "BRepApprox_SurfaceToolGen" converted to the non-generic classes "BRepApprox_ApproxLine" and "BRepApprox_SurfaceTool".
Generic classes from "BRepBlend" package:
    "BRepBlend_HCurve3dToolGen" and "BRepBlend_HCurve2dToolGen" converted to the non-generic classes "BRepBlend_HCurve3dTool" and "BRepBlend_HCurve2dTool".
Generic classes from "Blend" package:
    "Blend_Extremity", "Blend_Line" and "Blend_PointOnRst" moved to the corresponding non-generic classes "BRepBlend_Extremity", "BRepBlend_Line" and "BRepBlend_PointOnRst" to "BRepBlend" package.

And some other minor changes were done.
Field "myPntOn2S" was deleted from "BRepApprox_ApproxLine" class. Therefore BRepApprox_ApproxLine::Point(...) method was a little changed.
2014-03-27 16:26:13 +04:00
mkv
0a58bfe2c3 Update test cases for debug mode 2014-03-21 16:16:29 +04:00
ibs
630ab8c7fe 0024549: Faulty shape after IGES translation with xstep.cascade.unit set to M
pcurve as line isn't created to avoid incorrect parameterization
Test case for issue CR24549

Test cases were corrected according to their new behavior
2014-03-21 16:11:31 +04:00
duv
e6804ff7c0 0024687: TKOpenGl shader programs - same view state for different v3d views
OpenGl_ShaderManager::IsSameView() - add const
2014-03-20 14:40:25 +04:00
apn
1704c57631 Update test cases database
- bugs modalg_5 bug23954 -      Added test case for issue 23954
- bugs modalg_1 bug60776_1 -  Corrected square of shape and deleted appropriate TODO
- bugs moddata_1 bug13 -          Added check for the curve length obtained as a result of intersection
- feat featprism S2 -                     Corrected square of shape and deleted appropriate TODO
2014-03-20 14:22:54 +04:00
dln
47cbf13472 0024727: Convertation of the generic classes to the non-generic. Part 3
1) Generic class "Intf_InterferencePolyhedron" from "Intf" package converted to the non-generic class and moved to the "IntPatch" package. Name of this class was changed to "IntPatch_InterferencePolyhedron".

2) Generic class "MoniTool_Elem" from "MoniTool" package converted to the non-generic class "MoniTool_TransientElem".

3) Generic class "IntWalk_PWalking" from "IntWalk" package converted to the non-generic class. And internal class "TheInt2S" of "IntWalk_PWalking" moved from IntWalk_PWalking.cdl to IntWalk.cdl for correct building. Also several "*.cxx" files of this class merged to one ".cxx".

4) Generic class "Transfer_SimpleBinder" from "Transfer" package converted to the non-generic class and moved to the "TransferBRep" package. Name of this class was changed to "TransferBRep_BinderOfShape".

5) Generic class "Geom2dInt_CurveTool" from "Geom2dInt" package converted to the non-generic class "Geom2dInt_Geom2dCurveTool".

6) Generic class "MAT2d_BisectingLocus" from "MAT2d" package converted to the non-generic class and moved to the "BRepMAT2d" package. Name of this class was changed to "BRepMAT2d_BisectingLocus".

7) Generic class "MAT_Mat" from "MAT" package converted to the non-generic class and moved to the "MAT2d" package. Name of this class was changed to "MAT2d_Mat2d".
2014-03-20 14:14:41 +04:00
kgv
ebc93ae74f 0024737: Coding - remove <br> tag from header files
Eliminate #ifdefs around #includes, some unnecessary includes and macros
2014-03-20 14:12:58 +04:00
emv
df80c6ddda 0024706: Solids produced by BOP do not have flag Closed set in shells
Flag CLOSED is set for closed shells created during perform of Boolean Operation.
Test cases for issue CR24706
2014-03-20 14:10:33 +04:00
kgv
65b88edb4b 0024730: remove constructor for class TopOpeBRep_PointGeomTool 2014-03-20 14:07:41 +04:00
kgv
b56dd33fbd 0024736: There is new additional compilation warning on Linux platform 2014-03-20 14:06:19 +04:00
pkv
9873027959 0024733: Subshape IDs change between two executions of a same script
Changes:
1. class BOPTools_Set
   - method:
void BOPTools_Set::AddEdges(const TopoDS_Shape& aS)
has been removed as redundant

2. class BOPTools_Set
   - method:
Standard_Boolean BOPTools_Set::IsEqual  (const BOPTools_Set& theOther)const
has been modified to take into account Locations of the shapes

3. class BOPAlgo_Builder
   - method:
void BOPAlgo_Builder::FillSameDomainFaces()
has been modified in accordance with the modifications done in II.1.
2014-03-20 14:04:52 +04:00
kgv
679ecdeeac 0024637: Visualization - clean up implementation of rendering in immediate mode
Remove unused flag "DoubleBuf".
Remove Visual3d_TransientManager "class" (functionality moved to PrsMgr_PresentationManager).
Remove unused "Add" immediate mode.

V3d_View class - remove methods ::TransientManagerBeginDraw(), ::TransientManagerClearDraw(), ::TransientManagerBeginAddDraw().
Add method ::RedrawImmediate() to redraw only immediate presentations.

OpenGl_GraphicDriver - add methods ::DisplayImmediateStructure(), ::EraseImmediateStructure(), ::RedrawImmediate().
OpenGl_View - manage list of immediate structures.
OpenGl_Workspace - automate rendering workflow of immediate + persistent layers.

Merge PrsMgr_PresentationManager3d class into PrsMgr_PresentationManager.
Mark PrsMgr_PresentationManager3d as alias to PrsMgr_PresentationManager to simplify porting.

Prs3d_Presentation - remove unused field myStruct.
Prs3d_PresentationShadow - shadow link to existing presentation with custom attributes.
Graphic3d_Structure::Highlight() - do not register undisplayed structure in structure manager.

AIS_InteractiveContext, AIS_LocalContext add flag to prevent view update into methods
::MoveTo(), ::HilightNextDetected(), ::HilightPreviousDetected()
to allow update of customized immediate structures before redraw but after ::MoveTo().

Remove unused method AIS_InteractiveContext::Drag().

StdSelect_ViewerSelector3d do not user immediate mode in methods
::DisplayAreas(), ::ClearAreas(), ::ClearSensitive(), ::DisplaySensitive(),

GridEcho - update value in StdSelect_ViewerSelector3d::Pick() instead of V3d_View::Compute().
Do not use global variable for GridEcho vertex.
Redraw immediate mode not within GridEcho but at AIS_InteractiveContext, AIS_LocalContext layer.

V3d_View::ToPixMap() - disable autoupdate during FitAll.
Avoid Redraw() into FBO without ImmediateModeDrawToFront flag.

PrsMgr_PresentationManager stores list of temporary immediate presentations,
automatically cleared within BeginImmediateMode() call.
Methods with ambiguous names have been renamed
(new names now consistent with pre-existed method names in AIS_LocalContext class):
- BeginDraw -> BeginImmediateDraw
- EndDraw -> EndImmediateDraw
Remove now useless Remove() method (and ImmediateRemove() in AIS).

Visual3d_View now stores map of displayed immediate presentations.

ViewerTest_EventManager - eliminate double redraw in selection methods.

Fix warning
2014-03-20 13:54:55 +04:00
kgv
01ca42b2c1 0024732: OpenGl_Context - retrieve functions up to GL4.4
Drop unused OpenGl_ArbVBO.
Replace OpenGl_ExtFBO with OpenGl_ArbFBO.

OpenGl_Context - reorganize GL functions management.
OpenGl_GlFunctions structure now stores pointers for all GL functions,
while inheritors specify functions subset using access levels.
Drop fields core12, core13, core14; replace extFBO by arbFBO.

OpenGl_ArbIns, OpenGl_ArbTBO - use GL3.1 core functions
instead of ARB extensions when available.

OpenGl_ArbFBO - provide complete list of functions

OpenGl_GlCore11 - fix misprint

OpenGl_Context.hxx - remove redundant declarations
2014-03-20 13:51:05 +04:00
dbp
228de226a1 0024669: BVH binned builder fails to separate objects with the same center 2014-03-20 13:48:25 +04:00
apl
d399d3c36b 0024725: AIS_TexturedShape - flag switching texture modulation mode does not work
- Missing code restored
- "vtexture" command improved to support texture modulation option

remarks from kgv
2014-03-20 13:47:23 +04:00
aba
91b16a64ca 0024668: Null flyout value case in AIS_Dimension::SetTextPosition() method is not considered.
Corrected checks of working plane and dimension geometry.

Corrected remarks: IsComputed flag was added to the SelectionGeometry to check if it is filled; AdjustParameters() methods became const ones.

minor remark
2014-03-20 13:44:40 +04:00
apl
5432891550 0024728: A lot of tests are crashed on vdump command on Windows in debug mode 2014-03-20 13:42:09 +04:00
mkv
b4747b2976 0024493: Partition algorithm produces not valid shape(splt of 10 faces)
Test cases for issue CR24493
2014-03-20 13:40:55 +04:00
kgv
785a954097 0024644: Draw_Printer - provide the way to control messages gravity filter
Message_Printer - define GetTraceLevel()/SetTraceLevel() methods in base interface.
Implement message gravity filter in Draw_Printer.
Add new Draw Harness command dtracelevel to show/change message gravity filter.
Redirect default messenger to Draw_Printer within TKDraw instead of TKXSDRAW

Draw::Commands() - assign Draw_Printer only once
2014-03-20 13:39:21 +04:00
emv
0d19eb340e 0024696: Lower performance of the new Edge/Edge intersection algorithm
Performance improvements in IntTools_EdgeEdge algorithm:
1. Added check for common box between edges: if common box between edges is thin,
   find exact solutions at once, without looking for rough ranges first;
2. Improved methods IntTools_EdgeEdge::FindBestSolution() and
   IntTools_EdgeEdge::CheckCoincidence(...) by using method SplitRangeOnSegments
   with resolution of the curve as a criteria for size of the ranges.

Test cases for issue CR24696
2014-03-20 13:37:28 +04:00
bugmaster
fa84b8ffc4 Update cpulimit due to issue 24596 2014-03-14 14:16:51 +04:00
apl
9764ccbb78 0024720: Some standard samples are not compiled after latest integration to visualisation
Fixed compilation errors in samples:
mfc/standard
qt/Tutorial
qt/IESample
2014-03-13 17:41:37 +04:00
ama
7c8090aa6c 0024596: Slow import of IGES data
Part 1: Speed up of import functionality.
Correction in ShapeFix_IntersectionTool::FixIntersectingWires() - preliminary construction of ShapeAnalysis_Surface tool for the whole face; computation of 2d bounding boxes for edges and wires before intersection checking.

Part 2: Speed up of check shape.
Correction in BRepCheck_Face::IntersectWires() in the same way: preliminary computation of 2d boxes for edges and wires in order to reduce the number of calls of intersection tool for pair of wires.

Test cases for issue CR24596
2014-03-13 15:08:55 +04:00
abv
be8d29f50a 0024718: Broken build on VC8 (VS 2005) if TBB is used
Macro _WIN32_WINNT defined in OpenGl_SceneGeometry.cxx for building with TBB on VS 2005
2014-03-13 14:49:54 +04:00
kgv
63bcc44896 0024704: Visualization - inherit OpenGl_Structure from Graphic3d_CStructure
Graphic3d_Structure - store Graphic3d_CStructure as handle.
Graphic3d_Structure class implementation clean up.
Graphic3d_Structure::SetManager() - remove unused method.
Graphic3d_GraphicDriver - move structure-related methods to Graphic3d_CStructure interface.

Remove unsupported Aspect_TOHM_BLINK value.

Remove field-duplicate OpenGl_Structure::myClipPlanes

Fixing warnings
2014-03-13 14:48:38 +04:00
apl
3dfe95cdb9 0024714: Camera integration - difference in behavior of V3d_View::SetSize
Restored behavior of SetSize method
2014-03-13 14:32:43 +04:00
kgv
34db9c0093 0024688: Draw Harness - vdump command makes snapshot only for the first view 2014-03-13 14:27:58 +04:00
skv
2cd138b878 0024667: BRepOffsetAPI_MakePipe::FirstShape() and LastShape() return shapes not from result
Test case for issue CR24667
2014-03-13 14:25:14 +04:00
abv
cb389a77e4 0024710: Avoid including Handle_Class.hxx headers except where necessary
Includes of Handle*.hxx headers replaced by include of corresponding class (where possible without redesign of the classes).

Minor correction against compiler warning (vc10 64-bit) in BOPAlgo

Remove double header inclusions

Correction of minor mistake
2014-03-13 14:22:25 +04:00
kgv
519d35d81e 0024705: Draw Harness - add -noupdate option to vdisplay command
Add option to suppress viewer redraw to the following commands:
vdisplay, vdonly, verase, vremove
2014-03-13 14:18:10 +04:00
abk
db71702d4b 0024342: Create non-constant methods ChangeCoord with index parameter in classes gp_XY and gp_XYZ
The methods were created.
2014-03-13 13:34:23 +04:00
kgv
971c281b11 0024701: TKernel - drop redundant headers Standard_ctype.hxx and Standard_inverse.h 2014-03-13 13:24:31 +04:00
abv
3d68eaf52b 0024431: Using svg-images in the documentation
Documentation generator improved to automatically convert SVG images to PDF when PDF documents are generated. This is done with Inkscape thus it becomes necessary for generation of PDF documents.

Doxygen alias "figure" added for easy insertion of images with single command for both HTML and PDF output.

Documentation is updated.

Reviewed documentation.md and added more recommendations on Document Syntax.
Introduced existing svg images in the documentation.

Description of formatting of plain text, code blocks, and references revised.
Snapshot of structure of dox folder is updated.
Copyright year is corrected in PDF documents to be always the current one.

Some grammar corrections.
2014-03-13 13:21:24 +04:00
kgv
67335dfc1e 0024719: Snapshots for bugs/vis/bug6145 are unstable
Use "new" Boolean operation instead of "old" one.
2014-03-13 09:36:02 +04:00
kgv
f8eb9b179e 0024685: Coding Rules - "Draw:Atoi" misprints in the document 2014-03-06 16:01:49 +04:00
apl
197ac94e72 0024413: Visualization - get rid of projection shift from orthographic camera definition
From now on, the panning behavior of V3d_View completely corresponds to equal operations with camera. There is no more confusing "Center" property and "ProjectionShift" which were used to introduce composite panning, while respecting view referential points: At, Eye unchanged. The V3d_View::FitAll approach has been rewritten to do "fit all" geometrically, operating with frustum, to make it working for both orthographic and perspective projections.

1) Getting rid of ProjectionShift and Center property:
- Removed ProjectionShift property of Graphic3d_Camera.
- Removed confusing Center property of V3d_View (related to projection shift).
- Removed redundant code related to the Center property of V3d_View.
- Removed WindowLimit method of Graphic3d_Camera - no more used.

2) Improvements of fit all and selector:
- Improved FitAll operation of V3d_View and reused it in NIS_View - the perspective projection is now handled correctly.
- Revised code of Select3D_Projector class - can be defined with any given projection and model-view matrices.
- Modified StdSelect_ViewerSelector3d and ensured that panning, zooming and going into the view do not lead to unwanted re-projection of sensitives. The handling of perspective selection is revised.
- Take into account graphical boundaries of infinite structure on ZFitAll.

3) Improvements of camera:
- Introduced new z range scale parameter for V3d_View::AutoZFit. See, V3d_View::AutoZFitMode.
- Allow negative ZNear, ZFar for orthographic camera to avoid clipping of viewed model.
- Moved camera ZNear, ZFar validity checks to V3d_View level.
- Use more meaningful Standard_ShortReal relative precision for ZNear, ZFar ranges computed by ZFitAll.
- Use Standard_Real type for camera projection and orientation matrices.
- Extended camera to generate both Standard_Real and Standard_ShortReal transformation matrices using the same matrix evaluation methods and converted input parameters.

Correcting picking tests for perspective view

Modify v3d face test cases for 1px changes in face picking

Modified test cases for new arguments of vviewparams DRAWEXE command
2014-03-06 15:50:33 +04:00
ifv
e618b52683 0024650: Wrong intersection curves obtained for a surface of revolution and a plane.
Test case for issue CR24650
2014-03-06 15:50:31 +04:00
ibs
d16b64f1ec 0024679: test command doesn't work with tmp path containing white spaces 2014-03-06 15:50:30 +04:00
pkv
a942f2da6a 0024639: Parallelization FillDS part of BO
Edge/Edge Interferences

Changes:
1. class BOPAlgo_PaveFiller
  - method:
void BOPAlgo_PaveFiller::PerformEE()
the chages provides the parallel computations of
Edge/Edge interferences.

   - auxiliary classes:
    BOPAlgo_EdgeEdge
    BOPAlgo_EdgeEdgeFunctor
    BOPAlgo_EdgeEdgeCnt
have been added.
The classes are auxiliary classes to provide the parallel computations
of Edge/Edge interferences.

2. class BOPTest
-method:
void BOPTest::PartitionCommands(Draw_Interpretor& theCommands)
- static function:
Standard_Integer bfillds(Draw_Interpretor& di,
                         Standard_Integer n,
                         const char** a)
The syntax of the command "bfillds" has been changed.
> bfillds [-s -t]
options:
-s - launch the algorithm in sequential mode
-t - display CPU time

Test case for issue CR24639
2014-03-06 15:50:29 +04:00
emv
decdfc9499 0024628: Intersection result is unfixed
The map for collecting pave blocks of two faces has been replaced with indexed map
to ensure the constant order of pave blocks when checking section curves for existents.

Test case for issue CR24628
2014-03-06 15:50:28 +04:00
nbv
b92f35729a 0024612: Wrong pcurve of the section curve
Main changes are in "IntWalk_IWalking::TestDeflection(...)" function (IntWalk_IWalking_5.gxx).

Some test cases were corrected according to their new behavior.
2014-03-06 15:50:27 +04:00
emv
f10da91dab 0024673: Test cases for the new Edge/Edge intersection algorithm
New test cases for 0024673
Corrected names of shapes in test cases bugs/modalg_5/bug24208_1 - bug24208_14.
2014-03-06 15:50:26 +04:00
vro
5064550f11 0024675: Crash reading a VRML file
A node index for a normal is passed through a map of corrected references to node indices.

Test case for issue CR24675
2014-03-06 15:50:26 +04:00
dln
93cb31a607 0024662: Removing unused "generic" classes. Part 3
In scope of this issue next unused generic class will be removed:

- IntImp_CSCurveTool
- IntImp_CSFunction
- IntImp_CurveTool
- IntImp_ISurfaceTool
- IntImp_PSurfaceTool
- IntStart_ArcTool
- IntStart_PSurfaceTool
- IntStart_SIFunction
- IntStart_SITool
- IntStart_SOBFunction
- IntStart_SOBTool
- IntStart_TopolTool
- IntWalk_IWFunction
- IntWalk_Iterator
- IntWalk_LoopPointTool
- IntWalk_PSurfaceTool
- IntWalk_PathPointTool
- Intf_ToolPolyhedron
- LProp_CurveTool
- LProp_SurfaceTool
- LibCtl_ProtocolTemplate
- MAT_Tool
- Primitives_Builder
- Sweep_Builder
- Sweep_Iterator
- Sweep_Tool
- TopClass_FaceExplorer
- TopClass_Intersection2d
- HatchGen_Intersector
- IFSelect_SelectList
- IntCurveSurface_CurveTool
- IntImp_COnSCurveTool
- IntImpParGen_ParTool
2014-03-06 15:49:57 +04:00
kgv
8e3ebc7a63 0024672: Visualization - AIS_TexturedShape does not activate back face culling aspect 2014-03-06 15:48:04 +04:00
apl
f376ac72de 0024622: Add method to AIS_TexturedShape class to assign texture data directly from byte stream
Added methods to specify Image_PixMap as texture source to AIS_TexturedShape and Graphic3d_TextureRoot.
Modified internal class MeshVS_ImageTexture2D, originally used for the purpose of sourcing texture as Image_PixMap.

AIS_TexturedShape class:
- Get rid from cdl declaration.
- Remove unused and uninitialized field myDeflection / method Deflection().
- Improve class documentation.
- Use Graphic3d_NOT_2D_UNKNOWN instead of -1.
- Use myIsCustomOrigin and myToScale flags to use/ignore custom values.
2014-03-06 15:48:03 +04:00
apn
d53ae65f65 0022912: After calling AIS_InteractiveContext::UnsetColor objects are drawn with the same color when transparency is changed
Added test case bugs/vis/bug22912
2014-03-06 15:48:02 +04:00
dln
62684c43f6 0024663: Removing unused "generic" classes. Part 4
In scope of this issue next unused generic class will be removed:

- TCollection_AVLBaseNode
- TCollection_AVLIterator
- TCollection_AVLList
- TCollection_AVLNode
- TCollection_AVLSearchTree

- PCollection_ATInOrderIterator
- PCollection_ATPostOrderIterator
- PCollection_ATPreOrderIterator
- PCollection_AVLIterator
- PCollection_AVLNode
- PCollection_AdjacentVerticesIterator
- PCollection_BackEdgesIterator
- PCollection_BreadthFirstIterator
- PCollection_DepthFirstIterator
- PCollection_DoubleMapIterator
- PCollection_DoubleMapNode
- PCollection_Edge
- PCollection_EdgesIterator
- PCollection_FrontEdgesIterator
- PCollection_HAVLSearchTree
- PCollection_HArbitraryTree
- PCollection_HDirectedGraph
- PCollection_HDoubleMap
- PCollection_HQueue
- PCollection_HSet
- PCollection_HStack
- PCollection_LeavesIterator
- PCollection_QueueIterator
- PCollection_RootsIterator
- PCollection_SetIterator
- PCollection_StackIterator
- PCollection_Vertex
- PCollection_VerticesIterator
- PCollection_HDataMap
- PCollection_HIndexedDataMap
- PCollection_IndexedDataMapNode
- PCollection_MapIterator
- PCollection_MapNode
2014-03-06 15:47:44 +04:00
vro
d5c3f40613 0024645: Pointer to the last is wrong for a tree node
- An extra call to DownCast() is removed for a performance reason.
- Information on last child is added to the Dump() method + fixed a problem of lost last child tree node on removal (detach) operation.
- Test case for issue CR24645
2014-03-06 13:33:07 +04:00
osa
f8c8ba7a6d 0024671: TKOpenGl, OpenGl_Context - glGetPointerv might be called without GL context 2014-03-06 13:12:58 +04:00
abv
938bb74003 0024599: Tools for interacting with DRAW from Visual Studio debugger
Minor correction of #include to avoid dependency of package Draw on DBRep (problem building by WOK).
License statements in new files corrected for licensecheck command.
Non-ascii en-dash symbol repleced by Ascii hyphen in debug.md.
2014-03-03 14:52:56 +04:00
pkv
bf12f0763e 0024654: Result of Boolean operation is invalid for bopargcheck if rotated
class  BndLib
   - method:
void BndLib::Add(const gp_Hypr& H,
                 const Standard_Real P1,
                 const Standard_Real P2,
                 const Standard_Real Tol,
                 Bnd_Box& B)
  - static function:
Standard_Integer ComputeBox(const gp_Hypr& aHypr,
                            const Standard_Real aT1,
                            const Standard_Real aT2,
                            Bnd_Box& aBox)
The function computes bounding box for bounded hyperbola

Test case for issue CR24654
2014-02-27 18:51:55 +04:00
vro
ca2edbb237 0024666: Removal of output information in debug mode in Ocaf
DEB_BUILDER replaces DEB pre-processor directive to eliminate extra output on setting a shape to a label.
Small correction of test case
2014-02-27 18:49:28 +04:00
dln
89f18cb939 0024660: Removing unused "generic" classes. Part 1
In scope of this issue next unused generic classes will be removed:

1) AppBlend_Line

2) AppBlend_SectionGenerator

3) AppCont_SurfLeastSquare

4) AppCont_TheLineTool

5) AppCont_TheSurfTool

6) AppParCurves_MLineToo

7) AppParCurves_Projection

8) ApproxInt_WLine

9) Approx_ComputeCSurface

10) Approx_TheLineTool

11) Blend_Iterator

12) Contap_ArcTool

13) Contap_SurfaceTool

14) Contap_TopolTool

15) Dynamic_EnumerationParameter

16) Dynamic_MethodInstance

17) Extrema_ExtPSOfRev

18) GProp_CurveTool

19) GProp_DomainTool

20) GProp_FaceTool
2014-02-27 18:46:56 +04:00
nbv
67e1d45b60 0024575: Exception is raised during 'checkshape' operation.
Recursion calling of "Propagate(...)" function is replaced with cycle.
Test case for issue CR24575
2014-02-27 18:46:00 +04:00
vro
bf5b529346 0024645: Pointer to the last is wrong for a tree node
Information on last child is added to the Dump() method + fixed a problem of lost last child tree node on removal (detach) operation.
Test case for issue CR24645
2014-02-27 18:44:15 +04:00
kgv
49663e13f0 0024636: Coding Rules - define rules for development of Draw Harness commands
.md file corrected grammar, style and logic. Removed redundancies.
2014-02-27 18:42:20 +04:00
ibs
ca0f3082a0 0024659: misprints in draw documentation 2014-02-27 18:35:07 +04:00
ibs
e8181411e6 0024364: Document system should use local MathJax also
the new ability choosing of the location of MathJax was introduced
new argument was added to gendoc.bat script
MathJax choice was updated for CHM articles
Minor corrections of documentation
2014-02-27 18:34:02 +04:00
abv
d4faf9e945 0024599: Tools for interacting with DRAW from Visual Studio debugger
Global functions are added to allow a user performing DRAW commands from VS Command Window when DRAW is interrupted on a breakpoint.
Previously existing functions are adapted to work with Visual Studio debugger (Command Window).
A manual describing use of these functions and other debugging facilities and some hints is added to Developer Guides.
Minor corrections and refinement of debug.md.
2014-02-27 18:25:18 +04:00
pkv
c5face6f3a 0024655: Boolean common produces incorrect result
class BOPAlgo_WireSplitter
   - method:
void BOPAlgo_WireSplitter::SplitBlock
                 (const TopoDS_Face& myFace,
                   BOPTools_ConnexityBlock& aCB);

 - static functions:
void RefineAngles(const TopoDS_Face& myFace,
                  const BOPCol_ListOfShape& myEdges,
                  BOPAlgo_IndexedDataMapOfShapeListOfEdgeInfo& mySmartMap);

void RefineAngles(const TopoDS_Vertex& aV,
                  const TopoDS_Face& myFace,
                  const BOPCol_MapOfShape& aMBE,
                  BOPAlgo_ListOfEdgeInfo& aLEI);

Standard_Boolean RefineAngle2D(const TopoDS_Vertex& aV,
                               const TopoDS_Edge& aE,
                               const TopoDS_Face& myFace,
                               const Standard_Real aA1,
                               const Standard_Real aA2,
                               Standard_Real& aA);

The treatment p-curves convergent in node.
The refining the angles of p-curves taking into account
bounging curves if exist.

Test case for issue CR24655
2014-02-27 18:17:01 +04:00
apn
cc88c2f65b Deleted TODO which is not reproduced in Debug mode. 2014-02-21 11:50:37 +04:00
emv
1d18c75e70 0024648: Different types of intersection curves between Cone and Torus with a different order of arguments
Correct treatment of the cases with Cone and Torus.
Test cases for issue CR24648
2014-02-20 17:17:13 +04:00
pkv
6f31882ada 0024620: BOPAlgo_CheckerSI returns interferences that are not sub-shapes of the source shape
void BOPAlgo_CheckerSI::PrepareCopy()
has been added.
Purpose:
   - provides the copy of the argument
   - provides links between the copy and the original
- protected method:
void BOPAlgo_CheckerSI::PostTreatCopy()
has been added.
Purpose: provides post treat actions wit the copy.

void BOPAlgo_PaveFiller::Perform()
The try/catch mechanism is used inside the method

Standard_Integer bopcheck
  (Draw_Interpretor& di, Standard_Integer n,  const char** a )
The redundant copying is removed.

Standard_Integer bopargcheck
  (Draw_Interpretor& di, Standard_Integer n,  const char** a )
The redundant copying is removed.

packages:
BOPAlgo
BOPTest

Test cases for issue CR24620
Small correction of text case for issue CR24620
2014-02-20 17:10:47 +04:00
ifv
e16f61a62f 0024627: Extrema 2d between an arc of circle and an ellipse crashes
Test case for issue CR24627
2014-02-20 17:02:50 +04:00
pkv
362dec17cf 0024618: Embedding vertex in BOP depends on the order of arguments
Changes: class BOPDS_DS
   - method:
void BOPDS_DS::AloneVertices(const Standard_Integer theI,
                             BOPCol_ListOfInteger& theLI)const
The condition for DS-index of a vertex has been corrected

class BOPTools_AlgoTools3D
   - static function:
Standard_Boolean HasGeometry(const TopoDS_Shape& aS)
The returnig value  has been corrected for shapes of vertex type

Modified entities:
packages:
BOPDS
BOPTools

Test cases for issue CR24618
2014-02-20 16:56:10 +04:00
abv
1896126e35 0024635: Eliminate trivial compiler warnings by GCC in Debug mode 2014-02-20 16:45:06 +04:00
osa
03e04ead37 0024642: TKOpenGl, OpenGl_Text - rotation angle is ignored in case of 2D text 2014-02-20 16:38:55 +04:00
osa
6a240ff87d 0024641: TKOpenGl - public methods of OpenGl_Text and OpenGl_AspectText classes are not exported 2014-02-20 16:32:39 +04:00
abv
7eb732b683 0024640: Broken logic of check of variable for zero in IntCurvesFace_Intersector constructor
The check is fixed to avoid FPE division by zero
2014-02-20 16:25:53 +04:00
emv
ecba6de3cc 0024558: Boolean operation can not create all results solids which should be built.
Corrections in checking 2d distances when splitting wires.
Test case for the issue.
2014-02-20 16:18:59 +04:00
abv
d5f74e42d6 0024624: Lost word in license statement in source files
License statement text corrected; compiler warnings caused by Bison 2.41 disabled for MSVC; a few other compiler warnings on 54-bit Windows eliminated by appropriate type cast
Wrong license statements corrected in several files.
Copyright and license statements added in XSD and GLSL files.
Copyright year updated in some files.
Obsolete documentation files removed from DrawResources.
2014-02-20 16:15:17 +04:00
aml
9bd37e127c 0024530: TKMesh - remove unused package IntPoly
Deletion of package IntPoly.
2014-02-20 15:46:42 +04:00
apn
7075ef95b6 Update testing case for issue 0024499
Added XSDRAW instead of XDE
2014-02-17 12:48:34 +04:00
apn
69fd2d1b53 Added QA command OCC24086 and test case bugs/modalg_5/bug24086 for issue 24086. 2014-02-13 14:04:52 +04:00
apn
12fc400cf8 Added test case bugs/modalg_5/bug24074 for issue 24074. 2014-02-13 14:04:50 +04:00
apn
45f8c99462 Added test case bugs/step/bug24055 for issue 24055. 2014-02-13 14:04:49 +04:00
apn
01ee00d90b Added QA command OCC24051 and test case bugs/vis/bug24051 for issue 24051. 2014-02-13 14:04:47 +04:00
apn
1b7602c84a Added QA command OCC24012 and test case bugs/modalg_5/bug24012 for issue 24012. 2014-02-13 14:04:45 +04:00
apn
02fe718cde Added test case bugs/vis/bug23984 for issue 23984. 2014-02-13 14:04:44 +04:00
nbv
c2c2f2b62c 0024585: Wrong pcurve of the section curve
PCurve is extended to surface boundary forcefully.
It is made by finding some additional points (if it is possibly).
"bopcurves" DRAW-command returns number of found 3D-curves and (as an option) 2D-curve (see help for more detail information).

Test cases for issue CR24585
2014-02-13 14:04:42 +04:00
aba
8bb96a9760 0024358: TKV3d - connected structures are not re-computed on device lost
Graphic3d_StructureManager::ReComputeStructures() method was corrected to consider all child (connected) structures.
Corrected remarks: added image dump in test case; corrected method name.
2014-02-13 14:04:40 +04:00
duv
5495fa7e65 0024402: TKOpenGl - Implement clipping planes in Phong GLSL program
Limit number of lights (breaks compatibility with old hardware).
2014-02-13 14:04:39 +04:00
duv
816d03eef3 0024323: TKOpenGl - spot light sources are not handled in Phong GLSL program
Limit number of lights (breaks compatibility with old hardware).
2014-02-13 14:04:37 +04:00
apn
6b371aa564 0024499: fixshape produces inverted solid
Bug is not reproduced in current master IR-2014-02-06.
Test bugs/modalg_5/bug24499 was added.
2014-02-13 14:04:36 +04:00
jgv
f52d1b53c4 0024586: Pipe construction is failed
Test case for issue CR24586
2014-02-13 14:04:34 +04:00
aba
af203d549a 0024412: TKV3d, Dimensions - Possibility to customize text position was lost:
AIS_Dimension::GetTextPosition() and AIS_Dimension::SetTextPosition() methods were added.
Added possibility to set and unset text label alignment respectively to the attach points after text position changed.
Added test cases to check text positioning with dimension parameters and with setting 3D point.
Corrected DRAW commands vmovedim, vangledim, vdistdim, vradiusdim.
Corrections of AIS_Dimension::SetTextPosition(): aspect parameters are not changed inside it.
Layout mode was removed; test cases and vdimparams, vdimension  commands were corrected.
remarks: coding style, removing redundant code of LayoutMode enumeration.
2014-02-13 14:04:32 +04:00
dln
3b010a7435 0024547: Convertation of the generic classes to the non-generic (math).
- class "math_DoubleTab" was converted to the non-generic class. Some changes were made in the class "math_Matrix". And some stylish changes were made.

- class "math_SingleTab" was converted to the non-generic template class. And classes "math_Vector" and "math_IntegerVector" converted to the non-cdl, because they use template class "math_Vector". Some stylish changes were made.
2014-02-13 14:04:31 +04:00
abv
8cb69787f2 0024607: Fix some GCC compiler warnings
- enumeration value not handled in switch in Aspect_ColorScale.cxx, TNaming_DeltaOnModification.cxx
- comparison between signed and unsigned integer expressions in NIS_Triangulated.cxx, OSD_MAllocHook.cxx, RWStl.cxx
- static function defined or declared but not used in OpenGl_Workspace_2.cxx, ProjLib_ComputeApprox.cxx
2014-02-13 14:04:29 +04:00
szv
feb2743f11 0024603: The code in TCollection_AsciiString::Search* methods can be simplified
Small improvement in TCollection_AsciiString::Search.
2014-02-13 14:04:27 +04:00
mmv
97f7a9d875 0023427: Unused C-sources in OSD package
Deleted unused sources in OSD package
2014-02-13 14:04:01 +04:00
apn
38e756a1f1 Added test case demo/samples/raytrace that show raytrace mode. 2014-02-07 14:47:38 +04:00
apn
eb77c7dbd2 Added TODO in test case bugs/modalg_3/bug615 in Debug mode (test case is bad, but behavior changes). 2014-02-07 14:45:05 +04:00
apn
5291af9fd3 Return cpulimit TODOs because test case doesn't execute always (it crashes by cpulimit in Debug mode). 2014-02-07 14:42:56 +04:00
pkv
50ba108c2a 0024597: Missing internal vertex in the result of General Fuse Operation
Changes:
class BOPDS_DS
   - method:
void BOPDS_DS::Init()
   - method:
void BOPDS_DS::FaceInfoIn
  (const Standard_Integer theF,
   BOPDS_IndexedMapOfPaveBlock& theMPB,
   BOPCol_MapOfInteger& theMI)
Add the information about internal vertices on faces to the Data Structure

Test case for issue CR24597
2014-02-07 11:15:30 +04:00
pkv
4abae870a8 0023884: Boolean Fuse between two faces fails
fix for the bug v1
fix for the bug v1.1
Test case for issue CR23884
2014-02-07 11:15:28 +04:00
kgv
dda67c1ca2 0024202: Support class methods as callbacks for Draw Harness commands 2014-02-07 11:15:26 +04:00
ama
eddb9c7c00 0024591: Modification of tests in group "sewing"
Proper use of "freebounds" command in sewing testgrid: pload XSDRAW, reference data for checking free edges were added.
2014-02-07 11:15:25 +04:00
nbv
00302ba4e7 0024472: Wrong section curves
1. Checking, if intersection curve is collapsed, is added. (file GeomInt_LineConstructor.cxx)
2. Earlier, intersection line was considered as valid if only mid-point of every interval of this line is into two intersected surfaces (with given tolerance). That's no good because after inserting of new points, old points, which is considered as valid only because they are into beginning or into end of interval (therefore, they was not checked), moved to mid of interval and became invalid. Therefore, checking for first and last points was added. (file GeomInt_LineConstructor.cxx)
3. Intersection line became valid (see bug description) after adding of new additional points into it (file IntPatch_PrmPrmIntersection.cxx). Methods for finding and adding of new points were added. (file IntWalk_PWalking_1.gxx)
Some test cases were changed.
Test cases for issue CR24472
2014-02-07 11:15:22 +04:00
emv
ec0cdc0e65 0024208: Optimization of the edge-edge and edge-face intersection algorithms
New Edge/Edge intersection algorithm (based on the intersection between edges bounding boxes).
Small correction.
2014-02-07 11:15:21 +04:00
kgv
5322131bd1 0024590: Crash when processing OpenGl_BndBoxPrs objects
Eliminate TelType enumeration
Cosmetics, warnings
2014-02-06 11:02:53 +04:00
abv
f1a5afa25c 0024588: Fix some ICC warning fixes
Some of ICC warning fixes reported in 0024574 are fixed
Remove redundant ifdef
2014-02-06 10:59:05 +04:00
abv
124021462e 0024587: Separate TCL samples for ray tracing and creation of bottle
New sample created for ray tracing in DRAW: samples/tcl/raytrace.tcl, rendering OCCT bottle with glass on a rectangular table, with shadows and reflections (if OpenCL is available). Sample bottle.tcl retains only modeling part.
2014-02-06 10:56:16 +04:00
bugmaster
8b1ad7e012 Modified test case (increase cpulimit in Debug mode) 2014-01-31 12:56:09 +04:00
bugmaster
ee7b5544a9 Adjusting of testing case for current state of OCCT 2014-01-31 12:53:56 +04:00
szv
3c946c3825 0024523: Colors and layers are lost during loopback test (read-write-read)
Command XGetShapeColor corrected to return generic color
2014-01-31 12:48:31 +04:00
jgv
8a6db25a62 0024573: Wrong result of 2d-offset algorithm on customer's shape
Test cases for issue CR24573
2014-01-30 16:08:20 +04:00
apn
e226a50679 0024024: Slow import of specific STEP data
Added test case bugs/step/bug24024
2014-01-30 14:27:23 +04:00
kgv
6788f42398 0024555: Visualization - the same text is rendered with shift at second time
Font_FTFont::loadGlyph() - use the same flags as RenderGlyph(), FT_LOAD_NO_HINTING has been missed.

Test cases for issue CR24555
2014-01-30 14:20:31 +04:00
ibs
a5deedd07b 0024580: CMake doesn't unset becoming unused variables when 3rdparty's usage is switched off
unset becoming unused variables when freeimage, opencl, tbb and gl2ps are switched off
2014-01-30 14:07:04 +04:00
apn
d77256d181 0002793: BinOcaf: low performance saving documents with large attributes
Testing case bugs/caf/bug2793 was created.
2014-01-30 14:01:20 +04:00
pkv
682c9d0682 0024157: Parallelization of assembly part of BO
I. New features:
I.1 class BOPAlgo_ShellSplitter
The new class BOPAlgo_ShellSplitter has been added.
Purpose:  The class provides the splitting of the set of connected faces
	on separate loops

II. Changes:
II.1. class BOPAlgo_BuilderSolid
- method:
void BOPAlgo_BuilderSolid::PerformLoops()
the changes that provide parallel run the ShellSplitter algorithm have been done.

- method:
void BOPAlgo_BuilderSolid::PerformAreas()
the classification the grows and holes has been done using
the algorithm of unbalanced binary tree of overlapped bounding boxes
2014-01-30 13:58:37 +04:00
apl
51f8f60c7a 0024564: Select3D_SensitiveFace gives inaccurate picking depth for AIS_Plane (interior selection)
1) Used more accurate Select3D_SensitiveTriangulation instead of Select3D_SensitiveFace for rectangular sensitives in AIS_Plane::ComputeSelection, AIS_Dimension::ComputeSelection
2) Test case for CR24564
2014-01-30 13:39:14 +04:00
jgv
be7c077ac5 0024481: Test "Perform Infinite Point" provides wrong result for a solid
Test cases for issue CR24481
2014-01-30 13:38:07 +04:00
apl
f38896916f 0024569: AIS_InteractiveContext::Update(...) does not updates selection when changing AIS_Plane
1) Allow AIS_InteractiveContext::Update to check, re-project and recompute selection structures even if presentations are not "to be updated".
2) Test case bugs vis bug24569.

Small correction of test case for issue CR24569
2014-01-30 13:04:26 +04:00
nbv
a86d3ec04b 0024203: Command "sameparameter" in DRAW on attached edge set tolerance equal to 116.
Main problem:
Algorithm of locale extrema, which is called by "sameparameter" command, cannot find extrema because extremal point is far from initial point. Therefore, reparametrization of edge's curve (for same-parameter) cannot be made properly.

Solve:
Using of global extrema (see Approx_SameParameter.cxx).

As the given edge contains two 2d-curves and the second from them is problem, for select needed curve, an interface of "mk2dcurve" DRAW-command is changed. Now there can be used an index of curve (by default, index = 1, as earlier), see help for more detail information.

Test "heal advanced Z3":
Now checkshape finds only two invalid subshapes. Earlier, it found four subshapes. I think it is not regression. Therefore, test case was changed.

Tolerance reducing.

test
2014-01-30 13:01:08 +04:00
Roman Lygin
091232bae7 0023855: Old BOPs fail on Win7 64bit when using TBB
Minor code refactoring (readability)

Test case for issue CR23855
2014-01-30 12:59:32 +04:00
dbp
265d4508bd 0024503: TKOpenGl - Porting ray-tracing component on BVH package
Updated test case v3d/raytrace/bug24130. The new version checks correctness of shadows.
2014-01-30 12:55:06 +04:00
mkv
05d7de534a Draw command and test case for testing issue CR24533 2014-01-24 14:44:33 +04:00
bugmaster
82e10785dd Deleted TODO in unstable test case in Debug mode. 2014-01-24 13:57:48 +04:00
duv
b5ac8292b0 0024001: Stereographic rendering support
Deleted TODOs which were used when branch was built without OpenCL.
Modified test case bugs/vis/bug23747_2 (changed textured shape)
2014-01-23 14:46:06 +04:00
dln
1190746b3c 0024552: Convertation of the generic classes to the non-generic (BndLib).
Package "BndLib":
Functionality of the files "BndLib_Compute.gxx", "BndLib_Compute2d.cxx" and "BndLib_Compute3d.cxx" (methods Compute(...) for 2d and 3d cases) moved to BndLib.cxx (to the template method Compute(...)). For that had to edit work with points and coordinates a little i.e. method Compute(...) was updated and some methods where Compute(..) is called in "BndLib.cxx".
2014-01-23 13:51:34 +04:00
Roman Lygin
4d9421a970 0024533: Use 0 to check null handle instead of UndefinedHandleAccess
Handle classes now use 0 as invalid value for pointer instead of custom (and platform-dependent) value like 0xfefd0000.
Compiler macros UndefinedHandleAddress and _OCC64 are eliminated.
2014-01-23 13:38:45 +04:00
gka
545ef510a7 0024517: Crash at StepToTopoDS_TranslateEdge::Init()
Fixed crash at StepToTopoDS_TranslateEdge::Init() for case when curve is absent)

Corrected error message for case of absence geom curve in edge curve
2014-01-23 13:36:55 +04:00
dln
3804f298a1 0024545: Convertation of the generic classes to the non-generic (XmlObjMgt).
In the package "XmlObjMgt" class "XmlObjMgt_Array1" was converted to the non-generic.
And some changes were made in "XmlNaming" package for correct compilation of the application.
2014-01-23 11:41:39 +04:00
kgv
cb78155f10 0024453: TKViewerTest - extend information provided by vstate command 2014-01-23 11:39:17 +04:00
abv
73ccc151fd 0024536: GCC compiler warning on breakage of pointer aliasing rules in BRepFill_Evolved.cxx
Avoid storing result of call to TopoDS::Edge() as reference
2014-01-23 11:37:32 +04:00
dbp
861a7b03e1 0024479: Ray Tracing mode does not work in Qt IE sample
Implementation of  Ray Tracing mode in standard Qt sample
Fix compile warnings in Qt samples.
Fix tabs in Common-string.ts.
Update Code style.

0024415: Update QT samples
Code which was based on QT3 was removed. Some bugs and warnings has been also fixed.
Porting from QT4 to QT5 sample files.
2014-01-22 19:09:00 +04:00
mkv
c5d477170e Update of testing case due to changes in issue 24370 2014-01-21 11:16:17 +04:00
bugmaster
200ed75578 Correction for Fedora 18 64 bit issue 24473 2014-01-20 14:45:40 +04:00
bugmaster
9278cd60ac Correction of test cases for 24474 issue 2014-01-20 14:45:39 +04:00
dbp
3c4e78f24f 0024473: TKMath, BVH - introduce template-based package for Bounding volume hierarchy structures and tools 2014-01-20 14:45:38 +04:00
dbp
68333c8f16 0024320: TKOpenGl, Ray Tracing - OpenGL resources created for OpenCL interconnection should be managed in common way 2014-01-20 14:45:36 +04:00
kgv
3b1817a9e2 0024521: Visualization - automatic back face culling is not turned on for Solids packed into compound
StdPrs_ToolShadedShape::IsClosed():
- return true if shape is closed Solid (NOT just free closed Shell)
- accept compound of closed Solids as well
- ignore Solids with incomplete triangulation

TKOpenGl, automatically disable back face culling when:
- clipping/capping planes are in effect
- for translucent objects

Update bug23227 test case (now back faces are clipped).

OpenGl_Workspace::AspectFace() - disable culling in case of hatched style
2014-01-20 14:45:35 +04:00
abv
fd03ee4b3b 0024252: GCC warnings on breakage of strict-aliasing rules
Fixed type casts in NCollection maps
Avoid invalid type cast in handling of LDOM text object
Use correct pointer type in callback function of Graphic3d_CGraduatedTrihedron class
Format of printf() simplified in IntPatch_Point.cxx
2014-01-20 14:45:34 +04:00
ysn
504a896866 0024526: Guide on Automatic Test System is obsolete
Update and revision of Testing System Guide
2014-01-20 14:45:32 +04:00
nbv
191478a581 0024427: Wrong section curves
Incorrect curve is got after Decompose method applying. This method's using should be restrict.
Decomposition is required if intersection curve contains some parts, where U-parameter on quadric surface changes too sharply.

Decompose method is called for Cone and Sphere only (it does not require for Cylinder).

Comments are changed by jgv.

Test case for issue CR24427

Added test case bugs/moddata_3/bug24427_2

Compiler warning is liquidated.
Test is corrected.
2014-01-20 14:45:31 +04:00
aba
e92240458e 0024388: Option to enable visualization of hidden lines in DRAW
Added additional snapshot dumping to /tests/bugs/vis/bug24388_2. Corrected bug24388_1. Corrected vhlr command.
2014-01-20 14:45:30 +04:00
jgv
561ea68e96 0024532: BRepOffsetAPI_MakePipeShell raises an exception in a case with auxiliary guide
Test case for issue CR24532
2014-01-20 14:45:29 +04:00
szv
513d3443c7 0024458: Add commands for basic shape transformations
Added commands for basic transformations
2014-01-20 14:45:27 +04:00
gka
e3096decb6 0024370: [Regression] 6.7.0beta ShapeFix_EdgeProjAux breaks conventions on using IsDone flag.
Projection of 3d points corresponding to range of edge on 2d curve considered as successful for  all cases to except for cases when projection is not made.

Initialization initial values of flags
Modification initial values of flags setting status Done for first and last parameters

Adding new draw-command for issue CR24370

Test case for issue CR24370
2014-01-16 21:05:27 +04:00
abk
bb0e6b9bcb 0024474: GCPnts_AbscissaPoint calculates invalid point
DRAW command discrCurve was created to test GCPnts_UniformAbscissa by count of discretization point.
Two bugs in GCPnts_AbscissaPoint were fixed.
DRAW tests for the bug were created.
2014-01-16 21:05:26 +04:00
ibs
a3ef6605e0 0024485: Draw Harness - create subfolder in temporary directory for temporary test results
for each test execution a specific directory is created in a temp directory.
the format of the created directory is next: group-gridname-casename_<data>_<time with secs>

indentations in changes were realigned

Output of warning messages on use of temporary directory disabled
2014-01-16 21:05:25 +04:00
emv
18d25b93a6 0024505: Wrong section curves between Cone and Cylinder with collinear axes.
The intersection between Cone and one of the following surfaces: Cylinder, Sphere, Cone and Torus
is treated as analytical when the axes of the surfaces are collinear.

Test case for issue CR24505
2014-01-16 21:05:24 +04:00
jgv
c8ea5b8e3f 0024204: The algorithm BRepOffsetAPI_MakePipeShell produces resulting shape with unwarrantably big tolerance
Added test case bugs/modalg_5/bug24204

Modified following test cases:
bugs modalg_3 bug605 - case with bad input data, command "settolerance w1 1.e-7" was added;
bugs modalg_4 bug629 - wrong case, now the algorithm can not build pipes on such profiles, test case was removed;
bugs modalg_4 bug13595_1, bug13595_1 - number of subshapes was has changed;
bugs modalg_5 bug23706_2 - square of resulting face was changed;
bugs modalg_5 bug23870_1, bug23870_2, bug23870_3, bug23870_4, bug23870_5 - the number of subshapes was changed.
2014-01-16 12:20:52 +04:00
omy
e89e2d67ba 0024088: Unsafe window handle management in Draw using GetWindowLong
Replaced Get-/SetWindowLong with Get-/SetWindowLongPtr in files of TKDraw.

Reverted the unrelated changes
2014-01-16 12:18:14 +04:00
pkv
db8e4b9aa6 0024157: Parallelization of assembly part of BO
Patch 06

I.1. class Bnd_Box2d
- method:
inline Standard_Real Bnd_Box2d::SquareExtent() const
has been added.
Purpose : The method returns the squared diagonal of the bounding box.

I.3. class BOPCol_BoxBndTree
has been added.
Purpose : The class is the instantiation of the algorithm of unbalanced binary tree
of overlapped bounding boxes 3D.

I.4. class BOPCol_Box2DBndTree
has been added.
Purpose : The class is the instantiation of the algorithm of unbalanced binary tree
of overlapped bounding boxes 2D.

I.5. class BOPAlgo_Algo
- method:
void BOPAlgo_Algo::SetRunParallel(const Standard_Boolean theFlag)
has been added.
Purpose: Set the flag of parallel processing
     if <theFlag> is true  the parallel processing is switched on
     if <theFlag> is false the parallel processing is switched off

- method:
Standard_Boolean BOPAlgo_Algo::RunParallel()const
has been added
Purpose: Returns the flag of parallel processing

II.1. class BOPAlgo_Builder
- method:
void BOPAlgo_Builder::SetRunParallel(const Standard_Boolean theFlag)
has been removed due to I.5.

- method:
Standard_Boolean BOPAlgo_Builder::RunParallel()const
has been removed due to I.5

II.2. class BOPDS_BoxBndTree
has been removed due to I.3

II.3. classes
BOPDS_Iterator,
BOPDS_IteratorSI,
BOPDS_SubIterator
BOPAlgo_PaveFiller,
BOPAlgo_Builder
the calls to BOPDS_BoxBndTree have been changed to
the calls to BOPCol_BoxBndTree
due to I.3

II.4. class BOPAlgo_BuilderFace
- method:
void BOPAlgo_BuilderFace::PerformLoops()
the changes that provide parallel run the  WireSplitter algorithm have been done.

- method:
void BOPAlgo_BuilderFace::PerformAreas()
the classification the grows and holes has been done using
the algorithm of unbalanced binary tree of overlapped bounding boxes

II.5. class BOPAlgo_WireSplitter
- method:
void BOPAlgo_WireSplitter::SplitBlock(const TopoDS_Face& myFace,
			          BOPTools_ConnexityBlock& aCB)
the method is transferred to the static, the signature of the method have been changed

- method:
void BOPAlgo_WireSplitter::MakeWires()
the changes to provide parallel run the SplitBlock algorithm have been done
2014-01-16 12:04:55 +04:00
kgv
15cea4ef7a 0024438: Message_Algorithm - allow customized status descriptions 2014-01-16 11:56:35 +04:00
kgv
7e7c2f0b6f 0024497: TKOpenGl, OpenGl_Context - Add getter for window field 2014-01-09 12:27:29 +04:00
omy
b3a7aa39a1 0024209: Cppcheck errors "unusedScopedObject"
Fixed bug with temporary objects.
2014-01-09 12:24:10 +04:00
Denis Barbier
96a95605cd 0024510: Remove unused local variables
When warnings are enabled, compilers report lots of occurrences
of unused local variables, which makes it harder to find other
meaningful warnings.
This commit does not fix all unused local variables.

Fix new type conversion warning

Code cleaned to avoid MSVC compiler warnings on unused function arguments.
Several useless pieces of code are removed.
Changes in IntTools_EdgeFace.cxx, Blend_Walking_1.gxx, Bnd_BoundSortBox.cxx, ProjLib_ProjectedCurve.cxx are reverted (separated to specific issue for more in-depth analysis).
2014-01-09 12:21:51 +04:00
Denis Barbier
b467a87036 0024511: Remove obsolete Image_PixelAddress.cxx
Image_PixelAddress.cxx had been removed from src/Image/FILES in CR23486 (commit 2361d7e), but the file had not been deleted.

Correction of inconsistent file and units lists (units DebugTools and OpenCL are removed from UDLIST; files EXTERNLIB and SCAN.tcl added to FILES list in Cocoa and DrawResources units)
2014-01-09 12:17:06 +04:00
Denis Barbier
5640d65355 0024512: clang++ compiler complains about extra semicolon
Clang++ compiler emits warnings like these ones when parsing superfluous semicolons:
  .../src/OSD/OSD_MAllocHook.cxx:49:2: warning: extra ';' outside of a function is a C++11 extension [-Wc++11-extra-semi]
  .../src/ProjLib/ProjLib_ComputeApproxOnPolarSurface.cxx:317:30: warning: extra ';' after member function definition [-Wextra-semi]
2014-01-09 12:07:31 +04:00
bugmaster
6aca4d3977 0024516: Copyright information has been corrupted within some headers
Update incorrectly modified header files
2014-01-09 12:05:23 +04:00
emv
7eed5d29a9 0024470: Wrong result done by General Fuse algorithm.
Modifications:
1. The validity of the intersection point between edge and face is checked with sum of the tolerance values of the edge and face.
2. The intersection between toroidal surface and one of the following surfaces: Plane, Cylinder, Sphere, Cone or Torus
   is treated as analytical in the following cases:
   1) Torus and Plane: a. Axes of the surfaces are parallel;
                       b. Axes of the surfaces are perpendicular and location of the torus is lying on the plane;
   2) Torus and Sphere: The location of the sphere is lying on the line made from toruses axis;
   3) Torus and Cone, Cylinder or Torus: The axis of the surfaces are collinear.
   In all cases the intersection line(s) is(are) circle(s).

Added test cases bugs/modalg_5/bug24470

The intersection between torus with minor radius more than (or equal to) the major radius and any other surface is considered as parametric.
2014-01-09 12:01:48 +04:00
abv
547702a15d 0024489: Avoid type casts in call to Standard::Free()
Method Standard::Free() is converted to template, so that pointer is nullified using its proper type.
Unnecessary type cases in calls to Standard::Free(), Standard::Reallocate(), and NCollection_BaseAllocator::Free() eliminated throughout OCCT code.
2014-01-09 11:58:31 +04:00
emv
b24ac89262 0024491: Partition algorithm history bug (faces).
Modifications in history:
1. All splits of the shape are returned as Modified from that shape.
2. For SECTION operation section edges are returned as Generated from the face.
2014-01-09 11:53:28 +04:00
emv
b7357c8b55 0024495: Crash during performeng boolean operation on attached shape for Windows VC2010 64 bit
Recursion in the method Path in BOPAlgo_WireSplitter has been replaced with cycle.
2013-12-26 18:29:57 +04:00
kgv
6a866b3268 0024483: Visualization - drop unused class StdSelect_BRepHilighter 2013-12-26 15:52:09 +04:00
pkv
9c06009aa5 0024463: BRepAlgo_Section::Build hangs
Added test case bugs/modalg_5/bug24463
2013-12-26 15:49:56 +04:00
pkv
ceaa5e27eb 0024492: The command bopargcheck produces wrong results for cases.
New features:
- class BOPDS_InterfVZ has been added.
Purpose: The class BOPDS_InterfVZ is is to store the information about
the interference of the type vertex/solid.

- class BOPDS_InterfEZ has been added.
Purpose: The class BOPDS_InterfEZ is is to store the information about
the interference of the type edge/solid.

- class BOPDS_InterfFZ has been added.
Purpose: The class BOPDS_InterfFZ is is to store the information about
the interference of the type face/solid.

- class BOPDS_InterfFZ has been added.
Purpose: The class BOPDS_InterfZZ is is to store the information about
the interference of the type solid/solid.

- class BOPDS_DS
-methods
inline BOPDS_VectorOfInterfVZ& BOPDS_DS::InterfVZ()
Purpose: Returns the collection of interferences Vertex/Solid

inline BOPDS_VectorOfInterfEZ& BOPDS_DS::InterfEZ()
Purpose: Returns the collection of interferences Edge/Solid

inline BOPDS_VectorOfInterfFZ& BOPDS_DS::InterfFZ()
Purpose: Returns the collection of interferences Face/Solid

inline BOPDS_VectorOfInterfZZ& BOPDS_DS::InterfZZ()
Purpose: Returns the collection of interferences Solid/Solid

inline Standard_Integer BOPDS_DS::NbInterfTypes()
Purpose: Returns the number of types of the interferences
have been added.

- class BOPDS_Tools
-method
inline Standard_Boolean BOPDS_Tools::IsInterfering
  (const TopAbs_ShapeEnum theT)
has been added.
Purpose: Returns true if the type <theT> can be participant of  an interference

- class BOPDS_ShapeInfo
-method
inline Standard_Boolean BOPDS_ShapeInfo::IsInterfering()const
has been added.
Purpose: Returns true if the object can be participant of  an interference

- class BOPDS_ShapeInfo
-methods
void BOPAlgo_CheckerSI::PerformVZ()
Purpose: Computes Vertex/Solid interferences

void BOPAlgo_CheckerSI::PerformEZ()
Purpose: Computes Edge/Solid interferences

void BOPAlgo_CheckerSI::PerformFZ()
Purpose: Computes Face/Solid interferences

void BOPAlgo_CheckerSI::PerformZZ()
Purpose: Computes Solid/Solid interferences
have been added

Changes:
- class BOPDS_DS
- method:
Standard_Boolean BOPDS_DS::HasInterfShapeSubShapes
  (const Standard_Integer theI1,
   const Standard_Integer theI2,
   const Standard_Boolean theFlag)const
has been modified.
Purpose:
  Returns true if the shape with index theI1 is interfered  with
    - at least one sub-shape of the shape with index theI2  (theFlag=true)
    --all sub-shapes of the shape with index theI2 (theFlag=false)

- class BOPDS_Tools
- method:
inline Standard_Integer BOPDS_Tools::TypeToInteger
 (const TopAbs_ShapeEnum aType1,
 const TopAbs_ShapeEnum aType2)
The method has been extended to treat */Solid interfertences.

- class BOPDS_Iterator
- constructors:
BOPDS_Iterator::BOPDS_Iterator();
BOPDS_Iterator::BOPDS_Iterator
  (const Handle(NCollection_BaseAllocator)& theAllocator);
- method:
void BOPDS_Iterator::Prepare();
The constant number of types of the interferences has been changed by
the call: BOPDS_DS::NbInterfTypes();

- class BOPDS_IteratorSI
- method:
void BOPDS_IteratorSI::UpdateByLevelOfCheck(const Standard_Integer theLevel)
The constant number of types of the interferences has been changed by
the call: BOPDS_DS::NbInterfTypes();

- method:
void BOPDS_IteratorSI::Intersect()
The method has been extended to treat */Solid interfertences.

- class BOPAlgo_CheckerSI
- constructor:
BOPAlgo_CheckerSI::BOPAlgo_CheckerSI()
The constant number of types of the interferences has been changed by
the call: BOPDS_DS::NbInterfTypes();

- method:
void BOPAlgo_CheckerSI::SetLevelOfCheck(const Standard_Integer theLevel)
The constant number of types of the interferences has been changed by
the call: BOPDS_DS::NbInterfTypes();

- methods:
void BOPAlgo_CheckerSI::Perform()
void BOPAlgo_CheckerSI::PostTreat()
The methods have been extended to treat */Solid interfertences.

- class BOPAlgo_ArgumentAnalyzer
- method:
void BOPAlgo_ArgumentAnalyzer::TestSelfInterferences()
The method has been extended to treat */Solid interfertences.

Added test case bugs/modalg_5/bug24492
2013-12-26 15:45:09 +04:00
kgv
859f26ae84 0024482: Documentation - provide descipriprion of CSF_ShadersDirectory variable in the Overview 2013-12-26 15:36:07 +04:00
skv
a24c75d908 0024484: sprops gives incorrect matrix of inertia and moments
Added test case bugs/modalg_5/bug24484
2013-12-26 15:31:24 +04:00
abv
12a45e038f 0024494: Value of OCC_VERSION_DEVELOPMENT is not accounted in generated overview documentation
Parser of OCCT version corrected to include development macro in complete version number.
2013-12-24 11:14:43 +04:00
jgv
c5a855f8b5 0024475: Regression on OCCT6.6.0 relative to OCCT6.5.3: wrong result of ThruSections algorithm on two customer's wires 2013-12-19 15:16:59 +04:00
omy
b5eb716691 0024456: Graphic3d_MaterialAspect - use static assert instead of runtime exception
Graphic3d_MaterialAspect::NumberOfMaterials() : Standard_ASSERT_RAISE instead of run-time check is now used.
Replaced with Standard_STATIC_ASSERT
2013-12-19 15:08:20 +04:00
pkv
30ecd5f8bf 0024157: Parallelization of assembly part of BO
New features
class BOPAlgo_BuilderSolid
-method:
void BOPAlgo_BuilderSolid::SetSolid(const TopoDS_Solid& theSolid) has been added.
Purpose: Sets the source solid <theSolid>

class BOPAlgo_BuilderSolid
-method:
const TopoDS_Solid& BOPAlgo_BuilderSolid::Solid()const
has been added.
Purpose: Returns the source solid

Auxiliary classes
BOPAlgo_BuilderSolidFunctor
BOPAlgo_BuilderSolidCnt
have been added.
Purpose: The classes provide the interface and implementation of the parallel computations.

class BOPTools_AlgoTools
-method:
Standard_Boolean  BOPTools_AlgoTools::IsOpenShell(const TopoDS_Shell& theShell) has been added.
Purpose: Returns true if the shell <theShell> is open

class BOPTools_AlgoTools
-method:
Standard_Boolean  BOPTools_AlgoTools::IsInvertedSolid(const TopoDS_Solid& theSolid) has been added.
Purpose: Returns true if the solid <theSolid> is inverted

class BOPDS_DS
-protected  method:
void BOPDS_DS::BuildBndBoxSolid(const Standard_Integer theIndex, Bnd_Box& theBoxS) has been added.
The method computes bouding box <theBoxS> for the solid with DS-index <theIndex>

Changes
class BOPDS_DS
- method:
void BOPDS_DS::Init()
The block to compute bouding box for the solids has been added.

class BOPAlgo_Builder
- method:
void BOPAlgo_Builder::FillIn3DParts
(BOPCol_DataMapOfShapeListOfShape& theInParts,
BOPCol_DataMapOfShapeShape& theDraftSolids,
const BOPCol_BaseAllocator& theAllocator)
The order of treatment of the unbalanced binary tree of overlapped bounding boxes has been changed

class BOPAlgo_Builder
- method:
 void BOPAlgo_Builder::BuildSplitSolids
(BOPCol_DataMapOfShapeListOfShape& theInParts,
BOPCol_DataMapOfShapeShape& theDraftSolids,
const BOPCol_BaseAllocator&  theAllocator)
The algorithm has been adapted to provide the parallel computations
2013-12-19 13:47:39 +04:00
bugmaster
5a07b8e1c4 Changing OCCT version to 6.7.1 and define OCC_VERSION_DEVELOPMENT to "dev" 2013-12-19 13:26:32 +04:00
18735 changed files with 399317 additions and 322223 deletions

4
.gitattributes vendored
View File

@@ -36,10 +36,14 @@
*.rle eol=lf
*.vrml eol=lf
*.md eol=lf
*.natvis eol=lf
FILES eol=lf
PACKAGES eol=lf
EXTERNLIB eol=lf
UDLIST eol=lf
tests/* eol=lf
tests/*/* eol=lf
tests/*/*/* eol=lf
*.bat eol=crlf
*.cmd eol=crlf
*.rc eol=crlf

3
.gitignore vendored
View File

@@ -34,6 +34,9 @@ Release
*.ncb
*.suo
*.sdf
*.opensdf
*.ipch
*.aps
# test results
/results*

View File

@@ -1,503 +1,352 @@
cmake_minimum_required ( VERSION 2.6)
cmake_minimum_required (VERSION 2.8.10 FATAL_ERROR)
set (CMAKE_SUPPRESS_REGENERATION TRUE)
# set build configurations list
if (NOT BUILD_CONFIGURATION)
set(BUILD_CONFIGURATION "Release" CACHE STRING "Build type of OCCT" FORCE)
set (BUILD_CONFIGURATION "Release" CACHE STRING "Build type of OCCT" FORCE)
SET_PROPERTY(CACHE BUILD_CONFIGURATION PROPERTY STRINGS Release Debug RelWithDebInfo)
endif()
set(CMAKE_CONFIGURATION_TYPES ${BUILD_CONFIGURATION} CACHE INTERNAL "" FORCE)
set (CMAKE_CONFIGURATION_TYPES ${BUILD_CONFIGURATION} CACHE INTERNAL "" FORCE)
project(OCCT)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set(BUILD_SHARED_LIBS ON)
IF("${BUILD_CONFIGURATION}" STREQUAL "${CMAKE_BUILD_TYPE}")
SET(CHANGES_ARE_NEEDED OFF)
ELSE()
SET(CHANGES_ARE_NEEDED ON)
ENDIF()
MATH(EXPR COMPILER_BITNESS "32 + 32*(${CMAKE_SIZEOF_VOID_P}/8)")
SET( CMAKE_BUILD_TYPE ${BUILD_CONFIGURATION} CACHE INTERNAL "Build type of OCCT" FORCE )
SET( INSTALL_DIR "" CACHE PATH "Directory that will contain install files of OCCT" )
SET( CMAKE_INSTALL_PREFIX "${INSTALL_DIR}" CACHE INTERNAL "" FORCE )
set (BUILD_TOOLKITS "" CACHE STRING "Toolkits are also included in OCCT")
separate_arguments(BUILD_TOOLKITS)
IF(MSVC)
SET(BUILD_Samples OFF CACHE BOOL "OCCT samples building")
ENDIF()
include(adm/cmake/CMakeModules.txt)
if (WIN32)
set(SCRIPT_EXT bat)
else()
set(SCRIPT_EXT sh)
# set type of OCCT libraries
if (NOT BUILD_LIBRARY_TYPE)
set (BUILD_LIBRARY_TYPE "Shared" CACHE STRING "The type of OCCT libraries" FORCE)
SET_PROPERTY(CACHE BUILD_LIBRARY_TYPE PROPERTY STRINGS Shared Static)
endif()
if ("${BUILD_LIBRARY_TYPE}" STREQUAL "Shared")
set (BUILD_SHARED_LIBS ON)
else()
unset (BUILD_SHARED_LIBS)
endif()
# the name of the project
project (OCCT)
# Solution folder property
set_property (GLOBAL PROPERTY USE_FOLDERS ON)
set (CMAKE_BUILD_TYPE ${BUILD_CONFIGURATION} CACHE INTERNAL "Build type of OCCT" FORCE )
# install dir of the built project
set (INSTALL_DIR "" CACHE PATH "Directory that will contain install files of OCCT" )
set (CMAKE_INSTALL_PREFIX "${INSTALL_DIR}" CACHE INTERNAL "" FORCE )
# whether install test bundle or not
set (INSTALL_TESTS OFF CACHE BOOL "Is tests copy to install directory")
set (BUILD_PATCH_DIR "" CACHE PATH "directory with OCCT patch")
# the list of being built toolkits
set (BUILD_TOOLKITS "" CACHE STRING "Toolkits are also included in OCCT")
separate_arguments (BUILD_TOOLKITS)
if (MSVC)
add_definitions(/fp:precise)
set (BUILD_MFC_SAMPLES OFF CACHE BOOL "OCCT samples building")
endif()
# set compiler short name and choose SSE2 option for appropriate MSVC compilers
if (DEFINED MSVC70)
SET(COMPILER vc7)
elseif (DEFINED MSVC80)
SET(COMPILER vc8)
if (${COMPILER_BITNESS} STREQUAL 32)
add_definitions(/arch:SSE2)
endif()
elseif (DEFINED MSVC90)
SET(COMPILER vc9)
if (${COMPILER_BITNESS} STREQUAL 32)
add_definitions(/arch:SSE2)
endif()
elseif (DEFINED MSVC10)
SET(COMPILER vc10)
if (${COMPILER_BITNESS} STREQUAL 32)
add_definitions(/arch:SSE2)
endif()
elseif (DEFINED MSVC11)
SET(COMPILER vc11)
else()
SET(COMPILER ${CMAKE_GENERATOR})
# whether use optional 3rdparty or not
if (APPLE)
set (USE_GLX OFF CACHE BOOL "Are X11 OpenGL used on OSX or not")
endif()
if (${COMPILER_BITNESS} STREQUAL 64)
add_definitions(-D_OCC64)
set (USE_FREEIMAGE OFF CACHE BOOL "Is freeimage used or not")
set (USE_VTK OFF CACHE BOOL "Is VTK used or not")
if (NOT DEFINED ANDROID)
set (USE_GL2PS OFF CACHE BOOL "Is gl2ps used or not")
set (USE_TBB OFF CACHE BOOL "Is tbb used or not")
set (USE_OPENCL OFF CACHE BOOL "Is OpenCL used or not")
endif()
add_definitions(-DCSFDB)
if(WIN32)
add_definitions(/DWNT -wd4996)
elseif(APPLE)
add_definitions(-fexceptions -fPIC -DOCC_CONVERT_SIGNALS -DHAVE_WOK_CONFIG_H -DHAVE_CONFIG_H)
else()
add_definitions(-fexceptions -fPIC -DOCC_CONVERT_SIGNALS -DHAVE_WOK_CONFIG_H -DHAVE_CONFIG_H -DLIN)
endif()
# enable structured exceptions for MSVC
string(REGEX MATCH "EHsc" ISFLAG "${CMAKE_CXX_FLAGS}")
IF(ISFLAG)
STRING(REGEX REPLACE "EHsc" "EHa" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
ELSEIF(WIN32)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -EHa")
ENDIF()
# enable parallel compilation on MSVC 9 and above
IF(WIN32)
IF(NOT DEFINED MSVC70 AND NOT DEFINED MSVC80)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -MP")
ENDIF()
ENDIF()
# increase compiler warnings level (-W4 for MSVC, -Wall for GCC)
IF(MSVC)
if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
# macro: include patched file if it exists
macro (OCCT_INCLUDE_CMAKE_FILE BEING_INCLUDED_FILE)
if (NOT "${BUILD_PATCH_DIR}" STREQUAL "" AND EXISTS "${BUILD_PATCH_DIR}/${BEING_INCLUDED_FILE}.cmake")
include(${BUILD_PATCH_DIR}/${BEING_INCLUDED_FILE}.cmake)
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
include(${BEING_INCLUDED_FILE}.cmake)
endif()
elseif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
endmacro()
# include occt macros
OCCT_INCLUDE_CMAKE_FILE ("adm/templates/occt_macros")
# BUILD_POSTFIX variable is used by all toolkit cmakelists.txt projects
OCCT_MAKE_BUILD_POSTFIX()
# include the patched or original list of modules
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_modules")
# include the list of being used toolkits. USED_TOOLKITS variable
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_toolkits")
# include the patched or original list of definitions and flags
OCCT_INCLUDE_CMAKE_FILE ("adm/templates/occt_defs_flags")
OCCT_INCLUDE_CMAKE_FILE ("adm/templates/3rdparty_macro")
set (3RDPARTY_DIR_LABEL "The directory containing required 3rdparty products")
if (NOT DEFINED 3RDPARTY_DIR)
set (3RDPARTY_DIR "" CACHE PATH ${3RDPARTY_DIR_LABEL})
endif()
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DNo_Exception")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DNo_Exception")
# search for 3rdparty dir
if ("${3RDPARTY_DIR}" STREQUAL "")
if (DEFINED ENV{3RDPARTY_DIR})
set (3RDPARTY_DIR "$ENV{3RDPARTY_DIR}" CACHE PATH ${3RDPARTY_DIR_LABEL} FORCE)
elseif (EXISTS "${CMAKE_SOURCE_DIR}/../")
# in version 6.7.0 and above, occt parent directory contains 3rdparties
get_filename_component (3RDPARTY_DIR "${CMAKE_SOURCE_DIR}/../" ABSOLUTE)
set (3RDPARTY_DIR "${3RDPARTY_DIR}" CACHE PATH ${3RDPARTY_DIR_LABEL} FORCE)
endif()
endif()
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEB")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DDEB")
# search for CSF_TclLibs variable in EXTERNLIB of each being used toolkit
OCCT_IS_PRODUCT_REQUIRED(CSF_TclLibs USE_TCL)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/out/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/out/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/out/bin)
if ("${USE_TCL}" STREQUAL ON)
message (STATUS "Info: tcl is used by OCCT")
OCCT_INCLUDE_CMAKE_FILE ("adm/templates/tcl")
else()
OCCT_CHECK_AND_UNSET_GROUP ("3RDPARTY_TCL")
OCCT_CHECK_AND_UNSET_GROUP ("3RDPARTY_TK")
endif()
# RESOURCES
install(DIRECTORY "${CMAKE_SOURCE_DIR}/src/DrawResources" DESTINATION "${INSTALL_DIR}/src" )
install(DIRECTORY "${CMAKE_SOURCE_DIR}/src/StdResource" DESTINATION "${INSTALL_DIR}/src" )
install(DIRECTORY "${CMAKE_SOURCE_DIR}/src/SHMessage" DESTINATION "${INSTALL_DIR}/src" )
install(DIRECTORY "${CMAKE_SOURCE_DIR}/src/Textures" DESTINATION "${INSTALL_DIR}/src" )
install(DIRECTORY "${CMAKE_SOURCE_DIR}/src/Shaders" DESTINATION "${INSTALL_DIR}/src" )
install(DIRECTORY "${CMAKE_SOURCE_DIR}/src/XSMessage" DESTINATION "${INSTALL_DIR}/src" )
install(DIRECTORY "${CMAKE_SOURCE_DIR}/src/XSTEPResource" DESTINATION "${INSTALL_DIR}/src" )
install(DIRECTORY "${CMAKE_SOURCE_DIR}/src/XmlOcafResource" DESTINATION "${INSTALL_DIR}/src" )
# search for CSF_FREETYPE variable in EXTERNLIB of each being used toolkit
OCCT_IS_PRODUCT_REQUIRED(CSF_FREETYPE USE_FREETYPE)
install(FILES "${CMAKE_SOURCE_DIR}/src/UnitsAPI/Lexi_Expr.dat" DESTINATION "${INSTALL_DIR}/src/UnitsAPI" )
install(FILES "${CMAKE_SOURCE_DIR}/src/UnitsAPI/Units.dat" DESTINATION "${INSTALL_DIR}/src/UnitsAPI" )
install(FILES "${CMAKE_SOURCE_DIR}/src/TObj/TObj.msg" DESTINATION "${INSTALL_DIR}/src/TObj" )
if ("${USE_FREETYPE}" STREQUAL ON)
message (STATUS "Info: freetype is used by OCCT")
OCCT_INCLUDE_CMAKE_FILE ("adm/templates/freetype")
else()
OCCT_CHECK_AND_UNSET_GROUP ("3RDPARTY_FREETYPE")
OCCT_CHECK_AND_UNSET ("3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2")
OCCT_CHECK_AND_UNSET ("3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build")
endif()
IF("${BUILD_CONFIGURATION}" STREQUAL "Release")
SET(BUILD_SUFFIX "")
ELSE()
SET(BUILD_SUFFIX "") # debug == release
ENDIF()
FUNCTION(SUBDIRECTORY_NAMES MAIN_DIRECTORY RESULT)
file(GLOB SUB_ITEMS "${MAIN_DIRECTORY}/*")
foreach(ITEM ${SUB_ITEMS})
if(IS_DIRECTORY "${ITEM}")
GET_FILENAME_COMPONENT(ITEM_NAME "${ITEM}" NAME)
LIST(APPEND LOCAL_RESULT "${ITEM_NAME}")
endif()
endforeach()
set (${RESULT} ${LOCAL_RESULT} PARENT_SCOPE)
ENDFUNCTION()
FUNCTION(FIND_PRODUCT_DIR ROOT_DIR PRODUCT_NAME RESULT)
string( TOLOWER "${PRODUCT_NAME}" lower_PRODUCT_NAME )
LIST(APPEND SEARCH_TEMPLATES "${lower_PRODUCT_NAME}.*${COMPILER}.*${COMPILER_BITNESS}")
LIST(APPEND SEARCH_TEMPLATES "${lower_PRODUCT_NAME}.*[0-9.]+.*${COMPILER}.*${COMPILER_BITNESS}")
LIST(APPEND SEARCH_TEMPLATES "${lower_PRODUCT_NAME}.*[0-9.]+.*${COMPILER_BITNESS}")
LIST(APPEND SEARCH_TEMPLATES "${lower_PRODUCT_NAME}.*[0-9.]+")
LIST(APPEND SEARCH_TEMPLATES "${lower_PRODUCT_NAME}")
SUBDIRECTORY_NAMES( "${ROOT_DIR}" SUBDIR_NAME_LIST)
FOREACH( SEARCH_TEMPLATE ${SEARCH_TEMPLATES})
IF(LOCAL_RESULT)
BREAK()
ENDIF()
FOREACH(SUBDIR_NAME ${SUBDIR_NAME_LIST})
string( TOLOWER "${SUBDIR_NAME}" lower_SUBDIR_NAME )
STRING(REGEX MATCH "${SEARCH_TEMPLATE}" DUMMY_VAR "${lower_SUBDIR_NAME}")
IF(DUMMY_VAR)
LIST(APPEND LOCAL_RESULT ${SUBDIR_NAME})
ENDIF()
ENDFOREACH()
ENDFOREACH()
IF(LOCAL_RESULT)
LIST(LENGTH "${LOCAL_RESULT}" LOC_LEN)
MATH(EXPR LAST_ELEMENT_INDEX "${LOC_LEN}-1")
LIST(GET LOCAL_RESULT ${LAST_ELEMENT_INDEX} DUMMY)
SET(${RESULT} ${DUMMY} PARENT_SCOPE)
ENDIF()
ENDFUNCTION()
IF(WIN32)
SET(DLL_SO "dll")
SET(DLL_SO_FOLDER "bin")
SET(DLL_SO_PREFIX "")
ELSEIF(APPLE)
SET(DLL_SO "dylib")
SET(DLL_SO_FOLDER "lib")
SET(DLL_SO_PREFIX "lib")
ELSE()
SET(DLL_SO "so")
SET(DLL_SO_FOLDER "lib")
SET(DLL_SO_PREFIX "lib")
ENDIF()
SET(3RDPARTY_DIR ${CMAKE_SOURCE_DIR} CACHE PATH "Directory contains required 3rdparty products")
SET(3RDPARTY_INCLUDE_DIRS "")
SET(3RDPARTY_NOT_INCLUDED)
IF(APPLE)
SET(USE_GLX OFF CACHE BOOL "whether use X11 OpenGL on OSX or not")
ENDIF()
SET(USE_GL2PS OFF CACHE BOOL "whether use gl2ps product or not")
SET(USE_FREEIMAGE OFF CACHE BOOL "whether use freeimage product or not")
SET(USE_TBB OFF CACHE BOOL "whether use tbb product or not")
SET(USE_OPENCL OFF CACHE BOOL "whether use OpenCL or not")
SET(INSTALL_TESTS OFF CACHE BOOL "Is tests copy to install directory")
MACRO(THIRDPARTY_PRODUCT PRODUCT_NAME HEADER_NAME LIBRARY_NAME)
IF(NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_DIR)
SET(3RDPARTY_${PRODUCT_NAME}_DIR "" CACHE PATH "Directory contains ${PRODUCT_NAME} product")
ENDIF()
IF(3RDPARTY_DIR AND ("${3RDPARTY_${PRODUCT_NAME}_DIR}" STREQUAL "" OR CHANGES_ARE_NEEDED))
FIND_PRODUCT_DIR("${3RDPARTY_DIR}" ${PRODUCT_NAME} ${PRODUCT_NAME}_DIR_NAME)
IF("${${PRODUCT_NAME}_DIR_NAME}" STREQUAL "")
MESSAGE(STATUS "${PRODUCT_NAME} DON'T FIND")
ELSE()
SET(3RDPARTY_${PRODUCT_NAME}_DIR "${3RDPARTY_DIR}/${${PRODUCT_NAME}_DIR_NAME}" CACHE PATH "Directory contains ${PRODUCT_NAME} product" FORCE)
ENDIF()
ENDIF()
SET(INSTALL_${PRODUCT_NAME} OFF CACHE BOOL "Is ${PRODUCT_NAME} lib copy to install directory")
IF(3RDPARTY_${PRODUCT_NAME}_DIR)
IF("${3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR}" STREQUAL "" OR CHANGES_ARE_NEEDED OR "${3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR}" STREQUAL "3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR-NOTFOUND")
SET(3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR "3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR-NOTFOUND" CACHE FILEPATH "Directory contains headers of the ${PRODUCT_NAME} product" FORCE)
FIND_PATH(3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR ${HEADER_NAME} PATHS "${3RDPARTY_${PRODUCT_NAME}_DIR}/include" NO_DEFAULT_PATH)
ENDIF()
IF("${3RDPARTY_${PRODUCT_NAME}_LIBRARY}" STREQUAL "" OR CHANGES_ARE_NEEDED OR "${3RDPARTY_${PRODUCT_NAME}_LIBRARY}" STREQUAL "3RDPARTY_${PRODUCT_NAME}_LIBRARY-NOTFOUND")
SET(3RDPARTY_${PRODUCT_NAME}_LIBRARY "3RDPARTY_${PRODUCT_NAME}_LIBRARY-NOTFOUND" CACHE FILEPATH "Path to library of the ${PRODUCT_NAME} product" FORCE)
FIND_LIBRARY(3RDPARTY_${PRODUCT_NAME}_LIBRARY ${LIBRARY_NAME} PATHS "${3RDPARTY_${PRODUCT_NAME}_DIR}/lib" NO_DEFAULT_PATH)
ENDIF()
IF("${3RDPARTY_${PRODUCT_NAME}_DLL}" STREQUAL "" OR CHANGES_ARE_NEEDED OR "${3RDPARTY_${PRODUCT_NAME}_DLL}" STREQUAL "3RDPARTY_${PRODUCT_NAME}_DLL-NOTFOUND")
SET(3RDPARTY_${PRODUCT_NAME}_DLL "3RDPARTY_${PRODUCT_NAME}_DLL-NOTFOUND" CACHE FILEPATH "Path to shared library of the ${PRODUCT_NAME} product" FORCE)
FIND_FILE(3RDPARTY_${PRODUCT_NAME}_DLL "${DLL_SO_PREFIX}${LIBRARY_NAME}.${DLL_SO}" PATHS "${3RDPARTY_${PRODUCT_NAME}_DIR}/${DLL_SO_FOLDER}" NO_DEFAULT_PATH)
ENDIF()
MARK_AS_ADVANCED(3RDPARTY_${PRODUCT_NAME}_DIR)
ELSE()
ENDIF()
# check default path (with additions) for header search
IF("${3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR}" STREQUAL "" OR "${3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR}" STREQUAL "3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR-NOTFOUND")
SET(3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR "3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR-NOTFOUND" CACHE FILEPATH "Directory contains headers of the ${PRODUCT_NAME} product" FORCE)
FIND_PATH(3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR ${HEADER_NAME} ${3RDPARTY_${PRODUCT_NAME}_ADDITIONAL_PATH_FOR_HEADER})
ENDIF()
# check default path (with additions) for library search
IF("${3RDPARTY_${PRODUCT_NAME}_LIBRARY}" STREQUAL "" OR "${3RDPARTY_${PRODUCT_NAME}_LIBRARY}" STREQUAL "3RDPARTY_${PRODUCT_NAME}_LIBRARY-NOTFOUND")
SET(3RDPARTY_${PRODUCT_NAME}_LIBRARY "3RDPARTY_${PRODUCT_NAME}_LIBRARY-NOTFOUND" CACHE FILEPATH "Directory contains library of the ${PRODUCT_NAME} product" FORCE)
FIND_LIBRARY(3RDPARTY_${PRODUCT_NAME}_LIBRARY ${LIBRARY_NAME} ${3RDPARTY_${PRODUCT_NAME}_ADDITIONAL_PATH_FOR_LIB})
ENDIF()
# check default path (with additions) for DLL search
IF("${3RDPARTY_${PRODUCT_NAME}_DLL}" STREQUAL "" OR "${3RDPARTY_${PRODUCT_NAME}_DLL}" STREQUAL "3RDPARTY_${PRODUCT_NAME}_DLL-NOTFOUND")
SET(3RDPARTY_${PRODUCT_NAME}_DLL "3RDPARTY_${PRODUCT_NAME}_DLL-NOTFOUND" CACHE FILEPATH "Directory contains shared library of the ${PRODUCT_NAME} product" FORCE)
FIND_FILE(3RDPARTY_${PRODUCT_NAME}_DLL "${DLL_SO_PREFIX}${LIBRARY_NAME}.${DLL_SO}" ${3RDPARTY_${PRODUCT_NAME}_ADDITIONAL_PATH_FOR_DLL})
ENDIF()
IF(3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR)
SET(3RDPARTY_INCLUDE_DIRS "${3RDPARTY_INCLUDE_DIRS};${3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR}")
ELSE()
LIST(APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR)
ENDIF()
IF(3RDPARTY_${PRODUCT_NAME}_LIBRARY)
GET_FILENAME_COMPONENT(3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR "${3RDPARTY_${PRODUCT_NAME}_LIBRARY}" PATH)
SET(3RDPARTY_LIBRARY_DIRS "${3RDPARTY_LIBRARY_DIRS};${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR}")
ELSE()
LIST(APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_${PRODUCT_NAME}_LIBRARY)
ENDIF()
IF(3RDPARTY_${PRODUCT_NAME}_DLL)
#
ELSE()
LIST(APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_${PRODUCT_NAME}_DLL)
ENDIF()
IF(INSTALL_${PRODUCT_NAME})
INSTALL(FILES "${3RDPARTY_${PRODUCT_NAME}_DLL}" DESTINATION "${INSTALL_DIR}/${DLL_SO_FOLDER}")
SET(3RDPARTY_${PRODUCT_NAME}_DLL_DIR "")
ELSE()
GET_FILENAME_COMPONENT(3RDPARTY_${PRODUCT_NAME}_DLL_DIR "${3RDPARTY_${PRODUCT_NAME}_DLL}" PATH)
ENDIF()
ENDMACRO()
# TCL
INCLUDE(adm/templates/tcl.cmake)
#install tcltk
IF(INSTALL_TCL)
SET(3RDPARTY_TCL_DLL_DIR "")
SET(3RDPARTY_TCL_LIB_DIR "")
GET_FILENAME_COMPONENT(3RDPARTY_TCL_LIB_DIR_INSIDE "${3RDPARTY_TCL_LIBRARY}" PATH)
GET_FILENAME_COMPONENT(3RDPARTY_TCL_DLL_DIR_INSIDE "${3RDPARTY_TCL_DLL}" PATH)
IF (IS_TCL_VERSION_FOUND)
SET (TCL_VERSION ${TCL_MAJOR_VERSION}${TCL_SEP}${TCL_MINOR_VERSION})
SET (TCL_FOLDER_VERSION ${TCL_MAJOR_VERSION}.${TCL_MINOR_VERSION})
ELSE()
SET (TCL_VERSION "")
#TODO SEARCH tclX.X & tkX.X subdirs
SET (TCL_FOLDER_VERSION "")
ENDIF()
INSTALL(FILES "${3RDPARTY_TCL_DLL_DIR_INSIDE}/${DLL_SO_PREFIX}tcl${TCL_VERSION}.${DLL_SO}" DESTINATION "${INSTALL_DIR}/${DLL_SO_FOLDER}")
INSTALL(FILES "${3RDPARTY_TCL_DLL_DIR_INSIDE}/${DLL_SO_PREFIX}tk${TCL_VERSION}.${DLL_SO}" DESTINATION "${INSTALL_DIR}/${DLL_SO_FOLDER}")
IF (IS_TCL_VERSION_FOUND)
INSTALL(DIRECTORY "${3RDPARTY_TCL_LIB_DIR_INSIDE}/tcl8" DESTINATION "${INSTALL_DIR}/lib")
INSTALL(DIRECTORY "${3RDPARTY_TCL_LIB_DIR_INSIDE}/tcl${TCL_FOLDER_VERSION}" DESTINATION "${INSTALL_DIR}/lib")
INSTALL(DIRECTORY "${3RDPARTY_TCL_LIB_DIR_INSIDE}/tk${TCL_FOLDER_VERSION}" DESTINATION "${INSTALL_DIR}/lib")
ELSE()
MESSAGE(STATUS "\nWarning: tclX.X and tkX.X subdirs won't be copyied during the installation process.")
MESSAGE(STATUS "Try seeking tcl within another folder by changing 3RDPARTY_TCL_DIR variable.")
ENDIF()
ELSE()
GET_FILENAME_COMPONENT(3RDPARTY_TCL_DLL_DIR "${3RDPARTY_TCL_DLL}" PATH)
GET_FILENAME_COMPONENT(3RDPARTY_TCL_LIB_DIR "${3RDPARTY_TCL_LIBRARY}" PATH)
ENDIF()
# VTK
if (USE_VTK)
add_definitions (-DHAVE_VTK)
OCCT_INCLUDE_CMAKE_FILE ("adm/templates/vtk")
endif()
# GLX
IF(USE_GLX)
ADD_DEFINITIONS(-DMACOSX_USE_GLX)
IF(NOT DEFINED 3RDPARTY_GLX_DIR)
SET(3RDPARTY_GLX_DIR "" CACHE PATH "Directory contains GLX product")
ENDIF()
IF(3RDPARTY_DIR AND ("${3RDPARTY_GLX_DIR}" STREQUAL "" OR CHANGES_ARE_NEEDED))
FIND_PRODUCT_DIR("${3RDPARTY_DIR}" GLX GLX_DIR_NAME)
IF("${GLX_DIR_NAME}" STREQUAL "")
MESSAGE(STATUS "GLX DON'T FIND")
ELSE()
SET(3RDPARTY_GLX_DIR "${3RDPARTY_DIR}/${GLX_DIR_NAME}" CACHE PATH "Directory contains GLX product" FORCE)
ENDIF()
ENDIF()
IF(3RDPARTY_GLX_DIR)
SET(3RDPARTY_GLX_INCLUDE_DIR "${3RDPARTY_GLX_DIR}/include" CACHE FILEPATH "Directory contains headers of the GLX product" FORCE)
SET(3RDPARTY_GLX_LIBRARY_DIR "${3RDPARTY_GLX_DIR}/lib" CACHE FILEPATH "Directory contains library of the GLX product" FORCE)
SET(3RDPARTY_INCLUDE_DIRS "${3RDPARTY_INCLUDE_DIRS};${3RDPARTY_GLX_INCLUDE_DIR}")
SET(3RDPARTY_LIBRARY_DIRS "${3RDPARTY_LIBRARY_DIRS};${3RDPARTY_GLX_LIBRARY_DIR}")
MARK_AS_ADVANCED(3RDPARTY_GLX_DIR)
ELSE()
LIST(APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_GLX_INCLUDE_DIR)
LIST(APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_GLX_LIBRARY_DIR)
ENDIF()
ENDIF()
# FREETYPE
THIRDPARTY_PRODUCT("FREETYPE" "ft2build.h" "freetype${BUILD_SUFFIX}")
IF("${3RDPARTY_FREETYPE_INCLUDE_DIR}" STREQUAL "" OR "${3RDPARTY_FREETYPE_INCLUDE_DIR}" STREQUAL "3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR-NOTFOUND")
ELSEIF(EXISTS "${3RDPARTY_FREETYPE_INCLUDE_DIR}/freetype2/")
SET(3RDPARTY_INCLUDE_DIRS "${3RDPARTY_INCLUDE_DIRS};${3RDPARTY_FREETYPE_INCLUDE_DIR}/freetype2")
ENDIF()
if (USE_GLX)
add_definitions (-DMACOSX_USE_GLX)
OCCT_INCLUDE_CMAKE_FILE ("adm/templates/glx")
endif()
# FREEIMAGE
IF(USE_FREEIMAGE)
ADD_DEFINITIONS(-DHAVE_FREEIMAGE)
THIRDPARTY_PRODUCT("FREEIMAGE" "FreeImage.h" "freeimage${BUILD_SUFFIX}")
IF(WIN32)
IF("${3RDPARTY_FREEIMAGE_DIR}" STREQUAL "")
ELSE()
SET (3RDPARTY_FREEIMAGEPLUS_DIR "${3RDPARTY_FREEIMAGE_DIR}")
ENDIF()
THIRDPARTY_PRODUCT("FREEIMAGEPLUS" "FreeImagePlus.h" "freeimageplus${BUILD_SUFFIX}")
ENDIF()
ENDIF()
if (USE_FREEIMAGE)
add_definitions (-DHAVE_FREEIMAGE)
OCCT_INCLUDE_CMAKE_FILE ("adm/templates/freeimage")
OCCT_INCLUDE_CMAKE_FILE ("adm/templates/freeimageplus")
else()
OCCT_CHECK_AND_UNSET_GROUP ("3RDPARTY_FREEIMAGE")
OCCT_CHECK_AND_UNSET_GROUP ("3RDPARTY_FREEIMAGEPLUS")
OCCT_CHECK_AND_UNSET ("INSTALL_FREEIMAGE")
OCCT_CHECK_AND_UNSET ("INSTALL_FREEIMAGEPLUS")
endif()
# GL2PS
IF(USE_GL2PS)
ADD_DEFINITIONS(-DHAVE_GL2PS)
THIRDPARTY_PRODUCT("GL2PS" "gl2ps.h" "gl2ps${BUILD_SUFFIX}")
ENDIF()
if (USE_GL2PS)
add_definitions (-DHAVE_GL2PS)
OCCT_INCLUDE_CMAKE_FILE ("adm/templates/gl2ps")
else()
OCCT_CHECK_AND_UNSET_GROUP ("3RDPARTY_GL2PS")
OCCT_CHECK_AND_UNSET ("INSTALL_GL2PS")
endif()
# OPENCL
IF(USE_OPENCL)
ADD_DEFINITIONS(-DHAVE_OPENCL)
SET (3RDPARTY_OPENCL_ADDITIONAL_PATH_FOR_HEADER $ENV{AMDAPPSDKROOT}/include
$ENV{INTELOCLSDKROOT}/include
$ENV{NVSDKCOMPUTE_ROOT}/OpenCL/common/inc
$ENV{ATISTREAMSDKROOT}/include)
IF(${COMPILER_BITNESS} STREQUAL 32)
SET (3RDPARTY_OPENCL_ADDITIONAL_PATH_FOR_LIB $ENV{AMDAPPSDKROOT}/lib/x86
$ENV{INTELOCLSDKROOT}/lib/x86
$ENV{NVSDKCOMPUTE_ROOT}/OpenCL/common/lib/Win32
$ENV{ATISTREAMSDKROOT}/lib/x86)
ELSEIF(${COMPILER_BITNESS} STREQUAL 64)
SET (3RDPARTY_OPENCL_ADDITIONAL_PATH_FOR_LIB $ENV{AMDAPPSDKROOT}/lib/x86_64
$ENV{INTELOCLSDKROOT}/lib/x64
$ENV{NVSDKCOMPUTE_ROOT}/OpenCL/common/lib/x64
$ENV{ATISTREAMSDKROOT}/lib/x86_64)
ENDIF()
THIRDPARTY_PRODUCT("OPENCL" "CL/cl.h" "OpenCL${BUILD_SUFFIX}")
# if CL/cl.h isn't found (and 3RDPARTY_OPENCL_INCLUDE_DIR isn't defined)
# then try to find OpenCL/cl.h (all other variable won't be changed)
THIRDPARTY_PRODUCT("OPENCL" "OpenCL/cl.h" "OpenCL${BUILD_SUFFIX}")
ENDIF()
if (USE_OPENCL)
add_definitions (-DHAVE_OPENCL)
OCCT_INCLUDE_CMAKE_FILE ("adm/templates/opencl")
else()
OCCT_CHECK_AND_UNSET_GROUP ("3RDPARTY_OPENCL")
OCCT_CHECK_AND_UNSET ("3RDPARTY_OPENCL_ADDITIONAL_PATH_FOR_HEADER")
OCCT_CHECK_AND_UNSET ("3RDPARTY_OPENCL_ADDITIONAL_PATH_FOR_LIB")
OCCT_CHECK_AND_UNSET ("INSTALL_OPENCL")
endif()
# TBB
IF (USE_TBB)
ADD_DEFINITIONS(-DHAVE_TBB)
if (USE_TBB)
add_definitions (-DHAVE_TBB)
OCCT_INCLUDE_CMAKE_FILE ("adm/templates/tbb")
else()
OCCT_CHECK_AND_UNSET_GROUP ("3RDPARTY_TBB")
OCCT_CHECK_AND_UNSET_GROUP ("3RDPARTY_TBBMALLOC")
OCCT_CHECK_AND_UNSET ("INSTALL_TBB")
endif()
INCLUDE(adm/templates/tbb.cmake)
string (REGEX REPLACE ";" " " 3RDPARTY_NOT_INCLUDED "${3RDPARTY_NOT_INCLUDED}")
IF(INSTALL_TBB)
INSTALL(FILES "${3RDPARTY_TBB_DLL}" "${3RDPARTY_TBB_MALLOC_DLL}" DESTINATION "${INSTALL_DIR}/${DLL_SO_FOLDER}")
# check all 3rdparty paths
if (3RDPARTY_NOT_INCLUDED)
message (FATAL_ERROR "NOT FOUND: ${3RDPARTY_NOT_INCLUDED}" )
endif()
SET(3RDPARTY_TBB_DLL_DIR "")
SET(3RDPARTY_TBB_MALLOC_DLL_DIR "")
ELSE()
GET_FILENAME_COMPONENT(3RDPARTY_TBB_DLL_DIR "${3RDPARTY_TBB_DLL}" PATH)
GET_FILENAME_COMPONENT(3RDPARTY_TBB_MALLOC_DLL_DIR "${3RDPARTY_TBB_MALLOC_DLL}" PATH)
ENDIF()
ENDIF()
if (3RDPARTY_INCLUDE_DIRS)
list (REMOVE_DUPLICATES 3RDPARTY_INCLUDE_DIRS)
string (REGEX REPLACE ";" "\n\t" 3RDPARTY_INCLUDE_DIRS_WITH_ENDS "${3RDPARTY_INCLUDE_DIRS}")
message (STATUS "The directories containing 3rdparty headers: ${3RDPARTY_INCLUDE_DIRS_WITH_ENDS}")
include_directories (${3RDPARTY_INCLUDE_DIRS})
endif()
string( REGEX REPLACE ";" " " 3RDPARTY_NOT_INCLUDED "${3RDPARTY_NOT_INCLUDED}")
if (3RDPARTY_LIBRARY_DIRS)
list (REMOVE_DUPLICATES 3RDPARTY_LIBRARY_DIRS)
string (REGEX REPLACE ";" "\n\t" 3RDPARTY_LIBRARY_DIRS_WITH_ENDS "${3RDPARTY_LIBRARY_DIRS}")
message (STATUS "The directories containing 3rdparty libraries: ${3RDPARTY_LIBRARY_DIRS_WITH_ENDS}")
link_directories (${3RDPARTY_LIBRARY_DIRS})
endif()
#CHECK ALL 3RDPARTY PATHS
IF(3RDPARTY_NOT_INCLUDED)
MESSAGE(FATAL_ERROR "NOT FOUND: ${3RDPARTY_NOT_INCLUDED}" )
ENDIF()
OCCT_MAKE_BUILD_POSTFIX()
list(REMOVE_DUPLICATES 3RDPARTY_INCLUDE_DIRS)
string( REGEX REPLACE ";" "\n\t" 3RDPARTY_INCLUDE_DIRS_WITH_ENDS "${3RDPARTY_INCLUDE_DIRS}")
MESSAGE(STATUS "3RDPARTY_INCLUDE_DIRS: ${3RDPARTY_INCLUDE_DIRS_WITH_ENDS}")
include_directories( ${3RDPARTY_INCLUDE_DIRS} )
# build directories
set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/out/lib${BUILD_POSTFIX})
set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/out/lib${BUILD_POSTFIX})
set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/out/bin${BUILD_POSTFIX})
list(REMOVE_DUPLICATES 3RDPARTY_LIBRARY_DIRS)
string( REGEX REPLACE ";" "\n\t" 3RDPARTY_LIBRARY_DIRS_WITH_ENDS "${3RDPARTY_LIBRARY_DIRS}")
MESSAGE(STATUS "3RDPARTY_LIBRARY_DIRS: ${3RDPARTY_LIBRARY_DIRS_WITH_ENDS}")
link_directories( ${3RDPARTY_LIBRARY_DIRS} )
IF("${INSTALL_DIR}" STREQUAL "")
MESSAGE(FATAL_ERROR "INSTALL_DIR is empty")
ELSE()
if ("${INSTALL_DIR}" STREQUAL "")
message (FATAL_ERROR "INSTALL_DIR variable is empty. It's required to define installation directory")
else()
# inc,data,tests DIRECTORY
install(DIRECTORY "${CMAKE_SOURCE_DIR}/inc" DESTINATION "${INSTALL_DIR}" )
install(DIRECTORY "${CMAKE_SOURCE_DIR}/data" DESTINATION "${INSTALL_DIR}" )
IF(INSTALL_TESTS)
install(DIRECTORY "${CMAKE_SOURCE_DIR}/tests" DESTINATION "${INSTALL_DIR}" )
ENDIF()
install (DIRECTORY "${CMAKE_SOURCE_DIR}/inc" DESTINATION "${INSTALL_DIR}")
install (DIRECTORY "${CMAKE_SOURCE_DIR}/data" DESTINATION "${INSTALL_DIR}")
install (DIRECTORY "${CMAKE_SOURCE_DIR}/samples/tcl" DESTINATION "${INSTALL_DIR}/samples")
if (INSTALL_TESTS)
install (DIRECTORY "${CMAKE_SOURCE_DIR}/tests" DESTINATION "${INSTALL_DIR}" )
endif()
# install patch inc, data, tests folder
if (NOT "${BUILD_PATCH_DIR}" STREQUAL "")
if (EXISTS "${BUILD_PATCH_DIR}/inc")
install (DIRECTORY "${BUILD_PATCH_DIR}/inc" DESTINATION "${INSTALL_DIR}" )
endif()
if (EXISTS "${BUILD_PATCH_DIR}/data")
install (DIRECTORY "${BUILD_PATCH_DIR}/data" DESTINATION "${INSTALL_DIR}" )
endif()
if (INSTALL_TESTS)
if (EXISTS "${BUILD_PATCH_DIR}/tests")
install (DIRECTORY "${BUILD_PATCH_DIR}/tests" DESTINATION "${INSTALL_DIR}" )
endif()
endif()
endif()
if (WIN32)
set (SCRIPT_EXT bat)
else()
set (SCRIPT_EXT sh)
endif()
# DRAW.BAT or DRAW.SH
install(FILES "${CMAKE_SOURCE_DIR}/adm/templates/draw.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_WRITE GROUP_EXECUTE
WORLD_READ WORLD_WRITE WORLD_EXECUTE)
IF (BUILD_Samples)
install(FILES "${CMAKE_SOURCE_DIR}/adm/templates/sample.bat" DESTINATION "${INSTALL_DIR}")
IF(NOT "${BUILD_PATCH_DIR}" STREQUAL "" AND EXISTS "${BUILD_PATCH_DIR}/adm/templates/draw.${SCRIPT_EXT}")
install(FILES "${BUILD_PATCH_DIR}/adm/templates/draw.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR}" 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/draw.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR}" PERMISSIONS
OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_WRITE WORLD_EXECUTE)
ENDIF()
configure_file("${CMAKE_SOURCE_DIR}/adm/templates/env.${SCRIPT_EXT}.in" env.${SCRIPT_EXT} @ONLY)
install(FILES "${OCCT_BINARY_DIR}/env.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR}" )
ENDIF()
# set compiler short name
OCCT_MAKE_COMPILER_SHORT_NAME()
include(adm/cmake/CMakeToolKitsDeps.txt)
OCCT_MAKE_COMPILER_BITNESS()
IF (BUILD_Samples)
SET (CMAKE_MFC_FLAG 2)
SET(SUB_CUSTOM "custom_${COMPILER}_${COMPILER_BITNESS}_${BUILD_POSTFIX}.${SCRIPT_EXT}")
if (WIN32)
SET (ADDITIONAL_CUSTOM_CONTENT "\nif exist \"%~dp0${SUB_CUSTOM}\" (\n call \"%~dp0${SUB_CUSTOM}\" %1 %2 %3 \n)")
else()
SET (ADDITIONAL_CUSTOM_CONTENT "\nif [ -e \"\${aScriptPath}/${SUB_CUSTOM}\" ]; then\n source \"\${aScriptPath}/${SUB_CUSTOM}\" \"\${COMPILER}\" \"\${WOKSTATION}\${ARCH}\" \"\${CASDEB}\" \nfi")
endif()
# change custom.bat/sh
if (EXISTS "${INSTALL_DIR}/custom.${SCRIPT_EXT}")
file (READ "${INSTALL_DIR}/custom.${SCRIPT_EXT}" CUSTOM_CONTENT)
set (CUSTOM_CONTENT "${CUSTOM_CONTENT} ${ADDITIONAL_CUSTOM_CONTENT}")
file (WRITE "${INSTALL_DIR}/custom.${SCRIPT_EXT}" "${CUSTOM_CONTENT}")
else()
OCCT_CONFIGURE_AND_INSTALL ("adm/templates/custom.${SCRIPT_EXT}.main" "custom.${SCRIPT_EXT}" "${INSTALL_DIR}")
endif()
# write current custom.bat/sh
OCCT_CONFIGURE_AND_INSTALL ("adm/templates/custom.${SCRIPT_EXT}.in" "${SUB_CUSTOM}" "${INSTALL_DIR}")
if (BUILD_MFC_SAMPLES)
OCCT_INSTALL_FILE_OR_DIR ("adm/templates/sample.bat" "${INSTALL_DIR}")
endif()
OCCT_CONFIGURE_AND_INSTALL ("adm/templates/env.${SCRIPT_EXT}.in" "env.${SCRIPT_EXT}" "${INSTALL_DIR}")
endif()
# RESOURCES
OCCT_INSTALL_FILE_OR_DIR ("src/DrawResources" "${INSTALL_DIR}/src")
OCCT_INSTALL_FILE_OR_DIR ("src/StdResource" "${INSTALL_DIR}/src")
OCCT_INSTALL_FILE_OR_DIR ("src/SHMessage" "${INSTALL_DIR}/src")
OCCT_INSTALL_FILE_OR_DIR ("src/Textures" "${INSTALL_DIR}/src")
OCCT_INSTALL_FILE_OR_DIR ("src/Shaders" "${INSTALL_DIR}/src")
OCCT_INSTALL_FILE_OR_DIR ("src/XSMessage" "${INSTALL_DIR}/src")
OCCT_INSTALL_FILE_OR_DIR ("src/XSTEPResource" "${INSTALL_DIR}/src")
OCCT_INSTALL_FILE_OR_DIR ("src/XmlOcafResource" "${INSTALL_DIR}/src")
OCCT_INSTALL_FILE_OR_DIR ("src/UnitsAPI/Lexi_Expr.dat" "${INSTALL_DIR}/src/UnitsAPI")
OCCT_INSTALL_FILE_OR_DIR ("src/UnitsAPI/Units.dat" "${INSTALL_DIR}/src/UnitsAPI")
OCCT_INSTALL_FILE_OR_DIR ("src/TObj/TObj.msg" "${INSTALL_DIR}/src/TObj")
#Toolkits uses variables: INSTALL_DIR, OS_WITH_BIT, COMPILER, BUILD_POSTFIX
OCCT_MAKE_OS_WITH_BITNESS()
# consider for patch existence
set (IS_PATCH_CURRENT "NO")
set (TK_ROOT_DIR ${CMAKE_SOURCE_DIR})
if (NOT "${BUILD_PATCH_DIR}" STREQUAL "")
set (IS_PATCH_CURRENT "YES")
set (TK_ROOT_DIR ${BUILD_PATCH_DIR})
endif()
# include patched toolkit projects or original ones
set (UNSUBDIRS "")
if (NOT "${BUILD_PATCH_DIR}" STREQUAL "" AND EXISTS "${BUILD_PATCH_DIR}/adm/cmake/occt_inc_toolkits.cmake")
set (TK_ROOT_DIR ${BUILD_PATCH_DIR})
include (${BUILD_PATCH_DIR}/adm/cmake/occt_inc_toolkits.cmake)
else()
set (IS_PATCH_CURRENT "NO")
set (TK_ROOT_DIR ${CMAKE_SOURCE_DIR})
include (adm/cmake/occt_inc_toolkits.cmake)
endif()
# include some required original occt_inc_toolkits
if (NOT "${UNSUBDIRS}" STREQUAL "")
set (IS_PATCH_CURRENT "NO")
# add required subdirs
foreach (UNSUBDIR ${UNSUBDIRS})
add_subdirectory (${CMAKE_SOURCE_DIR}/${UNSUBDIR})
endforeach()
endif()
# samples do not support patch usage
IF (BUILD_MFC_SAMPLES)
SET (OCCT_ROOT ${CMAKE_SOURCE_DIR})
SET (MFC_STANDARD_SAMPLES_DIR ${OCCT_ROOT}/samples/mfc/standard)
SET (COMMON_WINMAIN_FILE ${MFC_STANDARD_SAMPLES_DIR}/Common/Winmain.cpp)
subdirs(samples/mfc/standard/mfcsample)
subdirs(samples/mfc/standard/01_Geometry)
subdirs(samples/mfc/standard/02_Modeling)
subdirs(samples/mfc/standard/03_Viewer2d)
subdirs(samples/mfc/standard/04_Viewer3d)
subdirs(samples/mfc/standard/05_ImportExport)
subdirs(samples/mfc/standard/06_Ocaf)
subdirs(samples/mfc/standard/07_Triangulation)
subdirs(samples/mfc/standard/08_HLR)
subdirs(samples/mfc/standard/09_Animation)
subdirs(samples/mfc/standard/10_Convert)
add_subdirectory(samples/mfc/standard/mfcsample)
add_subdirectory(samples/mfc/standard/01_Geometry)
add_subdirectory(samples/mfc/standard/02_Modeling)
add_subdirectory(samples/mfc/standard/03_Viewer2d)
add_subdirectory(samples/mfc/standard/04_Viewer3d)
add_subdirectory(samples/mfc/standard/05_ImportExport)
add_subdirectory(samples/mfc/standard/06_Ocaf)
add_subdirectory(samples/mfc/standard/07_Triangulation)
add_subdirectory(samples/mfc/standard/08_HLR)
add_subdirectory(samples/mfc/standard/09_Animation)
add_subdirectory(samples/mfc/standard/10_Convert)
ENDIF()

View File

@@ -1,22 +1,18 @@
n IncludeLibrary
n NCollection
p BSplCLib
p BSplSLib
p Bnd
p BVH
p CSLib
p Convert
p Dico
p Dynamic
p ElCLib
p ElSLib
p Expr
p ExprIntrp
p FSD
p GeomAbs
p GraphDS
p GraphTools
p MMgt
p Materials
p Message
p OSD
p PLib
@@ -39,7 +35,6 @@ p UnitsAPI
p gp
p math
r OS
t TKAdvTools
t TKMath
t TKernel
p Adaptor2d
@@ -110,7 +105,7 @@ p BRepGProp
p BRepIntCurveSurface
p BRepLib
p BRepMAT2d
p BRepMesh
n BRepMesh
p BRepOffset
p BRepOffsetAPI
p BRepPrim
@@ -132,9 +127,7 @@ p FairCurve
p FilletSurf
p GccAna
p GccEnt
p GccGeo
p GccInt
p GccIter
p Geom2dAPI
p Geom2dGcc
p Geom2dHatch
@@ -155,7 +148,6 @@ p IntCurvesFace
p IntImp
p IntImpParGen
p IntPatch
p IntPoly
p IntPolyh
p IntRes2d
p IntStart
@@ -171,7 +163,6 @@ p MAT
p MAT2d
p NLPlate
p Plate
p Primitives
p ShapeAlgo
p ShapeAnalysis
p ShapeBuild
@@ -191,7 +182,7 @@ p TopOpeBRepBuild
p TopOpeBRepDS
p TopOpeBRepTool
p TopTrans
p XBRepMesh
n XBRepMesh
t TKBO
t TKBool
t TKFeat
@@ -273,8 +264,6 @@ p ObjMgt
p PBRep
p PCDM
p PCDMShape
p PColPGeom
p PColPGeom2d
p PColStd
p PColgp
p PCollection
@@ -474,13 +463,11 @@ t TKViewerTest
t TKXDEDRAW
t TKXSDRAW
x DRAWEXE
p DebugTools
p QADraw
p QANCollection
p QANewBRepNaming
p QANewDBRepNaming
p QANewModTopOpe
r QAResources
t TKQADraw
p QADNaming
p QABugs
@@ -488,4 +475,10 @@ p Font
p BOPAlgo
p BOPDS
p BOPCol
p BOPInt
p IVtk
p IVtkOCC
p IVtkVTK
p IVtkTools
t TKIVtk
p IVtkDraw
t TKIVtkDraw

825
adm/gendoc.tcl Normal file
View File

@@ -0,0 +1,825 @@
# =======================================================================
# Created on: 2014-03-21
# Created by: OMY
# Copyright (c) 1996-1999 Matra Datavision
# Copyright (c) 1999-2014 OPEN CASCADE SAS
#
# This file is part of Open CASCADE Technology software library.
#
# This library is free software; you can redistribute it and/or modify it under
# the terms of the GNU Lesser General Public License version 2.1 as published
# by the Free Software Foundation, with special exception defined in the file
# OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
# distribution for complete text of the license and disclaimer of any warranty.
#
# Alternatively, this file may be used under the terms of Open CASCADE
# commercial license or contractual agreement.
#
# Brief: This script compiles OCCT documents from *.md files to HTML pages
# =======================================================================
# ======================================
# Common functions
# ======================================
# Prints help message
proc OCCDoc_PrintHelpMessage {} {
puts "\nUsage: gendoc \[-h\] {-refman|-overview} \[-html|-pdf|-chm\] \[-m=<list of modules>|-ug=<list of docs>\] \[-v\] \[-s=<search_mode>\] \[-mathjax=<path>\]"
puts ""
puts "Options are:"
puts ""
puts "choice of documentation to be generated:"
puts " -overview : To generate Overview and User Guides"
puts " (cannot be used with -refman)"
puts " -refman : To generate class Reference Manual"
puts " (cannot be used with -overview)"
puts ""
puts "choice of output format:"
puts " -html : To generate HTML files"
puts " (default, cannot be used with -pdf or -chm)"
puts " -pdf : To generate PDF files"
puts " (cannot be used with -refman, -html, or -chm)"
puts " -chm : To generate CHM files"
puts " (cannot be used with -html or -pdf)"
puts ""
puts "additional options:"
puts " -m=<modules_list> : List of OCCT modules (separated with comma),"
puts " for generation of Reference Manual"
puts " -ug=<docs_list> : List of MarkDown documents (separated with comma),"
puts " to use for generation of Overview / User Guides"
puts " -mathjax=<path> : To use local or alternative copy of MathJax"
puts " -s=<search_mode> : Specifies the Search mode of HTML documents"
puts " Can be: none | local | server | external"
puts " -h : Prints this help message"
puts " -v : Enables more verbose output"
}
# A command for User Documentation compilation
proc gendoc {args} {
# Parameters
set DOC_TYPE "REFMAN"
set GEN_MODE "HTML_ONLY"
set DOCFILES {}
set MODULES {}
set DOCLABEL ""
set VERB_MODE "NO"
set SEARCH_MODE "none"
set MATHJAX_LOCATION "http://cdn.mathjax.org/mathjax/latest"
set mathjax_js_name "MathJax.js"
set DOCTYPE_COMBO_FLAG 0
set GENMODE_COMBO_FLAG 0
set GENERATE_PRODUCTS_REFMAN "NO"
global available_docfiles; # The full list of md files for HTML or CHM generation
global available_pdf; # The full list of md files for PDF generation
global tcl_platform
global args_names
global args_values
global env
# Load list of docfiles
if { [OCCDoc_LoadFilesList] != 0 } {
puts "Error: File FILES_HTML.txt or FILES_PDF.txt was not found on this computer.\nAborting..."
return -1
}
# Parse CL arguments
if {[OCCDoc_ParseArguments $args] == 1} {
return -1
}
# Print help message if no arguments provided
if {[llength $args_names] == 0} {
OCCDoc_PrintHelpMessage
return 0
}
foreach arg_n $args_names {
if {$arg_n == "h"} {
OCCDoc_PrintHelpMessage
return 0
} elseif {$arg_n == "html"} {
if { ([ lsearch $args_names "refman" ] == -1) &&
([ lsearch $args_names "overview" ] == -1) } {
puts "Warning: Please specify -refman or -overview argument."
return -1
}
if { [ lsearch $args_names "refman" ] != -1 } {
continue
}
if { $GENMODE_COMBO_FLAG != 1 } {
set GEN_MODE "HTML_ONLY"
set GENMODE_COMBO_FLAG 1
} else {
puts "Error: Options -html, -pdf and -chm can not be combined."
return -1
}
} elseif {$arg_n == "chm"} {
if { ([ lsearch $args_names "refman" ] == -1) &&
([ lsearch $args_names "overview" ] == -1) } {
puts "Warning: Please specify -refman or -overview argument."
return -1
}
if { [ lsearch $args_names "refman" ] != -1 } {
continue
}
if { $GENMODE_COMBO_FLAG != 1 } {
set GEN_MODE "CHM_ONLY"
set GENMODE_COMBO_FLAG 1
} else {
puts "Error: Options -html, -pdf and -chm cannot be combined."
return -1
}
} elseif {$arg_n == "pdf"} {
if { ([ lsearch $args_names "refman" ] == -1) &&
([ lsearch $args_names "overview" ] == -1) } {
puts "Warning: Please specify -refman or -overview argument."
return -1
}
if { [ lsearch $args_names "refman" ] != -1 } {
continue
}
if { $GENMODE_COMBO_FLAG != 1 } {
set GEN_MODE "PDF_ONLY"
set GENMODE_COMBO_FLAG 1
} else {
puts "Error: Options -html, -pdf and -chm cannot be combined."
return -1
}
} elseif {$arg_n == "overview"} {
if { $DOCTYPE_COMBO_FLAG != 1 } {
set DOC_TYPE "OVERVIEW"
set DOCTYPE_COMBO_FLAG 1
} else {
puts "Error: Options -refman and -overview cannot be combined."
return -1
}
# Print ignored options
if { [ lsearch $args_names "m" ] != -1 } {
puts "\nInfo: The following options will be ignored: \n"
puts " * -m"
}
puts ""
} elseif {$arg_n == "refman"} {
if { $DOCTYPE_COMBO_FLAG != 1 } {
set DOC_TYPE "REFMAN"
set DOCTYPE_COMBO_FLAG 1
if { [file exists [pwd]/src/VAS/Products.tcl] } {
set GENERATE_PRODUCTS_REFMAN "YES"
}
} else {
puts "Error: Options -refman and -overview cannot be combined."
return -1
}
# Print ignored options
if { ([ lsearch $args_names "pdf" ] != -1) ||
([ lsearch $args_names "chm" ] != -1) ||
([ lsearch $args_names "ug" ] != -1) } {
puts "\nInfo: The following options will be ignored: \n"
if { [ lsearch $args_names "pdf" ] != -1 } {
puts " * -pdf"
}
if { [ lsearch $args_names "chm" ] != -1 } {
puts " * -chm"
}
if { [ lsearch $args_names "ug" ] != -1 } {
puts " * -ug"
}
puts ""
}
if { $GENERATE_PRODUCTS_REFMAN == "YES" } {
if { [ lsearch $args_names "m" ] == -1 } {
puts "\nError: Cannot generate Reference Manual for the whole set of OCC Products."
puts "Aborting..."
return -1
}
}
} elseif {$arg_n == "v"} {
set VERB_MODE "YES"
} elseif {$arg_n == "ug"} {
if { ([ lsearch $args_names "refman" ] != -1) } {
continue
}
if {$args_values(ug) != "NULL"} {
set DOCFILES $args_values(ug)
} else {
puts "Error in argument ug."
return -1
}
# Check if all chosen docfiles are correct
foreach docfile $DOCFILES {
if { [ lsearch $args_names "pdf" ] == -1 } {
# Check to generate HTMLs
if { [lsearch $available_docfiles $docfile] == -1 } {
puts "Error: File \"$docfile\" is not presented in the list of available docfiles."
puts " Please specify the correct docfile name."
return -1
}
} else {
# Check to generate PDFs
if { [lsearch $available_pdf $docfile] == -1 } {
puts "Error: File \"$docfile\" is not presented in the list of generic PDFs."
puts " Please specify the correct pdf name."
return -1
}
}
}
} elseif {$arg_n == "m"} {
if { [ lsearch $args_names "overview" ] != -1 } {
continue
}
if {$args_values(m) != "NULL"} {
set MODULES $args_values(m)
} else {
puts "Error in argument m."
return -1
}
} elseif {$arg_n == "s"} {
if { [ lsearch $args_names "pdf" ] != -1 } {
continue
}
if {$args_values(s) != "NULL"} {
set SEARCH_MODE $args_values(s)
} else {
puts "Error in argument s."
return -1
}
} elseif {$arg_n == "mathjax"} {
if { [ lsearch $args_names "pdf" ] != -1 } {
set possible_mathjax_loc $args_values(mathjax)
if {[file exist [file join $possible_mathjax_loc $mathjax_js_name]]} {
set MATHJAX_LOCATION $args_values(mathjax)
puts "$MATHJAX_LOCATION"
} else {
puts "Warning: $mathjax_js_name is not found in $possible_mathjax_loc."
puts " MathJax will be used from $MATHJAX_LOCATION"
}
} else {
puts "Warning: MathJax is not used with pdf and will be ignored."
}
} else {
puts "\nWrong argument: $arg_n"
OCCDoc_PrintHelpMessage
return -1
}
}
# Check the existence of the necessary tools
set DOXYGEN_PATH ""
set GRAPHVIZ_PATH ""
set INKSCAPE_PATH ""
set PDFLATEX_PATH ""
set HHC_PATH ""
OCCDoc_DetectNecessarySoftware $DOXYGEN_PATH $GRAPHVIZ_PATH $INKSCAPE_PATH $HHC_PATH $PDFLATEX_PATH
if {$DOXYGEN_PATH == ""} {
puts " Aborting..."
return -1
}
if {"$::tcl_platform(platform)" == "windows"} {
if { ($GEN_MODE == "CHM_ONLY") && ($HHC_PATH == "") } {
puts " Aborting..."
return -1
}
}
if { ($PDFLATEX_PATH == "") && ($GEN_MODE == "PDF_ONLY") } {
puts " Aborting..."
return -1
}
# If we do not specify list for docfiles with -m argument,
# we assume that we have to generate all docfiles
if { [llength $DOCFILES] == 0 } {
if { $GEN_MODE != "PDF_ONLY" } {
set DOCFILES $available_docfiles
} else {
set DOCFILES $available_pdf
}
}
puts ""
# Clean logfiles
set OUTDIR [OCCDoc_GetRootDir]/doc/
set DOXYLOG $OUTDIR/doxygen_warnings_and_errors.log
set PDFLOG $OUTDIR/pdflatex_warnings_and_errors.log
file delete -force $PDFLOG
file delete -force $DOXYLOG
# Start main activities
if { $GEN_MODE != "PDF_ONLY" } {
OCCDoc_Main $DOC_TYPE $DOCFILES $MODULES $GEN_MODE $VERB_MODE $SEARCH_MODE $MATHJAX_LOCATION $GENERATE_PRODUCTS_REFMAN $DOXYGEN_PATH $GRAPHVIZ_PATH $INKSCAPE_PATH $HHC_PATH
} else {
puts "Generating OCCT User Guides in PDF format...\n"
foreach pdf $DOCFILES {
puts "Info: Processing file $pdf\n"
# Some values are hardcoded because they are related only to PDF generation
OCCDoc_Main "OVERVIEW" [list $pdf] {} "PDF_ONLY" $VERB_MODE "none" $MATHJAX_LOCATION "NO" $DOXYGEN_PATH $GRAPHVIZ_PATH $INKSCAPE_PATH $HHC_PATH
}
puts "[clock format [clock seconds] -format {%Y-%m-%d %H:%M}] Generation completed."
puts "\nPDF files are generated in \n[file normalize [OCCDoc_GetRootDir]/doc/pdf]"
}
}
# Main procedure for documents compilation
proc OCCDoc_Main {docType {docfiles {}} {modules {}} generatorMode verboseMode searchMode mathjaxLocation generateProductsRefman DOXYGEN_PATH GRAPHVIZ_PATH INKSCAPE_PATH HHC_PATH} {
global available_docfiles
global available_pdf
set PRODPATH ""
if { [string compare -nocase $generateProductsRefman "YES"] == 0 } {
set PRODPATH [pwd]
}
set ROOTDIR [OCCDoc_GetRootDir $PRODPATH]
set INDIR [OCCDoc_GetDoxDir]
set OUTDIR $ROOTDIR/doc
set PDFDIR $OUTDIR/pdf
set UGDIR $PDFDIR/user_guides
set DGDIR $PDFDIR/dev_guides
set TAGFILEDIR $OUTDIR/refman
set HTMLDIR $OUTDIR/overview/html
set LATEXDIR $OUTDIR/overview/latex
set DOXYFILE $OUTDIR/OCCT.cfg
# Create or cleanup the output folders
if { [string compare -nocase $generateProductsRefman "YES"] != 0 } {
if { ![file exists $OUTDIR] } {
file mkdir $OUTDIR
}
if { ![file exists $HTMLDIR] } {
file mkdir $HTMLDIR
}
if { ![file exists $PDFDIR] } {
file mkdir $PDFDIR
}
if { ![file exists $UGDIR] } {
file mkdir $UGDIR
}
if { ![file exists $DGDIR] } {
file mkdir $DGDIR
}
if { [file exists $LATEXDIR] } {
file delete -force $LATEXDIR
}
file mkdir $LATEXDIR
}
if { $docType == "REFMAN" } {
if { ![file exists $TAGFILEDIR] } {
file mkdir $TAGFILEDIR
}
}
# is MathJax HLink?
set mathjax_relative_location $mathjaxLocation
if { [file isdirectory "$mathjaxLocation"] } {
if { $generatorMode == "HTML_ONLY" } {
# related path
set mathjax_relative_location [OCCDoc_GetRelPath $HTMLDIR $mathjaxLocation]
} elseif { $generatorMode == "CHM_ONLY" } {
# absolute path
set mathjax_relative_location [file normalize $mathjaxLocation]
}
}
if { $generateProductsRefman == "YES" } {
set DOCDIR "$OUTDIR/refman"
puts "\nGenerating OCC Products Reference Manual\n"
} else {
if { $docType == "REFMAN"} {
set DOCDIR "$OUTDIR/refman"
puts "\nGenerating Open CASCADE Reference Manual\n"
} elseif { $docType == "OVERVIEW" } {
set DOCDIR "$OUTDIR/overview"
set FORMAT ""
if { ($generatorMode == "HTML_ONLY") || ($generatorMode == "CHM_ONLY") } {
if { $generatorMode == "HTML_ONLY" } {
set FORMAT " in HTML format..."
} elseif { $generatorMode == "CHM_ONLY" } {
set FORMAT " in CHM format..."
}
puts "Generating OCCT User Guides$FORMAT\n"
}
} else {
puts "Error: Invalid documentation type: $docType. Can not process."
return -1
}
}
# Generate Doxyfile
puts "[clock format [clock seconds] -format {%Y-%m-%d %H:%M}] Generating Doxyfile..."
if { [OCCDoc_MakeDoxyfile $docType $DOCDIR $TAGFILEDIR $DOXYFILE $generatorMode $docfiles $modules $verboseMode $searchMode $HHC_PATH $mathjax_relative_location $GRAPHVIZ_PATH $PRODPATH] == -1 } {
return -1
}
# Run doxygen tool
set starttimestamp [clock format [clock seconds] -format {%Y-%m-%d %H:%M}]
if { ($generatorMode == "HTML_ONLY") || ($docType == "REFMAN") } {
puts "$starttimestamp Generating HTML files..."
# Copy index file to provide fast access to HTML documentation
file copy -force $INDIR/resources/index.html $DOCDIR/index.html
} elseif { $generatorMode == "CHM_ONLY" } {
puts "$starttimestamp Generating CHM file..."
} elseif { $generatorMode == "PDF_ONLY" } {
puts "$starttimestamp Generating PDF file..."
}
set DOXYLOG $OUTDIR/doxygen_warnings_and_errors.log
set RESULT [catch {exec $DOXYGEN_PATH $DOXYFILE >> $OUTDIR/doxygen_out.log} DOX_ERROR]
if {$RESULT != 0} {
set NbErrors [regexp -all -line {^\s*[^\s]+} $DOX_ERROR]
if {$NbErrors > 0} {
puts "\nWarning: Doxygen reported $NbErrors messages."
puts "See log in $DOXYLOG\n"
set DOX_ERROR_FILE [open $DOXYLOG "a"]
if {$generatorMode == "PDF_ONLY"} {
puts $DOX_ERROR_FILE "\n===================================================="
puts $DOX_ERROR_FILE "Logfile for $docfiles"
puts $DOX_ERROR_FILE "====================================================\n"
}
puts $DOX_ERROR_FILE $DOX_ERROR
close $DOX_ERROR_FILE
}
}
# Close the Doxygen application
after 300
# Start Post Processing
set curtime [clock format [clock seconds] -format {%Y-%m-%d %H:%M}]
if { $docType == "REFMAN" } {
# Post Process generated HTML pages and draw dependency graphs
if {[OCCDoc_PostProcessor $DOCDIR] == 0} {
puts "$curtime Generation completed."
puts "\nInfo: doxygen log file is located in:"
puts "$OUTDIR/doxygen_out.log."
puts "\nReference Manual is generated in \n$DOCDIR"
}
} elseif { $docType == "OVERVIEW" } {
# Start PDF generation routine
if { $generatorMode == "PDF_ONLY" } {
set OS $::tcl_platform(platform)
if { $OS == "unix" } {
set PREFIX ".sh"
} elseif { $OS == "windows" } {
set PREFIX ".bat"
}
# Prepare a list of TeX files, generated by Doxygen
cd $LATEXDIR
set TEXFILES [glob $LATEXDIR -type f -directory $LATEXDIR -tails "*.tex" ]
foreach path $TEXFILES {
if { [string compare -nocase $path $LATEXDIR] == 0 } {
set DEL_IDX [lsearch $TEXFILES $path]
if { $DEL_IDX != -1 } {
set TEXFILES [lreplace $TEXFILES $DEL_IDX $DEL_IDX]
}
}
}
set TEXFILES [string map [list refman.tex ""] $TEXFILES]
if {$verboseMode == "YES"} {
puts "Info: Preprocessing generated TeX files..."
}
OCCDoc_ProcessTex $TEXFILES $LATEXDIR $verboseMode
if {$verboseMode == "YES"} {
puts "Info: Converting SVG images to PNG format..."
}
if { $INKSCAPE_PATH != "" } {
OCCDoc_ProcessSvg $LATEXDIR $verboseMode
} else {
puts "Warning: SVG images will be lost in PDF documents."
}
if {$verboseMode == "YES"} {
puts "Info: Generating PDF file from TeX files..."
}
foreach TEX $TEXFILES {
# Rewrite existing REFMAN.tex file...
set TEX [lindex [split $TEX "."] 0]
if {$verboseMode == "YES"} {
puts "Info: Generating PDF file from $TEX..."
}
OCCDoc_MakeRefmanTex $TEX $LATEXDIR $verboseMode $available_pdf
if {"$::tcl_platform(platform)" == "windows"} {
set is_win "yes"
} else {
set is_win "no"
}
if {$verboseMode == "YES"} {
# ...and use it to generate PDF from TeX...
if {$is_win == "yes"} {
puts "Info: Executing $LATEXDIR/make.bat..."
} else {
puts "Info: Executing $LATEXDIR/Makefile..."
}
}
set PDFLOG $OUTDIR/pdflatex_warnings_and_errors.log
if {"$is_win" == "yes"} {
set RESULT [catch {eval exec [auto_execok $LATEXDIR/make.bat] >> "$OUTDIR/pdflatex_out.log"} LaTeX_ERROR]
} else {
set RESULT [catch {eval exec "make -f $LATEXDIR/Makefile" >> "$OUTDIR/pdflatex_out.log"} LaTeX_ERROR]
# Small workaround for *nix stations
set prev_loc [pwd]
cd $LATEXDIR
set RESULT [catch {eval exec "pdflatex refman.tex" >> "$OUTDIR/pdflatex_out.log"} LaTeX_ERROR]
cd $prev_loc
}
if {$RESULT != 0} {
set NbErrors [regexp -all -line {^\s*[^\s]+} $LaTeX_ERROR]
if {$NbErrors > 0} {
puts "\nWarning: PDFLaTeX reported $NbErrors messages.\nSee log in $PDFLOG\n"
set LaTeX_ERROR_FILE [open $PDFLOG "a"]
puts $LaTeX_ERROR_FILE "\n===================================================="
puts $LaTeX_ERROR_FILE "Logfile of file $TEX:"
puts $LaTeX_ERROR_FILE "====================================================\n"
puts $LaTeX_ERROR_FILE $LaTeX_ERROR
close $LaTeX_ERROR_FILE
}
}
# ...and place it to the specific folder
if {![file exists "$LATEXDIR/refman.pdf"]} {
puts "Fatal: PDFLaTeX failed to create output file, stopping!"
return -1
}
set destFolder $PDFDIR
set parsed_string [split $TEX "_"]
if { [lsearch $parsed_string "tutorial"] != -1 } {
set TEX [string map [list occt__ occt_] $TEX]
set destFolder $PDFDIR
} elseif { [lsearch $parsed_string "user"] != -1 } {
set TEX [string map [list user_guides__ ""] $TEX]
set destFolder $UGDIR
} elseif { [lsearch $parsed_string "dev"] != -1 } {
set TEX [string map [list dev_guides__ ""] $TEX]
set destFolder $DGDIR
}
file rename -force $LATEXDIR/refman.pdf "$destFolder/$TEX.pdf"
}
} elseif { $generatorMode == "CHM_ONLY" } {
file rename $OUTDIR/overview.chm $OUTDIR/occt_overview.chm
}
cd $INDIR
if { $generatorMode == "HTML_ONLY" } {
puts "\nHTML documentation is generated in \n$DOCDIR"
}
if { $generatorMode == "CHM_ONLY" } {
puts "\nGenerated CHM documentation is in \n$OUTDIR/overview.chm"
}
puts ""
}
# Remove temporary Doxygen files
set deleteList [glob -nocomplain -type f "*.tmp"]
foreach file $deleteList {
file delete $file
}
return 0
}
# Generates Doxygen configuration file for Overview documentation
proc OCCDoc_MakeDoxyfile {docType outDir tagFileDir {doxyFileName} {generatorMode ""} {DocFilesList {}} {ModulesList {}} verboseMode searchMode hhcPath mathjaxLocation graphvizPath productsPath} {
set inputDir [OCCDoc_GetDoxDir]
set TEMPLATES_DIR $inputDir/resources
set occt_version [OCCDoc_DetectCasVersion]
# Delete existent doxyfile
file delete $doxyFileName
# Copy specific template to the target folder
if { $docType == "REFMAN" } {
file copy "$TEMPLATES_DIR/occt_rm.doxyfile" $doxyFileName
} elseif { $docType == "OVERVIEW" } {
if { $generatorMode == "HTML_ONLY" || $generatorMode == "CHM_ONLY" } {
file copy "$TEMPLATES_DIR/occt_ug_html.doxyfile" $doxyFileName
} elseif { $generatorMode == "PDF_ONLY"} {
file copy "$TEMPLATES_DIR/occt_ug_pdf.doxyfile" $doxyFileName
} else {
puts "Error: Unknown generation mode"
return -1
}
} else {
puts "Error: Cannot generate unknown document type"
return -1
}
set doxyFile [open $doxyFileName "a"]
# Write specific options
if { $docType == "REFMAN" } {
# Load lists of modules scripts
if { $productsPath == "" } {
set modules_scripts [glob -nocomplain -type f -directory "[OCCDoc_GetSourceDir $productsPath]/OS/" *.tcl]
} else {
set modules_scripts [glob -nocomplain -type f -directory "[OCCDoc_GetSourceDir $productsPath]/VAS/" *.tcl]
}
if { [llength $modules_scripts] != 0} {
foreach module_file $modules_scripts {
source $module_file
}
}
set ALL_MODULES [OCCDoc_GetModulesList $productsPath]
if { [llength $ModulesList] == 0 } {
# by default take all modules
set modules $ALL_MODULES
} else {
set modules $ModulesList
}
# Detect invalid names of modules
foreach module $modules {
if { $module == "" } {
continue
}
if {[lsearch $ALL_MODULES $module] == -1 } {
puts "Error: No module $module is known. Aborting..."
return -1
}
}
# Set context
set one_module [expr [llength $modules] == 1]
if { $one_module } {
set title "OCCT [$modules:name]"
set name $modules
} else {
set title "Open CASCADE Technology"
set name OCCT
}
# Get list of header files in the specified modules
set filelist {}
foreach module $modules {
if { $module == "" } {
continue
}
foreach tk [$module:toolkits] {
foreach pk [split [OCCDoc_GetPackagesList [OCCDoc_Locate $tk $productsPath]]] {
if { [llength $pk] != "{}" } {
lappend filelist [OCCDoc_GetHeadersList "p" "$pk" "$productsPath"]
}
}
}
}
# Filter out files Handle_*.hxx and *.lxx
set hdrlist {}
foreach fileset $filelist {
set hdrset {}
foreach hdr $fileset {
if { ! [regexp {Handle_.*[.]hxx} $hdr] && ! [regexp {.*[.]lxx} $hdr] } {
lappend hdrset $hdr
}
}
lappend hdrlist $hdrset
}
set filelist $hdrlist
set doxyFile [open $doxyFileName "a"]
puts $doxyFile "PROJECT_NAME = \"$title\""
puts $doxyFile "PROJECT_NUMBER = $occt_version"
puts $doxyFile "OUTPUT_DIRECTORY = $outDir/."
puts $doxyFile "GENERATE_TAGFILE = $outDir/${name}.tag"
if { [string tolower $searchMode] == "none" } {
puts $doxyFile "SEARCHENGINE = NO"
puts $doxyFile "SERVER_BASED_SEARCH = NO"
puts $doxyFile "EXTERNAL_SEARCH = NO"
} else {
puts $doxyFile "SEARCHENGINE = YES"
if { [string tolower $searchMode] == "local" } {
puts $doxyFile "SERVER_BASED_SEARCH = NO"
puts $doxyFile "EXTERNAL_SEARCH = NO"
} elseif { [string tolower $searchMode] == "server" } {
puts $doxyFile "SERVER_BASED_SEARCH = YES"
puts $doxyFile "EXTERNAL_SEARCH = NO"
} elseif { [string tolower $searchMode] == "external" } {
puts $doxyFile "SERVER_BASED_SEARCH = YES"
puts $doxyFile "EXTERNAL_SEARCH = YES"
} else {
puts "Error: Wrong search engine type: $searchMode."
close $doxyFile
return -1
}
}
puts $doxyFile "DOTFILE_DIRS = $outDir/html"
puts $doxyFile "DOT_PATH = $graphvizPath"
puts $doxyFile "INCLUDE_PATH = [OCCDoc_GetIncDir $productsPath]"
# list of files to generate
set mainpage [OCCDoc_MakeMainPage $outDir $outDir/$name.dox $modules $productsPath]
puts $doxyFile ""
puts $doxyFile "INPUT = $mainpage \\"
foreach header $filelist {
puts $doxyFile " $header \\"
}
puts $doxyFile "MATHJAX_FORMAT = HTML-CSS"
puts $doxyFile "MATHJAX_RELPATH = ${mathjaxLocation}"
puts $doxyFile ""
} elseif { $docType == "OVERVIEW" } {
# Add common options for generation of Overview and User Guides
puts $doxyFile "PROJECT_NUMBER = $occt_version"
puts $doxyFile "OUTPUT_DIRECTORY = $outDir/."
puts $doxyFile "PROJECT_LOGO = $inputDir/resources/occ_logo.png"
set PARAM_INPUT "INPUT ="
set PARAM_IMAGEPATH "IMAGE_PATH = $inputDir/resources/ "
foreach docFile $DocFilesList {
set NEW_IMG_PATH "$inputDir/$docFile"
if { [string compare $NEW_IMG_PATH [OCCDoc_GetRootDir $productsPath]] != 0 } {
set img_string [file dirname $NEW_IMG_PATH]/images
if { [file exists $img_string] } {
append PARAM_IMAGEPATH " $img_string"
}
}
append PARAM_INPUT " " $inputDir/$docFile
}
puts $doxyFile $PARAM_INPUT
puts $doxyFile $PARAM_IMAGEPATH
# Add document type-specific options
if { $generatorMode == "HTML_ONLY"} {
# generate tree view
puts $doxyFile "GENERATE_TREEVIEW = YES"
# Set a reference to a TAGFILE
if { $tagFileDir != "" } {
if {[file exists $tagFileDir/OCCT.tag] == 1} {
#set tagPath [OCCDoc_GetRelPath $tagFileDir $outDir/html]
set tagPath $tagFileDir
puts $doxyFile "TAGFILES = $tagFileDir/OCCT.tag=../../refman/html"
}
}
# HTML Search engine options
if { [string tolower $searchMode] == "none" } {
puts $doxyFile "SEARCHENGINE = NO"
puts $doxyFile "SERVER_BASED_SEARCH = NO"
puts $doxyFile "EXTERNAL_SEARCH = NO"
} else {
puts $doxyFile "SEARCHENGINE = YES"
if { [string tolower $searchMode] == "local" } {
puts $doxyFile "SERVER_BASED_SEARCH = NO"
puts $doxyFile "EXTERNAL_SEARCH = NO"
} elseif { [string tolower $searchMode] == "server" } {
puts $doxyFile "SERVER_BASED_SEARCH = YES"
puts $doxyFile "EXTERNAL_SEARCH = NO"
} elseif { [string tolower $searchMode] == "external" } {
puts $doxyFile "SERVER_BASED_SEARCH = YES"
puts $doxyFile "EXTERNAL_SEARCH = YES"
} else {
puts "Error: Wrong search engine type: $searchMode."
close $doxyFile
return -1
}
}
} elseif { $generatorMode == "CHM_ONLY"} {
# specific options for CHM file generation
puts $doxyFile "GENERATE_TREEVIEW = NO"
puts $doxyFile "SEARCHENGINE = NO"
puts $doxyFile "GENERATE_HTMLHELP = YES"
puts $doxyFile "CHM_FILE = ../../overview.chm"
puts $doxyFile "HHC_LOCATION = \"$hhcPath\""
puts $doxyFile "DISABLE_INDEX = YES"
}
# Formula options
puts $doxyFile "MATHJAX_RELPATH = ${mathjaxLocation}"
}
close $doxyFile
return 0
}

886
adm/occaux.tcl Normal file
View File

@@ -0,0 +1,886 @@
# =======================================================================
# Created on: 2014-03-21
# Created by: OMY
# Copyright (c) 1996-1999 Matra Datavision
# Copyright (c) 1999-2014 OPEN CASCADE SAS
#
# This file is part of Open CASCADE Technology software library.
#
# This library is free software; you can redistribute it and/or modify it under
# the terms of the GNU Lesser General Public License version 2.1 as published
# by the Free Software Foundation, with special exception defined in the file
# OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
# distribution for complete text of the license and disclaimer of any warranty.
#
# Alternatively, this file may be used under the terms of Open CASCADE
# commercial license or contractual agreement.
#
# Brief: This script contains auxilary functions which can be used
# in documentation generation process
# =======================================================================
# ==============================================
# Commonly used functions
# ==============================================
# Parses arguments line like "-arg1=val1 -arg2=val2 ..." to array args_names and map args_values
proc OCCDoc_ParseArguments {arguments} {
global args_names
global args_values
set args_names {}
array set args_values {}
foreach arg $arguments {
if {[regexp {^(-)[a-z]+$} $arg] == 1} {
set name [string range $arg 1 [string length $arg]-1]
lappend args_names $name
set args_values($name) "NULL"
continue
} elseif {[regexp {^(-)[a-z]+=.+$} $arg] == 1} {
set equal_symbol_position [string first "=" $arg]
set name [string range $arg 1 $equal_symbol_position-1]
lappend args_names $name
set value [string range $arg $equal_symbol_position+1 [string length $arguments]-1]
# To parse a list of values for -m parameter
if { [string first "," $value] != -1 } {
set value [split $value ","];
}
set args_values($name) $value
} else {
puts "Error in argument $arg."
return 1
}
}
return 0
}
# Returns script parent folder
proc OCCDoc_GetDoxDir {} {
return [file normalize [file dirname [info script]]/../dox]
}
# Returns OCCT root dir
proc OCCDoc_GetOCCTRootDir {} {
set path [OCCDoc_GetDoxDir]
return [file normalize $path/..]
}
# Returns root dir
proc OCCDoc_GetRootDir { {theProductsPath ""} } {
if { $theProductsPath == "" } {
return [OCCDoc_GetOCCTRootDir]
} else {
return [file normalize $theProductsPath]
}
}
# Returns OCCT include dir
proc OCCDoc_GetIncDir { {theProductsPath ""} } {
set path [OCCDoc_GetRootDir $theProductsPath]
return "$path/inc"
}
# Returns OCCT source dir
proc OCCDoc_GetSourceDir { {theProductsPath ""} } {
set path [OCCDoc_GetRootDir $theProductsPath]
return "$path/src"
}
# Returns name of the package from the current toolkit
proc OCCDoc_GetNameFromPath { thePath } {
set splitted_path [split $thePath "/" ]
set package_name [lindex $splitted_path end]
return $package_name
}
# Returns the relative path between two folders
proc OCCDoc_GetRelPath {thePathFrom thePathTo} {
if { [file isdirectory "$thePathFrom"] == 0 } {
return ""
}
set aPathFrom [file normalize "$thePathFrom"]
set aPathTo [file normalize "$thePathTo"]
set aCutedPathFrom "${aPathFrom}/dummy"
set aRelatedDeepPath ""
while { "$aCutedPathFrom" != [file normalize "$aCutedPathFrom/.."] } {
set aCutedPathFrom [file normalize "$aCutedPathFrom/.."]
# does aPathTo contain aCutedPathFrom?
regsub -all $aCutedPathFrom $aPathTo "" aPathFromAfterCut
if { "$aPathFromAfterCut" != "$aPathTo" } { # if so
if { "$aCutedPathFrom" == "$aPathFrom" } { # just go higher, for example, ./somefolder/someotherfolder
set aPathTo ".${aPathTo}"
} elseif { "$aCutedPathFrom" == "$aPathTo" } { # remove the last "/"
set aRelatedDeepPath [string replace $aRelatedDeepPath end end ""]
}
regsub -all $aCutedPathFrom $aPathTo $aRelatedDeepPath aPathToAfterCut
regsub -all "//" $aPathToAfterCut "/" aPathToAfterCut
return $aPathToAfterCut
}
set aRelatedDeepPath "$aRelatedDeepPath../"
}
return $thePathTo
}
# Returns OCCT version string from file Standard_Version.hxx (if available)
proc OCCDoc_DetectCasVersion {} {
set occt_ver 6.7.0
set occt_ver_add ""
set filename "[OCCDoc_GetSourceDir]/Standard/Standard_Version.hxx"
if { [file exists $filename] } {
set fh [open $filename "r"]
set fh_loaded [read $fh]
close $fh
regexp {[^/]\s*#\s*define\s+OCC_VERSION_COMPLETE\s+\"([^\s]*)\"} $fh_loaded dummy occt_ver
regexp {[^/]\s*#\s*define\s+OCC_VERSION_DEVELOPMENT\s+\"([^\s]*)\"} $fh_loaded dummy occt_ver_add
if { "$occt_ver_add" != "" } { set occt_ver ${occt_ver}.$occt_ver_add }
}
return $occt_ver
}
# Checks if the necessary tools exist
proc OCCDoc_DetectNecessarySoftware { DOXYGEN_PATH GRAPHVIZ_PATH INKSCAPE_PATH HHC_PATH PDFLATEX_PATH } {
upvar 1 DOXYGEN_PATH doxy_path
upvar 1 GRAPHVIZ_PATH graph_path
upvar 1 INKSCAPE_PATH inkscape_path
upvar 1 HHC_PATH hhc_path
upvar 1 PDFLATEX_PATH latex_path
set doxy_path ""
set graph_path ""
set inkscape_path ""
set latex_path ""
set hhc_path ""
set is_win "no"
if { "$::tcl_platform(platform)" == "windows" } {
set is_win "yes"
}
if {"$is_win" == "yes"} {
set exe ".exe"
} else {
set exe ""
}
set g_flag "no"
set d_flag "no"
set i_flag "no"
set h_flag "no"
set l_flag "no"
puts ""
set envPath $::env(PATH)
if { $is_win == "yes" } {
set searchPathsList [split $envPath ";"]
} else {
set searchPathsList [split $envPath ":"]
}
foreach path $searchPathsList {
if { ($is_win == "no") &&
(($path == "/usr/bin") || ($path == "/usr/local/bin")) } {
# Avoid searching in default bin location
continue
}
if {$d_flag == "no"} {
if { [file exists $path/doxygen$exe] } {
catch { exec $path/doxygen -V } version_string
set version [lindex [split $version_string "\n"] 0]
puts "Info: $version "
puts " found in $path."
set doxy_path "$path/doxygen$exe"
set d_flag "yes"
}
}
if {$g_flag == "no"} {
if { [file exists $path/dot$exe] } {
catch { exec $path/dot -V } version
puts "Info: $version "
puts " found in $path."
set graph_path "$path/dot$exe"
set g_flag "yes"
}
}
if {$i_flag == "no"} {
if { [file exists $path/inkscape$exe] } {
catch { exec $path/inkscape -V } version
puts "Info: $version "
puts " found in $path."
set inkscape_path "$path/inkscape$exe"
set i_flag "yes"
}
}
if {$l_flag == "no"} {
if { [file exists $path/pdflatex$exe] } {
catch { exec $path/pdflatex -version } version
set version [lindex [split $version "\n"] 0]
puts "Info: $version "
puts " found in $path."
set latex_path "$path/pdflatex$exe"
set l_flag "yes"
}
}
if { ("$is_win" == "yes") && ($h_flag == "no") } {
if { [file exists $path/hhc.exe] } {
puts "Info: hhc "
puts " found in $path."
set hhc_path "hhc$exe"
set h_flag "yes"
}
}
if { ($d_flag == "yes") &&
($i_flag == "yes") &&
($g_flag == "yes") &&
($l_flag == "yes") &&
(($is_win == "yes") &&
($h_flag == "yes")) } {
break
}
}
# On Windows search for hhc.exe in the default location
# if it has not been found yet
if { ("$is_win" == "yes") && ($h_flag == "no") } {
if { [info exists ::env(ProgramFiles\(x86\))] } {
set h_flag "yes"
set path "$::env(ProgramFiles\(x86\))\\HTML Help Workshop"
set hhc_path "$path\\hhc.exe"
puts "Info: hhc "
puts " found in $path."
} else {
if { [info exists ::env(ProgramFiles)] } {
set h_flag "yes"
set path "$::env(ProgramFiles)\\HTML Help Workshop"
set hhc_path "$path\\hhc.exe"
puts "Info: hhc"
puts " found in $path."
}
}
}
# On *nix-like platforms,
# check the default binary locations if the tools had not been found yet
if { $is_win == "no" &&
(($d_flag == "no") ||
($i_flag == "no") ||
($g_flag == "no") ||
($l_flag == "no")) } {
set default_path { "/usr/bin" "/usr/local/bin" }
foreach path $default_path {
if {$d_flag == "no"} {
if { [file exists $path/doxygen$exe] } {
catch { exec $path/doxygen -V } version_string
set version [lindex [split $version_string "\n"] 0]
puts "Info: $version "
puts " found in $path."
set doxy_path "$path/doxygen$exe"
set d_flag "yes"
}
}
if {$g_flag == "no"} {
if { [file exists $path/dot$exe] } {
catch { exec $path/dot -V } version
puts "Info: $version "
puts " found in $path."
set graph_path "$path/dot$exe"
set g_flag "yes"
}
}
if {$i_flag == "no"} {
if { [file exists $path/inkscape$exe] } {
catch { exec $path/inkscape -V } version
puts "Info: $version "
puts " found in $path."
set inkscape_path "$path/inkscape$exe"
set i_flag "yes"
}
}
if {$l_flag == "no"} {
if { [file exists $path/pdflatex$exe] } {
catch { exec $path/pdflatex -version } version
set version [lindex [split $version "\n"] 0]
puts "Info: $version "
puts " found in $path."
set latex_path "$path/pdflatex$exe"
set l_flag "yes"
}
}
}
}
# Check if tools have been found
if { $d_flag == "no" } {
puts "Warning: Could not find doxygen installed."
return -1
}
if { $g_flag == "no" } {
puts "Warning: Could not find graphviz installed."
}
if { $i_flag == "no" } {
puts "Warning: Could not find inkscape installed."
}
if { $l_flag == "no" } {
puts "Warning: Could not find pdflatex installed."
}
if { ("$::tcl_platform(platform)" == "windows") && ($h_flag == "no") } {
puts "Warning: Could not find hhc installed."
}
puts ""
}
# Convert SVG files to PDF format to allow including them to PDF
# (requires InkScape to be in PATH)
proc OCCDoc_ProcessSvg {latexDir verboseMode} {
foreach file [glob -nocomplain $latexDir/*.svg] {
if {$verboseMode == "YES"} {
puts "Info: Converting file $file..."
}
set pdffile "[file rootname $file].pdf"
if { [catch {exec inkscape -z -D --file=$file --export-pdf=$pdffile} res] } {
#puts "Error: $res."
return
}
}
}
# ==============================================
# Reference Manual-specific functions
# ==============================================
# Finds dependencies between all modules
proc OCCDoc_CreateModulesDependencyGraph {dir filename modules mpageprefix} {
global module_dependency
if {![catch {open $dir/$filename.dot "w"} file]} {
puts $file "digraph $filename"
puts $file "\{"
foreach mod $modules {
if { $mod == "" } {
continue
}
puts $file "\t$mod \[ URL = \"[string tolower $mpageprefix$mod.html]\" \]"
foreach mod_depend $module_dependency($mod) {
puts $file "\t$mod_depend -> $mod \[ dir = \"back\", color = \"midnightblue\", style = \"solid\" \]"
}
}
puts $file "\}"
close $file
return $filename
}
}
# Finds dependencies between all toolkits in module
proc OCCDoc_CreateModuleToolkitsDependencyGraph {dir filename modulename tpageprefix} {
global toolkits_in_module
global toolkit_dependency
global toolkit_parent_module
if {![catch {open $dir/$filename.dot "w"} file]} {
puts $file "digraph $filename"
puts $file "\{"
foreach tk $toolkits_in_module($modulename) {
puts $file "\t$tk \[ URL = \"[string tolower $tpageprefix$tk.html]\"\ ]"
foreach tkd $toolkit_dependency($tk) {
if { [info exists toolkit_parent_module($tkd)] } {
if {$toolkit_parent_module($tkd) == $modulename} {
puts $file "\t$tkd -> $tk \[ dir = \"back\", color = \"midnightblue\", style = \"solid\" \]"
}
}
}
}
puts $file "\}"
close $file
return $filename
}
}
# Finds dependencies between the current toolkit and other toolkits
proc OCCDoc_CreateToolkitDependencyGraph {dir filename toolkitname tpageprefix} {
global toolkit_dependency
if {![catch {open $dir/$filename.dot "w"} file]} {
puts $file "digraph $filename"
puts $file "\{"
puts $file "\t$toolkitname \[ URL = \"[string tolower $tpageprefix$toolkitname.html]\"\, shape = box ]"
foreach tkd $toolkit_dependency($toolkitname) {
puts $file "\t$tkd \[ URL = \"[string tolower $tpageprefix$tkd.html]\"\ , shape = box ]"
puts $file "\t$toolkitname -> $tkd \[ color = \"midnightblue\", style = \"solid\" \]"
}
if {[llength $toolkit_dependency($toolkitname)] > 1} {
puts $file "\taspect = 1"
}
puts $file "\}"
close $file
return $filename
}
}
# Fills arrays of modules, toolkits, dependency of modules/toolkits etc
proc OCCDoc_LoadData { {theProductsDir ""} } {
global toolkits_in_module
global toolkit_dependency
global toolkit_parent_module
global module_dependency
if { $theProductsDir == ""} {
set modules_files [glob -nocomplain -type f -directory "[OCCDoc_GetSourceDir $theProductsDir]/OS/" *.tcl]
} else {
set modules_files [glob -nocomplain -type f -directory "[OCCDoc_GetSourceDir $theProductsDir]/VAS/" *.tcl]
}
foreach module_file $modules_files {
source $module_file
}
set modules [OCCDoc_GetModulesList $theProductsDir]
foreach mod $modules {
if { $mod == "" } {
continue
}
# Get toolkits of current module
set toolkits_in_module($mod) [$mod:toolkits]
# Get all dependence of current toolkit
foreach tk $toolkits_in_module($mod) {
# set parent module of current toolkit
set toolkit_parent_module($tk) $mod
set exlibfile [open "[OCCDoc_GetSourceDir $theProductsDir]/$tk/EXTERNLIB" r]
set exlibfile_data [read $exlibfile]
set exlibfile_data [split $exlibfile_data "\n"]
set toolkit_dependency($tk) {}
foreach dtk $exlibfile_data {
if { ([string first "TK" $dtk 0] == 0) ||
([string first "P" $dtk 0] == 0) } {
lappend toolkit_dependency($tk) $dtk
}
}
close $exlibfile
}
}
# Get modules dependency
foreach mod $modules {
set module_dependency($mod) {}
foreach tk $toolkits_in_module($mod) {
foreach tkd $toolkit_dependency($tk) {
if { [info exists toolkit_parent_module($tkd)] } {
if { $toolkit_parent_module($tkd) != $mod &&
[lsearch $module_dependency($mod) $toolkit_parent_module($tkd)] == -1} {
lappend module_dependency($mod) $toolkit_parent_module($tkd)
}
}
}
}
}
}
# Returns list of packages of the given toolkit
proc OCCDoc_GetPackagesList { theToolKitPath } {
set packages_list {}
# Open file with list of packages of the given toolkit
set fileid [open "$theToolKitPath/PACKAGES" "r"]
while { [eof $fileid] == 0 } {
set str [gets $fileid]
if { $str != "" } {
lappend packages_list $str
}
}
close $fileid
return $packages_list
}
# Returns list of modules from UDLIST
proc OCCDoc_GetModulesList { {theProductsDir ""} } {
if { $theProductsDir == "" } {
source "[OCCDoc_GetSourceDir $theProductsDir]/OS/Modules.tcl"
# load a command from this file
set modules [OS:Modules]
} else {
source "[OCCDoc_GetSourceDir $theProductsDir]/VAS/Products.tcl"
# load a command from this file
set modules [VAS:Products]
}
return $modules
}
# Returns list of desired files in the specified location
proc OCCDoc_GetHeadersList { theDesiredContent thePackageName {theProductsDir ""} } {
# Get list of header files with path
set files_list [split [glob -nocomplain -type f -directory "[OCCDoc_GetIncDir $theProductsDir]" "${thePackageName}.hxx" "${thePackageName}_*.hxx"]]
# Get content according to desired type ('p' for path and 'f' for filenames only)
if { $theDesiredContent == "p" } {
return $files_list
} elseif { $theDesiredContent == "f" } {
# Cut paths from filenames
foreach file $files_list {
set elem_index [lsearch $files_list $file]
lset files_list $elem_index [OCCDoc_GetNameFromPath [lindex $files_list $elem_index]]
}
return $files_list
}
}
# Returns location of the toolkit
proc OCCDoc_Locate { theToolKitName {theProductsDir ""} } {
set tk_dir "[OCCDoc_GetSourceDir $theProductsDir]/[OCCDoc_GetNameFromPath $theToolKitName]"
return $tk_dir
}
# Gets contents of the given html node (for Post-processing)
proc OCCDoc_GetNodeContents {node props html} {
set openTag "<$node$props>"
set closingTag "</$node>"
set start [string first $openTag $html]
if {$start == -1} {
return ""
}
set start [expr $start + [string length $openTag]]
set end [string length $html]
set html [string range $html $start $end]
set start [string first $closingTag $html]
set end [string length $html]
if {$start == -1} {
return ""
}
set start [expr $start - 1]
return [string range $html 0 $start]
}
# Generates main page file describing module structure
proc OCCDoc_MakeMainPage {outDir outFile modules {theProductsDir ""} } {
global env
set one_module [expr [llength $modules] == 1]
set fd [open $outFile "w"]
set module_prefix "module_"
set toolkit_prefix "toolkit_"
set package_prefix "package_"
if { ! [file exists "$outDir/html"] } {
file mkdir "$outDir/html"
}
OCCDoc_LoadData $theProductsDir
# Main page: list of modules
if { ! $one_module } {
puts $fd "/**"
puts $fd "\\mainpage Open CASCADE Technology"
foreach mod $modules {
puts $fd "\\li \\subpage [string tolower $module_prefix$mod]"
}
# insert modules relationship diagramm
puts $fd "\\dotfile [OCCDoc_CreateModulesDependencyGraph $outDir/html schema_all_modules $modules $module_prefix]"
puts $fd "**/\n"
}
# One page per module: list of toolkits
set toolkits {}
foreach mod $modules {
if { $mod == "" } {
continue
}
puts $fd "/**"
if { $one_module } {
puts $fd "\\mainpage OCCT Module [$mod:name]"
} else {
puts $fd "\\page [string tolower module_$mod] Module [$mod:name]"
}
foreach tk [lsort [$mod:toolkits]] {
lappend toolkits $tk
puts $fd "\\li \\subpage [string tolower $toolkit_prefix$tk]"
}
puts $fd "\\dotfile [OCCDoc_CreateModuleToolkitsDependencyGraph $outDir/html schema_$mod $mod $toolkit_prefix]"
puts $fd "**/\n"
}
# One page per toolkit: list of packages
set packages {}
foreach tk $toolkits {
puts $fd "/**"
puts $fd "\\page [string tolower toolkit_$tk] Toolkit $tk"
foreach pk [lsort [OCCDoc_GetPackagesList [OCCDoc_Locate $tk $theProductsDir]]] {
lappend packages $pk
set u [OCCDoc_GetNameFromPath $pk]
puts $fd "\\li \\subpage [string tolower $package_prefix$u]"
}
puts $fd "\\dotfile [OCCDoc_CreateToolkitDependencyGraph $outDir/html schema_$tk $tk $toolkit_prefix]"
puts $fd "**/\n"
}
# One page per package: list of classes
foreach pk $packages {
set u [OCCDoc_GetNameFromPath $pk]
puts $fd "/**"
puts $fd "\\page [string tolower $package_prefix$u] Package $u"
foreach hdr [lsort [OCCDoc_GetHeadersList "f" "$pk" "$theProductsDir"]] {
if { ! [regexp {^Handle_} $hdr] && [regexp {(.*)[.]hxx} $hdr str obj] } {
puts $fd "\\li \\subpage $obj"
}
}
puts $fd "**/\n"
}
close $fd
return $outFile
}
# Parses generated files to add a navigation path
proc OCCDoc_PostProcessor {outDir} {
puts "[clock format [clock seconds] -format {%Y.%m.%d %H:%M}] Post-process is started ..."
append outDir "/html"
set files [glob -nocomplain -type f $outDir/package_*]
if { $files != {} } {
foreach f [lsort $files] {
set packageFilePnt [open $f r]
set packageFile [read $packageFilePnt]
set navPath [OCCDoc_GetNodeContents "div" " id=\"nav-path\" class=\"navpath\"" $packageFile]
set packageName [OCCDoc_GetNodeContents "div" " class=\"title\"" $packageFile]
regsub -all {<[^<>]*>} $packageName "" packageName
# add package link to nav path
set first [expr 1 + [string last "/" $f]]
set last [expr [string length $f] - 1]
set packageFileName [string range $f $first $last]
set end [string first "</ul>" $navPath]
set end [expr $end - 1]
set navPath [string range $navPath 0 $end]
append navPath " <li class=\"navelem\"><a class=\"el\" href=\"$packageFileName\">$packageName</a> </li>\n </ul>"
# get list of files to update
set listContents [OCCDoc_GetNodeContents "div" " class=\"textblock\"" $packageFile]
set listContents [OCCDoc_GetNodeContents "ul" "" $listContents]
set lines [split $listContents "\n"]
foreach line $lines {
if {[regexp {href=\"([^\"]*)\"} $line tmpLine classFileName]} {
# check if anchor is there
set anchorPos [string first "#" $classFileName]
if {$anchorPos != -1} {
set classFileName [string range $classFileName 0 [expr $anchorPos - 1]]
}
# read class file
set classFilePnt [open $outDir/$classFileName r+]
set classFile [read $classFilePnt]
# find position of content block
set contentPos [string first "<div class=\"header\">" $classFile]
set navPart [string range $classFile 0 [expr $contentPos - 1]]
# position where to insert nav path
set posToInsert [string last "</div>" $navPart]
set prePart [string range $classFile 0 [expr $posToInsert - 1]]
set postPart [string range $classFile $posToInsert [string length $classFile]]
set newClassFile ""
append newClassFile $prePart " <div id=\"nav-path\" class=\"navpath\">" $navPath \n " </div>" \n $postPart
# write updated content
seek $classFilePnt 0
puts $classFilePnt $newClassFile
close $classFilePnt
}
}
close $packageFilePnt
}
return 0
} else {
puts "no files found"
return 1
}
}
# ======================================
# User Guides-specific functions
# ======================================
# Loads a list of docfiles from file FILES.txt
proc OCCDoc_LoadFilesList {} {
set INPUTDIR [OCCDoc_GetDoxDir]
global available_docfiles
set available_docfiles {}
# Read data from file
if { [file exists "$INPUTDIR/FILES_HTML.txt"] == 1 } {
set FILE [open "$INPUTDIR/FILES_HTML.txt" r]
while {1} {
set line [string trim [gets $FILE]]
# trim possible comments starting with '#'
set line [regsub {\#.*} $line {}]
if {$line != ""} {
lappend available_docfiles $line
}
if {[eof $FILE]} {
close $FILE
break
}
}
} else {
return -1
}
global available_pdf
set available_pdf {}
# Read data from file
if { [file exists "$INPUTDIR/FILES_PDF.txt"] } {
set FILE [open "$INPUTDIR/FILES_PDF.txt" r]
while {1} {
set line [string trim [gets $FILE]]
# Trim possible comments starting with '#'
set line [regsub {\#.*} $line {}]
if {$line != ""} {
lappend available_pdf $line
}
if {[eof $FILE]} {
close $FILE
break
}
}
} else {
return -1
}
return 0
}
# Writes new TeX file for conversion from tex to pdf for a specific doc
proc OCCDoc_MakeRefmanTex {fileName latexDir verboseMode latexFilesList} {
if { $verboseMode == "YES" } {
puts "Info: Making refman.tex file for $fileName..."
}
set DOCNAME "$latexDir/refman.tex"
if {[file exists $DOCNAME] == 1} {
file delete -force $DOCNAME
}
# Copy template file to latex folder
file copy "[OCCDoc_GetDoxDir]/resources/occt_pdf_template.tex" $DOCNAME
# Get templatized data
set texfile [open $DOCNAME "r"]
set texfile_loaded [read $texfile]
close $texfile
# Replace dummy values
set year [clock format [clock seconds] -format {%Y}]
set texfile [open $DOCNAME "w"]
set casVersion [OCCDoc_DetectCasVersion]
# Get name of the document
set docLabel ""
foreach aFileName $latexFilesList {
# Find the file in FILES_PDF.txt
set parsedFileName [split $aFileName "/" ]
set newfileName [string range $fileName [expr [string first "__" $fileName] + 2] end]
if { [lsearch -nocase $parsedFileName "$newfileName.md" ] != -1 } {
set filepath "[OCCDoc_GetDoxDir]/$aFileName"
if { [file exists $filepath] } {
set MDFile [open $filepath "r"]
set label [split [gets $MDFile] "\{"]
set docLabel [lindex $label 0]
close $MDFile
break
}
}
}
set texfile_loaded [string map [list DEFDOCLABEL "$docLabel" DEFCASVERSION "$casVersion" DEFFILENAME "$fileName" DEFYEAR "$year"] $texfile_loaded]
# Get data
puts $texfile $texfile_loaded
close $texfile
}
# Postprocesses generated TeX files
proc OCCDoc_ProcessTex {{texFiles {}} {latexDir} verboseMode} {
foreach TEX $texFiles {
if {$verboseMode == "YES"} {
puts "Info: Preprocessing file $TEX..."
}
if {![file exists $TEX]} {
puts "Error: file $TEX does not exist."
return -1
}
set IN_F [open "$TEX" "r"]
set TMPFILENAME "$latexDir/temp.tex"
set OUT_F [open $TMPFILENAME w]
while {1} {
set line [gets $IN_F]
if { [string first "\\includegraphics" $line] != -1 } {
# replace svg extension by pdf
set line [regsub {[.]svg} $line ".pdf"]
# Center images in TeX files
set line "\\begin{center}\n $line\n\\end{center}"
} elseif { [string first "\\subsection" $line] != -1 } {
# Replace \subsection with \section tag
regsub -all "\\\\subsection" $line "\\\\section" line
} elseif { [string first "\\subsubsection" $line] != -1 } {
# Replace \subsubsection with \subsection tag
regsub -all "\\\\subsubsection" $line "\\\\subsection" line
} elseif { [string first "\\paragraph" $line] != -1 } {
# Replace \paragraph with \subsubsection tag
regsub -all "\\\\paragraph" $line "\\\\subsubsection" line
}
puts $OUT_F $line
if {[eof $IN_F]} {
close $IN_F
close $OUT_F
break
}
}
file delete -force $TEX
file rename $TMPFILENAME $TEX
}
}

8
adm/start.tcl Normal file
View File

@@ -0,0 +1,8 @@
#!/usr/bin/tclsh
# Command-line starter for occdoc command, use it as follows:
# tclsh> source dox/start.tcl [arguments]
source [file join [file dirname [info script]] occaux.tcl]
source [file join [file dirname [info script]] gendoc.tcl]
gendoc {*}$::argv

View File

@@ -0,0 +1,194 @@
#
# include occt macros. compiler_bitness, os_wiht_bit, compiler and build_postfix
OCCT_INCLUDE_CMAKE_FILE ("adm/templates/occt_macros")
macro (THIRDPARTY_PRODUCT PRODUCT_NAME HEADER_NAME LIBRARY_NAME LIBRARY_NAME_DEBUG)
OCCT_MAKE_BUILD_POSTFIX()
# define 3RDPARTY_${PRODUCT_NAME}_DIR variable is it isn't defined
if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_DIR)
set (3RDPARTY_${PRODUCT_NAME}_DIR "" CACHE PATH "The directory containing ${PRODUCT_NAME}")
endif()
# search for product directory inside 3RDPARTY_DIR directory
if (NOT 3RDPARTY_${PRODUCT_NAME}_DIR AND 3RDPARTY_DIR)
FIND_PRODUCT_DIR ("${3RDPARTY_DIR}" "${PRODUCT_NAME}" ${PRODUCT_NAME}_DIR_NAME)
if (${PRODUCT_NAME}_DIR_NAME)
message (STATUS "Info: ${PRODUCT_NAME}: ${${PRODUCT_NAME}_DIR_NAME} folder is used")
set (3RDPARTY_${PRODUCT_NAME}_DIR "${3RDPARTY_DIR}/${${PRODUCT_NAME}_DIR_NAME}" CACHE PATH "The directory containing ${PRODUCT_NAME}" FORCE)
endif()
endif()
if (NOT DEFINED INSTALL_${PRODUCT_NAME})
set (INSTALL_${PRODUCT_NAME} OFF CACHE BOOL "Is ${PRODUCT_NAME} required to be copied into install directory")
endif()
# search for include directory
if (NOT 3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR}")
set (3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR "3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR-NOTFOUND" CACHE FILEPATH "The directory containing the headers of the ${PRODUCT_NAME}" FORCE)
find_path (3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR ${HEADER_NAME} PATHS
"${3RDPARTY_${PRODUCT_NAME}_DIR}/include"
${3RDPARTY_${PRODUCT_NAME}_ADDITIONAL_PATH_FOR_HEADER}
NO_DEFAULT_PATH)
find_path (3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR ${HEADER_NAME})
endif()
if (NOT 3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR}")
set (3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR "" CACHE FILEPATH "The directory containing the headers of the ${PRODUCT_NAME}" FORCE)
endif()
if (NOT 3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR)
set (3RDPARTY_${PRODUCT_NAME}_LIBRARY "" CACHE FILEPATH "${PRODUCT_NAME} library" FORCE)
elseif (3RDPARTY_${PRODUCT_NAME}_LIBRARY AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY}")
get_filename_component(3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_TMP "${3RDPARTY_${PRODUCT_NAME}_LIBRARY}" PATH)
if (NOT "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR}" STREQUAL "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR_TMP}")
set (3RDPARTY_${PRODUCT_NAME}_LIBRARY "" CACHE FILEPATH "${PRODUCT_NAME} library" FORCE)
endif()
endif()
# search for library
if (NOT 3RDPARTY_${PRODUCT_NAME}_LIBRARY OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY}")
set (3RDPARTY_${PRODUCT_NAME}_LIBRARY "3RDPARTY_${PRODUCT_NAME}_LIBRARY-NOTFOUND" CACHE FILEPATH "${PRODUCT_NAME} library" FORCE)
# first of all, search for debug version of a library if build type is debug
if (DEFINED IS_BUILD_DEBUG)
find_library (3RDPARTY_${PRODUCT_NAME}_LIBRARY ${LIBRARY_NAME_DEBUG}
PATHS
"${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR}"
"${3RDPARTY_${PRODUCT_NAME}_DIR}/lib"
"${3RDPARTY_${PRODUCT_NAME}_DIR}/libd"
${3RDPARTY_${PRODUCT_NAME}_ADDITIONAL_PATH_FOR_LIB}
NO_DEFAULT_PATH)
# second search if previous one do not find anything
find_library (3RDPARTY_${PRODUCT_NAME}_LIBRARY ${LIBRARY_NAME_DEBUG})
endif()
# if build type is release or debug version of library isn't found - search for release version of one
if (NOT 3RDPARTY_${PRODUCT_NAME}_LIBRARY OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY}")
set (3RDPARTY_${PRODUCT_NAME}_LIBRARY "3RDPARTY_${PRODUCT_NAME}_LIBRARY-NOTFOUND" CACHE FILEPATH "${PRODUCT_NAME} library" FORCE)
if (DEFINED IS_BUILD_DEBUG)
message (STATUS "Warning: debug version of ${PRODUCT_NAME} library isn't found (${LIBRARY_NAME_DEBUG}) in ${3RDPARTY_${PRODUCT_NAME}_DIR}/lib(d). Search for release one")
endif()
find_library (3RDPARTY_${PRODUCT_NAME}_LIBRARY ${LIBRARY_NAME} PATHS
"${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR}"
"${3RDPARTY_${PRODUCT_NAME}_DIR}/lib"
${3RDPARTY_${PRODUCT_NAME}_ADDITIONAL_PATH_FOR_LIB}
NO_DEFAULT_PATH)
# second search if previous one do not find anything
find_library (3RDPARTY_${PRODUCT_NAME}_LIBRARY ${LIBRARY_NAME})
endif()
endif()
if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR)
set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR "" CACHE FILEPATH "The directory containing ${PRODUCT_NAME} library" FORCE)
endif()
# library path
if (3RDPARTY_${PRODUCT_NAME}_LIBRARY AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY}")
get_filename_component (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR "${3RDPARTY_${PRODUCT_NAME}_LIBRARY}" PATH)
set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR}" CACHE FILEPATH "The directory containing ${PRODUCT_NAME} library" FORCE)
endif()
# search for shared library (just for win case)
if (WIN32)
set (CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".dll")
if (NOT 3RDPARTY_${PRODUCT_NAME}_DLL_DIR)
set (3RDPARTY_${PRODUCT_NAME}_DLL "" CACHE FILEPATH "${PRODUCT_NAME} shared library" FORCE)
elseif (3RDPARTY_${PRODUCT_NAME}_DLL AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL}")
get_filename_component(3RDPARTY_${PRODUCT_NAME}_DLL_DIR_TMP "${3RDPARTY_${PRODUCT_NAME}_DLL}" PATH)
if (NOT "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR}" STREQUAL "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR_TMP}")
set (3RDPARTY_${PRODUCT_NAME}_DLL "" CACHE FILEPATH "${PRODUCT_NAME} shared library" FORCE)
endif()
endif()
if (NOT 3RDPARTY_${PRODUCT_NAME}_DLL OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL}")
set (3RDPARTY_${PRODUCT_NAME}_DLL "3RDPARTY_${PRODUCT_NAME}_DLL-NOTFOUND" CACHE FILEPATH "${PRODUCT_NAME} shared library" FORCE)
if (DEFINED IS_BUILD_DEBUG)
find_library (3RDPARTY_${PRODUCT_NAME}_DLL "${LIBRARY_NAME_DEBUG}"
PATHS
"${3RDPARTY_${PRODUCT_NAME}_DLL_DIR}"
"${3RDPARTY_${PRODUCT_NAME}_DIR}/bin"
"${3RDPARTY_${PRODUCT_NAME}_DIR}/bind"
${3RDPARTY_${PRODUCT_NAME}_ADDITIONAL_PATH_FOR_DLL}
NO_DEFAULT_PATH)
# second search if previous one do not find anything
find_library (3RDPARTY_${PRODUCT_NAME}_DLL "${LIBRARY_NAME_DEBUG}")
endif()
if (NOT 3RDPARTY_${PRODUCT_NAME}_DLL OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL}")
set (3RDPARTY_${PRODUCT_NAME}_DLL "3RDPARTY_${PRODUCT_NAME}_DLL-NOTFOUND" CACHE FILEPATH "${PRODUCT_NAME} shared library" FORCE)
if (DEFINED IS_BUILD_DEBUG)
message (STATUS "Warning: debug version of ${PRODUCT_NAME} dll isn't found (${LIBRARY_NAME_DEBUG}) in ${3RDPARTY_${PRODUCT_NAME}_DIR}/bin(d). Search for release one")
endif()
find_library (3RDPARTY_${PRODUCT_NAME}_DLL "${LIBRARY_NAME}" PATHS
"${3RDPARTY_${PRODUCT_NAME}_DLL_DIR}"
"${3RDPARTY_${PRODUCT_NAME}_DIR}/bin"
${3RDPARTY_${PRODUCT_NAME}_ADDITIONAL_PATH_FOR_DLL}
NO_DEFAULT_PATH)
# second search if previous one do not find anything
find_library (3RDPARTY_${PRODUCT_NAME}_DLL "${LIBRARY_NAME}")
endif()
endif()
if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_DLL_DIR)
set (3RDPARTY_${PRODUCT_NAME}_DLL_DIR "" CACHE FILEPATH "The directory containing ${PRODUCT_NAME} shared library" FORCE)
endif()
# shared library path
if (3RDPARTY_${PRODUCT_NAME}_DLL AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL}")
get_filename_component (3RDPARTY_${PRODUCT_NAME}_DLL_DIR "${3RDPARTY_${PRODUCT_NAME}_DLL}" PATH)
set (3RDPARTY_${PRODUCT_NAME}_DLL_DIR "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR}" CACHE FILEPATH "The directory containing ${PRODUCT_NAME} shared library" FORCE)
endif()
endif()
if (3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR}")
list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR}")
else()
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR)
endif()
if (3RDPARTY_${PRODUCT_NAME}_LIBRARY AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY}")
list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR}")
else()
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR)
endif()
if (WIN32)
if (NOT 3RDPARTY_${PRODUCT_NAME}_DLL OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL}")
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_${PRODUCT_NAME}_DLL_DIR)
endif()
endif()
if (INSTALL_${PRODUCT_NAME})
OCCT_MAKE_OS_WITH_BITNESS()
OCCT_MAKE_COMPILER_SHORT_NAME()
OCCT_MAKE_BUILD_POSTFIX()
if (WIN32)
install (FILES "${3RDPARTY_${PRODUCT_NAME}_DLL}" DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bin${BUILD_POSTFIX}")
else()
install (FILES "${3RDPARTY_${PRODUCT_NAME}_LIBRARY}" DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/lib${BUILD_POSTFIX}")
endif()
set (USED_3RDPARTY_${PRODUCT_NAME}_DIR "")
else()
# the library directory for using by the executable
if (WIN32)
set (USED_3RDPARTY_${PRODUCT_NAME}_DIR "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR}")
else()
set (USED_3RDPARTY_${PRODUCT_NAME}_DIR "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR}")
endif()
endif()
mark_as_advanced (3RDPARTY_${PRODUCT_NAME}_LIBRARY 3RDPARTY_${PRODUCT_NAME}_DLL)
endmacro()

View File

@@ -0,0 +1,16 @@
echo off
if "%VCVER%" == "@COMPILER@" (
if "%ARCH%" == "@COMPILER_BITNESS@" (
if "%CASDEB%" == "@BUILD_POSTFIX@" (
set "TCL_DIR=@USED_3RDPARTY_TCL_DIR@"
set "FREETYPE_DIR=@USED_3RDPARTY_FREETYPE_DIR@"
set "FREEIMAGE_DIR=@USED_3RDPARTY_FREEIMAGE_DIR@"
set "FREEIMAGEPLUS_DIR=@USED_3RDPARTY_FREEIMAGEPLUS_DIR@"
set "GL2PS_DIR=@USED_3RDPARTY_GL2PS_DIR@"
set "TBB_DIR=@USED_3RDPARTY_TBB_DIR@"
set "VTK_DIR=@USED_3RDPARTY_VTK_DIR@"
)
)
)

View File

@@ -0,0 +1,12 @@
echo off
if not ["%1"] == [""] set "VCVER=%1"
if not ["%2"] == [""] set "ARCH=%2"
if /I ["%ARCH%"] == ["win32"] set "ARCH=32"
if /I ["%ARCH%"] == ["win64"] set "ARCH=64"
if /I ["%3"] == ["debug"] set "CASDEB=d"
if /I ["%3"] == ["d"] set "CASDEB=d"
rem include other custom.bat files with specific 3rdparty paths
@ADDITIONAL_CUSTOM_CONTENT@

View File

@@ -0,0 +1,15 @@
#!/bin/bash
if [ "$COMPILER" == "@COMPILER@" ]; then
if [ "$ARCH" == "@COMPILER_BITNESS@" ]; then
if [ "$CASDEB" == "@BUILD_POSTFIX@" ]; then
export TCL_DIR="@USED_3RDPARTY_TCL_DIR@"
export FREETYPE_DIR="@USED_3RDPARTY_FREETYPE_DIR@"
export FREEIMAGE_DIR="@USED_3RDPARTY_FREEIMAGE_DIR@"
export GL2PS_DIR="@USED_3RDPARTY_GL2PS_DIR@"
export TBB_DIR="@USED_3RDPARTY_TBB_DIR@"
export VTK_DIR="@USED_3RDPARTY_VTK_DIR@"
fi
fi
fi

View File

@@ -0,0 +1,4 @@
#!/bin/bash
@ADDITIONAL_CUSTOM_CONTENT@

View File

@@ -1,7 +1,10 @@
@echo off
rem Setup environment and launch DRAWEXE
call "%~dp0env.bat"
call "%~dp0env.bat" %1 %2 %3
echo Hint: use "pload ALL" command to load standard commands
DRAWEXE.exe
"%CASROOT%/%BIN_TAIL%/DRAWEXE.exe"
set "PATH=%ORIGIN_PATH%"

View File

@@ -2,7 +2,7 @@
aScriptPath=${BASH_SOURCE%/*}; if [ -d "${aScriptPath}" ]; then cd "$aScriptPath"; fi; aScriptPath="$PWD";
source "${aScriptPath}/env.sh"
source "${aScriptPath}/env.sh" "$1"
echo 'Hint: use "pload ALL" command to load standard commands'
DRAWEXE

View File

@@ -3,25 +3,36 @@ echo off
set "SCRIPTROOT=%~dp0"
set "SCRIPTROOT=%SCRIPTROOT:~0,-1%"
set "VCVER=@COMPILER@"
set "ARCH=@COMPILER_BITNESS@"
set "CASDEB=@BUILD_POSTFIX@"
if not ["%1"] == [""] set "VCVER=%1"
if not ["%2"] == [""] set "ARCH=%2"
if /I ["%ARCH%"] == ["win32"] set "ARCH=32"
if /I ["%ARCH%"] == ["win64"] set "ARCH=64"
if /I ["%3"] == ["debug"] set "CASDEB=d"
if /I ["%3"] == ["d"] set "CASDEB=d"
if exist "%~dp0custom.bat" (
call "%~dp0custom.bat" %1 %2 %3
)
if ["%CASROOT%"] == [""] set "CASROOT=%SCRIPTROOT%"
set "TCL_DIR=@3RDPARTY_TCL_DLL_DIR@"
if not ["%TCL_DIR%"] == [""] set "PATH=%TCL_DIR%;%PATH%"
set "ORIGIN_PATH=%PATH%"
set "FREETYPE_DIR=@3RDPARTY_FREETYPE_DLL_DIR@"
if not ["%FREETYPE_DIR%"] == [""] set "PATH=%FREETYPE_DIR%;%PATH%"
set "FREEIMAGE_DIR=@3RDPARTY_FREEIMAGE_DLL_DIR@"
if not ["%FREEIMAGE_DIR%"] == [""] set "PATH=%FREEIMAGE_DIR%;%PATH%"
set "GL2PS_DIR=@3RDPARTY_GL2PS_DLL_DIR@"
if not ["%GL2PS_DIR%"] == [""] set "PATH=%GL2PS_DIR%;%PATH%"
set "TBB_DIR=@3RDPARTY_TBB_DLL_DIR@"
if not ["%TBB_DIR%"] == [""] set "PATH=%TBB_DIR%;%PATH%"
if not ["%TCL_DIR%"] == [""] set "PATH=%TCL_DIR%;%PATH%"
if not ["%FREETYPE_DIR%"] == [""] set "PATH=%FREETYPE_DIR%;%PATH%"
if not ["%FREEIMAGE_DIR%"] == [""] set "PATH=%FREEIMAGE_DIR%;%PATH%"
if not ["%FREEIMAGEPLUS_DIR%"] == [""] set "PATH=%FREEIMAGEPLUS_DIR%;%PATH%"
if not ["%GL2PS_DIR%"] == [""] set "PATH=%GL2PS_DIR%;%PATH%"
if not ["%TBB_DIR%"] == [""] set "PATH=%TBB_DIR%;%PATH%"
if not ["%VTK_DIR%"] == [""] set "PATH=%VTK_DIR%;%PATH%"
rem ----- Set path to 3rd party and OCCT libraries -----
set "PATH=%CASROOT%\bin;%PATH%"
set "BIN_TAIL=win%ARCH%/%VCVER%/bin%CASDEB%"
set "PATH=%CASROOT%/%BIN_TAIL%;%PATH%"
rem ----- Set envoronment variables used by OCCT -----
set CSF_LANGUAGE=us
@@ -56,4 +67,5 @@ if exist "%CASROOT%\src\DrawResources" (
if exist "%CASROOT%\src\DrawResourcesProducts" (
set "CSF_DrawPluginProductsDefaults=%CASROOT%\src\DrawResourcesProducts"
)
)

View File

@@ -6,63 +6,78 @@ if [ "${CASROOT}" == "" ]; then
export CASROOT="${aScriptPath}"
fi
aLibPath="${CASROOT}/lib"
# Read script arguments
shopt -s nocasematch
export CASDEB="@BUILD_POSTFIX@";
if [[ "$1" == "debug" ]]; then export CASDEB="d"; fi
if [[ "$1" == "d" ]]; then export CASDEB="d"; fi
shopt -u nocasematch
TCL_DIR="@3RDPARTY_TCL_DLL_DIR@"
if [ "$TCL_DIR" != "" ]; then
aLibPath="${TCL_DIR}:${aLibPath}"
fi
FREETYPE_DIR="@3RDPARTY_FREETYPE_DLL_DIR@"
if [ "$FREETYPE_DIR" != "" ]; then
aLibPath="${FREETYPE_DIR}:${aLibPath}"
fi
FREEIMAGE_DIR="@3RDPARTY_FREEIMAGE_DLL_DIR@"
if [ "$FREEIMAGE_DIR" != "" ]; then
aLibPath="${FREEIMAGE_DIR}:${aLibPath}"
fi
GL2PS_DIR="@3RDPARTY_GL2PS_DLL_DIR@"
if [ "$GL2PS_DIR" != "" ]; then
aLibPath="${GL2PS_DIR}:${aLibPath}"
fi
TBB_DIR="@3RDPARTY_TBB_DLL_DIR@"
if [ "$TBB_DIR" != "" ]; then
aLibPath="${TBB_DIR}:${aLibPath}"
fi
export COMPILER="@COMPILER@"
# ----- Set path to 3rd party and OCCT libraries -----
aSystem=`uname -s`
if [ "$aSystem" == "Darwin" ]; then
export WOKSTATION="mac";
if [ "$DYLD_LIBRARY_PATH" != "" ]; then
export DYLD_LIBRARY_PATH="${aLibPath}:${DYLD_LIBRARY_PATH}"
else
export DYLD_LIBRARY_PATH="${aLibPath}"
fi
else
export WOKSTATION="lin";
if [ "$LD_LIBRARY_PATH" != "" ]; then
export LD_LIBRARY_PATH="${aLibPath}:${LD_LIBRARY_PATH}"
else
export LD_LIBRARY_PATH="${aLibPath}"
fi
fi
# ----- Set path to OCCT executables -----
PATH="${PATH}:${CASROOT}/bin"
# ----- Setup Environment Variables -----
anArch=`uname -m`
if [ "$anArch" != "x86_64" ] && [ "$anArch" != "ia64" ]; then
export ARCH="32";
else
export ARCH="64";
fi
aSystem=`uname -s`
if [ "$aSystem" == "Darwin" ]; then
export WOKSTATION="mac";
export ARCH="64";
else
export WOKSTATION="lin";
fi
# ----- Set local settings -----
if [ -e "${aScriptPath}/custom.sh" ]; then
source "${aScriptPath}/custom.sh" "${COMPILER}" "${WOKSTATION}${ARCH}" "${CASDEB}"
fi
THRDPARTY_PATH=""
if [ "$TCL_DIR" != "" ]; then
THRDPARTY_PATH="${TCL_DIR}:${THRDPARTY_PATH}"
fi
if [ "$FREETYPE_DIR" != "" ]; then
THRDPARTY_PATH="${FREETYPE_DIR}:${THRDPARTY_PATH}"
fi
if [ "$FREEIMAGE_DIR" != "" ]; then
THRDPARTY_PATH="${FREEIMAGE_DIR}:${THRDPARTY_PATH}"
fi
if [ "$GL2PS_DIR" != "" ]; then
THRDPARTY_PATH="${GL2PS_DIR}:${THRDPARTY_PATH}"
fi
if [ "$TBB_DIR" != "" ]; then
THRDPARTY_PATH="${TBB_DIR}:${THRDPARTY_PATH}"
fi
if [ "$VTK_DIR" != "" ]; then
THRDPARTY_PATH="${VTK_DIR}:${THRDPARTY_PATH}"
fi
BIN_PATH="${WOKSTATION}${ARCH}/${COMPILER}/bin${CASDEB}"
LIBS_PATH="${WOKSTATION}${ARCH}/${COMPILER}/lib${CASDEB}"
export PATH="${CASROOT}/${BIN_PATH}:${PATH}"
if [ "$LD_LIBRARY_PATH" != "" ]; then
export LD_LIBRARY_PATH="${CASROOT}/${LIBS_PATH}:${THRDPARTY_PATH}:${LD_LIBRARY_PATH}"
else
export LD_LIBRARY_PATH="${CASROOT}/${LIBS_PATH}:${THRDPARTY_PATH}"
fi
if [ "$WOKSTATION" == "mac" ]; then
if [ "$DYLD_LIBRARY_PATH" != "" ]; then
export DYLD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${DYLD_LIBRARY_PATH}"
else
export DYLD_LIBRARY_PATH="${LD_LIBRARY_PATH}"
fi
fi
# ----- Set envoronment variables used by OCCT -----
@@ -98,4 +113,5 @@ fi
if [ -e "${CASROOT}/src/DrawResourcesProducts" ]; then
export CSF_DrawPluginProductsDefaults="${CASROOT}/src/DrawResourcesProducts"
fi
fi

View File

@@ -0,0 +1,3 @@
#freeimage
THIRDPARTY_PRODUCT("FREEIMAGE" "FreeImage.h" "freeimage" "freeimaged")

View File

@@ -0,0 +1,9 @@
#freeimageplus
if (WIN32)
if (3RDPARTY_FREEIMAGE_DIR AND NOT 3RDPARTY_FREEIMAGEPLUS_DIR)
set (3RDPARTY_FREEIMAGEPLUS_DIR "${3RDPARTY_FREEIMAGE_DIR}" CACHE PATH "The directory containing freeimageplus" FORCE)
endif()
THIRDPARTY_PRODUCT("FREEIMAGEPLUS" "FreeImagePlus.h" "freeimageplus" "freeimageplusd")
endif()

View File

@@ -0,0 +1,242 @@
# freetype
if (NOT DEFINED INSTALL_FREETYPE)
set (INSTALL_FREETYPE OFF CACHE BOOL "Is freetype required to be copied into install directory")
endif()
if (NOT DEFINED 3RDPARTY_FREETYPE_DIR)
set (3RDPARTY_FREETYPE_DIR "" CACHE PATH "The directory containing freetype")
endif()
# store ENV{FREETYPE_DIR}
SET (CACHED_FREETYPE_DIR $ENV{FREETYPE_DIR})
# include occt macros. compiler_bitness, os_wiht_bit, compiler and build_postfix
OCCT_INCLUDE_CMAKE_FILE ("adm/templates/occt_macros")
OCCT_MAKE_COMPILER_SHORT_NAME()
OCCT_MAKE_COMPILER_BITNESS()
if (NOT ENV{FREETYPE_DIR})
# search for freetype in user defined directory
if (NOT 3RDPARTY_FREETYPE_DIR AND 3RDPARTY_DIR)
FIND_PRODUCT_DIR("${3RDPARTY_DIR}" FREETYPE FREETYPE_DIR_NAME)
if (FREETYPE_DIR_NAME)
set (3RDPARTY_FREETYPE_DIR "${3RDPARTY_DIR}/${FREETYPE_DIR_NAME}" CACHE PATH "The directory containing freetype" FORCE)
endif()
endif()
if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}")
set (ENV{FREETYPE_DIR} "${3RDPARTY_FREETYPE_DIR}")
endif()
endif()
if (NOT DEFINED 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build)
set (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build "" CACHE FILEPATH "the path of ft2build.h")
endif()
if (NOT DEFINED 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2)
set (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 "" CACHE FILEPATH "the path of freetype2")
endif()
if (NOT DEFINED 3RDPARTY_FREETYPE_LIBRARY OR NOT 3RDPARTY_FREETYPE_LIBRARY_DIR)
set (3RDPARTY_FREETYPE_LIBRARY "" CACHE FILEPATH "freetype library")
endif()
if (NOT DEFINED 3RDPARTY_FREETYPE_LIBRARY_DIR)
set (3RDPARTY_FREETYPE_LIBRARY_DIR "" CACHE FILEPATH "The directory containing freetype library")
endif()
if (WIN32)
if (NOT DEFINED 3RDPARTY_FREETYPE_DLL OR NOT 3RDPARTY_FREETYPE_DLL_DIR)
set (3RDPARTY_FREETYPE_DLL "" CACHE FILEPATH "freetype shared library")
endif()
endif()
if (WIN32)
if (NOT DEFINED 3RDPARTY_FREETYPE_DLL_DIR)
set (3RDPARTY_FREETYPE_DLL_DIR "" CACHE FILEPATH "The directory containing freetype shared library")
endif()
endif()
message (STATUS "Info: CMake default freetype search start...")
find_package(Freetype)
message (STATUS "Info: CMake default freetype search end")
# ft2build header
if (FREETYPE_INCLUDE_DIR_ft2build AND EXISTS "${FREETYPE_INCLUDE_DIR_ft2build}")
if (NOT 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build)
set (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build "${FREETYPE_INCLUDE_DIR_ft2build}" CACHE FILEPATH "the path of ft2build.h" FORCE)
endif()
endif()
if (NOT FREETYPE_INCLUDE_DIR_freetype2 OR NOT EXISTS "${FREETYPE_INCLUDE_DIR_freetype2}")
# cmake (version is < 3.0) doesn't find ftheader.h of freetype (version is >= 2.5.1)
# do search taking into account freetype structure of 2.5.1 version
message (STATUS "Info: CMake default search doesn't found FREETYPE_INCLUDE_DIR_freetype2")
find_path (FREETYPE_INCLUDE_DIR_freetype2 NAMES
freetype/config/ftheader.h
config/ftheader.h
HINTS
ENV FREETYPE_DIR
PATHS
/usr/X11R6
/usr/local/X11R6
/usr/local/X11
/usr/freeware
PATH_SUFFIXES include/freetype2 include freetype2
NO_DEFAULT_PATH)
find_path (FREETYPE_INCLUDE_DIR_freetype2 NAMES freetype/config/ftheader.h config/ftheader.h)
if (NOT FREETYPE_INCLUDE_DIR_freetype2 OR NOT EXISTS "${FREETYPE_INCLUDE_DIR_freetype2}")
message (STATUS "Info: FREETYPE_INCLUDE_DIR_freetype2 is NOT found by additional search")
else()
message (STATUS "Info: FREETYPE_INCLUDE_DIR_freetype2 is found by additional search")
endif()
elseif (FREETYPE_INCLUDE_DIR_freetype2 OR EXISTS "${FREETYPE_INCLUDE_DIR_freetype2}")
if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}")
get_filename_component (3RDPARTY_FREETYPE_DIR_ABS "${3RDPARTY_FREETYPE_DIR}" ABSOLUTE)
get_filename_component (FREETYPE_INCLUDE_DIR_freetype2_ABS "${FREETYPE_INCLUDE_DIR_freetype2}" ABSOLUTE)
string (REGEX MATCH "${3RDPARTY_FREETYPE_DIR_ABS}" DOES_PATH_CONTAIN "${FREETYPE_INCLUDE_DIR_freetype2_ABS}")
if (NOT DOES_PATH_CONTAIN) # if cmake found freetype2 at different place from 3RDPARTY_FREETYPE_DIR
# search for freetype2 in 3RDPARTY_FREETYPE_DIR and if it will be found - replace freetyp2 path by new one
set (TMP_FREETYPE2 "TMP_FREETYPE2-NOTFOUND" CACHE FILEPATH "" FORCE)
find_path (TMP_FREETYPE2 NAMES freetype/config/ftheader.h config/ftheader.h
PATHS "${3RDPARTY_FREETYPE_DIR}"
PATH_SUFFIXES include/freetype2 include freetype2
NO_DEFAULT_PATH)
if (TMP_FREETYPE2 OR NOT EXISTS "${TMP_FREETYPE2}")
set (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 "${TMP_FREETYPE2}" CACHE FILEPATH "the path of freetype2" FORCE)
# hide and remove TMP_FREETYPE2
mark_as_advanced (TMP_FREETYPE2)
unset (TMP_FREETYPE2)
endif()
endif()
endif()
endif()
# return ENV{FREETYPE_DIR}
SET (ENV{FREETYPE_DIR} ${CACHED_FREETYPE_DIR})
# freetype2 header
if (FREETYPE_INCLUDE_DIR_freetype2 AND EXISTS "${FREETYPE_INCLUDE_DIR_freetype2}")
if (NOT 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2)
set (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 "${FREETYPE_INCLUDE_DIR_freetype2}" CACHE FILEPATH "the path of freetype2" FORCE)
endif()
endif()
if (NOT 3RDPARTY_FREETYPE_LIBRARY_DIR)
set (3RDPARTY_FREETYPE_LIBRARY "" CACHE FILEPATH "freetype library" FORCE)
elseif (3RDPARTY_FREETYPE_LIBRARY AND EXISTS "${3RDPARTY_FREETYPE_LIBRARY}")
get_filename_component(3RDPARTY_FREETYPE_LIBRARY_DIR_TMP "${3RDPARTY_FREETYPE_LIBRARY}" PATH)
if (NOT "${3RDPARTY_FREETYPE_LIBRARY_DIR}" STREQUAL "${3RDPARTY_FREETYPE_LIBRARY_DIR_TMP}")
set (3RDPARTY_FREETYPE_LIBRARY "" CACHE FILEPATH "freetype library" FORCE)
endif()
endif()
if (WIN32)
if (NOT 3RDPARTY_FREETYPE_DLL_DIR)
set (3RDPARTY_FREETYPE_DLL "" CACHE FILEPATH "freetype shared library" FORCE)
elseif (3RDPARTY_FREETYPE_DLL AND EXISTS "${3RDPARTY_FREETYPE_DLL}")
get_filename_component(3RDPARTY_FREETYPE_DLL_DIR_TMP "${3RDPARTY_FREETYPE_DLL}" PATH)
if (NOT "${3RDPARTY_FREETYPE_DLL_DIR}" STREQUAL "${3RDPARTY_FREETYPE_DLL_DIR_TMP}")
set (3RDPARTY_FREETYPE_DLL "" CACHE FILEPATH "freetype shared library" FORCE)
endif()
endif()
endif()
# freetype library
if (FREETYPE_LIBRARY AND EXISTS "${FREETYPE_LIBRARY}")
if (NOT 3RDPARTY_FREETYPE_LIBRARY)
set (3RDPARTY_FREETYPE_LIBRARY "${FREETYPE_LIBRARY}" CACHE FILEPATH "freetype library" FORCE)
endif()
if (3RDPARTY_FREETYPE_LIBRARY AND EXISTS "${3RDPARTY_FREETYPE_LIBRARY}")
get_filename_component (3RDPARTY_FREETYPE_LIBRARY_DIR "${3RDPARTY_FREETYPE_LIBRARY}" PATH)
set (3RDPARTY_FREETYPE_LIBRARY_DIR "${3RDPARTY_FREETYPE_LIBRARY_DIR}" CACHE FILEPATH "The directory containing freetype library" FORCE)
endif()
if (WIN32)
set (CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".dll")
if (NOT 3RDPARTY_FREETYPE_DLL OR NOT EXISTS "${3RDPARTY_FREETYPE_DLL}")
get_filename_component (FREETYPE_LIBRARY_PARENT_DIR "${3RDPARTY_FREETYPE_LIBRARY_DIR}" PATH) # parent of the library directory
set (3RDPARTY_FREETYPE_DLL "3RDPARTY_FREETYPE_DLL-NOTFOUND" CACHE FILEPATH "freetype shared library" FORCE)
find_library (3RDPARTY_FREETYPE_DLL freetype PATHS "${FREETYPE_LIBRARY_PARENT_DIR}/bin" NO_DEFAULT_PATH)
endif()
if (3RDPARTY_FREETYPE_DLL AND EXISTS "${3RDPARTY_FREETYPE_DLL}")
get_filename_component (3RDPARTY_FREETYPE_DLL_DIR "${3RDPARTY_FREETYPE_DLL}" PATH)
set (3RDPARTY_FREETYPE_DLL_DIR "${3RDPARTY_FREETYPE_DLL_DIR}" CACHE FILEPATH "The directory containing freetype shared library" FORCE)
endif()
endif()
endif()
if (NOT 3RDPARTY_FREETYPE_LIBRARY_DIR OR NOT EXISTS "${3RDPARTY_FREETYPE_LIBRARY_DIR}")
set (3RDPARTY_FREETYPE_LIBRARY_DIR "" CACHE FILEPATH "The directory containing freetype library" FORCE)
endif()
if (WIN32)
if (NOT 3RDPARTY_FREETYPE_DLL_DIR OR NOT EXISTS "${3RDPARTY_FREETYPE_DLL_DIR}")
set (3RDPARTY_FREETYPE_DLL_DIR "" CACHE FILEPATH "The directory containing shared freetype library" FORCE)
endif()
endif()
# include found paths to common variables
if (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build)
list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build}")
else()
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build)
endif()
if (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2)
list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2}")
else()
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2)
endif()
if (3RDPARTY_FREETYPE_LIBRARY)
list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_FREETYPE_LIBRARY_DIR}")
else()
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FREETYPE_LIBRARY_DIR)
endif()
if (WIN32)
if (NOT 3RDPARTY_FREETYPE_DLL OR NOT EXISTS "${3RDPARTY_FREETYPE_DLL}")
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FREETYPE_DLL_DIR)
endif()
endif()
if (INSTALL_FREETYPE)
OCCT_MAKE_OS_WITH_BITNESS()
OCCT_MAKE_BUILD_POSTFIX()
if (WIN32)
install (FILES "${3RDPARTY_FREETYPE_DLL}" DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bin${BUILD_POSTFIX}")
else()
install (FILES "${3RDPARTY_FREETYPE_LIBRARY}" DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/lib${BUILD_POSTFIX}")
endif()
set (USED_3RDPARTY_FREETYPE_DIR "")
else()
# the library directory for using by the executable
if (WIN32)
set (USED_3RDPARTY_FREETYPE_DIR ${3RDPARTY_FREETYPE_DLL_DIR})
else()
set (USED_3RDPARTY_FREETYPE_DIR ${3RDPARTY_FREETYPE_LIBRARY_DIR})
endif()
endif()
# unset all redundant variables
OCCT_CHECK_AND_UNSET(FREETYPE_INCLUDE_DIR_ft2build)
OCCT_CHECK_AND_UNSET(FREETYPE_INCLUDE_DIR_freetype2)
OCCT_CHECK_AND_UNSET(FREETYPE_LIBRARY)
mark_as_advanced (3RDPARTY_FREETYPE_LIBRARY 3RDPARTY_FREETYPE_DLL)

View File

@@ -0,0 +1,3 @@
#GL2PS
THIRDPARTY_PRODUCT("GL2PS" "gl2ps.h" "gl2ps" "gl2psd")

3
adm/templates/glx.cmake Normal file
View File

@@ -0,0 +1,3 @@
# glx
THIRDPARTY_PRODUCT("GLX" "GL/glx.h" "GL" "GLd")

View File

@@ -0,0 +1,68 @@
if (MSVC)
add_definitions(/fp:precise)
endif()
# set compiler short name and choose SSE2 option for appropriate MSVC compilers
# ONLY for 32-bit
if (NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
if (MSVC80 OR MSVC90 OR MSVC10)
add_definitions(/arch:SSE2)
endif()
endif()
add_definitions (-DCSFDB)
if (WIN32)
add_definitions (/DWNT -wd4996)
elseif (APPLE)
add_definitions (-fexceptions -fPIC -DOCC_CONVERT_SIGNALS -DHAVE_WOK_CONFIG_H -DHAVE_CONFIG_H)
else()
add_definitions (-fexceptions -fPIC -DOCC_CONVERT_SIGNALS -DHAVE_WOK_CONFIG_H -DHAVE_CONFIG_H -DLIN)
endif()
# enable structured exceptions for MSVC
string (REGEX MATCH "EHsc" ISFLAG "${CMAKE_CXX_FLAGS}")
if (ISFLAG)
string (REGEX REPLACE "EHsc" "EHa" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
elseif (WIN32)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -EHa")
endif()
# remove DEBUG flag if it exists
string (REGEX MATCH "-DDEBUG" IS_DEBUG_CXX "${CMAKE_CXX_FLAGS_DEBUG}")
if (IS_DEBUG_CXX)
message (STATUS "-DDEBUG has been removed from CMAKE_CXX_FLAGS_DEBUG")
string (REGEX REPLACE "-DDEBUG" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
endif()
string (REGEX MATCH "-DDEBUG" IS_DEBUG_C "${CMAKE_C_FLAGS_DEBUG}")
if (IS_DEBUG_C)
message (STATUS "-DDEBUG has been removed from CMAKE_C_FLAGS_DEBUG")
string (REGEX REPLACE "-DDEBUG" "" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
endif()
# enable parallel compilation on MSVC 9 and above
if (MSVC AND NOT MSVC70 AND NOT MSVC80)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -MP")
endif()
# generate a single response file which enlist all of the object files
SET(CMAKE_C_USE_RESPONSE_FILE_FOR_OBJECTS 1)
SET(CMAKE_CXX_USE_RESPONSE_FILE_FOR_OBJECTS 1)
# increase compiler warnings level (-W4 for MSVC, -Wall for GCC)
if (MSVC)
if (CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
string (REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
else()
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
endif()
elseif (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
endif()
set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DNo_Exception")
set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DNo_Exception")
set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEB")
set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DDEB")

View File

@@ -0,0 +1,201 @@
#
macro (OCCT_CHECK_AND_UNSET VARNAME)
if (DEFINED ${VARNAME})
unset (${VARNAME} CACHE)
endif()
endmacro()
macro (OCCT_CHECK_AND_UNSET_GROUP VARNAME)
OCCT_CHECK_AND_UNSET ("${VARNAME}_DIR")
OCCT_CHECK_AND_UNSET ("${VARNAME}_INCLUDE_DIR")
OCCT_CHECK_AND_UNSET ("${VARNAME}_LIBRARY")
OCCT_CHECK_AND_UNSET ("${VARNAME}_LIBRARY_DIR")
OCCT_CHECK_AND_UNSET ("${VARNAME}_DLL")
OCCT_CHECK_AND_UNSET ("${VARNAME}_DLL_DIR")
endmacro()
# BUILD_POSTFIX, IS_BUILD_DEBUG variables
macro (OCCT_MAKE_BUILD_POSTFIX)
if ("${BUILD_CONFIGURATION}" STREQUAL "Debug")
set (BUILD_POSTFIX "d")
set (IS_BUILD_DEBUG "")
else()
set (BUILD_POSTFIX "")
OCCT_CHECK_AND_UNSET (IS_BUILD_DEBUG)
endif()
endmacro()
# COMPILER_BITNESS variable
macro (OCCT_MAKE_COMPILER_BITNESS)
math (EXPR COMPILER_BITNESS "32 + 32*(${CMAKE_SIZEOF_VOID_P}/8)")
endmacro()
# OS_WITH_BIT
macro (OCCT_MAKE_OS_WITH_BITNESS)
OCCT_MAKE_COMPILER_BITNESS()
if (WIN32)
set (OS_WITH_BIT "win${COMPILER_BITNESS}")
elseif(APPLE)
set (OS_WITH_BIT "mac${COMPILER_BITNESS}")
else()
set (OS_WITH_BIT "lin${COMPILER_BITNESS}")
endif()
endmacro()
# COMPILER variable
macro (OCCT_MAKE_COMPILER_SHORT_NAME)
if (MSVC)
if (MSVC70)
set (COMPILER vc7)
elseif (MSVC80)
set (COMPILER vc8)
elseif (MSVC90)
set (COMPILER vc9)
elseif (MSVC10)
set (COMPILER vc10)
elseif (MSVC11)
set (COMPILER vc11)
elseif (MSVC12)
set (COMPILER vc12)
endif()
elseif (DEFINED CMAKE_COMPILER_IS_GNUCC)
set (COMPILER gcc)
elseif (DEFINED CMAKE_COMPILER_IS_GNUCXX)
set (COMPILER gxx)
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
set (COMPILER clang)
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
set (COMPILER icc)
else()
set (COMPILER ${CMAKE_GENERATOR})
string (REGEX REPLACE " " "" COMPILER ${COMPILER})
endif()
endmacro()
function (SUBDIRECTORY_NAMES MAIN_DIRECTORY RESULT)
file (GLOB SUB_ITEMS "${MAIN_DIRECTORY}/*")
foreach (ITEM ${SUB_ITEMS})
if (IS_DIRECTORY "${ITEM}")
get_filename_component (ITEM_NAME "${ITEM}" NAME)
list (APPEND LOCAL_RESULT "${ITEM_NAME}")
endif()
endforeach()
set (${RESULT} ${LOCAL_RESULT} PARENT_SCOPE)
endfunction()
function (FIND_PRODUCT_DIR ROOT_DIR PRODUCT_NAME RESULT)
OCCT_MAKE_COMPILER_SHORT_NAME()
OCCT_MAKE_COMPILER_BITNESS()
string (TOLOWER "${PRODUCT_NAME}" lower_PRODUCT_NAME)
list (APPEND SEARCH_TEMPLATES "${lower_PRODUCT_NAME}.*${COMPILER}.*${COMPILER_BITNESS}")
list (APPEND SEARCH_TEMPLATES "${lower_PRODUCT_NAME}.*[0-9.]+.*${COMPILER}.*${COMPILER_BITNESS}")
list (APPEND SEARCH_TEMPLATES "${lower_PRODUCT_NAME}.*[0-9.]+.*${COMPILER_BITNESS}")
list (APPEND SEARCH_TEMPLATES "${lower_PRODUCT_NAME}.*[0-9.]+")
list (APPEND SEARCH_TEMPLATES "${lower_PRODUCT_NAME}")
SUBDIRECTORY_NAMES ("${ROOT_DIR}" SUBDIR_NAME_LIST)
foreach (SEARCH_TEMPLATE ${SEARCH_TEMPLATES})
if (LOCAL_RESULT)
BREAK()
endif()
foreach (SUBDIR_NAME ${SUBDIR_NAME_LIST})
string (TOLOWER "${SUBDIR_NAME}" lower_SUBDIR_NAME)
string (REGEX MATCH "${SEARCH_TEMPLATE}" DUMMY_VAR "${lower_SUBDIR_NAME}")
if (DUMMY_VAR)
list (APPEND LOCAL_RESULT ${SUBDIR_NAME})
endif()
endforeach()
endforeach()
if (LOCAL_RESULT)
list (LENGTH "${LOCAL_RESULT}" LOC_LEN)
math (EXPR LAST_ELEMENT_INDEX "${LOC_LEN}-1")
list (GET LOCAL_RESULT ${LAST_ELEMENT_INDEX} DUMMY)
set (${RESULT} ${DUMMY} PARENT_SCOPE)
endif()
endfunction()
macro (OCCT_INSTALL_FILE_OR_DIR BEING_INSTALLED_OBJECT DESTINATION_PATH)
if (BUILD_PATCH_DIR AND EXISTS "${BUILD_PATCH_DIR}/${BEING_INSTALLED_OBJECT}")
if (IS_DIRECTORY "${BUILD_PATCH_DIR}/${BEING_INSTALLED_OBJECT}")
# first of all, install original files
install (DIRECTORY "${CMAKE_SOURCE_DIR}/${BEING_INSTALLED_OBJECT}" DESTINATION "${DESTINATION_PATH}")
# secondly, rewrite original files with patched ones
install (DIRECTORY "${BUILD_PATCH_DIR}/${BEING_INSTALLED_OBJECT}" DESTINATION "${DESTINATION_PATH}")
else()
install (FILES "${BUILD_PATCH_DIR}/${BEING_INSTALLED_OBJECT}" DESTINATION "${DESTINATION_PATH}")
endif()
else()
if (IS_DIRECTORY "${CMAKE_SOURCE_DIR}/${BEING_INSTALLED_OBJECT}")
install (DIRECTORY "${CMAKE_SOURCE_DIR}/${BEING_INSTALLED_OBJECT}" DESTINATION "${DESTINATION_PATH}")
else()
install (FILES "${CMAKE_SOURCE_DIR}/${BEING_INSTALLED_OBJECT}" DESTINATION "${DESTINATION_PATH}")
endif()
endif()
endmacro()
macro (OCCT_CONFIGURE_AND_INSTALL BEING_CONGIRUGED_FILE FINAL_NAME DESTINATION_PATH)
if (BUILD_PATCH_DIR AND EXISTS "${BUILD_PATCH_DIR}/${BEING_CONGIRUGED_FILE}")
configure_file("${BUILD_PATCH_DIR}/${BEING_CONGIRUGED_FILE}" "${FINAL_NAME}" @ONLY)
else()
configure_file("${CMAKE_SOURCE_DIR}/${BEING_CONGIRUGED_FILE}" "${FINAL_NAME}" @ONLY)
endif()
install(FILES "${OCCT_BINARY_DIR}/${FINAL_NAME}" DESTINATION "${DESTINATION_PATH}")
endmacro()
function (OCCT_IS_PRODUCT_REQUIRED CSF_VAR_NAME USE_PRODUCT)
set (${USE_PRODUCT} OFF PARENT_SCOPE)
if (NOT USED_TOOLKITS)
message(STATUS "Warning: the list of being used toolkits is empty")
else()
foreach (USED_TOOLKIT ${USED_TOOLKITS})
if (BUILD_PATCH_DIR AND EXISTS "${BUILD_PATCH_DIR}/src/${USED_TOOLKIT}/EXTERNLIB")
file (READ "${BUILD_PATCH_DIR}/src/${USED_TOOLKIT}/EXTERNLIB" FILE_CONTENT)
elseif (EXISTS "${CMAKE_SOURCE_DIR}/src/${USED_TOOLKIT}/EXTERNLIB")
file (READ "${CMAKE_SOURCE_DIR}/src/${USED_TOOLKIT}/EXTERNLIB" FILE_CONTENT)
endif()
string (REGEX MATCH "${CSF_VAR_NAME}" DOES_FILE_CONTAIN "${FILE_CONTENT}")
if (DOES_FILE_CONTAIN)
set (${USE_PRODUCT} ON PARENT_SCOPE)
break()
endif()
endforeach()
endif()
endfunction()

View File

@@ -0,0 +1,27 @@
#OpenCl
SET (3RDPARTY_OPENCL_ADDITIONAL_PATH_FOR_HEADER $ENV{AMDAPPSDKROOT}/include
$ENV{INTELOCLSDKROOT}/include
$ENV{NVSDKCOMPUTE_ROOT}/OpenCL/common/inc
$ENV{ATISTREAMSDKROOT}/include)
IF(${COMPILER_BITNESS} STREQUAL 32)
SET (3RDPARTY_OPENCL_ADDITIONAL_PATH_FOR_LIB $ENV{AMDAPPSDKROOT}/lib/x86
$ENV{INTELOCLSDKROOT}/lib/x86
$ENV{NVSDKCOMPUTE_ROOT}/OpenCL/common/lib/Win32
$ENV{ATISTREAMSDKROOT}/lib/x86)
ELSEIF(${COMPILER_BITNESS} STREQUAL 64)
SET (3RDPARTY_OPENCL_ADDITIONAL_PATH_FOR_LIB $ENV{AMDAPPSDKROOT}/lib/x86_64
$ENV{INTELOCLSDKROOT}/lib/x64
$ENV{NVSDKCOMPUTE_ROOT}/OpenCL/common/lib/x64
$ENV{ATISTREAMSDKROOT}/lib/x86_64)
ENDIF()
THIRDPARTY_PRODUCT("OPENCL" "CL/cl.h" "OpenCL" "OpenCLd")
# if CL/cl.h isn't found (and 3RDPARTY_OPENCL_INCLUDE_DIR isn't defined)
# then try to find OpenCL/cl.h (all other variable won't be changed)
IF(NOT 3RDPARTY_OPENCL_INCLUDE_DIR OR NOT EXISTS "${3RDPARTY_OPENCL_INCLUDE_DIR}")
THIRDPARTY_PRODUCT("OPENCL" "OpenCL/cl.h" "OpenCL" "OpenCLd")
ENDIF()

View File

@@ -2,7 +2,9 @@
if ["%1"] == [""] (
echo Launch selected sample as follows:
echo sample.bat SampleName
echo sample.bat SampleName vc10 win32 d
echo or to use last sample build configuration:
echo sample.bat SampleName
echo available samples:
echo Geometry
echo Modeling
@@ -17,12 +19,13 @@ if ["%1"] == [""] (
exit /B
)
if not exist "%~dp0/bin/%1.exe" (
echo Executable %~dp0/bin/%4.exe not found.
call "%~dp0env.bat" %2 %3 %4
if not exist "%~dp0/%BIN_TAIL%/%1.exe" (
echo Executable %~dp0/%BIN_TAIL%/%1.exe not found.
echo Probably you didn't compile the application.
exit /B
)
call "%~dp0/env.bat"
"%~dp0/%BIN_TAIL%/%1.exe"
"%~dp0/bin/%1.exe"

View File

@@ -1,109 +1,250 @@
# Find tbb includes and libraries
IF(${COMPILER_BITNESS} STREQUAL 32)
SET (TBB_ARCH_NAME ia32)
ELSE()
SET (TBB_ARCH_NAME intel64)
ENDIF()
IF(NOT DEFINED 3RDPARTY_TBB_DIR)
SET(3RDPARTY_TBB_DIR "" CACHE PATH "Directory contains tbb product")
ENDIF()
SET(3RDPARTY_TBB_DIR_NAME "")
IF(3RDPARTY_DIR AND ("${3RDPARTY_TBB_DIR}" STREQUAL "" OR CHANGES_ARE_NEEDED))
FIND_PRODUCT_DIR("${3RDPARTY_DIR}" "TBB" 3RDPARTY_TBB_DIR_NAME)
IF("${3RDPARTY_TBB_DIR_NAME}" STREQUAL "")
MESSAGE(STATUS "TBB DON'T FIND")
ELSE()
SET(3RDPARTY_TBB_DIR "${3RDPARTY_DIR}/${3RDPARTY_TBB_DIR_NAME}" CACHE PATH "Directory contains tbb product" FORCE)
ENDIF()
ENDIF()
SET(INSTALL_TBB OFF CACHE BOOL "Is tbb lib copy to install directory")
# tbb
IF(3RDPARTY_TBB_DIR)
IF("${3RDPARTY_TBB_INCLUDE_DIR}" STREQUAL "" OR CHANGES_ARE_NEEDED)
SET(3RDPARTY_TBB_INCLUDE_DIR "3RDPARTY_TBB_INCLUDE_DIR-NOTFOUND" CACHE PATH "Directory contains headers of the tbb product" FORCE)
FIND_PATH(3RDPARTY_TBB_INCLUDE_DIR tbb/tbb.h PATHS "${3RDPARTY_TBB_DIR}/include")
ENDIF()
OCCT_MAKE_BUILD_POSTFIX()
SET(TBB_DEBUG_POSTFIX "")
if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
SET(TBB_DEBUG_POSTFIX "_debug")
ENDIF()
if (NOT DEFINED INSTALL_TBB)
set (INSTALL_TBB OFF CACHE BOOL "Is tbb required to be copied into install directory")
endif()
# tbb directory
if (NOT DEFINED 3RDPARTY_TBB_DIR)
set (3RDPARTY_TBB_DIR "" CACHE PATH "The directory containing tbb")
endif()
# tbb include directory
if (NOT DEFINED 3RDPARTY_TBB_INCLUDE_DIR)
set (3RDPARTY_TBB_INCLUDE_DIR "" CACHE FILEPATH "The directory containing headers of the tbb")
endif()
# tbb library file (with absolute path)
if (NOT DEFINED 3RDPARTY_TBB_LIBRARY OR NOT 3RDPARTY_TBB_LIBRARY_DIR)
set (3RDPARTY_TBB_LIBRARY "" CACHE FILEPATH "tbb library" FORCE)
endif()
# tbb library directory
if (NOT DEFINED 3RDPARTY_TBB_LIBRARY_DIR)
set (3RDPARTY_TBB_LIBRARY_DIR "" CACHE FILEPATH "The directory containing tbb library")
endif()
# tbb malloc library file (with absolute path)
if (NOT DEFINED 3RDPARTY_TBBMALLOC_LIBRARY OR NOT 3RDPARTY_TBBMALLOC_LIBRARY_DIR)
set (3RDPARTY_TBBMALLOC_LIBRARY "" CACHE FILEPATH "tbb malloc library" FORCE)
endif()
# tbb malloc library directory
if (NOT DEFINED 3RDPARTY_TBBMALLOC_LIBRARY_DIR)
set (3RDPARTY_TBBMALLOC_LIBRARY_DIR "" CACHE FILEPATH "The directory containing tbb malloc library")
endif()
# tbb shared library (with absolute path)
if (WIN32)
if (NOT DEFINED 3RDPARTY_TBB_DLL OR NOT 3RDPARTY_TBB_DLL_DIR)
set (3RDPARTY_TBB_DLL "" CACHE FILEPATH "tbb shared library" FORCE)
endif()
endif()
# tbb shared library directory
if (WIN32 AND NOT DEFINED 3RDPARTY_TBB_DLL_DIR)
set (3RDPARTY_TBB_DLL_DIR "" CACHE FILEPATH "The directory containing tbb shared library")
endif()
# tbb malloc shared library (with absolute path)
if (WIN32)
if (NOT DEFINED 3RDPARTY_TBBMALLOC_DLL OR NOT 3RDPARTY_TBBMALLOC_DLL_DIR)
set (3RDPARTY_TBBMALLOC_DLL "" CACHE FILEPATH "tbb malloc shared library" FORCE)
endif()
endif()
# tbb malloc shared library directory
if (NOT DEFINED 3RDPARTY_TBBMALLOC_DLL_DIR)
set (3RDPARTY_TBBMALLOC_DLL_DIR "" CACHE FILEPATH "The directory containing tbb malloc shared library")
endif()
# include occt macros. compiler_bitness, os_wiht_bit, compiler and build_postfix
OCCT_INCLUDE_CMAKE_FILE ("adm/templates/occt_macros")
# search for product directory inside 3RDPARTY_DIR directory
if (NOT 3RDPARTY_TBB_DIR AND 3RDPARTY_DIR)
FIND_PRODUCT_DIR ("${3RDPARTY_DIR}" "TBB" TBB_DIR_NAME)
if (TBB_DIR_NAME)
message (STATUS "Info: TBB: ${TBB_DIR_NAME} folder is used")
set (3RDPARTY_TBB_DIR "${3RDPARTY_DIR}/${TBB_DIR_NAME}" CACHE PATH "The directory containing tbb" FORCE)
endif()
endif()
OCCT_MAKE_COMPILER_BITNESS()
if (${COMPILER_BITNESS} STREQUAL 32)
set (TBB_ARCH_NAME ia32)
else()
set (TBB_ARCH_NAME intel64)
endif()
# search for include directory in defined 3rdparty directory
if (NOT 3RDPARTY_TBB_INCLUDE_DIR OR NOT EXISTS "${3RDPARTY_TBB_INCLUDE_DIR}")
set (3RDPARTY_TBB_INCLUDE_DIR "3RDPARTY_TBB_INCLUDE_DIR-NOTFOUND" CACHE FILEPATH "The directory containing the headers of tbb" FORCE)
find_path (3RDPARTY_TBB_INCLUDE_DIR tbb/tbb.h PATHS "${3RDPARTY_TBB_DIR}/include")
endif()
if (NOT 3RDPARTY_TBB_INCLUDE_DIR OR NOT EXISTS "${3RDPARTY_TBB_INCLUDE_DIR}")
set (3RDPARTY_TBB_INCLUDE_DIR "" CACHE FILEPATH "The directory containing the headers of tbb" FORCE)
endif()
OCCT_MAKE_COMPILER_SHORT_NAME()
# TBB_COMPILER_FOLER
#if (WIN32)
set (TBB_COMPILER_FOLER ${COMPILER})
#else()
# set (TBB_COMPILER_FOLER ${COMPILER})
#endif()
OCCT_MAKE_BUILD_POSTFIX()
# search for tbb and tbb malloc library in defined 3rdparty directory
foreach (LIBRARY_NAME TBB TBBMALLOC)
if (NOT 3RDPARTY_${LIBRARY_NAME}_LIBRARY_DIR)
set (3RDPARTY_${LIBRARY_NAME}_LIBRARY "" CACHE FILEPATH "${LIBRARY_NAME} library" FORCE)
elseif (3RDPARTY_${LIBRARY_NAME}_LIBRARY AND EXISTS "${3RDPARTY_${LIBRARY_NAME}_LIBRARY}")
get_filename_component(3RDPARTY_${LIBRARY_NAME}_LIBRARY_DIR_TMP "${3RDPARTY_${LIBRARY_NAME}_LIBRARY}" PATH)
if (NOT "${3RDPARTY_${LIBRARY_NAME}_LIBRARY_DIR}" STREQUAL "${3RDPARTY_${LIBRARY_NAME}_LIBRARY_DIR_TMP}")
set (3RDPARTY_${LIBRARY_NAME}_LIBRARY "" CACHE FILEPATH "${LIBRARY_NAME} library" FORCE)
endif()
endif()
if (NOT 3RDPARTY_${LIBRARY_NAME}_LIBRARY OR NOT EXISTS "${3RDPARTY_${LIBRARY_NAME}_LIBRARY}")
set (3RDPARTY_${LIBRARY_NAME}_LIBRARY "3RDPARTY_${LIBRARY_NAME}_LIBRARY-NOTFOUND" CACHE FILEPATH "Path to library of ${LIBRARY_NAME}" FORCE)
# first of all, search for debug version of a library if build type is debug
if (DEFINED IS_BUILD_DEBUG)
find_library (3RDPARTY_${LIBRARY_NAME}_LIBRARY ${LIBRARY_NAME}_debug
PATHS
"${3RDPARTY_${LIBRARY_NAME}_LIBRARY_DIR}"
"${3RDPARTY_TBB_DIR}/libd/${TBB_ARCH_NAME}/${TBB_COMPILER_FOLER}"
"${3RDPARTY_TBB_DIR}/lib/${TBB_ARCH_NAME}/${TBB_COMPILER_FOLER}"
NO_DEFAULT_PATH)
# second search if previous one do not find anything
find_library (3RDPARTY_${LIBRARY_NAME}_LIBRARY ${LIBRARY_NAME}_debug)
endif()
# if build type is release or debug version of library isn't found - search for release version of one
if (NOT 3RDPARTY_${LIBRARY_NAME}_LIBRARY OR NOT EXISTS "${3RDPARTY_${LIBRARY_NAME}_LIBRARY}")
set (3RDPARTY_${LIBRARY_NAME}_LIBRARY "3RDPARTY_${LIBRARY_NAME}_LIBRARY-NOTFOUND" CACHE FILEPATH "Path to library of ${LIBRARY_NAME}" FORCE)
if (DEFINED IS_BUILD_DEBUG)
message (STATUS "Warning: debug version of ${LIBRARY_NAME} library isn't found (${LIBRARY_NAME}_debug) in ${3RDPARTY_TBB_DIR}/lib(d). Search for release one")
endif()
find_library (3RDPARTY_${LIBRARY_NAME}_LIBRARY ${LIBRARY_NAME}
PATHS
"${3RDPARTY_${LIBRARY_NAME}_LIBRARY_DIR}"
"${3RDPARTY_TBB_DIR}/lib/${TBB_ARCH_NAME}/${TBB_COMPILER_FOLER}"
NO_DEFAULT_PATH)
# second search if previous one do not find anything
find_library (3RDPARTY_${LIBRARY_NAME}_LIBRARY ${LIBRARY_NAME})
endif()
endif()
if (NOT 3RDPARTY_${LIBRARY_NAME}_LIBRARY_DIR OR NOT EXISTS "${3RDPARTY_${LIBRARY_NAME}_LIBRARY_DIR}")
get_filename_component(3RDPARTY_${LIBRARY_NAME}_LIBRARY_DIR "${3RDPARTY_${LIBRARY_NAME}_LIBRARY}" PATH)
set (3RDPARTY_${LIBRARY_NAME}_LIBRARY_DIR "${3RDPARTY_${LIBRARY_NAME}_LIBRARY_DIR}" CACHE FILEPATH "The directory containing ${LIBRARY_NAME} library" FORCE)
endif()
# search for dll in defined 3rdparty directory (just for win case)
if (WIN32)
set (CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".dll")
IF("${3RDPARTY_TBB_LIBRARY}" STREQUAL "" OR CHANGES_ARE_NEEDED OR "${3RDPARTY_TBB_LIBRARY}" STREQUAL "3RDPARTY_TBB_LIBRARY-NOTFOUND")
SET(3RDPARTY_TBB_LIBRARY "3RDPARTY_TBB_LIBRARY-NOTFOUND" CACHE PATH "Directory contains library of the tbb product" FORCE)
FIND_LIBRARY(3RDPARTY_TBB_LIBRARY tbb${TBB_DEBUG_POSTFIX} PATHS "${3RDPARTY_TBB_DIR}/lib/${TBB_ARCH_NAME}/${COMPILER}" NO_DEFAULT_PATH)
IF("${3RDPARTY_TBB_LIBRARY}" STREQUAL "3RDPARTY_TBB_LIBRARY-NOTFOUND")
FIND_LIBRARY(3RDPARTY_TBB_LIBRARY tbb${TBB_DEBUG_POSTFIX})
ENDIF()
ENDIF()
if (NOT 3RDPARTY_${LIBRARY_NAME}_DLL_DIR)
set (3RDPARTY_${LIBRARY_NAME}_DLL "" CACHE FILEPATH "${LIBRARY_NAME} shared library" FORCE)
elseif (3RDPARTY_${LIBRARY_NAME}_DLL AND EXISTS "${3RDPARTY_${LIBRARY_NAME}_DLL}")
get_filename_component(3RDPARTY_${LIBRARY_NAME}_DLL_DIR_TMP "${3RDPARTY_${LIBRARY_NAME}_DLL}" PATH)
if (NOT "${3RDPARTY_${LIBRARY_NAME}_DLL_DIR}" STREQUAL "${3RDPARTY_${LIBRARY_NAME}_DLL_DIR_TMP}")
set (3RDPARTY_${LIBRARY_NAME}_DLL "" CACHE FILEPATH "${LIBRARY_NAME} shared library" FORCE)
endif()
endif()
IF("${3RDPARTY_TBB_MALLOC_LIBRARY}" STREQUAL "" OR CHANGES_ARE_NEEDED OR "${3RDPARTY_TBB_MALLOC_LIBRARY}" STREQUAL "3RDPARTY_TBB_MALLOC_LIBRARY-NOTFOUND")
SET(3RDPARTY_TBB_MALLOC_LIBRARY "3RDPARTY_TBB_MALLOC_LIBRARY-NOTFOUND" CACHE PATH "Directory contains library of the tbb malloc product" FORCE)
FIND_LIBRARY(3RDPARTY_TBB_MALLOC_LIBRARY tbbmalloc${TBB_DEBUG_POSTFIX} PATHS "${3RDPARTY_TBB_DIR}/lib/${TBB_ARCH_NAME}/${COMPILER}" NO_DEFAULT_PATH)
IF("${3RDPARTY_TBB_MALLOC_LIBRARY}" STREQUAL "3RDPARTY_TBB_MALLOC_LIBRARY-NOTFOUND")
FIND_LIBRARY(3RDPARTY_TBB_MALLOC_LIBRARY tbbmalloc${TBB_DEBUG_POSTFIX})
ENDIF()
ENDIF()
IF("${3RDPARTY_TBB_DLL}" STREQUAL "" OR CHANGES_ARE_NEEDED)
SET(3RDPARTY_TBB_DLL "3RDPARTY_TBB_DLL-NOTFOUND" CACHE PATH "Directory contains shared library of the tbb product" FORCE)
FIND_FILE(3RDPARTY_TBB_DLL "${DLL_SO_PREFIX}tbb${TBB_DEBUG_POSTFIX}.${DLL_SO}" PATHS "${3RDPARTY_TBB_DIR}/${DLL_SO_FOLDER}/${TBB_ARCH_NAME}/${COMPILER}" NO_DEFAULT_PATH)
IF("${3RDPARTY_TBB_DLL}" STREQUAL "3RDPARTY_TBB_DLL-NOTFOUND")
FIND_FILE(3RDPARTY_TBB_DLL "${DLL_SO_PREFIX}tbb${TBB_DEBUG_POSTFIX}.${DLL_SO}")
ENDIF()
ENDIF()
IF("${3RDPARTY_TBB_MALLOC_DLL}" STREQUAL "" OR CHANGES_ARE_NEEDED)
SET(3RDPARTY_TBB_MALLOC_DLL "3RDPARTY_TBB_MALLOC_DLL-NOTFOUND" CACHE PATH "Directory contains shared library of the tbb malloc product" FORCE)
FIND_FILE(3RDPARTY_TBB_MALLOC_DLL "${DLL_SO_PREFIX}tbbmalloc${TBB_DEBUG_POSTFIX}.${DLL_SO}" PATHS "${3RDPARTY_TBB_DIR}/${DLL_SO_FOLDER}/${TBB_ARCH_NAME}/${COMPILER}" NO_DEFAULT_PATH)
IF("${3RDPARTY_TBB_MALLOC_DLL}" STREQUAL "3RDPARTY_TBB_MALLOC_DLL-NOTFOUND")
FIND_FILE(3RDPARTY_TBB_MALLOC_DLL "${DLL_SO_PREFIX}tbbmalloc${TBB_DEBUG_POSTFIX}.${DLL_SO}")
ENDIF()
ENDIF()
if (NOT 3RDPARTY_${LIBRARY_NAME}_DLL OR NOT EXISTS "${3RDPARTY_${LIBRARY_NAME}_DLL}")
set (3RDPARTY_${LIBRARY_NAME}_DLL "3RDPARTY_${LIBRARY_NAME}_DLL-NOTFOUND" CACHE FILEPATH "Path to shared library of ${LIBRARY_NAME}" FORCE)
MARK_AS_ADVANCED(3RDPARTY_TBB_DIR_NAME)
ELSE()
LIST(APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TBB_DIR)
ENDIF()
if (DEFINED IS_BUILD_DEBUG)
find_library (3RDPARTY_${LIBRARY_NAME}_DLL ${LIBRARY_NAME}_debug
PATHS
"${3RDPARTY_${LIBRARY_NAME}_DLL_DIR}"
"${3RDPARTY_TBB_DIR}/bind/${TBB_ARCH_NAME}/${TBB_COMPILER_FOLER}"
"${3RDPARTY_TBB_DIR}/bin/${TBB_ARCH_NAME}/${TBB_COMPILER_FOLER}"
NO_DEFAULT_PATH)
IF(3RDPARTY_TBB_INCLUDE_DIR)
SET(3RDPARTY_INCLUDE_DIRS "${3RDPARTY_INCLUDE_DIRS};${3RDPARTY_TBB_INCLUDE_DIR}")
ELSE()
LIST(APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TBB_INCLUDE_DIR)
ENDIF()
# second search if previous one do not find anything
find_library (3RDPARTY_${LIBRARY_NAME}_DLL ${LIBRARY_NAME}_debug)
endif()
IF(3RDPARTY_TBB_LIBRARY)
GET_FILENAME_COMPONENT(3RDPARTY_TBB_LIBRARY_DIR "${3RDPARTY_TBB_LIBRARY}" PATH)
SET(3RDPARTY_LIBRARY_DIRS "${3RDPARTY_LIBRARY_DIRS};${3RDPARTY_TBB_LIBRARY_DIR}")
ELSE()
LIST(APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TBB_LIBRARY)
ENDIF()
IF(3RDPARTY_TBB_MALLOC_LIBRARY)
GET_FILENAME_COMPONENT(3RDPARTY_TBB_LIBRARY_DIR "${3RDPARTY_TBB_MALLOC_LIBRARY}" PATH)
SET(3RDPARTY_LIBRARY_DIRS "${3RDPARTY_LIBRARY_DIRS};${3RDPARTY_TBB_LIBRARY_DIR}")
ELSE()
LIST(APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TBB_MALLOC_LIBRARY)
ENDIF()
IF(3RDPARTY_TBB_DLL)
#
ELSE()
LIST(APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TBB_DLL)
ENDIF()
IF(3RDPARTY_TBB_MALLOC_DLL)
#
ELSE()
LIST(APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TBB_MALLOC_DLL)
ENDIF()
if (NOT 3RDPARTY_${LIBRARY_NAME}_DLL OR NOT EXISTS "${3RDPARTY_${LIBRARY_NAME}_DLL}")
set (3RDPARTY_${LIBRARY_NAME}_DLL "3RDPARTY_${LIBRARY_NAME}_DLL-NOTFOUND" CACHE FILEPATH "Path to shared library of ${LIBRARY_NAME}" FORCE)
if (DEFINED IS_BUILD_DEBUG)
message (STATUS "Warning: debug version of ${LIBRARY_NAME} dll isn't found (${LIBRARY_NAME}_debug) in ${3RDPARTY_TBB_DIR}/bin(d). Search for release one")
endif()
find_library (3RDPARTY_${LIBRARY_NAME}_DLL ${LIBRARY_NAME}
PATHS
"${3RDPARTY_${LIBRARY_NAME}_DLL_DIR}"
"${3RDPARTY_TBB_DIR}/bin/${TBB_ARCH_NAME}/${TBB_COMPILER_FOLER}"
NO_DEFAULT_PATH)
# second search if previous one do not find anything
find_library (3RDPARTY_${LIBRARY_NAME}_DLL ${LIBRARY_NAME})
endif()
endif()
if (NOT 3RDPARTY_${LIBRARY_NAME}_DLL_DIR OR NOT EXISTS "${3RDPARTY_${LIBRARY_NAME}_DLL_DIR}")
get_filename_component(3RDPARTY_${LIBRARY_NAME}_DLL_DIR "${3RDPARTY_${LIBRARY_NAME}_DLL}" PATH)
set (3RDPARTY_${LIBRARY_NAME}_DLL_DIR "${3RDPARTY_${LIBRARY_NAME}_DLL_DIR}" CACHE FILEPATH "The directory containing ${LIBRARY_NAME} shared library" FORCE)
endif()
endif() # end dll search
endforeach() # end tbb / tbbmalloc
# include found paths to common variables
if (3RDPARTY_TBB_INCLUDE_DIR AND EXISTS "${3RDPARTY_TBB_INCLUDE_DIR}")
list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_TBB_INCLUDE_DIR}")
else()
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TBB_INCLUDE_DIR)
endif()
foreach (LIBRARY_NAME TBB TBBMALLOC)
if (3RDPARTY_${LIBRARY_NAME}_LIBRARY AND EXISTS "${3RDPARTY_${LIBRARY_NAME}_LIBRARY}")
list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_${LIBRARY_NAME}_LIBRARY_DIR}")
else()
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_${LIBRARY_NAME}_LIBRARY_DIR)
endif()
if (WIN32)
if (NOT 3RDPARTY_${LIBRARY_NAME}_DLL OR NOT EXISTS "${3RDPARTY_${LIBRARY_NAME}_DLL}")
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_${LIBRARY_NAME}_DLL_DIR)
endif()
endif()
endforeach()
# install tbb
if (INSTALL_TBB)
OCCT_MAKE_OS_WITH_BITNESS()
OCCT_MAKE_COMPILER_SHORT_NAME()
if (WIN32)
install (FILES ${3RDPARTY_TBB_DLL} ${3RDPARTY_TBBMALLOC_DLL} DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bin${BUILD_POSTFIX}")
else()
install (FILES ${3RDPARTY_TBB_LIBRARY} ${3RDPARTY_TBBMALLOC_LIBRARY} DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/lib${BUILD_POSTFIX}")
endif()
set (USED_3RDPARTY_TBB_DIR "")
else()
# the library directory for using by the executable
if (WIN32)
set (USED_3RDPARTY_TBB_DIR ${3RDPARTY_TBB_DLL_DIR})
else()
set (USED_3RDPARTY_TBB_DIR ${3RDPARTY_TBB_LIBRARY_DIR})
endif()
endif()
mark_as_advanced (3RDPARTY_TBB_LIBRARY 3RDPARTY_TBBMALLOC_LIBRARY 3RDPARTY_TBB_DLL 3RDPARTY_TBBMALLOC_DLL)

View File

@@ -1,163 +1,342 @@
# - Find Tcl includes and libraries
# tcl
IF(WIN32)
SET(TCL_SEP "")
if (NOT DEFINED INSTALL_TCL)
set (INSTALL_TCL OFF CACHE BOOL "Is tcl lib required to be copied into install directory")
endif()
GET_FILENAME_COMPONENT(ActiveTcl_CurrentVersion
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl;CurrentVersion]" NAME)
# tcl directory
if (NOT DEFINED 3RDPARTY_TCL_DIR)
set (3RDPARTY_TCL_DIR "" CACHE PATH "The directory containing tcl")
endif()
ELSE()
SET(TCL_SEP ".")
ENDIF()
# tcl include directory
if (NOT DEFINED 3RDPARTY_TCL_INCLUDE_DIR)
set (3RDPARTY_TCL_INCLUDE_DIR "" CACHE FILEPATH "The directory containing headers of tcl")
endif()
IF(NOT DEFINED 3RDPARTY_TCL_DIR)
SET(3RDPARTY_TCL_DIR "" CACHE PATH "Directory contains TCL product")
ENDIF()
# tk include directory
if (NOT DEFINED 3RDPARTY_TK_INCLUDE_DIR)
set (3RDPARTY_TK_INCLUDE_DIR "" CACHE FILEPATH "The directory containing headers of tk")
endif()
IF(3RDPARTY_DIR AND ("${3RDPARTY_TCL_DIR}" STREQUAL "" OR CHANGES_ARE_NEEDED))
# tcl library file (with absolute path)
if (NOT DEFINED 3RDPARTY_TCL_LIBRARY OR NOT 3RDPARTY_TCL_LIBRARY_DIR)
set (3RDPARTY_TCL_LIBRARY "" CACHE FILEPATH "tcl library" FORCE)
endif()
# tcl library directory
if (NOT DEFINED 3RDPARTY_TCL_LIBRARY_DIR)
set (3RDPARTY_TCL_LIBRARY_DIR "" CACHE FILEPATH "The directory containing tcl library")
endif()
# tk library file (with absolute path)
if (NOT DEFINED 3RDPARTY_TK_LIBRARY OR NOT 3RDPARTY_TK_LIBRARY_DIR)
set (3RDPARTY_TK_LIBRARY "" CACHE FILEPATH "tk library" FORCE)
endif()
# tk library directory
if (NOT DEFINED 3RDPARTY_TK_LIBRARY_DIR)
set (3RDPARTY_TK_LIBRARY_DIR "" CACHE FILEPATH "The directory containing tk library")
endif()
# tcl shared library (with absolute path)
if (WIN32)
if (NOT DEFINED 3RDPARTY_TCL_DLL OR NOT 3RDPARTY_TCL_DLL_DIR)
set (3RDPARTY_TCL_DLL "" CACHE FILEPATH "tcl shared library" FORCE)
endif()
endif()
# tcl shared library directory
if (WIN32 AND NOT DEFINED 3RDPARTY_TCL_DLL_DIR)
set (3RDPARTY_TCL_DLL_DIR "" CACHE FILEPATH "The directory containing tcl shared library")
endif()
# tk shared library (with absolute path)
if (WIN32)
if (NOT DEFINED 3RDPARTY_TK_DLL OR NOT 3RDPARTY_TK_DLL_DIR)
set (3RDPARTY_TK_DLL "" CACHE FILEPATH "tk shared library" FORCE)
endif()
endif()
# tk shared library directory
if (WIN32 AND NOT DEFINED 3RDPARTY_TK_DLL_DIR)
set (3RDPARTY_TK_DLL_DIR "" CACHE FILEPATH "The directory containing tk shared library")
endif()
# search for tcl in user defined directory
if (NOT 3RDPARTY_TCL_DIR AND 3RDPARTY_DIR)
FIND_PRODUCT_DIR("${3RDPARTY_DIR}" tcl TCL_DIR_NAME)
IF("${TCL_DIR_NAME}" STREQUAL "")
MESSAGE(STATUS "\nInfo: tcl folder isn't found in ${3RDPARTY_DIR}. Start seeking in default folders")
ELSE()
SET(3RDPARTY_TCL_DIR "${3RDPARTY_DIR}/${TCL_DIR_NAME}" CACHE PATH "Directory contains TCL product" FORCE)
ENDIF()
ENDIF()
SET(INSTALL_TCL OFF CACHE BOOL "Is TCL lib copy to install directory")
if (TCL_DIR_NAME)
set (3RDPARTY_TCL_DIR "${3RDPARTY_DIR}/${TCL_DIR_NAME}" CACHE PATH "The directory containing tcl" FORCE)
endif()
endif()
# include dir search
IF("${3RDPARTY_TCL_INCLUDE_DIR}" STREQUAL "" OR CHANGES_ARE_NEEDED OR "${3RDPARTY_TCL_INCLUDE_DIR}" STREQUAL "3RDPARTY_TCL_INCLUDE_DIR-NOTFOUND")
SET(3RDPARTY_TCL_INCLUDE_DIR "3RDPARTY_TCL_INCLUDE_DIR-NOTFOUND" CACHE FILEPATH "Directory contains headers of the TCL product" FORCE)
IF(NOT "${3RDPARTY_TCL_DIR}" STREQUAL "")
FIND_PATH(3RDPARTY_TCL_INCLUDE_DIR tcl.h PATHS "${3RDPARTY_TCL_DIR}/include" NO_DEFAULT_PATH)
ELSE()
SET(3RDPARTY_TCL_POSSIBLE_INCLUDE_DIRS /usr/include
/usr/local/include
/usr/include/tcl8${TCL_SEP}6
/usr/include/tcl8${TCL_SEP}5)
IF(WIN32)
SET(3RDPARTY_TCL_POSSIBLE_INCLUDE_DIRS ${3RDPARTY_TCL_POSSIBLE_INCLUDE_DIRS}
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl\\${ActiveTcl_CurrentVersion}]/include"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.6;Root]/include"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.5;Root]/include"
"$ENV{ProgramFiles}/Tcl/include"
#"$ENV{ProgramFiles\(x86\)}/Tcl/include"
"C:/Program Files/Tcl/include"
"C:/Tcl/include")
ENDIF(WIN32)
# define paths for default engine
if (3RDPARTY_TCL_DIR AND EXISTS "${3RDPARTY_TCL_DIR}")
set (TCL_INCLUDE_PATH "${3RDPARTY_TCL_DIR}/include")
endif()
# check default path (with additions) for header search
FIND_PATH(3RDPARTY_TCL_INCLUDE_DIR tcl.h PATHS ${3RDPARTY_TCL_POSSIBLE_INCLUDE_DIRS})
# check tcl/tk include dir, library dir and shared library dir
macro (DIR_SUBDIR_FILE_FIT LIBNAME)
if (3RDPARTY_TCL_DIR AND EXISTS "${3RDPARTY_TCL_DIR}")
# tcl/tk include dir
if (3RDPARTY_${LIBNAME}_INCLUDE_DIR AND EXISTS "${3RDPARTY_${LIBNAME}_INCLUDE_DIR}")
string (REGEX MATCH "${3RDPARTY_TCL_DIR}" DOES_PATH_CONTAIN "${3RDPARTY_${LIBNAME}_INCLUDE_DIR}")
if (NOT DOES_PATH_CONTAIN)
set (3RDPARTY_${LIBNAME}_INCLUDE_DIR "" CACHE FILEPATH "The directory containing headers of ${LIBNAME}" FORCE)
endif()
else()
set (3RDPARTY_${LIBNAME}_INCLUDE_DIR "" CACHE FILEPATH "The directory containing headers of ${LIBNAME}" FORCE)
endif()
#if find_path found something - set 3RDPARTY_TCL_DIR
IF(NOT "${3RDPARTY_TCL_INCLUDE_DIR}" STREQUAL "3RDPARTY_TCL_INCLUDE_DIR-NOTFOUND")
GET_FILENAME_COMPONENT (3RDPARTY_TCL_DIR "${3RDPARTY_TCL_INCLUDE_DIR}/../" ABSOLUTE)
SET(3RDPARTY_TCL_DIR ${3RDPARTY_TCL_DIR} CACHE FILEPATH "Directory contains TCL product" FORCE)
ENDIF()
ENDIF()
ENDIF()
# tcl/tk library dir
if (3RDPARTY_${LIBNAME}_LIBRARY_DIR AND EXISTS "${3RDPARTY_${LIBNAME}_LIBRARY_DIR}")
string (REGEX MATCH "${3RDPARTY_TCL_DIR}" DOES_PATH_CONTAIN "${3RDPARTY_${LIBNAME}_LIBRARY_DIR}")
if (NOT DOES_PATH_CONTAIN)
set (3RDPARTY_${LIBNAME}_LIBRARY_DIR "" CACHE FILEPATH "The directory containing ${LIBNAME} library" FORCE)
endif()
else()
set (3RDPARTY_${LIBNAME}_LIBRARY_DIR "" CACHE FILEPATH "The directory containing ${LIBNAME} library" FORCE)
endif()
#library dir search
IF("${3RDPARTY_TCL_LIBRARY}" STREQUAL "" OR CHANGES_ARE_NEEDED OR "${3RDPARTY_TCL_LIBRARY}" STREQUAL "3RDPARTY_TCL_LIBRARY-NOTFOUND")
SET(3RDPARTY_TCL_LIBRARY "3RDPARTY_TCL_LIBRARY-NOTFOUND" CACHE FILEPATH "Path to library of the TCL product" FORCE)
# tcl/tk shared library dir
if (WIN32)
if (3RDPARTY_${LIBNAME}_DLL_DIR AND EXISTS "${3RDPARTY_${LIBNAME}_DLL_DIR}")
string (REGEX MATCH "${3RDPARTY_TCL_DIR}" DOES_PATH_CONTAIN "${3RDPARTY_${LIBNAME}_DLL_DIR}")
if (NOT DOES_PATH_CONTAIN)
set (3RDPARTY_${LIBNAME}_DLL_DIR "" CACHE FILEPATH "The directory containing ${LIBNAME} shared library" FORCE)
endif()
else()
set (3RDPARTY_${LIBNAME}_DLL_DIR "" CACHE FILEPATH "The directory containing ${LIBNAME} shared library" FORCE)
endif()
endif()
endif()
# check tcl/tk library
if (3RDPARTY_${LIBNAME}_LIBRARY_DIR AND EXISTS "${3RDPARTY_${LIBNAME}_LIBRARY_DIR}")
if (3RDPARTY_${LIBNAME}_LIBRARY AND EXISTS "${3RDPARTY_${LIBNAME}_LIBRARY}")
string (REGEX MATCH "${3RDPARTY_${LIBNAME}_LIBRARY_DIR}" DOES_PATH_CONTAIN "${3RDPARTY_${LIBNAME}_LIBRARY}")
if (NOT DOES_PATH_CONTAIN)
set (3RDPARTY_${LIBNAME}_LIBRARY "" CACHE FILEPATH "${LIBNAME} library" FORCE)
endif()
else()
set (3RDPARTY_${LIBNAME}_LIBRARY "" CACHE FILEPATH "${LIBNAME} library" FORCE)
endif()
else()
set (3RDPARTY_${LIBNAME}_LIBRARY "" CACHE FILEPATH "${LIBNAME} library" FORCE)
endif()
# check tcl/tk shared library
if (WIN32)
if (3RDPARTY_${LIBNAME}_DLL_DIR AND EXISTS "${3RDPARTY_${LIBNAME}_DLL_DIR}")
if (3RDPARTY_${LIBNAME}_DLL AND EXISTS "${3RDPARTY_${LIBNAME}_DLL}")
string (REGEX MATCH "${3RDPARTY_${LIBNAME}_DLL_DIR}" DOES_PATH_CONTAIN "${3RDPARTY_${LIBNAME}_DLL}")
if (NOT DOES_PATH_CONTAIN)
set (3RDPARTY_${LIBNAME}_DLL "" CACHE FILEPATH "${LIBNAME} shared library" FORCE)
endif()
else()
set (3RDPARTY_${LIBNAME}_DLL "" CACHE FILEPATH "${LIBNAME} shared library" FORCE)
endif()
else()
set (3RDPARTY_${LIBNAME}_DLL "" CACHE FILEPATH "${LIBNAME} shared library" FORCE)
endif()
endif()
endmacro()
DIR_SUBDIR_FILE_FIT(TCL)
DIR_SUBDIR_FILE_FIT(TK)
# use default (CMake) TCL search
find_package(TCL)
foreach (LIBNAME TCL TK)
string (TOLOWER "${LIBNAME}" LIBNAME_L)
# tcl/tk include dir
if (NOT 3RDPARTY_${LIBNAME}_INCLUDE_DIR)
if (${LIBNAME}_INCLUDE_PATH AND EXISTS "${${LIBNAME}_INCLUDE_PATH}")
set (3RDPARTY_${LIBNAME}_INCLUDE_DIR "${${LIBNAME}_INCLUDE_PATH}" CACHE FILEPATH "The directory containing headers of ${LIBNAME}" FORCE)
endif()
endif()
# tcl/tk dir and library
if (NOT 3RDPARTY_${LIBNAME}_LIBRARY)
if (${LIBNAME}_LIBRARY AND EXISTS "${${LIBNAME}_LIBRARY}")
set (3RDPARTY_${LIBNAME}_LIBRARY "${${LIBNAME}_LIBRARY}" CACHE FILEPATH "${LIBNAME} library" FORCE)
if (NOT 3RDPARTY_${LIBNAME}_LIBRARY_DIR)
get_filename_component (3RDPARTY_${LIBNAME}_LIBRARY_DIR "${3RDPARTY_${LIBNAME}_LIBRARY}" PATH)
set (3RDPARTY_${LIBNAME}_LIBRARY_DIR "${3RDPARTY_${LIBNAME}_LIBRARY_DIR}" CACHE FILEPATH "The directory containing ${LIBNAME} library" FORCE)
endif()
endif()
endif()
IF(NOT "${3RDPARTY_TCL_DIR}" STREQUAL "")
FIND_LIBRARY(3RDPARTY_TCL_LIBRARY
NAMES tcl tcl8${TCL_SEP}6 tcl8${TCL_SEP}5
PATHS "${3RDPARTY_TCL_DIR}/lib" NO_DEFAULT_PATH)
ELSE()
SET(3RDPARTY_TCL_POSSIBLE_LIBRARIES_DIRS /usr/lib /usr/local/lib)
if (WIN32)
if (NOT 3RDPARTY_${LIBNAME}_DLL)
set (CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".dll")
set (DLL_FOLDER_FOR_SEARCH "")
if (3RDPARTY_${LIBNAME}_DLL_DIR)
set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_${LIBNAME}_DLL_DIR}")
elseif (3RDPARTY_TCL_DIR)
set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TCL_DIR}/bin")
elseif (3RDPARTY_${LIBNAME}_LIBRARY_DIR)
get_filename_component (3RDPARTY_${LIBNAME}_LIBRARY_DIR_PARENT "${3RDPARTY_${LIBNAME}_LIBRARY_DIR}" PATH)
set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_${LIBNAME}_LIBRARY_DIR_PARENT}/bin")
endif()
set (3RDPARTY_${LIBNAME}_DLL "3RDPARTY_${LIBNAME}_DLL-NOTFOUND" CACHE FILEPATH "${LIBNAME} shared library" FORCE)
find_library (3RDPARTY_${LIBNAME}_DLL NAMES ${LIBNAME_L}86 ${LIBNAME_L}85
PATHS "${DLL_FOLDER_FOR_SEARCH}"
NO_DEFAULT_PATH)
endif()
endif()
DIR_SUBDIR_FILE_FIT(${LIBNAME})
# tcl/tk dir and library
if (NOT 3RDPARTY_${LIBNAME}_LIBRARY)
set (3RDPARTY_${LIBNAME}_LIBRARY "3RDPARTY_${LIBNAME}_LIBRARY-NOTFOUND" CACHE FILEPATH "${LIBNAME} library" FORCE)
find_library (3RDPARTY_${LIBNAME}_LIBRARY NAMES ${LIBNAME_L}8.6 ${LIBNAME_L}86 ${LIBNAME_L}8.5 ${LIBNAME_L}85
PATHS "${3RDPARTY_${LIBNAME}_LIBRARY_DIR}"
NO_DEFAULT_PATH)
IF(WIN32)
SET(3RDPARTY_TCL_POSSIBLE_LIBRARIES_DIRS ${3RDPARTY_TCL_POSSIBLE_LIBRARIES_DIRS}
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl\\${ActiveTcl_CurrentVersion}]/lib"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.6;Root]/lib"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.5;Root]/lib"
"$ENV{ProgramFiles}/Tcl/Lib"
"C:/Program Files/Tcl/lib"
"C:/Tcl/lib" )
ENDIF()
# search in another place if previous search doesn't find anything
find_library (3RDPARTY_${LIBNAME}_LIBRARY NAMES ${LIBNAME_L}8.6 ${LIBNAME_L}86 ${LIBNAME_L}8.5 ${LIBNAME_L}85
PATHS "${3RDPARTY_TCL_DIR}/lib"
NO_DEFAULT_PATH)
# check default path (with additions) for library search
FIND_LIBRARY(3RDPARTY_TCL_LIBRARY
NAMES tcl tcl8${TCL_SEP}6 tcl8${TCL_SEP}5
PATHS ${3RDPARTY_TCL_POSSIBLE_LIBRARIES_DIRS})
ENDIF()
ENDIF()
#search the version of found tcl library
IF("${3RDPARTY_TCL_LIBRARY}" STREQUAL "" OR "${3RDPARTY_TCL_LIBRARY}" STREQUAL "3RDPARTY_TCL_LIBRARY-NOTFOUND")
SET (TCL_DLL_SO_NAMES ${DLL_SO_PREFIX}tcl.${DLL_SO}
${DLL_SO_PREFIX}tcl8${TCL_SEP}5.${DLL_SO}
${DLL_SO_PREFIX}tcl8${TCL_SEP}6.${DLL_SO} )
ELSE()
GET_FILENAME_COMPONENT(TCL_LIBRARY_NAME "${3RDPARTY_TCL_LIBRARY}" NAME)
STRING(REGEX REPLACE "^.*tcl([0-9])[^0-9]*[0-9].*$" "\\1" TCL_MAJOR_VERSION "${TCL_LIBRARY_NAME}")
STRING(REGEX REPLACE "^.*tcl[0-9][^0-9]*([0-9]).*$" "\\1" TCL_MINOR_VERSION "${TCL_LIBRARY_NAME}")
IF (NOT "${TCL_MAJOR_VERSION}" STREQUAL "${TCL_LIBRARY_NAME}")
SET (IS_TCL_VERSION_FOUND ON)
ELSE()
SET (IS_TCL_VERSION_FOUND OFF)
ENDIF()
IF (IS_TCL_VERSION_FOUND)
SET (TCL_DLL_SO_NAMES "${DLL_SO_PREFIX}tcl${TCL_MAJOR_VERSION}${TCL_SEP}${TCL_MINOR_VERSION}.${DLL_SO}")
ELSE()
MESSAGE(STATUS "\nWarning: Tcl version isn't found. ${DLL_SO_PREFIX}tcl.${DLL_SO} is used")
SET (TCL_DLL_SO_NAMES "${DLL_SO_PREFIX}tcl.${DLL_SO}")
ENDIF()
ENDIF()
#dll_so search
IF("${3RDPARTY_TCL_DLL}" STREQUAL "" OR CHANGES_ARE_NEEDED OR "${3RDPARTY_TCL_DLL}" STREQUAL "3RDPARTY_TCL_DLL-NOTFOUND")
SET(3RDPARTY_TCL_DLL "3RDPARTY_TCL_DLL-NOTFOUND" CACHE FILEPATH "Path to shared library of the TCL product" FORCE)
IF(NOT "${3RDPARTY_TCL_DIR}" STREQUAL "")
FIND_FILE(3RDPARTY_TCL_DLL
NAMES ${TCL_DLL_SO_NAMES}
PATHS "${3RDPARTY_TCL_DIR}/${DLL_SO_FOLDER}" NO_DEFAULT_PATH)
ELSE()
SET(3RDPARTY_TCL_POSSIBLE_SO_DIRS /usr/lib /usr/local/lib)
if (NOT 3RDPARTY_${LIBNAME}_LIBRARY OR NOT EXISTS "${3RDPARTY_${LIBNAME}_LIBRARY}")
set (3RDPARTY_${LIBNAME}_LIBRARY "" CACHE FILEPATH "${LIBNAME} library" FORCE)
endif()
IF(WIN32)
SET(3RDPARTY_TCL_POSSIBLE_SO_DIRS ${3RDPARTY_TCL_POSSIBLE_SO_DIRS}
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl\\${ActiveTcl_CurrentVersion}]/bin"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.6;Root]/bin"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.5;Root]/bin"
"$ENV{ProgramFiles}/Tcl/Bin"
"C:/Program Files/Tcl/bin"
"C:/Tcl/b" )
ENDIF()
if (NOT 3RDPARTY_${LIBNAME}_LIBRARY_DIR AND 3RDPARTY_${LIBNAME}_LIBRARY)
get_filename_component (3RDPARTY_${LIBNAME}_LIBRARY_DIR "${3RDPARTY_${LIBNAME}_LIBRARY}" PATH)
set (3RDPARTY_${LIBNAME}_LIBRARY_DIR "${3RDPARTY_${LIBNAME}_LIBRARY_DIR}" CACHE FILEPATH "The directory containing ${LIBNAME} library" FORCE)
endif()
endif()
set (3RDPARTY_${LIBNAME}_LIBRARY_VERSION "")
if (3RDPARTY_${LIBNAME}_LIBRARY AND EXISTS "${3RDPARTY_${LIBNAME}_LIBRARY}")
get_filename_component (${LIBNAME}_LIBRARY_NAME "${3RDPARTY_${LIBNAME}_LIBRARY}" NAME)
string(REGEX REPLACE "^.*${LIBNAME_L}([0-9]\\.*[0-9]).*$" "\\1" ${LIBNAME}_LIBRARY_VERSION "${${LIBNAME}_LIBRARY_NAME}")
# check default path (with additions) for dll_so search
FIND_FILE(3RDPARTY_TCL_DLL
NAMES ${TCL_DLL_SO_NAMES}
PATHS ${3RDPARTY_TCL_POSSIBLE_SO_DIRS})
ENDIF()
ENDIF()
if (NOT "${${LIBNAME}_LIBRARY_VERSION}" STREQUAL "${${LIBNAME}_LIBRARY_NAME}")
set (3RDPARTY_${LIBNAME}_LIBRARY_VERSION "${${LIBNAME}_LIBRARY_VERSION}")
else() # if the version isn't found - seek other library with 8.6 or 8.5 version in the same dir
message (STATUS "Info: ${LIBNAME} version isn't found")
endif()
endif()
IF(NOT "${3RDPARTY_TCL_DIR}" STREQUAL "")
MARK_AS_ADVANCED(3RDPARTY_TCL_DIR)
ENDIF()
# #includes found paths to common variables
IF(3RDPARTY_TCL_INCLUDE_DIR)
SET(3RDPARTY_INCLUDE_DIRS "${3RDPARTY_INCLUDE_DIRS};${3RDPARTY_TCL_INCLUDE_DIR}")
ELSE()
LIST(APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TCL_INCLUDE_DIR)
ENDIF()
set (3RDPARTY_${LIBNAME}_LIBRARY_VERSION_WITH_DOT "")
if (3RDPARTY_${LIBNAME}_LIBRARY_VERSION)
string (REGEX REPLACE "^.*([0-9])[^0-9]*[0-9].*$" "\\1" 3RDPARTY_${LIBNAME}_MAJOR_VERSION "${3RDPARTY_${LIBNAME}_LIBRARY_VERSION}")
string (REGEX REPLACE "^.*[0-9][^0-9]*([0-9]).*$" "\\1" 3RDPARTY_${LIBNAME}_MINOR_VERSION "${3RDPARTY_${LIBNAME}_LIBRARY_VERSION}")
set (3RDPARTY_${LIBNAME}_LIBRARY_VERSION_WITH_DOT "${3RDPARTY_${LIBNAME}_MAJOR_VERSION}.${3RDPARTY_${LIBNAME}_MINOR_VERSION}")
endif()
IF(3RDPARTY_TCL_LIBRARY)
GET_FILENAME_COMPONENT(3RDPARTY_TCL_LIBRARY_DIR "${3RDPARTY_TCL_LIBRARY}" PATH)
SET(3RDPARTY_LIBRARY_DIRS "${3RDPARTY_LIBRARY_DIRS};${3RDPARTY_TCL_LIBRARY_DIR}")
ELSE()
LIST(APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TCL_LIBRARY)
ENDIF()
if (WIN32)
if (NOT 3RDPARTY_${LIBNAME}_DLL)
set (CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".dll")
set (DLL_FOLDER_FOR_SEARCH "")
if (3RDPARTY_${LIBNAME}_DLL_DIR)
set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_${LIBNAME}_DLL_DIR}")
elseif (3RDPARTY_TCL_DIR)
set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TCL_DIR}/bin")
else()
get_filename_component (3RDPARTY_${LIBNAME}_LIBRARY_DIR_PARENT "${3RDPARTY_${LIBNAME}_LIBRARY_DIR}" PATH)
set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_${LIBNAME}_LIBRARY_DIR_PARENT}/bin")
endif()
set (3RDPARTY_${LIBNAME}_DLL "3RDPARTY_${LIBNAME}_DLL-NOTFOUND" CACHE FILEPATH "${LIBNAME} shared library" FORCE)
find_library (3RDPARTY_${LIBNAME}_DLL NAMES ${LIBNAME_L}${3RDPARTY_${LIBNAME}_LIBRARY_VERSION}
PATHS "${DLL_FOLDER_FOR_SEARCH}"
NO_DEFAULT_PATH)
if (NOT 3RDPARTY_${LIBNAME}_DLL OR NOT EXISTS "${3RDPARTY_${LIBNAME}_DLL}")
set (3RDPARTY_${LIBNAME}_DLL "" CACHE FILEPATH "${LIBNAME} shared library" FORCE)
endif()
if (NOT 3RDPARTY_${LIBNAME}_DLL_DIR AND 3RDPARTY_${LIBNAME}_DLL)
get_filename_component (3RDPARTY_${LIBNAME}_DLL_DIR "${3RDPARTY_${LIBNAME}_DLL}" PATH)
set (3RDPARTY_${LIBNAME}_DLL_DIR "${3RDPARTY_${LIBNAME}_DLL_DIR}" CACHE FILEPATH "The directory containing ${LIBNAME} shared library" FORCE)
endif()
endif()
endif()
IF(3RDPARTY_TCL_DLL)
ELSE()
LIST(APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TCL_DLL)
ENDIF()
# include found paths to common variables
if (3RDPARTY_${LIBNAME}_INCLUDE_DIR AND EXISTS "${3RDPARTY_${LIBNAME}_INCLUDE_DIR}")
list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_${LIBNAME}_INCLUDE_DIR}")
else()
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_${LIBNAME}_INCLUDE_DIR)
endif()
if (3RDPARTY_${LIBNAME}_LIBRARY AND EXISTS "${3RDPARTY_${LIBNAME}_LIBRARY}")
list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_${LIBNAME}_LIBRARY_DIR}")
else()
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_${LIBNAME}_LIBRARY_DIR})
endif()
if (WIN32)
if (NOT 3RDPARTY_${LIBNAME}_DLL OR NOT EXISTS "${3RDPARTY_${LIBNAME}_DLL}")
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_${LIBNAME}_DLL_DIR)
endif()
endif()
endforeach()
# install tcltk
if (INSTALL_TCL)
# include occt macros. compiler_bitness, os_wiht_bit, compiler and build_postfix
OCCT_INCLUDE_CMAKE_FILE ("adm/templates/occt_macros")
OCCT_MAKE_OS_WITH_BITNESS()
OCCT_MAKE_COMPILER_SHORT_NAME()
OCCT_MAKE_BUILD_POSTFIX()
if (WIN32)
install (FILES ${3RDPARTY_TCL_DLL} ${3RDPARTY_TK_DLL} DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bin${BUILD_POSTFIX}")
else()
install (FILES ${3RDPARTY_TCL_LIBRARY} ${3RDPARTY_TK_LIBRARY} DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/lib${BUILD_POSTFIX}")
endif()
if (TCL_TCLSH_VERSION)
# tcl is required to install in lib folder (without ${BUILD_POSTFIX})
install (DIRECTORY "${3RDPARTY_TCL_LIBRARY_DIR}/tcl8" DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/lib")
install (DIRECTORY "${3RDPARTY_TCL_LIBRARY_DIR}/tcl${TCL_TCLSH_VERSION}" DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/lib")
install (DIRECTORY "${3RDPARTY_TCL_LIBRARY_DIR}/tk${TCL_TCLSH_VERSION}" DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/lib")
else()
message (STATUS "\nWarning: tclX.X and tkX.X subdirs won't be copyied during the installation process.")
message (STATUS "Try seeking tcl within another folder by changing 3RDPARTY_TCL_DIR variable.")
endif()
set (USED_3RDPARTY_TCL_DIR "")
else()
# the library directory for using by the executable
if (WIN32)
set (USED_3RDPARTY_TCL_DIR ${3RDPARTY_TCL_DLL_DIR})
else()
set (USED_3RDPARTY_TCL_DIR ${3RDPARTY_TCL_LIBRARY_DIR})
endif()
endif()
mark_as_advanced (3RDPARTY_TCL_LIBRARY 3RDPARTY_TK_LIBRARY 3RDPARTY_TCL_DLL 3RDPARTY_TK_DLL)
# unset all redundant variables
#TCL
OCCT_CHECK_AND_UNSET (TCL_LIBRARY)
OCCT_CHECK_AND_UNSET (TCL_INCLUDE_PATH)
OCCT_CHECK_AND_UNSET (TCL_TCLSH)
#TK
OCCT_CHECK_AND_UNSET (TK_LIBRARY)
OCCT_CHECK_AND_UNSET (TK_INCLUDE_PATH)
OCCT_CHECK_AND_UNSET (TK_WISH)

165
adm/templates/vtk.cmake Normal file
View File

@@ -0,0 +1,165 @@
# vtk
if (NOT DEFINED INSTALL_VTK)
set (INSTALL_VTK OFF CACHE BOOL "Is vtk required to be copied into install directory")
endif()
# vtk directory
if (NOT DEFINED 3RDPARTY_VTK_DIR)
set (3RDPARTY_VTK_DIR "" CACHE PATH "The directory containing vtk")
endif()
# vtk include directory
if (NOT DEFINED 3RDPARTY_VTK_INCLUDE_DIR)
set (3RDPARTY_VTK_INCLUDE_DIR "" CACHE FILEPATH "The directory containing headers of vtk")
endif()
# vtk library directory
if (NOT DEFINED 3RDPARTY_VTK_LIBRARY_DIR)
set (3RDPARTY_VTK_LIBRARY_DIR "" CACHE FILEPATH "The directory containing vtk library")
endif()
# vtk dll directory
if (WIN32 AND NOT DEFINED 3RDPARTY_VTK_DLL_DIR)
set (3RDPARTY_VTK_DLL_DIR "" CACHE FILEPATH "The directory containing VTK dll")
endif()
# search for vtk in user defined directory
if (NOT 3RDPARTY_VTK_DIR AND 3RDPARTY_DIR)
FIND_PRODUCT_DIR("${3RDPARTY_DIR}" vtk VTK_DIR_NAME)
if (VTK_DIR_NAME)
set (3RDPARTY_VTK_DIR "${3RDPARTY_DIR}/${VTK_DIR_NAME}" CACHE PATH "The directory containing vtk product" FORCE)
endif()
endif()
# find installed vtk
find_package(VTK QUIET)
# find native vtk
if (NOT VTK_FOUND)
find_package(VTK QUIET PATHS "${3RDPARTY_VTK_DIR}")
endif()
if (NOT VTK_FOUND AND NOT 3RDPARTY_VTK_DIR OR NOT EXISTS "${3RDPARTY_VTK_DIR}")
message(SEND_ERROR "VTK not found. Set the 3RDPARTY_VTK_DIR cmake cache entry to the directory containing VTK.")
set (3RDPARTY_VTK_DIR "3RDPARTY_VTK_DIR-NOTFOUND" CACHE PATH "The directory containing vtk product" FORCE)
endif()
OCCT_MAKE_BUILD_POSTFIX()
set(VTK_VERSION "")
if (3RDPARTY_VTK_DIR AND EXISTS "${3RDPARTY_VTK_DIR}")
get_filename_component(3RDPARTY_VTK_DIR_NAME "${3RDPARTY_VTK_DIR}" NAME)
string(REGEX MATCH "^VTK-([0-9].[0-9])" VTK_VERSION "${3RDPARTY_VTK_DIR_NAME}")
set(VTK_VERSION "${CMAKE_MATCH_1}")
if (NOT 3RDPARTY_VTK_INCLUDE_DIR OR NOT EXISTS "${3RDPARTY_VTK_INCLUDE_DIR}")
set (3RDPARTY_VTK_INCLUDE_DIR "${3RDPARTY_VTK_DIR}/include/vtk-${VTK_VERSION}" CACHE FILEPATH "The directory containing includes of VTK" FORCE)
endif()
if (NOT 3RDPARTY_VTK_LIBRARY_DIR OR NOT EXISTS "${3RDPARTY_VTK_LIBRARY_DIR}")
if(EXISTS "${3RDPARTY_VTK_DIR}/lib${BUILD_POSTFIX}")
set (3RDPARTY_VTK_LIBRARY_DIR "${3RDPARTY_VTK_DIR}/lib${BUILD_POSTFIX}" CACHE FILEPATH "The directory containing libs of VTK" FORCE)
else()
if (NOT "${BUILD_POSTFIX}" STREQUAL "" AND EXISTS "${3RDPARTY_VTK_DIR}/lib")
set (3RDPARTY_VTK_LIBRARY_DIR "${3RDPARTY_VTK_DIR}/lib" CACHE FILEPATH "The directory containing libs of VTK" FORCE)
endif()
endif()
endif()
if(3RDPARTY_VTK_LIBRARY_DIR)
list (APPEND 3RDPARTY_LIBRARY_DIRS "${3RDPARTY_VTK_LIBRARY_DIR}")
endif()
endif()
# vtk libraries
# lib
set (VTK_LIBRARY_NAMES vtkCommonCore-${VTK_VERSION}.lib vtkCommonDataModel-${VTK_VERSION}.lib vtkCommonExecutionModel-${VTK_VERSION}.lib
vtkCommonMath-${VTK_VERSION}.lib vtkCommonTransforms-${VTK_VERSION}.lib vtkRenderingCore-${VTK_VERSION}.lib
vtkRenderingOpenGL-${VTK_VERSION}.lib vtkFiltersGeneral-${VTK_VERSION}.lib vtkIOCore-${VTK_VERSION}.lib
vtkIOImage-${VTK_VERSION}.lib vtkImagingCore-${VTK_VERSION}.lib vtkInteractionStyle-${VTK_VERSION}.lib )
#dll
set (VTK_DLL_NAMES vtkCommonComputationalGeometry-${VTK_VERSION}.dll
vtkCommonCore-${VTK_VERSION}.dll
vtkCommonDataModel-${VTK_VERSION}.dll
vtkCommonExecutionModel-${VTK_VERSION}.dll
vtkCommonMath-${VTK_VERSION}.dll
vtkCommonMisc-${VTK_VERSION}.dll
vtkCommonSystem-${VTK_VERSION}.dll
vtkCommonTransforms-${VTK_VERSION}.dll
vtkDICOMParser-${VTK_VERSION}.dll
vtkFiltersCore-${VTK_VERSION}.dll
vtkFiltersExtraction-${VTK_VERSION}.dll
vtkFiltersGeneral-${VTK_VERSION}.dll
vtkFiltersGeometry-${VTK_VERSION}.dll
vtkFiltersSources-${VTK_VERSION}.dll
vtkFiltersStatistics-${VTK_VERSION}.dll
vtkIOCore-${VTK_VERSION}.dll
vtkIOImage-${VTK_VERSION}.dll
vtkImagingCore-${VTK_VERSION}.dll
vtkImagingFourier-${VTK_VERSION}.dll
vtkImagingHybrid-${VTK_VERSION}.dll
vtkInteractionStyle-${VTK_VERSION}.dll
vtkRenderingCore-${VTK_VERSION}.dll
vtkRenderingOpenGL-${VTK_VERSION}.dll
vtkalglib-${VTK_VERSION}.dll
vtkjpeg-${VTK_VERSION}.dll
vtkmetaio-${VTK_VERSION}.dll
vtkpng-${VTK_VERSION}.dll
vtksys-${VTK_VERSION}.dll
vtktiff-${VTK_VERSION}.dll
vtkzlib-${VTK_VERSION}.dll )
# search for dll directory
if (WIN32)
if (NOT 3RDPARTY_VTK_DLL_DIR OR NOT EXISTS "${3RDPARTY_VTK_DLL_DIR}")
if(EXISTS "${3RDPARTY_VTK_DIR}/bin${BUILD_POSTFIX}")
set (3RDPARTY_VTK_DLL_DIR "${3RDPARTY_VTK_DIR}/bin${BUILD_POSTFIX}" CACHE FILEPATH "The directory containing dll of VTK" FORCE)
else()
if (NOT "${BUILD_POSTFIX}" STREQUAL "" AND EXISTS "${3RDPARTY_VTK_DIR}/bin")
set (3RDPARTY_VTK_DLL_DIR "${3RDPARTY_VTK_DIR}/bin" CACHE FILEPATH "The directory containing dll of VTK" FORCE)
endif()
endif()
endif()
endif()
OCCT_CHECK_AND_UNSET(VTK_DIR)
if (3RDPARTY_VTK_INCLUDE_DIR AND EXISTS "${3RDPARTY_VTK_INCLUDE_DIR}")
list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_VTK_INCLUDE_DIR}")
else()
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_VTK_INCLUDE_DIR)
endif()
if (INSTALL_VTK)
OCCT_MAKE_OS_WITH_BITNESS()
OCCT_MAKE_COMPILER_SHORT_NAME()
if (WIN32)
if(3RDPARTY_VTK_DLL_DIR AND EXISTS "${3RDPARTY_VTK_DLL_DIR}")
set (CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".dll")
foreach(VTK_DLL_NAME ${VTK_DLL_NAMES})
set (3RDPARTY_VTK_DLL "3RDPARTY_VTK_DLL-NOTFOUND" CACHE FILEPATH "VTK shared library" FORCE)
find_library(3RDPARTY_VTK_DLL "${VTK_DLL_NAME}" PATHS "${3RDPARTY_VTK_DLL_DIR}" NO_DEFAULT_PATH)
if (NOT 3RDPARTY_VTK_DLL OR NOT EXISTS "${3RDPARTY_VTK_DLL}")
list (APPEND 3RDPARTY_NOT_INCLUDED "${3RDPARTY_VTK_DLL}")
else()
install (FILES ${3RDPARTY_VTK_DLL} DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/bin${BUILD_POSTFIX}")
endif()
endforeach()
OCCT_CHECK_AND_UNSET(3RDPARTY_VTK_DLL)
endif()
else ()
foreach(VTK_DLL_NAME ${VTK_DLL_NAMES})
string(REPLACE ".dll" ".so.1" VTK_DLL_NAME "${VTK_DLL_NAME}")
install(FILES "${3RDPARTY_VTK_LIBRARY_DIR}/lib${VTK_DLL_NAME}" DESTINATION "${INSTALL_DIR}/${OS_WITH_BIT}/${COMPILER}/lib${BUILD_POSTFIX}" RENAME "lib${VTK_DLL_NAME}")
endforeach()
endif()
set (USED_3RDPARTY_VTK_DIR "")
else()
# 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})
endif()
endif()
mark_as_advanced (VTK_INCLUDE_DIRS VTK_LIBRARY_DIRS VTK_DIR)

BIN
data/images/hatch_1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

@@ -1,55 +0,0 @@
# This file contains list of documentation files of OCCT which are processed
# by Doxygen to generate HTML documentation.
# Files are listed one file per line, with paths relative to dox folder.
# Empty spaces are allowed, part of string starting with # is ignored.
# The order of files in this list determines order of top-level pages
# in the generated documentation.
overview/overview.md
../samples/mfc/standard/ReadMe.md
../samples/CSharp/ReadMe.md
tutorial/tutorial.md
technical_overview/technical_overview.md
user_guides/user_guides.md
user_guides/foundation_classes/foundation_classes.md
user_guides/modeling_data/modeling_data.md
user_guides/modeling_algos/modeling_algos.md
user_guides/visualization/visualization.md
user_guides/iges/iges.md
user_guides/step/step.md
user_guides/xde/xde.md
user_guides/ocaf/ocaf.md
user_guides/tobj/tobj.md
user_guides/shape_healing/shape_healing.md
user_guides/draw_test_harness.md
user_guides/brep_wp/brep_wp.md
user_guides/ocaf_functionmechanism_wp/ocaf_functionmechanism_wp.md
user_guides/ocaf_tree_wp/ocaf_tree_wp.md
user_guides/ocaf_wp/ocaf_wp.md
user_guides/voxels_wp/voxels_wp.md
dev_guides/dev_guides.md
dev_guides/documentation/documentation.md
dev_guides/contribution/coding_rules.md
dev_guides/contribution_workflow/contribution_workflow.md
dev_guides/git_guide/git_guide.md
dev_guides/tests/tests.md
dev_guides/cdl/cdl.md
dev_guides/wok/wok.md
dev_guides/building/building.md
dev_guides/building/3rdparty/3rdparty_windows.md
dev_guides/building/3rdparty/3rdparty_linux.md
dev_guides/building/3rdparty/3rdparty_osx.md
dev_guides/building/wok/wok.md
dev_guides/building/automake.md
dev_guides/building/cmake/cmake.md
dev_guides/building/code_blocks.md
dev_guides/building/msvc.md
dev_guides/building/xcode.md
license.md

63
dox/FILES_HTML.txt Normal file
View File

@@ -0,0 +1,63 @@
# This file contains list of documentation files of OCCT which are processed
# by Doxygen to generate HTML documentation.
# Files are listed one file per line, with paths relative to dox folder.
# Empty spaces are allowed, part of string starting with # is ignored.
# The order of files in this list determines order of top-level pages
# in the generated documentation.
overview/overview.md
../samples/mfc/standard/ReadMe.md
../samples/CSharp/ReadMe.md
../samples/CSharp/ReadMe_D3D.md
../samples/qt/AndroidQt/ReadMe.md
../samples/java/jniviewer/ReadMe.md
tutorial/tutorial.md
technical_overview/technical_overview.md
user_guides/user_guides.md
user_guides/foundation_classes/foundation_classes.md
user_guides/modeling_data/modeling_data.md
user_guides/modeling_algos/modeling_algos.md
user_guides/boolean_operations/boolean_operations.md
user_guides/shape_healing/shape_healing.md
user_guides/visualization/visualization.md
user_guides/iges/iges.md
user_guides/step/step.md
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/brep_wp/brep_wp.md
user_guides/ocaf_functionmechanism_wp/ocaf_functionmechanism_wp.md
user_guides/ocaf_tree_wp/ocaf_tree_wp.md
user_guides/ocaf_wp/ocaf_wp.md
user_guides/voxels_wp/voxels_wp.md
user_guides/vis/vis.md
dev_guides/dev_guides.md
dev_guides/documentation/documentation.md
dev_guides/contribution/coding_rules.md
dev_guides/contribution_workflow/contribution_workflow.md
dev_guides/git_guide/git_guide.md
dev_guides/tests/tests.md
dev_guides/debug/debug.md
dev_guides/cdl/cdl.md
dev_guides/wok/wok.md
dev_guides/building/building.md
dev_guides/building/3rdparty/3rdparty_windows.md
dev_guides/building/3rdparty/3rdparty_linux.md
dev_guides/building/3rdparty/3rdparty_osx.md
dev_guides/building/wok/wok.md
dev_guides/building/automake.md
dev_guides/building/cmake/cmake.md
dev_guides/building/android/android.md
dev_guides/building/code_blocks.md
dev_guides/building/msvc.md
dev_guides/building/xcode.md
license.md

34
dox/FILES_PDF.txt Normal file
View File

@@ -0,0 +1,34 @@
# This file contains list of documentation files of OCCT which are processed
# by Doxygen to generate PDF documentation.
# Files are listed one file per line, with paths relative to dox folder.
# Empty spaces are allowed.
# Strings starting with '#' are treated as comments and ignored.
user_guides/brep_wp/brep_wp.md
user_guides/foundation_classes/foundation_classes.md
user_guides/iges/iges.md
user_guides/modeling_data/modeling_data.md
user_guides/modeling_algos/modeling_algos.md
user_guides/boolean_operations/boolean_operations.md
user_guides/shape_healing/shape_healing.md
user_guides/ocaf/ocaf.md
user_guides/ocaf_functionmechanism_wp/ocaf_functionmechanism_wp.md
user_guides/ocaf_tree_wp/ocaf_tree_wp.md
user_guides/ocaf_wp/ocaf_wp.md
user_guides/step/step.md
user_guides/draw_test_harness/draw_test_harness.md
user_guides/tobj/tobj.md
user_guides/visualization/visualization.md
user_guides/voxels_wp/voxels_wp.md
user_guides/xde/xde.md
user_guides/vis/vis.md
dev_guides/contribution_workflow/contribution_workflow.md
dev_guides/documentation/documentation.md
dev_guides/contribution/coding_rules.md
dev_guides/git_guide/git_guide.md
dev_guides/tests/tests.md
dev_guides/wok/wok.md
dev_guides/cdl/cdl.md
tutorial/tutorial.md

View File

@@ -1,4 +1,4 @@
 Building 3rd-party libraries on Linux {#dev_guides__building_3rdparty_linux}
 Building 3rd-party libraries on Linux {#occt_dev_guides__building_3rdparty_linux}
=========
@tableofcontents
@@ -14,8 +14,14 @@ http://www.opencascade.org/getocc/require/.
There are two types of third-party products, which are necessary to build OCCT:
* Mandatory products: Tcl/Tk 8.5 - 8.6 and  FreeType 2.4.10 - 2.4.11
* Optional products: TBB 3.x - 4.x, gl2ps 1.3.5 - 1.3.8, FreeImage 3.14.1 - 3.15.4
* Mandatory products:
* Tcl/Tk 8.5 - 8.6;  
* FreeType 2.4.10 - 2.5.3;
* Optional products:
* TBB 3.x - 4.x;
* gl2ps 1.3.5 - 1.3.8;
* FreeImage 3.14.1 - 3.16.0;
* VTK 6.1.0.
@section dev_guides__building_3rdparty_linux_2 Building Mandatory Third-party Products
@@ -23,42 +29,26 @@ There are two types of third-party products, which are necessary to build OCCT:
Tcl/Tk is required for DRAW test harness.
@subsubsection dev_guides__building_3rdparty_linux_2_1_1 Installation from binaries:
It is possible to download ready-to-install binaries from
http://www.activestate.com/activetcl/downloads
1. Download the binaries archive and unpack them to some TCL_SRC_DIR.
2. Enter the directory TCL_SRC_DIR.
cd TCL_SRC_DIR
3. Run the install command
install.sh
and follow instructions.
@subsubsection dev_guides__building_3rdparty_linux_2_1_2 Installation from sources: Tcl
Download the necessary archive from http://www.tcl.tk/software/tcltk/download.html and unpack it.
1. Enter the unix sub-directory of the directory where the source files of Tcl are located (TCL_SRC_DIR).
1. Enter the unix sub-directory of the directory where the Tcl source files are located <i>(TCL_SRC_DIR)</i>.
cd TCL_SRC_DIR/unix
2. Run the configure command
2. Run the *configure* command:
configure --enable-gcc --enable-shared --enable-threads --prefix=TCL_INSTALL_DIR
For a 64 bit platform also add --enable-64bit option to the command line.
For a 64 bit platform also add <i>--enable-64bit</i> option to the command line.
3. If the configure command has finished successfully, start the building process
3. If the configure command has finished successfully, start the building process:
make
4. If building is finished successfully, start the installation of Tcl.
All binary and service files of the product will be copied to the directory defined by TCL_INSTALL_DIR
All binary and service files of the product will be copied to the directory defined by *TCL_INSTALL_DIR*
make install
@@ -66,49 +56,47 @@ Download the necessary archive from http://www.tcl.tk/software/tcltk/download.ht
Download the necessary archive from http://www.tcl.tk/software/tcltk/download.html and unpack it.
1. Enter the unix sub-directory of the directory where the source files of Tk are located (TK_SRC_DIR).
1. Enter the unix sub-directory of the directory where the Tk source files are located <i>(TK_SRC_DIR)</i>
cd TK_SRC_DIR/unix
2. Run the configure command, where TCL_LIB_DIR is TCL_INSTALL_DIR/lib
2. Run the configure command, where <i>TCL_LIB_DIR</i> is *TCL_INSTALL_DIR/lib*.
configure --enable-gcc --enable-shared --enable-threads --with-tcl=TCL_LIB_DIR --prefix=TK_INSTALL_DIR
where TCL_LIB_DIR is TCL_INSTALL_DIR/lib
For a 64 bit platform also add <i>--enable-64bit</i> option to the command line.
For a 64 bit platform also add --enable-64bit option to the command line.
3. If the configure command has finished successfully, start the building process
3. If the configure command has finished successfully, start the building process:
make
4. If building has finished successfully, start the installation of Tk.
4. If the building has finished successfully, start the installation of Tk.
All binary and service files of the product will be copied
to the directory defined by TK_INSTALL_DIR (usually TK_INSTALL_DIR is TCL_INSTALL_DIR)
to the directory defined by *TK_INSTALL_DIR* (usually it is *TCL_INSTALL_DIR*)
make install
@subsection dev_guides__building_3rdparty_linux_2_2 FreeType
FreeType is required for display of text in 3D viewer.
FreeType is required for text display in the 3D viewer.
Download the necessary archive from http://sourceforge.net/projects/freetype/files/ and unpack it.
1. Enter the directory where the source files of FreeType are located (FREETYPE_SRC_DIR).
1. Enter the directory where the source files of FreeType are located <i>(FREETYPE_SRC_DIR)</i>.
cd FREETYPE_SRC_DIR
2. Run the configure command
2. Run the *configure* command:
configure --prefix=FREETYPE_INSTALL_DIR
For a 64 bit platform also add CFLAGS='-m64 -fPIC' CPPFLAGS='-m64 -fPIC' option to the command line.
For a 64 bit platform also add <i>CFLAGS='-m64 -fPIC' CPPFLAGS='-m64 -fPIC'</i> option to the command line.
3. If the configure command has finished successfully, start the building process
3. If the *configure* command has finished successfully, start the building process:
make
4. If building has finished successfully, start the installation of FreeType.
All binary and service files of the product will be copied to the directory defined by FREETYPE_INSTALL_DIR
4. If the building has finished successfully, start the installation of FreeType.
All binary and service files of the product will be copied to the directory defined by *FREETYPE_INSTALL_DIR*
make install
@@ -117,46 +105,46 @@ Download the necessary archive from http://sourceforge.net/projects/freetype/fil
@subsection dev_guides__building_3rdparty_linux_3_1 TBB
This third-party product is installed with binaries from the archive that can be downloaded from http://threadingbuildingblocks.org.
Go to \"Downloads page\", find the release version you need and pick the archive for Linux platform.
Go to the **Download** page, find the release version you need and pick the archive for Linux platform.
To install, unpack the downloaded archive of TBB product.
@subsection dev_guides__building_3rdparty_linux_3_2 gl2ps
Download the necessary archive from http://geuz.org/gl2ps/ and unpack it.
1. Install or build cmake product from source file.
2. Start cmake in GUI mode with the directory where the source files of gl2ps are located:
1. Install or build *cmake* product from the source file.
2. Start *cmake* in GUI mode with the directory where the source files of gl2ps are located:
ccmake GL2PS_SRC_DIR
a. Press [c] to make the initial configuration
b. Define the necessary options CMAKE_INSTALL_PREFIX
c. Press [c] to make the final configuration
d. Press [g] to generate Makefile and exit
* Press <i>[c]</i> to make the initial configuration;
* Define the necessary options in *CMAKE_INSTALL_PREFIX*
* Press <i>[c]</i> to make the final configuration
* Press <i>[g]</i> to generate Makefile and exit
or just run the following command:
cmake DCMAKE_INSTALL_PREFIX=GL2PS_INSTALL_DIR DCMAKE_BUILD_TYPE=Release
3. Start building of gl2ps
3. Start the building of gl2ps:
make
4. Start the installation of gl2ps. Binaries will be installed according to the CMAKE_INSTALL_PREFIX option
4. Start the installation of gl2ps. Binaries will be installed according to the *CMAKE_INSTALL_PREFIX* option.
make install
@subsection dev_guides__building_3rdparty_linux_3_3 FreeImage
Download the necessary archive from http://sourceforge.net/projects/freeimage/files/Source%20Distribution/
and unpack it. The directory with unpacked sources is further referred to as FREEIMAGE_SRC_DIR.
and unpack it. The directory with unpacked sources is further referred to as *FREEIMAGE_SRC_DIR*.
1. Modify FREEIMAGE_SRC_DIR/Source/OpenEXR/Imath/ImathMatrix.h:
1. Modify *FREEIMAGE_SRC_DIR/Source/OpenEXR/Imath/ImathMatrix.h*:
In line 60 insert the following:
#include string.h
2. Enter the directory where the source files of FreeImage are located (FREEIMAGE_SRC_DIR).
2. Enter the directory where the source files of FreeImage are located <i>(FREEIMAGE_SRC_DIR)</i>.
cd FREEIMAGE_SRC_DIR
@@ -166,11 +154,10 @@ and unpack it. The directory with unpacked sources is further referred to as FR
4. Run the installation process
a. If you have permissions to write to /usr/include and /usr/lib directories then run the following command:
a. If you have the permission to write into directories <i>/usr/include</i> and <i>/usr/lib</i>, run the following command:
make install
b. If you dont have permissions to write to /usr/include and
/usr/lib directories then you need to modify the file FREEIMAGE_SRC_DIR/Makefile.gnu:
b. If you do not have this permission, you need to modify file *FREEIMAGE_SRC_DIR/Makefile.gnu*:
Change lines 7-9 from:
@@ -208,57 +195,50 @@ and unpack it. The directory with unpacked sources is further referred to as FR
make DESTDIR=FREEIMAGE_INSTALL_DIR install
5. Clean the temporary files
make clean
5. Clean temporary files
@subsection dev_guides__building_3rdparty_linux_3_4 OpenCL ICD Loader
make clean
If you have OpenCL SDK (one provided by Apple, AMD, NVIDIA, Intel, or other
vendor) installed on your system, you should find OpenCL headers and
libraries required for building OCCT inside that SDK.
@subsection dev_guides__building_3rdparty_linux_3_4 VTK
Alternatively, you can use OpenCL ICD (Installable Client Driver) Loader
provided by Khronos group. The following describes steps used to build OpenCL
ICD Loader version 1.2.11.0.
You can download VTK sources from http://www.vtk.org/VTK/resources/software.html
1. Download OpenCL ICD Loader sources archive and OpenCL header files from
Khronos OpenCL Registry
http://www.khronos.org/registry/cl/
### The building procedure:
2. Unpack the archive and put headers in **inc/CL** sub-folder
Download the necessary archive from http://www.vtk.org/VTK/resources/software.html and unpack it.
3. Print **make** in root of unpacked archive to compile OpenCL libraries.
1. Install or build *cmake* product from the source file.
2. Start *cmake* in GUI mode with the directory where the source files of *VTK* are located:
4. Create installation folder for OpenCL IDL Loader package and put there:
ccmake VTK_SRC_DIR
1. OpenCL header files in **include/CL** subfolder
* Press <i>[c]</i> to make the initial configuration
* Define the necessary options in *VTK_INSTALL_PREFIX*
* Press <i>[c]</i> to make the final configuration
* Press <i>[g]</i> to generate Makefile and exit
2. **libOpenCL.so** (generated in **bin** subfolder of source package) in **lib** subfolder
3. Start the building of VTK:
make
4. Start the installation of gl2ps. Binaries will be installed according to the *VTK_INSTALL_PREFIX* option.
make install
@section dev_guides__building_3rdparty_linux_4 Installation From Official Repositories
@subsection dev_guides__building_3rdparty_linux_4_1 Debian-based distributives
All 3rd-party products required for building of OCCT could be installed
from official repositories. You may install them from console using apt-get utility:
All 3rd-party products required for building of OCCT could be installed
from official repositories. You may install them from console using apt-get utility:
sudo apt-get install \
tcllib tklib tcl-dev tk-dev \
libfreetype-dev \
libxt-dev libxmu-dev \
libgl1-mesa-dev \
libfreeimage-dev \
libtbb-dev \
libgl2ps-dev
To launch WOK-prebuilt binaries you need install C shell and 32-bit libraries on x86_64 distributives:
sudo apt-get install \
csh \
libstdc++5:i386 libxt6:i386
sudo apt-get install tcllib tklib tcl-dev tk-dev libfreetype-dev libxt-dev libxmu-dev libxi-dev libgl1-mesa-dev libglu1-mesa-dev libfreeimage-dev libtbb-dev libgl2ps-dev
Any compliant C++ compiler is required for building anyway:
sudo apt-get install \
g++
To launch binaries built with WOK you need to install C shell and 32-bit libraries on x86_64 distributives:
# you may need to add i386 if not done already by command "dpkg --add-architecture i386"
sudo apt-get install csh libstdc++6:i386 libxt6:i386 libxext6:i386 libxmu6:i386
Building is possible with C++ compliant compiler:
sudo apt-get install g++

View File

@@ -1,4 +1,4 @@
 Building 3rd-party libraries on MacOS X {#dev_guides__building_3rdparty_osx}
 Building 3rd-party libraries on MacOS X {#occt_dev_guides__building_3rdparty_osx}
==============================================
@tableofcontents
@@ -13,8 +13,13 @@ http://www.opencascade.org/getocc/require/</a>.
There are two types of third-party products, which are necessary to build OCCT:
* Mandatory products: Tcl 8.5, Tk 8.5, FreeType 2.4.10
* Optional products: TBB 3.x or 4.x, gl2ps 1.3.5, FreeImage 3.14.1 or 3.15.x
* Mandatory products:
* Tcl/Tk 8.5 - 8.6;
* FreeType 2.4.10 - 2.5.3.
* Optional products:
* TBB 3.x - 4.x;
* gl2ps 1.3.5 - 1.3.8;
* FreeImage 3.14.1 - 3.16.0
@section dev_guides__building_3rdparty_osx_2 Building Mandatory Third-party Products
@@ -22,35 +27,26 @@ There are two types of third-party products, which are necessary to build OCCT:
Tcl/Tk is required for DRAW test harness. Version 8.5 or 8.6 can be used with OCCT.
@subsubsection dev_guides__building_3rdparty_osx_2_1_1 Installation from binaries
It is possible to download ready-to-install binaries from
http://www.activestate.com/activetcl/downloads
1. Download the disk image to some TCL_DOWNLOAD_DIR.
2. Open in Finder the directory TCL_DOWNLOAD_DIR.
3. Open disk image and follow instructions.
@subsubsection dev_guides__building_3rdparty_osx_2_1_2 Installation from sources: Tcl 8.5
Download the necessary archive from http://www.tcl.tk/software/tcltk/download.html and unpack it.
1. Enter the macosx sub-directory of the directory where the source files of Tcl are located (TCL_SRC_DIR).
1. Enter the *macosx* sub-directory of the directory where the Tcl source files are located <i>(TCL_SRC_DIR)</i>.
cd TCL_SRC_DIR/macosx
2. Run the configure command
2. Run the *configure* command
configure --enable-gcc --enable-shared --enable-threads --prefix=TCL_INSTALL_DIR
For a 64 bit platform also add --enable-64bit option to the command line.
For a 64 bit platform also add <i>--enable-64bit</i> option to the command line.
3. If the configure command has finished successfully, start the building process
3. If the *configure* command has finished successfully, start the building process
make
4. If building is finished successfully, start the installation of Tcl.
All binary and service files of the product will be copied to the directory defined by TCL_INSTALL_DIR
All binary and service files of the product will be copied to the directory defined by *TCL_INSTALL_DIR*.
make install
@@ -58,48 +54,46 @@ Download the necessary archive from http://www.tcl.tk/software/tcltk/download.ht
Download the necessary archive from http://www.tcl.tk/software/tcltk/download.html and unpack it.
1. Enter the macosx sub-directory of the directory where the source files of Tk are located (TK_SRC_DIR).
1. Enter the *macosx* sub-directory of the directory where the source files of Tk are located <i>(TK_SRC_DIR)</i>.
cd TK_SRC_DIR/macosx
2. Run the configure command, where TCL_LIB_DIR is TCL_INSTALL_DIR/lib
2. Run the *configure* command, where TCL_LIB_DIR is TCL_INSTALL_DIR/lib
configure --enable-gcc --enable-shared --enable-threads --with-tcl=TCL_LIB_DIR --prefix=TK_INSTALL_DIR
where TCL_LIB_DIR is TCL_INSTALL_DIR/lib. For a 64 bit platform also add --enable-64bit option to the command line.
For a 64 bit platform also add <i>--enable-64bit</i> option to the command line.
3. If the configure command has finished successfully, start the building process
3. If the *configure* command has finished successfully, start the building process:
make
4. If building has finished successfully, start the installation of Tk.
All binary and service files of the product will be copied to the directory
defined by TK_INSTALL_DIR (usually TK_INSTALL_DIR is TCL_INSTALL_DIR)
4. If the building has finished successfully, start the installation of Tk. All binary and service files of the product will be copied to the directory defined by *TK_INSTALL_DIR* (usually it is TCL_INSTALL_DIR)
make install
@subsection dev_guides__building_3rdparty_osx_2_2 FreeType 2.4.10
FreeType is required for display of text in 3D viewer.
FreeType is required for text display in the 3D viewer.
Download the necessary archive from http://sourceforge.net/projects/freetype/files/ and unpack it.
1. Enter the directory where the source files of FreeType are located (FREETYPE_SRC_DIR).
1. Enter the directory where the source files of FreeType are located <i>(FREETYPE_SRC_DIR)</i>.
cd FREETYPE_SRC_DIR
2. Run the configure command
2. Run the *configure* command
configure --prefix=FREETYPE_INSTALL_DIR
For a 64 bit platform also add CFLAGS='-m64 -fPIC' CPPFLAGS='-m64 -fPIC' option to the command line.
For a 64 bit platform also add <i>CFLAGS='-m64 -fPIC' CPPFLAGS='-m64 -fPIC'</i> option to the command line.
3. If the configure command has finished successfully, start the building process
3. If the *configure* command has finished successfully, start the building process
make
4. If building has finished successfully, start the installation of FreeType.
All binary and service files of the product will be copied to the directory defined by FREETYPE_INSTALL_DIR
All binary and service files of the product will be copied to the directory defined by *FREETYPE_INSTALL_DIR*.
make install
@@ -109,7 +103,7 @@ Download the necessary archive from http://sourceforge.net/projects/freetype/fil
This third-party product is installed with binaries from the archive
that can be downloaded from http://threadingbuildingblocks.org/.
Go to \"Downloads / Commercial Aligned Release\", find the release version you need (e.g. tbb30_018oss)
Go to the **Download** page, find the release version you need (e.g. *tbb30_018oss*)
and pick the archive for Mac OS X platform.
To install, unpack the downloaded archive of TBB 3.0 product (*tbb30_018oss_osx.tgz*).
@@ -117,26 +111,26 @@ To install, unpack the downloaded archive of TBB 3.0 product (*tbb30_018oss_osx.
Download the necessary archive from http://geuz.org/gl2ps/ and unpack it.
1. Install or build cmake product from source file.
1. Install or build cmake product from the source file.
2. Start cmake in GUI mode with the directory where the source files of fl2ps are located
2. Start cmake in GUI mode with the directory, where the source files of *fl2ps* are located:
ccmake GL2PS_SRC_DIR
1. Press [c] to make the initial configuration
2. Define the necessary options CMAKE_INSTALL_PREFIX
3. Press [c] to make the final configuration
4. Press [g] to generate Makefile and exit
* Press <i>[c]</i> to make the initial configuration;
* Define the necessary options in *CMAKE_INSTALL_PREFIX*;
* Press <i>[c]</i> to make the final configuration;
* Press <i>[g]</i> to generate Makefile and exit.
or just run the following command:
cmake DCMAKE_INSTALL_PREFIX=GL2PS_INSTALL_DIR DCMAKE_BUILD_TYPE=Release
3. Start building of gl2ps
3. Start the building of gl2ps
make
4. Start the installation of gl2ps. Binaries will be installed according to the CMAKE_INSTALL_PREFIX option
4. Start the installation of gl2ps. Binaries will be installed according to the *CMAKE_INSTALL_PREFIX* option
make install
@@ -144,20 +138,20 @@ Download the necessary archive from http://geuz.org/gl2ps/ and unpack it.
Download the necessary archive from
http://sourceforge.net/projects/freeimage/files/Source%20Distribution/
and unpack it. The directory with unpacked sources is further referred to as FREEIMAGE_SRC_DIR.
and unpack it. The directory with unpacked sources is further referred to as *FREEIMAGE_SRC_DIR*.
Note that for building FreeImage on Mac OS X 10.7 you should replace Makefile.osx
in FREEIMAGE_SRC_DIR by corrected one which you can find in attachment to issue #22811 in OCCT Mantis bug tracker
(http://tracker.dev.opencascade.org/file_download.php?file_id=6937&type=bug) or elsewhere.
Note that for building FreeImage on Mac OS X 10.7 you should replace *Makefile.osx*
in *FREEIMAGE_SRC_DIR* by the corrected file, which you can find in attachment to issue #22811 in OCCT Mantis bug tracker
(http://tracker.dev.opencascade.org/file_download.php?file_id=6937&type=bug).
1. If you are building FreeImage 3.15.x you can skip this step.
Modify FREEIMAGE_SRC_DIR/Source/OpenEXR/Imath/ImathMatrix.h:
1. If you build FreeImage 3.15.x you can skip this step.
Modify <i>FREEIMAGE_SRC_DIR/Source/OpenEXR/Imath/ImathMatrix.h:</i>
In line 60 insert the following:
#include string.h
Modify FREEIMAGE_SRC_DIR/Source/FreeImage/PluginTARGA.cpp:
Modify <i>FREEIMAGE_SRC_DIR/Source/FreeImage/PluginTARGA.cpp:</i>
In line 320 replace:
@@ -167,7 +161,7 @@ in FREEIMAGE_SRC_DIR by corrected one which you can find in attachment to issue
SwapShort(&value);
2. Enter the directory where the source files of FreeImage are located (FREEIMAGE_SRC_DIR).
2. Enter the directory where the source files of FreeImage are located <i>(FREEIMAGE_SRC_DIR)</i>.
cd FREEIMAGE_SRC_DIR
@@ -177,12 +171,11 @@ in FREEIMAGE_SRC_DIR by corrected one which you can find in attachment to issue
4. Run the installation process
1. If you have permissions to write to /usr/local/include and /usr/local/lib directories then run the following command:
1. If you have the permission to write into <i>/usr/local/include</i> and <i>/usr/local/lib</i> directories, run the following command:
make install
2. If you do not have permissions to write to /usr/include and /usr/lib directories
then you need to modify the file FREEIMAGE_SRC_DIR/Makefile.osx:
2. If you do not have this permission, you need to modify file *FREEIMAGE_SRC_DIR/Makefile.osx*:
Change line 49 from:   
@@ -213,6 +206,6 @@ in FREEIMAGE_SRC_DIR by corrected one which you can find in attachment to issue
make PREFIX=FREEIMAGE_INSTALL_DIR install
5. Clean the temporary files
5. Clean temporary files
make clean

View File

@@ -1,27 +1,25 @@
 Building 3rd-party libraries on Windows {#dev_guides__building_3rdparty_windows}
 Building 3rd-party libraries on Windows {#occt_dev_guides__building_3rdparty_windows}
==============================================
@tableofcontents
@section dev_guides__building_3rdparty_win_1 Introduction
This document presents guidelines for building third-party products
used by Open CASCADE Technology (OCCT) and samples on Windows platform.
This document presents guidelines for building third-party products used by Open CASCADE Technology (OCCT) and samples on Windows platform. It is assumed that you are already familiar with MS Visual Studio / Visual C++.
This guide assumfamiliar with MS Visual Studio / Visual C++.
You need to use the same version of MS Visual Studio for building all third-party products and OCCT itself, in order to receive a consistent set of run-time binaries.
You need to use the same version of MS Visual Studio for building
all third-party products and OCCT itself, in order to receive a consistent set of run-time binaries.
The links for downloading the third-party products are available on the web site of OPEN CASCADE SAS at http://www.opencascade.org/getocc/require/. There are two types of third-party products used by OCCT:
The links for downloading the third-party products are available on the web site
of OPEN CASCADE SAS at http://www.opencascade.org/getocc/require/.
There are two types of third-party products which are used by OCCT:
* Mandatory products:
* Tcl/Tk 8.5 - 8.6;
* FreeType 2.4.10 - 2.5.3.
* Optional products:
* TBB 3.x - 4.x;
* gl2ps 1.3.5 - 1.3.8;
* FreeImage 3.14.1 -3.16.0;
* VTK 6.1.0.
* Mandatory products: Tcl/Tk 8.5 - 8.6 and  FreeType 2.4.10 - 2.4.11
* Optional products: TBB 3.x - 4.x, gl2ps 1.3.5 - 1.3.8, FreeImage 3.14.1 -3.15.4
It is recommended to create a separate new folder on your workstation where
you will unpack the downloaded archives of the third-party products,
and where you will build these products (for example, *c:\\occ3rdparty*).
It is recommended to create a separate new folder on your workstation, where you will unpack the downloaded archives of the third-party products, and where you will build these products (for example, *c:\\occ3rdparty*).
Further in this document, this folder is referred to as *3rdparty*.
@@ -29,39 +27,88 @@ Further in this document, this folder is referred to as *3rdparty*.
@subsection dev_guides__building_3rdparty_win_2_1 Tcl/Tk
Tcl/Tk is required for DRAW test harness.We recommend installing a binary distribution that could
be downloaded from http://www.activestate.com/activetcl.
Tcl/Tk is required for DRAW test harness.
Go to \"Free Downloads\" and pick the version of the Install Wizard
that matches your target platform 32 bit (x86) or 64 bit (x64).
The version of Visual Studio you use is irrelevant when choosing the Install Wizard.
@subsubsection dev_guides__building_3rdparty_win_2_1_1 Installation from sources: Tcl
Download the necessary archive from http://www.tcl.tk/software/tcltk/download.html and unpack it.
1. In the *win* sub-directory, edit file *buildall.vc.bat*:
Run the Install Wizard you downloaded, and install Tcl/Tk products
* Edit the line "call ... vcvars32.bat" to have correct path to the version of Visual Studio to be used for building, for instance:
* to 3rdparty\\tcltk-win32 folder (for 32-bit platform) or
* to 3rdparty\\tcltk-win64 folder (for 64-bit platform).
call "%VS80COMNTOOLS%\vsvars32.bat"
Further in this document, this folder is referred to as *tcltk*.
If you are building 64-bit version, set environment accordingly, e.g.:
call "%VS80COMNTOOLS%\..\..\VC\vcvarsall.bat" amd64
* Define variable *INSTALLDIR* pointing to directory where Tcl/Tk will be installed, e.g.:
set INSTALLDIR=D:\OCCT\3rdparty\tcltk-86-32
* Add option *install* to the first command line calling *nmake*:
nmake -nologo -f makefile.vc release htmlhelp install %1
* Remove second call to *nmake* (building statically linked executable)
2. Edit file *rules.vc* replacing line
SUFX = tsgx
by
SUFX = sgx
This is to avoid extra prefix 't' in the library name, which is not recognized by default by OCCT build tools.
3. By default, Tcl uses dynamic version of run-time library (MSVCRT), which must be installed on the system where Tcl will be used.
You may wish to link Tcl library with static version of run-time to avoid this dependency.
For that:
* Edit file *makefile.vc* replacing strings "crt = -MD" by "crt = -MT"
* Edit source file *tclMain.c* (located in folder *generic*) commenting out forward declaration of function *isatty()*.
4. In the command prompt, run *buildall.vc.bat*
You might need to run this script twice to have *tclsh* executable installed; check subfolder *bin* of specified installation path to verify this.
5. For convenience of use, we recommend making a copy of *tclsh* executable created in subfolder *bin* of *INSTALLDIR* and named with Tcl version number suffix, as *tclsh.exe* (with no suffix)
> cd D:\OCCT\3rdparty\tcltk-86-32\bin
> cp tclsh86.exe tclsh.exe
@subsubsection dev_guides__building_3rdparty_win_2_1_2 Installation from sources: Tk
Download the necessary archive from http://www.tcl.tk/software/tcltk/download.html and unpack it.
Apply the same steps as described for building Tcl above, with the same INSTALLDIR.
Note that Tk produces its own executable, called *wish*.
You might need to edit default value of *TCLDIR* variable defined in *buildall.vc.bat* (should be not necessary if you unpack both Tcl and Tk sources in the same folder).
@subsection dev_guides__building_3rdparty_win_2_2 FreeType
FreeType is required for display of text in 3D viewer.
You can download its sources from http://sourceforge.net/projects/freetype/files/
FreeType is required for text display in a 3D viewer. You can download its sources from http://sourceforge.net/projects/freetype/files/
The building process is the following:
### The building procedure
1. Unpack the downloaded archive of FreeType product into the *3rdparty* folder.
1. Unpack the downloaded archive of FreeType product into the *3rdparty* folder. As a result, you will get a folder named, for example, *3rdparty\\freetype-2.4.10*. Further in this document, this folder is referred to as *freetype*.
2. Open the solution file *freetype\\builds\\win32\\vc20xx\\freetype.sln* in Visual Studio. Here *vc20xx* stands for your version of Visual Studio.
As a result, you should have a folder named for example, *3rdparty\\freetype-2.4.10*. Further in this document, this folder is referred to as *freetype*.
3. Select the configuration to build: either Debug or Release.
2. Open the solution file *freetype\\builds\\win32\\vc20xx\\freetype.sln* in Visual Studio, where vc20xx stands for the version of Visual Studio you are using.
3. Select a configuration to build: either Debug or Release.
4. Build the *freetype* project.
As a result, you will get a freetype import library (.lib) in the *freetype\\obj\\win32\\vc20xx* folder.
As a result, you will get a freetype import library (.lib) in the *freetype\\obj\\win32\\vc20xx* folder.
5. If you are building for 64 bit platform, start the Configuration Manager (Build - Configuration Manager),
and add *x64* platform to the solution configuration by copying the settings from Win32 platform:
5. If you build FreeType for a 64 bit platform, select in the main menu **Build - Configuration Manager** and add *x64* platform to the solution configuration by copying the settings from Win32 platform:
@image html /dev_guides/building/3rdparty/images/3rdparty_image001.png
@image latex /dev_guides/building/3rdparty/images/3rdparty_image001.png
@@ -73,63 +120,59 @@ The building process is the following:
Build the *freetype* project.
As a result, you should obtain a 64 bit import library (.lib) file in the *freetype\\x64\\vc20xx* folder.
As a result, you will obtain a 64 bit import library (.lib) file in the *freetype\\x64\\vc20xx* folder.
If you want to build freetype as a dynamic library (.dll) follow items 6, 7 and 8 of this list.
To build FreeType as a dynamic library (.dll) follow steps 6, 7 and 8 of this procedure.
6. Open Project-Properties-Configuration Properties-General and change option 'Configuration Type' to \"*Dynamic Library (.dll)*\".
6. Open menu Project-> Properties-> Configuration Properties-> General and change option **Configuration Type** to *Dynamic Library (.dll)*.
7. Edit file *freetype\\include\\freetype\\config\\ftoption.h*:
in line 255, uncomment the definition of macro FT_EXPORT and change it as follows:
in line 255, uncomment the definition of macro *FT_EXPORT* and change it as follows:
#define FT_EXPORT(x) __declspec(dllexport) x
8. Build the *freetype* project.
As a result, you should obtain import library (.lib) and dynamic library (.dll)
files in *freetype \\objs\\release or \\objs\\debug folders.*
If you are building for a 64 bit platform, follow item 5 of this list.
As a result, you will obtain the files of the import library (.lib) and the dynamic library (.dll) in folders <i>freetype \\objs\\release</i> or <i>\\objs\\debug </i>.
If you build for a 64 bit platform, follow step 5 of the procedure.
In order to facilitate use of the FreeType libraries in OCCT with minimal adjustment of its build procedures,
it is recommended to copy the include files and libraries of FreeType to a separate folder, named according to the pattern:
*freetype-compiler-bitness-building mode*
where
To facilitate the use of FreeType libraries in OCCT with minimal adjustment of build procedures, it is recommended to copy the include files and libraries of FreeType into a separate folder, named according to the pattern: *freetype-compiler-bitness-building mode*, where:
* **compiler** is *vc8* or *vc9* or *vc10* or *vc11*;
* **bitness** is *32* or *64*;
* **building mode** is *opt* (for Release) or *deb* (for Debug).
* compiler is vc8 or vc9 or vc10 or vc11;
* bitness is 32 or 64;
* building mode is opt (for Release) or deb (for Debug)
The include subfolder should be copied as is, while libraries should be renamed to
*freetype.lib* and *freetype.dll* (suffixes removed) and placed to subdirectories
*lib *and *bin*, respectively. If Debug configuration is built,
the Debug libraries should be put in subdirectories *libd* and *bind*.
The *include* subfolder should be copied as is, while libraries should be renamed to *freetype.lib* and *freetype.dll* (suffixes removed) and placed to subdirectories *lib *and *bin*, respectively. If the Debug configuration is built, the Debug libraries should be put into subdirectories *libd* and *bind*.
@section dev_guides__building_3rdparty_win_3 Building Optional Third-party Products
@subsection dev_guides__building_3rdparty_win_3_1 TBB
This third-party product is installed with binaries
This third-party product is installed with binaries
from the archive that can be downloaded from http://threadingbuildingblocks.org/.
Go to \"Downloads page\", find the release version you need (e.g. tbb30_018oss) and pick the archive for Windows platform.
Go to the **Download** page, find the release version you need (e.g. *tbb30_018oss*) and pick the archive for Windows platform.
Unpack the downloaded archive of TBB product into the *3rdparty* folder.
Further in this document, this folder is referred to as *tbb*.
@subsection dev_guides__building_3rdparty_win_3_2 gl2ps
This third-party product should be built as a dynamically loadable library (dll file).
You can download its sources from http://geuz.org/gl2ps/src/
You can download its sources from http://geuz.org/gl2ps/src/.
The building process is the following:
### The building procedure
1. Unpack the downloaded archive of gl2ps product (e.g. *gl2ps-1.3.5.tgz*) into the *3rdparty* folder.
As a result, you should have a folder named for example, *3rdparty\\gl2ps-1.3.5-source*.
As a result, you will get a folder named, for example, *3rdparty\\gl2ps-1.3.5-source*.
Rename it according to the rule: gl2ps-platform-compiler-building mode, where
* platform is win32 or win64;
* compiler is vc8 or vc9 or vc10;
* building mode - opt (for release) or deb (for debug)
Rename it into <i>gl2ps-platform-compiler-building mode</i>, where
* **platform** is *win32* or *win64*;
* **compiler** is *vc8*, *vc9* or *vc10*;
* **building mode** - *opt* (for release) or *deb* (for debug).
For example, <i>gl2ps-win64-vc10-deb</i>
Further in this document, this folder is referred to as *gl2ps*.
@@ -138,7 +181,7 @@ The building process is the following:
3. Edit the file *gl2ps\\CMakeLists.txt*.
After line 113 in CMakeLists.txt:
After line 113 in *CMakeLists.txt*:
set_target_properties(shared PROPERTIES COMPILE_FLAGS \"-DGL2PSDLL -DGL2PSDLL_EXPORTS\")
@@ -146,10 +189,9 @@ The building process is the following:
add_definitions(-D_USE_MATH_DEFINES)
Attention: If cygwin was installed on your computer make sure that there is no path
to the latter in the PATH variable in order to avoid possible conflicts during the configuration.
Attention: If Cygwin was installed on your computer, make sure that there is no path to it in the *PATH* variable to avoid possible conflicts during the configuration.
4. Launch CMake (cmake-gui.exe) using the Program menu.
4. Launch CMake <i>(cmake-gui.exe)</i> using the Program menu.
In CMake:
@@ -161,39 +203,41 @@ The building process is the following:
(for example, *gl2ps\\bin*).
Further in this document, this folder is referred to as *gl2ps_bin*.
* Press the \"Configure\" button.
* Press **Configure** button.
@image html /dev_guides/building/3rdparty/images/3rdparty_image004.png
@image latex /dev_guides/building/3rdparty/images/3rdparty_image004.png
* Select the generator (the compiler and the target platform - 32 or 64 bit) in the pop-up window.
@image html /dev_guides/building/3rdparty/images/3rdparty_image005.png
@image latex /dev_guides/building/3rdparty/images/3rdparty_image005.png
* Then press the \"Finish\" button to return to the main CMake window.
* Press **Finish** button to return to the main CMake window.
Expand the ENABLE group and uncheck ENABLE_PNG and ENABLE_ZLIB check boxes.
@image html /dev_guides/building/3rdparty/images/3rdparty_image006.png
@image latex /dev_guides/building/3rdparty/images/3rdparty_image006.png
* Expand the CMAKE group and define CMAKE_INSTALL_PREFIX
(path where you want to install the build results, for example, *c:\\occ3rdparty\\gl2ps-1.3.5*).
* Expand the CMAKE group and define *CMAKE_INSTALL_PREFIX* which is the path where you want to install the build results, for example, *c:\\occ3rdparty\\gl2ps-1.3.5*.
@image html /dev_guides/building/3rdparty/images/3rdparty_image007.png
@image latex /dev_guides/building/3rdparty/images/3rdparty_image007.png
* Press the \"Configure\" button again, and then the \"Generate\" button in order to generate
Visual Studio projects. After completion, close CMake application.
* Press **Configure** button again, then press **Generate** button to generate Visual Studio projects. After completion, close CMake application.
5. Open the solution file *gl2ps_bin\\gl2ps.sln* in Visual Studio.
* Select a configuration to build
* Choose \"*Release*\" if you are building Release binaries.
* Choose \"*Debug*\" if you are building Debug binaries.
* Select a platform to build.
* Choose \"*Win32*\" if you are building for a 32 bit platform.
* Choose \"*x64*\" if you are building for a 64 bit platform.
* Select a configuration to build
* Choose **Release** to build Release binaries.
* Choose **Debug** to build Debug binaries.
* Select a platform to build.
* Choose **Win32** to build for a 32 bit platform.
* Choose **x64** to build for a 64 bit platform.
* Build the solution.
* Build the *INSTALL* project.
As a result, you should have the installed gl2ps product in the *CMAKE_INSTALL_PREFIX* path.
As a result, you should have the installed gl2ps product in the *CMAKE_INSTALL_PREFIX* path.
@subsection dev_guides__building_3rdparty_win_3_3 FreeImage
@@ -201,111 +245,87 @@ This third-party product should be built as a dynamically loadable library (.dll
You can download its sources from
http://sourceforge.net/projects/freeimage/files/Source%20Distribution/
The building process is the following:
### The building procedure:
1. Unpack the downloaded archive of FreeImage product into *3rdparty* folder.
As a result, you should have a folder named *3rdparty\\FreeImage*.
As a result, you should have a folder named *3rdparty\\FreeImage*.
Rename it according to the rule: freeimage-platform-compiler-building mode, where
Rename it according to the rule: *freeimage-platform-compiler-building mode*, where
* platform is win32 or win64;
* compiler is vc8 or vc9 or vc10 or vc11;
* building mode is opt (for release) or deb (for debug)
* **platform** is *win32* or *win64*;
* **compiler** is *vc8* or *vc9* or *vc10* or *vc11*;
* **building mode** is *opt* (for release) or *deb* (for debug)
Further in this document, this folder is referred to as *freeimage*.
2. Open the solution file *freeimage\\FreeImage.*.sln* in Visual Studio that corresponds to the version of Visual Studio you use.
2. Open the solution file *freeimage\\FreeImage.*.sln* in your Visual Studio.
Since the version of Visual Studio you use is higher than VC++ 2008, apply conversion of the workspace.
If you use a Visual Studio version higher than VC++ 2008, apply conversion of the workspace.
Such conversion should be suggested automatically by Visual Studio.
3. Select a configuration to build.
- Choose \" *Release* \" if you are building Release binaries.
- Choose \" *Debug* \" if you are building Debug binaries.
- Choose **Release** if you are building Release binaries.
- Choose **Debug** if you are building Debug binaries.
*Note:*
If you want to build a debug version of FreeImage binaries then you must rename
the following files for projects FreeImage and FreeimagePlus:
If you want to build a debug version of FreeImage binaries then you need to rename the following files in FreeImage and FreeimagePlus projects:
Project -> Properties -> Configuration Properties -> Linker -> General -> Output File
Project-Properties-Configuration Properties-Linker-General-Output File
FreeImage*d*.dll to FreeImage.dll
FreeImagePlus*d*.dll to FreeImagePlus.dll
from FreeImage*d*.dll to FreeImage.dll
from FreeImagePlus*d*.dll to FreeImagePlus.dll
Project -> Properties -> Configuration Properties -> Linker -> Debugging-> Generate Program Database File
Project-Properties-Configuration Properties-Linker-Debugging-Generate Program Database File
FreeImage*d*.pdb to FreeImage.pdb
FreeImagePlus*d*.pdb to FreeImagePlus.pdb
from FreeImage*d*.pdb to FreeImage.pdb
from FreeImagePlus*d*.pdb to FreeImagePlus.pdb
Project -> Properties -> Configuration Properties -> Linker -> Advanced-Import Library
Project-Properties-Configuration Properties-Linker-Advanced-Import Library
FreeImage*d*.lib to FreeImage.lib
FreeImagePlus*d*.lib to FreeImagePlus.lib
from FreeImage*d*.lib to FreeImage.lib
from FreeImagePlus*d*.lib to FreeImagePlus.lib
Project -> Properties -> Configuration Properties -> Build Events -> Post -> Build Event -> Command Line
Project-Properties-Configuration Properties-Build Events-Post-Build Event-Comand Line
FreeImage*d*.dll to FreeImage.dll
FreeImage*d*.lib to FreeImage.lib
FreeImagePlus*d*.dll to FreeImagePlus.dll
FreeImagePlus*d*.lib to FreeImagePlus.lib
from FreeImage*d*.dll to FreeImage.dll
from FreeImage*d*.lib to FreeImage.lib
from FreeImagePlus*d*.dll to FreeImagePlus.dll
from FreeImagePlus*d*.lib to FreeImagePlus.lib
Additionally, for project FreeImagePlus rename:
Project-Properties-Configuration Properties-Linker-Input-Additional Dependencies
Additionally, rename in project FreeImagePlus
Project -> Properties -> Configuration Properties -> Linker -> Input -> Additional Dependencies
from FreeImage*d*.lib to FreeImage.lib
4. Select a platform to build.
- Choose \" *Win32* \" if you are building for a 32 bit platform.
- Choose \" *x64* \" if you are building for a 64 bit platform.
- Choose *Win32* if you are building for a 32 bit platform.
- Choose *x64* if you are building for a 64 bit platform.
5. Start the building process.
As a result, you should have the library files of FreeImage product in the
*freeimage\\Dist* folder (FreeImage.dll and FreeImage.lib files) and in the
*freeimage\\Wrapper\\FreeImagePlus\\dist* folder (FreeImagePlus.dll and
FreeImagePlus.lib files).
As a result, you should have the library files of FreeImage product in *freeimage\\Dist* folder (*FreeImage.dll* and *FreeImage.lib*) and in *freeimage\\Wrapper\\FreeImagePlus\\dist* folder (*FreeImagePlus.dll* and *FreeImagePlus.lib*).
@subsection dev_guides__building_3rdparty_win_opencl OpenCL ICD Loader
@subsection dev_guides__building_3rdparty_win_3_4 VTK
If you have OpenCL SDK (one provided by Apple, AMD, NVIDIA, Intel, or other
vendor) installed on your system, you should find OpenCL headers and
libraries required for building OCCT inside that SDK.
VTK is an open-source, freely available software system for 3D computer graphics, image processing and visualization. VTK Integration Services component provides adaptation functionality for visualization of OCCT topological shapes by means of VTK library.
Alternatively, you can use OpenCL ICD (Installable Client Driver) Loader
provided by Khronos group. The following describes steps used to build OpenCL
ICD Loader version 1.2.11.0.
### The building procedure:
1. Download OpenCL ICD Loader sources archive and OpenCL header files from
Khronos OpenCL Registry
http://www.khronos.org/registry/cl/
1. Download the necessary archive from http://www.vtk.org/VTK/resources/software.html and unpack it into *3rdparty* folder.
2. Unpack the archive and put headers in **inc/CL** sub-folder
As a result, you will get a folder named, for example, <i>3rdparty\VTK-6.1.0.</i>
3. Use CMake to generate VS projects for building the library:
- Start CMake-GUI and select OpenCL ICD Loader folder as source path,
and the folder of your choice for VS project and intermediate build data
- Click Generate
- Select VS version to be used (among the one you have installed; we
recommend using VS 2010), and architecture (32- or 64-bit)
Further in this document, this folder is referred to as *VTK*.
4. Open solution **OPENCL_ICD_LOADER.sln** generated in the build folder.
Though not strictly necessary, we recommend making two changes in generated
projects:
- Add file **OpenCL.rc** to project OpenCL, to have version and Khronos
copyright correctly embedded in DLL
- In properties of OpenCL project, on "C/C++ / Code Generation" page,
for Release configuration, change "Runtime library" to "Multi-threaded
(/MT)", to avoid dependency on run-time DLL.
5. Build project OpenCL in Release mode
2. Use CMake to generate VS projects for building the library:
- Start CMake-GUI and select VTK folder as source path, and the folder of your choice for VS project and intermediate build data.
- Click **Configure**.
- Select the VS version to be used from the ones you have installed (we recommend using VS 2010) and the architecture (32 or 64-bit).
- Generate VS projects with default CMake options. The open solution *VTK.sln* will be generated in the build folder.
6. Create installation folder for OpenCL IDL Loader package and put there:
- OpenCL header files in **include/CL** subfolder
- OpenCL.dll (generated in **bin/Release** subfolder of source package)
in **bin** subfolder
- OpenCL.lib (generated in **Release** subfolder of build directory)
in **lib** subfolder
3. Build project VTK in Release mode.

View File

@@ -0,0 +1,71 @@
Building with CMake and ADT for Android {#occt_dev_guides__building_android}
===================
@tableofcontents
This file describes the steps to build OCCT libraries from a complete source package
with following tools:
- Generation of eclipse project files
- CMake v3.0+ http://www.cmake.org/cmake/resources/software.html
- Cross-compilation toolchain for CMake https://github.com/taka-no-me/android-cmake
- Android NDK rev.10+ https://developer.android.com/tools/sdk/ndk/index.html
- Make: MinGW v4.82+ for Windows, GNU Make vXX for Linux. http://sourceforge.net/projects/mingw/files/
- Building eclipse project files of OCCT
- Android Developer Tools (ADT) v22+ https://developer.android.com/sdk/index.html
## Generation of eclipse project files
Run GUI tool provided by CMake: cmake-gui
### Tools configuration
- Specify the root folder of OCCT (<i>$CASROOT</i>, which contains *CMakelists.txt* file) by clicking **Browse Source**.
- Specify the location (build folder) for Cmake generated project files by clicking **Browse Build**.
@figure{/dev_guides/building/android/images/android_image001.png}
Click **Configure** button. It opens the window with a drop-down list of generators supported by CMake project. -
Select "Eclipse CDT4 - MinGW MakeFiles" item from the list
- Choose "Specify toolchain file for cross-compiling"
- Click "Next"
@figure{/dev_guides/building/android/images/android_image002.png}
- Specify the Toolchain file at next dialog by android.toolchain.cmake is contained by cross-compilation toolchain for CMake
- Click "Finish"
@figure{/dev_guides/building/android/images/android_image003.png}
Add cache entry ANDROID_NDK - path (entry type is PATH) to the NDK folder ("Add Entry" button)
@figure{/dev_guides/building/android/images/android_image004.png}
if there is message "CMake Error: CMake was unable to find a build program corresponding to "MinGW Makefiles". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool."
Define CMAKE_MAKE_PROGRAM variable with the file path to mingw32-make executable.
@figure{/dev_guides/building/android/images/android_image005.png}
### OCCT Configuration
How to configure OCCT, see "OCCT Configuration" section of @ref occt_dev_guides__building_cmake "Building with CMake"
taking into account the specific configuration variables for android:
- ANDROID_ABI = armeabi-v7a
- ANDROID_NATIVE_API_LEVEL = 15
- ANDROID_NDK_LAYOUT is equal to BUILD_CONFIGURATION variable
- CMAKE_ECLIPSE_VERSION is equal to installed eclipse version (e.g., 4.2)
Configure parallel building:
- CMAKE_ECLIPSE_MAKE_ARGUMENTS = -jN where N = your numbers of CPU cores (threads)
@figure{/dev_guides/building/android/images/android_image006.png}
### Generation of eclipse projects files
Click **Generate** button and wait until the generation process is finished.
Then the eclipse project files will appear in the build folder (e.g. <i> D:/android-build-eclipse-api-15 </i>).
## Building eclipse project files of OCCT
- Open eclipse (downloaded ADT bundle contains it)
@figure{/dev_guides/building/android/images/android_image007.png}
- Import "Existing project into Workspace"
@figure{/dev_guides/building/android/images/android_image008.png}
@figure{/dev_guides/building/android/images/android_image009.png}
- Build ALL
@figure{/dev_guides/building/android/images/android_image010.png}
When the building process has finished, libraries are located in \<build folder\>/out (e.g. <i> D:/android-build-eclipse-api-15/out </i>).

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

View File

@@ -1,71 +1,72 @@
Building with Automake {#dev_guides__building__automake}
Building with Automake {#occt_dev_guides__building_automake}
======================
This file describes steps to build OCCT libraries from complete source
archive on Linux with GNU build system (Autotools).
This file describes steps to build OCCT libraries from a complete source
archive on Linux with **Autotools** GNU build system.
If you are building OCCT from bare sources (as in Git repository), or do some
If you build OCCT from bare sources (as in Git repository), or do some
changes affecting CDL files, you need to use WOK to re-generate header files
and build scripts / projects. See paragraph 1 \ref dev_guides__building__wok for instructions.
and build scripts / projects. See paragraph 1 \ref occt_dev_guides__building_wok for instructions.
Before building OCCT, you need to install required third-party libraries; see paragraph 1 of
\ref dev_guides__building for instructions.
Before building OCCT, you need to install the required third-party libraries; see paragraph 1 of
\ref occt_dev_guides__building for instructions.
Note that during compilation by makefiles on some Linux OS on a station with
Note that during compilation by makefiles on Linux station with
NVIDIA video card you may experience problems because the installation
procedure of NVIDIA video driver removes library libGL.so included in package
libMesaGL from directory /usr/X11R6/lib and places this library libGL.so in
directory /usr/lib. However, libtool expects to find the library in directory
/usr/X11R6/lib, which causes compilation crash (See /usr/X11R6/lib/libGLU.la).
procedure of NVIDIA video driver removes library *libGL.so* included in package
*libMesaGL* from directory <i>/usr/X11R6/lib</i> and places this library *libGL.so* in
directory <i>/usr/lib</i>. However, *libtool* expects to find the library in directory
<i>/usr/X11R6/lib</i>, which causes compilation crash (See <i>/usr/X11R6/lib/libGLU.la </i>).
To prevent this, suggest making links:
To prevent this, it is suggested to make links:
ln -s /usr/lib/libGL.so /usr/X11R6/lib/libGL.so
ln -s /usr/lib/libGL.la /usr/X11R6/lib/libGL.la
1.In OCCT root folder, launch build_configure script
ln -s /usr/lib/libGL.so /usr/X11R6/lib/libGL.so
ln -s /usr/lib/libGL.la /usr/X11R6/lib/libGL.la
This will generate files configure and Makefile.in for your system.
2.Go to the directory where OCCT will be built, and run configure to generate
makefiles.
1.In OCCT root folder, launch *build_configure* script to generate files *configure* and *Makefile.in* for your system.
$CASROOT/configure \<FLAGS\>
2.Go to the directory, where OCCT will be built, and run *configure* to generate makefiles.
Where \<FLAGS\> is a set of options.
$CASROOT/configure \<FLAGS\>
Where <i> \<FLAGS\> </i> is a set of options.
The following flags are mandatory:
* --with-tcl= defines location of tclConfig.sh
* --with-tk= defines location of tkConfig.sh
* --with-freetype= defines location of installed FreeType product
* --prefix= defines location for the installation of OCCT binaries
* <i> --with-tcl= </i> defines the location of *tclConfig.sh*;
* <i> --with-tk= </i> defines location of *tkConfig.sh*;
* <i> --with-freetype= </i> defines location of installed **FreeType** product
* <i> --prefix= </i> defines the location for installation of OCCT binaries
Additional flags:
* --with-gl2ps= defines location of installed gl2ps product
* --with-freeimage= defines location of installed FreeImage product
* --with-tbb-include= defines location of tbb.h
* --with-tbb-library= defines location of libtbb.so
* --with-opencl-include= defines location of cl.h
* --with-opencl-library= defines location of libOpenCL.so
* --enable-debug= yes: includes debug information, no: does not include debug information
* --enable-production= yes: switches code optimization, no: switches off code optimization
* --disable-draw - allows OCCT building without Draw.
* <i> --with-gl2ps= </i> defines the location of installed **gl2ps** product;
* <i> --with-freeimage= </i> defines the location of installed **FreeImage** product;
* <i> --with-tbb-include= </i> defines the location of *tbb.h*;
* <i> --with-tbb-library= </i> defines the location of *libtbb.so*;
* <i> --with-vtk-include= </i> defines the location of VTK includes;
* <i> --with-vtk-library= </i> defines the location of VTK libraries;
* <i> --enable-debug= yes: </i> includes debug information, no: does not include debug information;
* <i> --enable-production= yes: </i> switches code optimization, no: switches off code optimization;
* <i> --disable-draw </i> allows OCCT building without Draw.
If location of FreeImage, TBB, gl2ps or OpenCL is not specified, OCCT will be
built without these optional libraries.
If location of **FreeImage, TBB, gl2ps** or **VTK** is not specified, OCCT will be built without these optional libraries.
Attention: 64-bit platforms are detected automatically.
Attention: 64-bit platforms are detected automatically.
Example:
Example:
> ./configure -prefix=/PRODUCTS/occt-6.5.5 --with-tcl=/PRODUCTS/tcltk-8.5.8/lib --with-tk=/PRODUCTS/tcltk-8.5.8/lib --with-freetype=/PRODUCTS/freetype-2.4.10 --with-gl2ps=/PRODUCTS/gl2ps-1.3.5 --with-freeimage=/PRODUCTS/freeimage-3.14.1 --with-tbb-include=/PRODUCTS/tbb30_018oss/include --with-tbb-library=/PRODUCTS/tbb30_018oss/lib/ia32/cc4.1.0_libc2.4_kernel2.6.16.21 --with-opencl-include=/PRODUCTS/opencl-icd-1.2.11.0/include --with-opencl-library=/PRODUCTS/opencl-icd-1.2.11.0/lib
\> ./configure -prefix=/PRODUCTS/occt-6.5.5 --with-tcl=/PRODUCTS/tcltk-8.5.8/lib --with-tk=/PRODUCTS/tcltk-8.5.8/lib --with-freetype=/PRODUCTS/freetype-2.4.10 --with-gl2ps=/PRODUCTS/gl2ps-1.3.5 --with-freeimage=/PRODUCTS/freeimage-3.14.1 --with-tbb-include=/PRODUCTS/tbb30_018oss/include --with-tbb-library=/PRODUCTS/tbb30_018oss/lib/ia32/cc4.1.0_libc2.4_kernel2.6.16.21 -with-vtk-include=/PRODUCTS/VTK-6.1.0/include/vtk-6.1 with-vtk-library=/PRODUCTS/ /VTK-6.1.0//lib
3.If configure exits successfully, you can build OCCT with make command.
> make -j8 install
3.If configure exits successfully, you can build OCCT with *make* command.
To start DRAW, launch
\> make -j8 install
> draw.sh
4.To start *DRAW*, launch
\> draw.sh

View File

@@ -1,4 +1,4 @@
Building OCCT from sources {#dev_guides__building}
Building OCCT from sources {#occt_dev_guides__building}
=========
In order to build OCCT libraries from these sources for use in your program,
@@ -9,24 +9,24 @@ you need to:
See the following documents for short guide to installation of
third-party libraries on different platforms:
- \subpage dev_guides__building_3rdparty_windows
- \subpage dev_guides__building_3rdparty_linux
- \subpage dev_guides__building_3rdparty_osx
- \subpage occt_dev_guides__building_3rdparty_windows
- \subpage occt_dev_guides__building_3rdparty_linux
- \subpage occt_dev_guides__building_3rdparty_osx
2. If you use bare OCCT sources from Git repository or made some changes affecting
CDL files or dependencies of OCCT toolkits, you need to update header files generated
from \ref dev_guides__cdl "CDL", and regenerate build scripts for your environment using WOK.
See \subpage dev_guides__building__wok for details.
from \ref occt_dev_guides__cdl "CDL", and regenerate build scripts for your environment using WOK.
See \subpage occt_dev_guides__building_wok for details.
Skip to step 3 if you use complete source package (e.g. official OCCT
release) without changes in CDL.
3. Build using your preferred build tool.
- \subpage dev_guides__building__automake "Building on Linux with Autotools"
- \subpage dev_guides__building__cmake "Building with CMake (cross-platform)"
- \subpage dev_guides__building__code_blocks "Building on Mac OS X with Code::Blocks"
- \subpage dev_guides__building__msvc "Building on Windows with MS Visual Studio"
- \subpage dev_guides__building__xcode "Building on Mac OS X with Xcode"
- \subpage occt_dev_guides__building_automake "Building on Linux with Autotools"
- \subpage occt_dev_guides__building_cmake "Building with CMake (cross-platform)"
- \subpage occt_dev_guides__building_android "Building with CMake and ADT for Android (cross-platform)"
- \subpage occt_dev_guides__building_code_blocks "Building on Mac OS X with Code::Blocks"
- \subpage occt_dev_guides__building_msvc "Building on Windows with MS Visual Studio"
- \subpage occt_dev_guides__building_xcode "Building on Mac OS X with Xcode"
The current version of OCCT can be consulted in the file src/Standard/Standard_Version.hxx

View File

@@ -1,232 +1,231 @@
Building with CMake {#dev_guides__building__cmake}
Building with CMake {#occt_dev_guides__building_cmake}
===================
@tableofcontents
This file describes steps to build OCCT libraries from complete source package
with CMake. CMake is free software that can create GNU Makefiles, KDevelop,
XCode, and Visual Studio project files. Version 2.6 or above of CMake is
This file describes the steps to build OCCT libraries from a complete source package
with **CMake**. CMake is free software that can create GNU Makefiles, KDevelop,
XCode, Eclipse and Visual Studio project files. **CMake** version 3.0 or above is
required.
If you are building OCCT from bare sources (as in Git repository), or do some
If you build OCCT from bare sources (as in Git repository) or make some
changes affecting CDL files, you need to use WOK to re-generate header files
and build scripts / projects. See \ref dev_guides__building__wok for instructions.
and build scripts / projects. See \ref occt_dev_guides__building_wok for instructions.
Before building OCCT, you need to install required third-party libraries; see
instructions for your platform in @ref dev_guides__building.
Before building OCCT, you need to install the required third-party libraries; see the
instructions for your platform in @ref occt_dev_guides__building.
## Decide on location of build and install directories.
## Define the location of build and install directories.
The build directory is the one where intermediate files will be created (projects / makefiles, objects, binaries).
The install directory is the one where binaries will be installed after build,
along with header files and resources required for OCCT use in applications.
The build directory is where intermediate files (projects / makefiles, objects, binaries) will be created. Each built configuration should have its own build directory.
OCCT CMake scripts assume use of separate build and one install directories
for each configuration (Debug or Release).
The install directory is where binaries will be installed after build, along with header files and resources required for OCCT use in applications.
It is possible to install several configurations of OCCT (differentiated by platform, bitness, compiler, and build type) into the same directory.
It is recommended to separate build and install directories from OCCT source directory, for example:
/user/home/occt/ - sources
/user/home/tmp/occt-build-release - intermediate files (release)
/user/home/occt-install-release - installed binaries (release)
/user/home/occt/ - sources
/user/home/tmp/occt-build-vc10-x64-release - intermediate files
/user/home/occt-install - installed binaries
## CMake usage
Run CMake indicating path to OCCT sources ($CASROOT; in previous example
CASROOT equal to /user/home/occt in lin case, and d:/occt in windows case)
and selected build directory (in prev example build directory is
/user/home/tmp/occt-build-release).
Run CMake indicating the path to OCCT sources <i>($CASROOT)</i> and selected build directory.
It is recommended to use GUI tools provided by CMake: cmake-gui on Windows
and Mac, ccmake on Linux.
It is recommended to use GUI tools provided by CMake: *cmake-gui* on Windows, Mac and Linux (*ccmake* also can be used on Linux).
### Windows:
@image html /dev_guides/building/cmake/images/cmake_image001.png
@image latex /dev_guides/building/cmake/images/cmake_image001.png
Specify the root folder of OCCT (<i>$CASROOT</i>, which contains *CMakelists.txt* file) by clicking **Browse Source**.
* Specify "main" CMakelists.txt meta-project location by clicking Browse Source (e.g., $CASROOT)
* Specify location (build folder) for Cmake generated project files by clicking Browse Build (e.g., d:/occt/build/win32-vc9-debug) (each cmake configuration of the project uses a specific build directory and a specific directory for installed files. It is recommended to compose names of the binary and install directory from system, bitness, compiler and build type.)
* Configure opens the window with a drop-down list of generators supported by CMake project. Select the required generator (e.g., Visual Studio 2008) and click Finish)
@figure{/dev_guides/building/cmake/images/cmake_image001.png}
@image html /dev_guides/building/cmake/images/cmake_image002.png
@image latex /dev_guides/building/cmake/images/cmake_image002.png
Specify the location (build folder) for Cmake generated project files by clicking **Browse Build**.
### Linux:
Each configuration of the project should be built in its own directory. When building multiple configurations it is recommended to indicate in the name of build directories the system, bitness, compiler, and build type (e.g., <i>d:/occt/build/win32-vc9-debug</i> ).
In the console, change to the build directory and call ccmake with the path to the source directory of the project:
**Configure** opens the window with a drop-down list of generators supported by CMake project. Select the required generator (e.g., Visual Studio 2008) and click **Finish**.
@figure{/dev_guides/building/cmake/images/cmake_image002.png}
### Linux (ccmake variant):
In the console, change to the build directory and call *ccmake* with the path to the source directory of the project:
> cd ~/occt/build/debug
> ccmake ~/occt
@image html /dev_guides/building/cmake/images/cmake_image003.png
@image latex /dev_guides/building/cmake/images/cmake_image003.png
@figure{/dev_guides/building/cmake/images/cmake_image003.png}
Press "c" to configure.
Press *c* to configure.
*cmake-gui* is used in the same way as described above for Windows.
### Mac OS:
Use cmake-gui (Applications -> CMake 2.8-10.app) to generate project files for the chosen build environment (e.g., XCode).
Use *cmake-gui* **Applications -> CMake 2.8-10.app** to generate project files for the chosen build environment (e.g., XCode).
@image html /dev_guides/building/cmake/images/cmake_image004.png
@image latex /dev_guides/building/cmake/images/cmake_image004.png
@figure{/dev_guides/building/cmake/images/cmake_image004.png}
## OCCT Configuration
The error message which appears at the end of configuration process, informs you about the required variables
The error message, which appears at the end of configuration process, informs you about the required variables,
which need to be defined. This error will appear until all required variables are defined correctly.
Note: In cmake-gui there is "grouped" option, which groups variables with a common prefix.
### Selection of components to be built
Note: In *cmake-gui* there is "grouped" option, which groups variables with a common prefix.
The variables with "BUILD_" prefix allow specifying OCCT components and
### Selection of the components to be built
The variables with <i>BUILD_</i> prefix allow specifying OCCT components and
configuration to be built:
* BUILD_CONFIGURATION - defines configuration to be built (Release by default).
* BUILD_<MODULE> - specify whether corresponding OCCT module should be
built (all toolkits). Note that even if whole module is not
selected for build, its toolkits used by other toolkits
selected for build will be included automatically.
* BUILD_TOOLKITS - allows including additional toolkits from non-selected
modules (should be list of toolkit names separated by a
space or a semicolon).
* BUILD_SAMPLES - specify whether OCCT MFC samples should be built.
* *BUILD_CONFIGURATION* - defines configuration to be built (Release by default).
* <i>BUILD_<MODULE></i> - specifies whether the corresponding OCCT module should be
built (all toolkits). Note that even if the whole module is not
selected for build, its toolkits used by other toolkits
selected for build will be included automatically.
* *BUILD_TOOLKITS* - allows including additional toolkits from non-selected
modules (should be list of toolkit names separated by a
space or a semicolon).
* *BUILD_SAMPLES* - specifies whether OCCT MFC samples should be built.
* *BUILD_PATCH_DIR* - optionally specifies additional folder containing patched OCCT source files.
The patch may contain arbitrary subset of OCCT source files (including CMake scripts, templates, etc.), organized in the same structure of folders as OCCT.
The projects generated by CMake will use files found in the patch folder instead of the corresponding files of OCCT.
Check variables with "USE_" prefix (USE_FREEIMAGE, USE_GL2PS, USE_TBB, and
USE_OPENCL) if you want to enable use of the corresponding optional 3rd-party
Check variables with <i>USE_</i> prefix (<i>USE_FREEIMAGE, USE_GL2PS, USE_TBB,</i> and
<i>USE_OPENCL</i>) if you want to enable use of the corresponding optional 3rd-party
library.
### 3rd-party configuration
### 3rd-party configuration (The variables with 3RDPARTY_ prefix)
### 3rd-party configuration (The variables with <i>3RDPARTY_</i> prefix)
If you have 3rd-party libraries in a non-default location
(e.g., on Windows, binaries downloaded from "http://www.opencascade.org/getocc/download/3rdparty/"),
specify 3RDPARTY_DIR variable that points to the folders of 3rdparty products (some or all).
At the next configuration 3rd-party product paths stored in 3RDPARTY_\<PRODUCT\>_DIR variable
will be searched for in 3RDPARTY_DIR directory. If the structure of 3RDPARTY_DIR directory
is the same as adopted in the OCCT, the directory will contain product dir, lib and header files.
(e.g., on Windows, binaries downloaded from http://www.opencascade.org/getocc/download/3rdparty/")
*3RDPARTY_DIR* variable should be specified with the path to the folders where required 3rd-party libraries will be sought
Press "Configure" ("c" key for ccmake).
The results of search for 3rd-party directories will be stored in *3RDPARTY_\<LIBRARY\>_DIR* variables. If *3RDPARTY_DIR* directory is defined, required libraries are sought in *3RDPARTY_DIR* location.
The result of the 3rdparty product search will be recorded in the corresponding variables:
The procedure expects to find binary and header files of each 3rd-party library in its own sub-directory: *bin*, *lib* and *include*.
* 3RDPARTY_\<PRODUCT\>_DIR - path to the product directory (with directory name) (e.g., D:/3rdparty/Tcl-8.5.12.0-32)
* 3RDPARTY_\<PRODUCT\>_LIBRARY - path to the .lib libraries (with the library name) (e.g., D:/3rdparty/Tcl-8.5.12.0-32/lib/tcl85.lib). In non-windows case, this variable is the same as 3RDPARTY_\<PRODUCT\>_DLL.
* 3RDPARTY_\<PRODUCT\>_INCLUDE - path to the include directory that contains the required header file (with "include" name) (e.g., D:/3rdparty/Tcl-8.5.12.0-32/include including tcl.h)
* 3RDPARTY_\<PRODUCT\>_DLL - path to the .dll/.so/.dylib library (with the library name) (e.g., D:/3rdparty/Tcl-8.5.12.0-32/bin/tcl85.dll)
Press **Configure** (**c** key for ccmake).
The result of the search are recorded in the corresponding variables:
* *3RDPARTY_\<PRODUCT\>_DIR* - path to the 3rdparty directory (with directory name) (e.g. <i>D:/3rdparty/tcltk-86-32</i>)
* *3RDPARTY_\<PRODUCT\>_LIBRARY_DIR* - path to directory containing a library (e.g. <i>D:/3rdparty/tcltk-86-32/lib</i>).
* *3RDPARTY_\<PRODUCT\>_INCLUDE_DIR* - path to the directory containing a header file (e.g., <i>D:/3rdparty/tcltk-86-32/include</i>)
* *3RDPARTY_\<PRODUCT\>_DLL_DIR* - path to the directory containing a shared library (e.g., <i>D:/3rdparty/tcltk-86-32/bin</i>) This variable is able just in windows case
Note: a libraries and include directories should be the children of product directory if the last one is defined.
The search process is as follows:
1. Common path: 3RDPARTY_DIR
2. Path to particular 3rd-party library: 3RDPARTY_\<PRODUCT\>_DIR
1. Common path: *3RDPARTY_DIR*
2. Path to a particular 3rd-party library: *3RDPARTY_\<PRODUCT\>_DIR*
3. Paths to headers and binaries:
1. 3RDPARTY_\<PRODUCT\>_INCLUDE
2. 3RDPARTY_\<PRODUCT\>_LIBRARY
3. 3RDPARTY_\<PRODUCT\>_DLL
1. *3RDPARTY_\<PRODUCT\>_INCLUDE_DIR*
2. *3RDPARTY_\<PRODUCT\>_LIBRARY_DIR*
3. *3RDPARTY_\<PRODUCT\>_DLL_DIR*
If a variable of any level is not defined (empty or \<variable name\>-NOTFOUND)
If a variable of any level is not defined (empty or <i> \<variable name\>-NOTFOUND </i>)
and the upper level variable is defined, the content of the non-defined variable
will be searched for at the next configuration step. If search process in level 3
does not find the required files, it searches in default places also.
will be sought at the next configuration step. If search process at level 3 does not find the required files, it seeks in default places.
**Note**: the names of searched libraries and header files are hardcoded.
Freetype search process tries to find ft2build.h file in 3RDPARTY_FREETYPE INCLUDE dir
and after that adds "3RDPARTY_FREETYPE_INCLUDE /freetype2" path to common includes if it exists.
Important: If *BUILD_CONFIGURATION* variable is changed, at the next configuration
*3RDPARTY_ variables* will be replaced by the search process result, except for the *3RDPARTY_DIR* variable.
Important: If BUILD_CONFIGURATION variable is changed - at the next configuration
3RDPARTY_ variables will be replaced by the search process result, except for the 3RDPARTY_DIR variable.
*Note*: CMake will produce an error after the configuration step until all required variables are defined correctly.
If the search result (include path, or library path, or dll path) does not meet your expectations -
you can change 3RDPARTY_\<PRODUCT\>_DIR variable, clear (if they are not empty)
3RDPARTY_\<PRODUCT\>_DLL, 3RDPARTY_\<PRODUCT\>_INCLUDE_DIR and 3RDPARTY_\<PRODUCT\>_LIBRARY variables
**Note** : CMake will produce an error after the configuration step until all required variables are defined correctly.
If the search result (include path, or library path, or dll path) does not meet your expectations,
you can change *3RDPARTY_\<PRODUCT\>_*_DIR variable*, clear (if they are not empty)
*3RDPARTY_\<PRODUCT\>_DLL_DIR, 3RDPARTY_\<PRODUCT\>_INCLUDE_DIR* and 3RDPARTY_\<PRODUCT\>_LIBRARY_DIR variables
(or clear one of them) and run the configuration process again.
At this time the search will be performed in the new identified directory
and the result will be recorded to empty variables (non-empty variables will not be replaced).
At this time the search will be performed in the newly identified directory
and the result will be recorded to corresponding variables (replace old value if it is necessary).
For example, (Linux case) 3RDPARTY_FREETYPE_DIR variable
/PRODUCTS/maintenance/Mandriva2010/freetype-2.3.7
can be changed to
For example, (Linux case) *3RDPARTY_FREETYPE_DIR* variable
/PRODUCTS/maintenance/Mandriva2010/freetype-2.4.10
and the related variables: 3RDPARTY_FREETYPE_DLL, 3RDPARTY_FREETYPE_INCLUDE_DIR and 3RDPARTY_FREETYPE_LIBRARY will be cleared.
can be changed to
@image html /dev_guides/building/cmake/images/cmake_image005.png
@image latex /dev_guides/building/cmake/images/cmake_image005.png
/PRODUCTS/maintenance/Mandriva2010/freetype-2.5.3
During configuration process the cleaned variables will be filled with new found values.
During the configuration process and the related variables (*3RDPARTY_FREETYPE_DLL_DIR*, *3RDPARTY_FREETYPE_INCLUDE_DIR* and *3RDPARTY_FREETYPE_LIBRARY_DIR*) will be filled with new found values
**Note**: The names of searched libraries and header files are hard-coded. If there is the need to change their names,
change appropriate cmake variables (edit CMakeCache.txt file or edit in cmake-gui in advance mode) without reconfiguration: *3RDPARTY_\<PRODUCT\>_INCLUDE* for include, *3RDPARTY_\<PRODUCT\>_LIB* for library and *3RDPARTY_\<PRODUCT\>_DLL* for shared library.
###The variables with INSTALL_ prefix:
Define in INSTALL_DIR variable the path where will be placed built OCCT files (libraries, executables and headers).
If INSTALL_\<PRODUCT\> variable is checked - 3rd-party products will be copied to the install directory.
Define *INSTALL_DIR* variable as the path will be contain the built OCCT files (libraries, executables and headers)
If <i>INSTALL_\<PRODUCT\></i> variable is checked, 3rd-party products will be copied to the install directory.
#### At the end of the configuration process "configuring done" message will be shown and the generation process can be started.
At the end of the configuration process "configuring done" message will be shown and the generation process can be started.
## OCCT Generation
This will create makefiles or project files for your build system.
This procedure will create makefiles or project files for your build system.
### Windows
Click Generate button and wait until the generation process is finished.
Then the project files will appear in the build folder (e.g., d:/occt/build/win32-vc9-release).
Click **Generate** button and wait until the generation process is finished.
Then the project files will appear in the build folder (e.g. <i> d:/occt/build/win32-vc9-release </i>).
### Linux
When the configuration is complete, start the generation process by pressing "g".
@image html /dev_guides/building/cmake/images/cmake_image006.png
@image latex /dev_guides/building/cmake/images/cmake_image006.png
Click **Generate** button (if you use cmake-gui) or press **g** (for ccmake) to start the generation process.
### Mac OS X
Click Generate button and wait until the generation process is finished.
Then the project files will appear in the build folder (e.g., /Developer/occt/build/XCode).
Click **Generate** button and wait until the generation process is finished.
Then the project files will appear in the build folder (e.g. <i> /Developer/occt/build/XCode </i>).
## OCCT Building
The install folder contains bin, inc, lib and res folders and a script to run DRAWEXE (draw.bat or draw.sh).
"bin" contains executables, DLL (Windows) style shared libraries and pdb-files in OCCT debug version,.
"lib" contains the import parts of DLL libraries.
"inc" contains header files.
"res" contains all required source files for OCCT.
The install folder contains the scripts to run *DRAWEXE* (*draw.bat* or *draw.sh*) and samples (if its were built; (see below **MFC samples**)); the directory structure is follow:
* **data** - data files for OCCT (brep, iges, stp)
* **inc** - header files
* **samples** - tcl sample files
* **src** - all required source files for OCCT
* **tests** - OCCT test suite
* **win32/vc10/bind**> - example relative directory tree of binary files (3rdparty and occt)
* **win32/vc9/lib**> - example relative directory tree of libraries (3rdparty and occt)
### Windows (Visual studio)
Go to the build folder, start the Visual Studio solution (OCCT.sln) and build it by clicking Build - Build Solution.
When the building process finished, build the INSTALL project
(by default the build solution process skips the building of the INSTALL project) to move the above files to INSTALL_DIR.
For this in the solution explorer right click on the INSTALL project and select Project Only - Build Only INSTALL.
Go to the build folder, start the Visual Studio solution *OCCT.sln* and build it by clicking **Build -> Build Solution**.
When the building process is finished, build the *INSTALL* project (by default the build solution process skips the building of the INSTALL project) to move the above files to *INSTALL_DIR*.
For this, right-click on the *INSTALL* project and select **Project Only -> Build Only** -> *INSTALL* in the solution explorer.
### Linux (make)
Change directory to binary dir and run make command
Change directory to the directory with binaries and run *make* command
> make
To copy all libraries, executables and chosen 3rd-party libraries run "make" command with "install" argument
To copy all libraries, executables and chosen 3rd-party libraries run *make* command with *install* argument
> make install
This command will move the above files to INSTALL_DIR.
This command will move the above files to *INSTALL_DIR*.
### Mac OS X (XCode)
Go to the build folder, start the XCode solution (OCCT.xcodeproj)
and build it by clicking Build -> Build.
Please notice that XCode may have worst responsibility to user actions
due to sources processing at first start.
Go to the build folder, start XCode solution *OCCT.xcodeproj* and build it by clicking **Build -> Build**.
Please notice that XCode may lag because it processes sources at the first start.
When the building process finished, build the INSTALL project
(by default the build solution process skips the building of the INSTALL project)
to move the above files to INSTALL_DIR.
Notice that env.sh (configure PATH and DYLD_LIBRARY_PATH environment variables
as well as Draw Harness extra variables) and draw.sh (to launch DRAWEXE) will be created in target directory.
When the building process has finished, build the *INSTALL* project (by default the build solution process skips the building of *INSTALL* project) to move the above files to *INSTALL_DIR*.
Notice that *env.sh* (which configures *PATH* and *DYLD_LIBRARY_PATH* environment variables
as well as Draw Harness extra variables) and *draw.sh* (to launch *DRAWEXE* ) will be created in the target directory.
## OCCT project debugging for Visual Studio
Run OCCT.bat from the build directory to start Visual Studio with required environment for debugging.
### MFC samples
On Windows you can also build binaries of MFC samples together with OCCT. For this, activate **BUILD_Samples** check-box in CMake configuration dialog.
@figure{/dev_guides/building/cmake/images/cmake_image007.png}
Please take into account that MFC sample binaries will be installed in the same folder as OCCT binaries during building of *INSTALL* project.
To run an MFC sample use *sample.bat* launcher. The command format is: <i>sample.bat *SampleName*</i> (e.g. <i>sample.bat ImportExport</i>).

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -1,64 +1,70 @@
Building with Code::Blocks on Mac OS X {#dev_guides__building__code_blocks}
Building with Code::Blocks on Mac OS X {#occt_dev_guides__building_code_blocks}
======================================
This file describes steps to build OCCT libraries from complete source package
on Mac OS X with Code::Blocks.
This file describes steps to build OCCT libraries from a complete source package
on Mac OS X with **Code::Blocks**.
If you are building OCCT from bare sources (as in Git repository), or do some
If you build OCCT from bare sources (as in Git repository) or do some
changes affecting CDL files, you need to use WOK to re-generate header files
and build scripts / projects. See \ref dev_guides__building__wok for instructions.
and build scripts / projects. See \ref occt_dev_guides__building_wok for instructions.
Before building OCCT, you need to install required third-party libraries; see
paragraph 1 of \ref dev_guides__building for details.
Before building OCCT, you need to install the required third-party libraries; see
paragraph 1 of \ref occt_dev_guides__building for details.
1. Add paths to the mandatory 3rd-party products (Tcl/Tk and FreeType) in file
custom.sh located in \<OCCT_ROOT_DIR\>. For this:
1. Add paths to the mandatory 3rd-party products (**Tcl/Tk** and **FreeType**) in file
*custom.sh* located in <i>\<OCCT_ROOT_DIR\></i>. For this:
1.1. Add paths to the includes in variable "CSF_OPT_INC";
1.1. Add paths to the includes in variable *CSF_OPT_INC*;
1.2. Add paths to the binary libraries in variable "CSF_OPT_LIB64";
1.2. Add paths to the binary libraries in variable *CSF_OPT_LIB64*;
All paths should be separated by ":" symbol.
2. Add paths to the optional 3rd-party libraries (TBB, gl2ps and FreeImage)
in the aforementioned environment variables "CSF_OPT_INC" and
"CSF_OPT_LIB64" from file custom.sh.
2. Add paths to the optional 3rd-party libraries (**TBB, gl2ps** and **FreeImage**)
in the aforementioned environment variables *CSF_OPT_INC* and
*CSF_OPT_LIB64* from file *custom.sh*.
If you want to build OCCT without the optional libraries perform the
following steps:
2.1 Disable unnecessary library in custom.sh by setting the corresponding
variable HAVE_\<LIBRARY_NAME\> to "false".
variable <i>HAVE_\<LIBRARY_NAME\></i> to *false*.
export HAVE_GL2PS=false
~~~~~
export HAVE_GL2PS=false
~~~~~
2.2 Remove this library from Linker settings in Code::Blocks for each project
that uses it: right click on the required project, choose "Build options",
go to "Linker settings" tab in the opened window , select unnecessary
libraries and click "Delete" button.
2.2 Remove this library from Linker settings in **Code::Blocks** for each project
that uses it: right click on the required project, choose **Build options**,
go to **Linker settings** tab in the opened window , select unnecessary
libraries and click **Delete** button.
3. Open Terminal application
4. Enter \<OCCT_ROOT_DIR\>:
4. Enter <i> \<OCCT_ROOT_DIR\></i>:
~~~~~
cd \<OCCT_ROOT_DIR\>
~~~~~
5. To start Code::Blocks, run the command /codeblocks.sh
5. To start **Code::Blocks**, run the command <i>/codeblocks.sh</i>
6. To build all toolkits, click "Build->Build workspace" in the menu bar.
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, perform
To start *DRAWEXE*, which has been built with **Code::Blocks** on Mac OS X, perform
the following steps:
1. Open Terminal application
1.Open Terminal application
2. Enter \<OCCT_ROOT_DIR\>:
2.Enter <i>\<OCCT_ROOT_DIR\></i>:
~~~~~
cd \<OCCT_ROOT_DIR\>
~~~~~
3. Run script
3.Run the script
~~~~~
./draw_cbp.sh cbp [d]
Option "d" is used if OCCT has been built in Debug mode.
~~~~~
Option *d* is used if OCCT has been built in **Debug** mode.

View File

@@ -1,31 +1,35 @@
Building with MS Visual C++ {#dev_guides__building__msvc}
Building with MS Visual C++ {#occt_dev_guides__building_msvc}
===========================
This file describes steps to build OCCT libraries from complete source
archive on Windows with MS Visual C++.
This file describes steps to build OCCT libraries from a complete source
archive on Windows with <b>MS Visual C++</b>.
If you are building OCCT from bare sources (as in Git repository), or do some
If you build OCCT from bare sources (as in Git repository) or do some
changes affecting CDL files, you need to use WOK to re-generate header files
and build scripts / projects. See \ref dev_guides__building__wok for instructions.
and build scripts / projects. See \ref occt_dev_guides__building_wok for instructions.
Before building OCCT, you need to install required third-party libraries; see
paragraph 1 of \ref dev_guides__building for instructions.
Before building OCCT, you need to install the required third-party libraries; see
paragraph 1 of \ref occt_dev_guides__building for instructions.
1. Edit file custom.bat to define environment:
1. Edit file *custom.bat* to define the environment:
- VCVER - version of Visual Studio (vc8, vc9, vc10, vc11 or vc12),
and relevant VCVARS path
- ARCH - architecture (32 or 64), affects only PATH variable for execution
- HAVE_* - flags to enable or disable use of optional third-party products
- *VCVER* - version of Visual Studio (vc8, vc9, vc10, vc11 or vc12),
and relevant *VCVARS* path
- *ARCH* - architecture (32 or 64), affects only *PATH* variable for execution
- <i>HAVE_*</i> - flags to enable or disable use of optional third-party products
- CSF_OPT_* - paths to search for includes and binaries of all used
third-party products
2. Launch msvc.bat to start Visual Studio with all necessary environment
2. Launch *msvc.bat* to start Visual Studio with all necessary environment
variables defined.
Note: the MSVC project files are located in folders adm\\msvc\\vc[9-12].
Binaries are produced in win32 or win64 folders.
Note: the MSVC project files are located in folders <i>adm\\msvc\\vc[9-12]</i>.
Binaries are produced in *win32* or *win64* folders.
3. Build with Visual Studio
To start DRAW, launch draw.bat.
Note: If VTK was not installed on you computer and you are not interested in usage of
OCCT VTK Integration Services (VIS) component you should exclude TKIVtk and TKIVtkDraw
projects from process of compilation in the main menu <b>Build / Configuration Manager</b>.
To start DRAW, launch *draw.bat*.

View File

@@ -1,11 +1,11 @@
Using WOK {#dev_guides__building__wok}
Using WOK {#occt_dev_guides__building_wok}
=========
@tableofcontents
\ref dev_guides__wok "WOK" is a legacy build environment for Open CASCADE Technology.
\ref occt_dev_guides__wok "WOK" is a legacy build environment for Open CASCADE Technology.
It is required for generation of header files for classes defined with
@ref dev_guides__cdl "CDL" ("Cascade Definition Language").
@ref occt_dev_guides__cdl "CDL" ("Cascade Definition Language").
Also tools for generation of project files for other build systems, and OCCT
documentation, are integrated to WOK.
@@ -28,25 +28,25 @@ and third-party components required for building OCCT.
@image html /dev_guides/building/wok/images/wok_image001.png
@image latex /dev_guides/building/wok/images/wok_image001.png
Click Next and proceed with the installation.
Click **Next** and proceed with the installation.
At the end of the installation you will be prompted to specify the version and the location of Visual Studio to be used, and the location of third-party libraries:
@image html /dev_guides/building/wok/images/wok_image002.png
@image latex /dev_guides/building/wok/images/wok_image002.png
You can change these settings at any time later. For this click on the item "Customize environment (GUI tool)" in the WOK group in the Windows Start menu.
You can change these settings at any time later. For this click on the item **Customize environment (GUI tool)** in the WOK group in the Windows Start menu.
The shortcuts from this group provide two ways to run WOK:
* In command prompt window ("WOK TCL shell").
* In Emacs editor ("WOK Emacs"). Using Emacs is convenient if you need to work within WOK environment.
* In command prompt window using option *WOK TCL shell*.
* In Emacs editor using option *WOK Emacs*. Using Emacs is convenient if you need to work within WOK environment.
By default WOK installer creates a WOK factory with name "LOC" within workshop "dev" (WOK path :LOC:dev).
By default WOK installer creates a WOK factory with name *LOC* within workshop *dev*. I.e. the WOK path is <i>:LOC:dev</i>.
@subsection wok12 Linux
* Unpack the .tgz archive containing WOK distributive into an installation directory \<WOK_INSTALL_DIR\>.
* Unpack the .tgz archive containing WOK distributive into the installation directory <i>\<WOK_INSTALL_DIR\></i>.
* Perform the following commands assuming that you have unpacked WOK distributive archive into \<WOK_INSTALL_DIR\>:
* Perform the following commands assuming that you have unpacked WOK distributive archive into <i>\<WOK_INSTALL_DIR\></i>:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.tcl}
cd \<WOK_INSTALL_DIR\>/site
wok_confgui.sh
@@ -76,9 +76,9 @@ and third-party components required for building OCCT.
@subsection wok13 Mac OS X
* In the Finder double click on wokSetup.dmg file. This will open a new window. Drag and drop "wokSetup" folder from this window at the location in the Finder where you want to install WOK, i.e. \<WOK_INSTALL_DIR\>.
* Double click on file *wokSetup.dmg* in the Finder. This opens a new window. Drag and drop *wokSetup* folder from this window at the location in the Finder where you want to install WOK, i.e. <i>\<WOK_INSTALL_DIR\></i>.
* Browse in the Finder to the folder \<WOK_INSTALL_DIR\>/site and double click on WokConfig. This will open a window with additional search path settings. Define all necessary paths to third-party products in the dialog window:
* Browse to the folder <i>\<WOK_INSTALL_DIR\>/site</i> and double click on *WokConfig*. This opens a window with additional search path settings. Define all necessary paths to third-party products in the dialog window:
@image html /dev_guides/building/wok/images/wok_image004.png
@image latex /dev_guides/building/wok/images/wok_image004.png
@@ -89,74 +89,74 @@ and third-party components required for building OCCT.
wok_init.sh
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Your installation procedure is over. To run WOK in Emacs navigate in the Finder to the folder \<WOK_INSTALL_DIR\>/site and double click on WokEmacs.
* Your installation procedure is over. To run WOK in Emacs navigate in the Finder to the folder <i>\<WOK_INSTALL_DIR\>/site</i> and double click on *WokEmacs*.
@section wok2 Initialization of Workbench
To start working with OCCT, clone the OCCT Git repository from the server (see http://dev.opencascade.org/index.php?q=home/resources for details) or unpack the source archive.
Then create a WOK workbench (command wcreate) setting its Home to the directory, where the repository is created ($CASROOT variable). The workbench should have the same name as that directory.
Then create a WOK workbench (command *wcreate*) setting its Home to the directory, where the repository is created (<i>$CASROOT</i> variable). The workbench should have the same name as that directory.
For example, assuming that OCCT repository has been cloned into D:/occt folder:
For example, assuming that OCCT repository has been cloned into *D:/occt* folder:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.tcl}
LOC:dev> wcreate occt -DHome=D:/occt
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Note: $CASROOT is equal to D:/occt now
Note that <i>$CASROOT</i> is equal to *D:/occt* now.
Then you can work with this workbench using normal WOK functionality (wprocess, umake, etc.; see WOK User's Guide for details) or use it only for generation of derived sources and project files, and build OCCT with Visual Studio on Windows or make command on Linux, as described below.
Then you can work with this workbench using normal WOK functionality (*wprocess, umake*, etc.; see @ref occt_dev_guides__wok "WOK User's Guide" for details) or use it only for generation of derived sources and project files, and build OCCT with Visual Studio on Windows or *make* command on Linux, as described below.
@section wok3 Generation of building projects
Use command wgenproj in WOK to generate derived headers, source and building projects files:
Use command *wgenproj* in WOK to generate derived headers, source and building projects files:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.tcl}
LOC:dev> wokcd occt
LOC:dev:occt> wgenproj [ -target=<TARGET> ] [ -no_wprocess ]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TARGET:
* vc8 - Visual Studio 2005
* vc9 - Visual Studio 2008
* vc10 - Visual Studio 2010
* vc11 - Visual Studio 2012
* cbp - CodeBlocks
* cmake - CMake
* amk - AutoMake
* xcd - Xcode
-no_wprocess - skip generation of derived headers and source files
* *vc8* - Visual Studio 2005;
* *vc9* - Visual Studio 2008;
* *vc10* - Visual Studio 2010;
* *vc11* - Visual Studio 2012;
* *cbp* - CodeBlocks;
* *cmake* - CMake;
* *amk* - AutoMake;
* *xcd* - Xcode;
* <i>-no_wprocess</i> option skips generation of derived headers and source files.
Note that this command takes several minutes to complete at the first call.
Re-execute this step to generate derived headers, source and building projects files if some CDL files in OCCT have been modified (either by you directly, or due to updates in the repository). Note that in some cases WOK may fail to update correctly; in such case remove sub-directories drv and .adm and repeat the command.
Re-execute this step to generate derived headers, source and building projects files if some CDL files in OCCT have been modified (either by you directly, or due to updates in the repository). Note that in some cases WOK may fail to update correctly; in such case remove sub-directories *drv* and <i>.adm</i> and repeat the command.
To regenerate derived headers and source files without regeneration of projects use command:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.tcl}
LOC:dev> wokcd occt
LOC:dev:occt> wprocess -DGroups=Src,Xcpp
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The generated building project has been placed into $CASROOT/adm folder:
* for vc8 - $CASROOT/adm/msvc/vc8
* for vc9 - $CASROOT/adm/msvc/vc9
* for vc10 - $CASROOT/adm/msvc/vc10
* for vc11 - $CASROOT/adm/msvc/vc11
* for cbp - $CASROOT/adm/\<OS\>/cbp
* for cmake - $CASROOT/adm/cmake
* for amk - $CASROOT/adm/lin/amk
* xcd - $CASROOT/adm/\<OS\>/xcd
The generated building project has been placed into <i>$CASROOT/adm</i> folder:
* for vc8 - <i>$CASROOT/adm/msvc/vc8</i>;
* for vc9 - <i>$CASROOT/adm/msvc/vc9</i>;
* for vc10 - <i>$CASROOT/adm/msvc/vc10</i>;
* for vc11 - <i>$CASROOT/adm/msvc/vc11</i>;
* for cbp - <i>$CASROOT/adm/\<OS\>/cbp</i>;
* for cmake - <i>$CASROOT/adm/cmake</i>;
* for amk - <i>$CASROOT/adm/lin/amk</i>;
* xcd - <i>$CASROOT/adm/\<OS\>/xcd</i>
@section wok4 Generation of documentation
Use command wgendoc in WOK to generate reference documentation:
Use command *wgendoc* in WOK to generate reference documentation:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.tcl}
:LOC:dev> wokcd occt
:LOC:dev:occt> wgendoc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The following options can be used:
* -wb=< workbench name > the name of OCCT workbench (the current one by default);
* -m=< list of modules > the list of modules that will be contained in the documentation;
* -outdir=< path > the output directory for the documentation;
* -chm the option to generate CHM file;
* -hhc=< path > the path to HTML Help Compiler (hhc.exe) or equivalent;
* -qthelp=< path > the option to generate Qt Help file, it is necessary to specify the path to qthelpgenerator executable;
* -doxygen=< path > the path to Doxygen executable
* -dot=< path > the path to GraphViz dot executable
* <i>-wb=\<workbench name\></i> the name of OCCT workbench (the current one by default);
* <i>-m=\<list of modules\></i> the list of modules that will be contained in the documentation;
* <i>-outdir=\<path\></i> the output directory for the documentation;
* <i>-chm</i> the option to generate CHM file;
* <i>-hhc=\<path\></i> the path to HTML Help Compiler *hhc.exe* or equivalent;
* <i>-qthelp=\<path\></i> the option to generate Qt Help file, where <i>\<path\></i> is the required path to *qthelpgenerator* executable;
* <i>-doxygen=\<path\></i> the path to Doxygen executable;
* <i>-dot=\<path\></i> the path to GraphViz dot executable.

View File

@@ -1,71 +1,70 @@
Building with Xcode {#dev_guides__building__xcode}
Building with Xcode {#occt_dev_guides__building_xcode}
===================
This file describes steps to build OCCT libraries from complete source package
on Mac OS X with Xcode.
This file describes steps to build OCCT libraries from a complete source package
on Mac OS X with **Xcode**.
If you are building OCCT from bare sources (as in Git repository), or do some
If you build OCCT from bare sources (as in Git repository) or do some
changes affecting CDL files, you need to use WOK to re-generate header files
and build scripts / projects. See \ref dev_guides__building__wok for instructions.
and build scripts / projects. See \ref occt_dev_guides__building_wok for instructions.
Before building OCCT, you need to install required third-party libraries; see
paragraph 1 of \ref dev_guides__building for details.
Before building OCCT, you need to install the required third-party libraries; see
paragraph 1 of \ref occt_dev_guides__building for details.
1. Add paths to the mandatory 3rd-party products (Tcl/Tk and FreeType)
in file custom.sh located in \<OCCT_ROOT_DIR\>. For this:
1. Add paths to the mandatory 3rd-party products (**Tcl/Tk** and **FreeType**)
in file *custom.sh* located in <i>\<OCCT_ROOT_DIR\> </i>. For this:
1.1. Add paths to the includes in variable "CSF_OPT_INC";
1.1. Add paths to the includes in variable *CSF_OPT_INC*;
1.2. Add paths to the binary libraries in variable "CSF_OPT_LIB64";
1.2. Add paths to the binary libraries in variable *CSF_OPT_LIB64*;
All paths should be separated by ":" symbol.
2. Add paths to the optional 3rd-party libraries (TBB, gl2ps and FreeImage)
in the aforementioned environment variables "CSF_OPT_INC" and
"CSF_OPT_LIB64" from file custom.sh.
2. Add paths to the optional 3rd-party libraries (**TBB, gl2ps** and **FreeImage**)
in the aforementioned environment variables *CSF_OPT_INC* and *CSF_OPT_LIB64* from file *custom.sh*.
If you want to build OCCT without the optional libraries perform the
following steps:
2.1 Disable unnecessary library in custom.sh by setting the corresponding
variable HAVE_<LIBRARY_NAME> to "false".
If you want to build OCCT without the optional libraries perform the following steps:
2.1 Disable unnecessary library in *custom.sh* by setting the corresponding
variable <i>HAVE_<LIBRARY_NAME></i> to *false*.
~~~~~
export HAVE_GL2PS=false
~~~~~
2.2 Remove this library from Project navigator in Xcode for each project that
uses it: choose the required project, right click on the unnecessary
library and select "Delete" button.
library and select **Delete** button.
3. Open Terminal application.
4. Enter \<OCCT_ROOT_DIR\>:
4. Enter <i>\<OCCT_ROOT_DIR\></i>:
~~~~~
cd \<OCCT_ROOT_DIR\>
~~~~~
5. To start **Xcode**, run command <i>/xcode.sh</i>
5. To start Xcode, run the command /xcode.sh
6. To build a certain toolkit, select it in **Scheme** drop-down list in Xcode
toolbar, press **Product** in the menu and click **Build** button.
6. To build a certain toolkit, select it in "Scheme" drop-down list in Xcode
toolbar, press "Product" in the menu and click "Build" button.
To build the entire OCCT, create a new empty project (select "File ->
New -> Project -> "Empty project" in the menu. Input the project name,
e.g. "OCCT", click "Next" and "Create" buttons). Drag and drop the "OCCT"
folder in the created "OCCT" project in the Project navigator. Select
"File -> New -> Target -> Aggregate" in the menu. Enter the project name
(e.g. "OCCT") and click "Finish". The "Build Phases" tab will open.
To build the entire OCCT, create a new empty project (select **File ->
New -> Project -> "Empty project** in the menu. Input the project name,
e.g. *OCCT*, click **Next** and **Create** buttons). Drag and drop the *OCCT*
folder in the created *OCCT* project in the Project navigator. Select
**File -> New -> Target -> Aggregate** in the menu. Enter the project name
(e.g. <i>OCCT</i>) and click **Finish**. The **Build Phases** tab will open.
Click "+" button to add the necessary toolkits to the target project.
It is possible to select all toolkits by pressing "Command+A" combination.
It is possible to select all toolkits by pressing **Command+A** combination.
To start DRAWEXE, which has been built with Xcode on Mac OS X, perform the following steps:
To start *DRAWEXE*, which has been built with Xcode on Mac OS X, perform the following steps:
1. Open Terminal application
2. Enter \<OCCT_ROOT_DIR\>:
1.Open Terminal application
2.Enter <i>\<OCCT_ROOT_DIR\></i>:
~~~~~
cd \<OCCT_ROOT_DIR\>
~~~~~
3. Run script
3.Run the script
~~~~~
./draw_cbp.sh xcd [d]
Option "d" is used if OCCT has been built in Debug mode.
~~~~~
Option *d* is used if OCCT has been built in **Debug** mode.

View File

@@ -1,4 +1,4 @@
Component Definition Language (CDL) {#dev_guides__cdl}
Component Definition Language (CDL) {#occt_dev_guides__cdl}
==============================
@tableofcontents

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,4 @@
Contribution Workflow {#dev_guides__contribution_workflow}
Contribution Workflow {#occt_dev_guides__contribution_workflow}
====================================
@tableofcontents
@@ -204,7 +204,7 @@ The definition of the following attributes is obligatory:
| Open | The issue is being processed. |
| Fixed | The issue has been successfully fixed. |
| Reopened | The bug has been reopened because of insufficient fix or regression. |
| | Unable to reproduceThe bug is not reproduced. |
| Unable to reproduce | The bug is not reproduced. |
| Not fixable | The bug cannot be fixed because it is a bug of third party software, or because it requires more workload than it can be allowed. |
| Duplicate | The bug for the same issue already exists in the tracker. |
| Not a bug | It is a normal behavior in accordance with the specification of the product |

View File

@@ -0,0 +1,290 @@
Debugging tools and hints {#occt_dev_guides__debug}
=========================
@tableofcontents
@section occt_debug_intro Introduction
This manual describes facilities included in OCCT to support debugging, and provides some hints for more efficient debug.
@section occt_debug_macro Compiler macro to enable extended debug messages
Many OCCT algorithms can produce extended debug messages, usually printed to cout.
These include messages on internal errors and special cases encountered, timing etc.
In OCCT versions prior to 6.8.0 most of these messages were activated by compiler macro *DEB*, enabled by default in debug builds.
Since version 6.8.0 this is disabled by default but can be enabled by defining compiler macro *OCCT_DEBUG*.
To enable this macro on Windows when building with Visual Studio projects, edit file custom.bat and add the line:
set CSF_DEFINES=OCCT_DEBUG
Some algorithms use specific macros for yet more verbose messages, usually started with OCCT_DEBUG_.
These messages can be enabled in the same way, by defining corresponding macro.
Note that some header files are modified when *OCCT_DEBUG* is enabled, hence binaries built with it enabled are not compatible with client code built without this option; this is not intended for production use.
@section occt_debug_exceptions Calling JIT debugger on exception
On Windows platform when using Visual Studio compiler there is a possibility to start the debugger automatically if an exception is caught in a program running OCCT. For this, set environment variable *CSF_DEBUG* to any value. Note that this feature works only if you enable OCCT exception handler in your application by calling *OSD::SetSignal()*.
@section occt_debug_bop Self-diagnostics in Boolean operations algorithm
In real-world applications modeling operations are often performed in a long sequence, while the user sees only the final result of the whole sequence. If the final result is wrong, the first debug step is to identify the offending operation to be debugged further. Boolean operation algorithm in OCCT provides a self-diagnostic feature which can help to do that step.
This feature can be activated by defining environment variable *CSF_DEBUG_BOP*, which should specify an existing writeable directory.
The diagnostic code checks validity of the input arguments and the result of each Boolean operation. When an invalid situation is detected, the report consisting of argument shapes and a DRAW script to reproduce the problematic operation is saved to the directory pointed by *CSF_DEBUG_BOP*.
@section occt_debug_call Functions for calling from debugger
Modern interactive debuggers provide the possibility to execute application code at a program break point. This feature can be used to analyse the temporary objects available only in the context of the debugged code. OCCT provides several global functions that can be used in this way.
Note that all these functions accept pointer to variable as <i>void*</i> to allow calling the function even when debugger does not recognize type equivalence or can not perform necessary type cast automatically. It is responsibility of the developer to provide the correct pointer. In general these functions are not guaranteed to work, thus use them with caution and at your own risk.
@subsection occt_debug_call_draw Interacting with DRAW
Open CASCADE Test Harness or @ref occt_user_guides__test_harness "DRAW" provides an extensive set of tools for inspection and analysis of OCCT shapes and geometric objects and is mostly used as environment for prototyping and debugging OCCT-based algorithms.
In some cases the objects to be inspected are available in DRAW as results of DRAW commands. In other cases, however, it is necessary to inspect intermediate objects created by the debugged algorithm. To support this, DRAW provides a set of commands allowing the developer to store intermediate objects directly from the debugger stopped at some point during the program execution (usually at a breakpoint).
~~~~~
const char* Draw_Eval (const char *theCommandStr)
~~~~~
Evaluates a DRAW command or script.
A command is passed as a string parameter.
~~~~~
const char* DBRep_Set (const char* theNameStr, void* theShapePtr)
~~~~~
Sets the specified shape as a value of DRAW interpreter variable with the given name.
- *theNameStr* - the DRAW interpreter variable name to set.
- *theShapePtr* - a pointer to *TopoDS_Shape* variable.
~~~~~
const char* DrawTrSurf_Set (const char* theNameStr, void* theHandlePtr)
const char* DrawTrSurf_SetPnt (const char* theNameStr, void* thePntPtr)
const char* DrawTrSurf_SetPnt2d (const char* theNameStr, void* thePnt2dPtr)
~~~~~
Sets the specified geometric object as a value of DRAW interpreter variable with the given name.
- *theNameStr* - the DRAW interpreter variable name to set.
- *theHandlePtr* - a pointer to the geometric variable (Handle to *Geom_Geometry* or *Geom2d_Curve* or descendant) to be set.
- *thePntPtr* - a pointer to the variable of type *gp_Pnt* to be set.
- *thePnt2dPtr* - a pointer to the variable of type *gp_Pnt2d* to be set.
All these functions are defined in *TKDraw* toolkit and return a string indicating the result of execution.
@subsection occt_debug_call_brep Saving and dumping shapes and geometric objects
The following functions are provided by *TKBRep* toolkit and can be used from debugger prompt:
~~~~~
const char* BRepTools_Write (const char* theFileNameStr, void* theShapePtr)
~~~~~
Saves the specified shape to a file with the given name.
- *theFileNameStr* - the name of the file where the shape is saved.
- *theShapePtr* - a pointer to *TopoDS_Shape* variable.
~~~~~
const char* BRepTools_Dump (void* theShapePtr)
const char* BRepTools_DumpLoc (void* theShapePtr)
~~~~~
Dumps shape or its location to cout.
- *theShapePtr* - a pointer to *TopoDS_Shape* variable.
The following function is provided by *TKMesh* toolkit:
~~~~~
const char* BRepMesh_Dump (void* theMeshHandlePtr, const char* theFileNameStr)
~~~~~
Stores mesh produced in parametric space to BREP file.
- *theMeshHandlePtr* - a pointer to *Handle(BRepMesh_DataStructureOfDelaun)* variable.
- *theFileNameStr* - the name of the file where the mesh is stored.
The following additional function is provided by *TKGeomBase* toolkit:
~~~~~
const char* GeomTools_Dump (void* theHandlePtr)
~~~~~
Dump geometric object to cout.
- *theHandlePtr* - a pointer to the geometric variable (<i>Handle</i> to *Geom_Geometry* or *Geom2d_Curve* or descendant) to be set.
@section occt_debug_vstudio Using Visual Studio debugger
@subsection occt_debug_vstudio_command Command window
Visual Studio debugger provides the Command Window (can be activated from menu <b>View / Other Windows / Command Window</b>), which can be used to evaluate variables and expressions interactively in a debug session (see http://msdn.microsoft.com/en-us/library/c785s0kz.aspx). Note that the Immediate Window can also be used but it has some limitations, e.g. does not support aliases.
When the execution is interrupted by a breakpoint, you can use this window to call the above described functions in context of the currently debugged function. Note that in most cases you will need to specify explicitly context of the function by indicating the name of the DLL where it is defined.
For example, assume that you are debugging a function, where local variable *TopoDS_Edge* *anEdge1* is of interest.
The following set of commands in the Command window will save this edge to file *edge1.brep*, then put it to DRAW variable *e1* and show it maximized in the axonometric DRAW view:
~~~~~
>? ({,,TKBRep.dll}BRepTools_Write)("d:/edge1.brep",(void*)&anEdge1)
0x04a2f234 "d:/edge1.brep"
>? ({,,TKDraw.dll}DBRep_Set)("e1",(void*)&anEdge1)
0x0369eba8 "e1"
>? ({,,TKDraw.dll}Draw_Eval)("donly e1; axo; fit")
0x029a48f0 ""
~~~~~
For convenience it is possible to define aliases to commands in this window, for instance (here ">" is prompt provided by the command window; in the Immediate window this symbol should be entered manually):
~~~~~
>alias deval ? ({,,TKDraw}Draw_Eval)
>alias dsetshape ? ({,,TKDraw}DBRep_Set)
>alias dsetgeom ? ({,,TKDraw}DrawTrSurf_Set)
>alias dsetpnt ? ({,,TKDraw}DrawTrSurf_SetPnt)
>alias dsetpnt2d ? ({,,TKDraw}DrawTrSurf_SetPnt2d)
>alias saveshape ? ({,,TKBRep}BRepTools_Write)
>alias dumpshape ? ({,,TKBRep}BRepTools_Dump)
>alias dumploc ? ({,,TKBRep}BRepTools_DumpLoc)
>alias dumpmesh ? ({,,TKMesh}BRepMesh_Dump)
>alias dumpgeom ? ({,,TKGeomBase}GeomTools_Dump)
~~~~~
Note that aliases are stored in the Visual Studio user's preferences and it is sufficient to define them once on a workstation. With these aliases, the above example can be reproduced easier (note the space symbol after alias name!):
~~~~~
>saveshape ("d:/edge1.brep",(void*)&anEdge1)
0x04a2f234 "d:/edge1.brep"
>dsetshape ("e1",(void*)&anEdge1)
0x0369eba8 "e1"
>deval ("donly e1; axo; fit")
0x029a48f0 ""
~~~~~
Note that there is no guarantee that the call will succeed and will not affect the program execution, thus use this feature at your own risk. In particular, the commands interacting with window system (such as *axo*, *vinit*, etc.) are known to cause application crash when the program is built in 64-bit mode. To avoid this, it is recommended to prepare all necessary view windows in advance, and arrange these windows to avoid overlapping with the Visual Studio window, to ensure that they are visible during debug.
@subsection occt_debug_vstudio_watch Customized display of variables content
Visual Studio provides a way to customize display of variables of different types in debugger windows (Watch, Autos, Locals, etc.).
In Visual Studio 2005-2010 the rules for this display are defined in file *autoexp.dat* located in subfolder *Common7\\Packages\\Debugger* of the Visual Studio installation folder (hint: the path to that folder is given in the corresponding environment variable, e.g. *VS100COMNTOOLS* for vc10). This file contains two sections: *AutoExpand* and *Visualizer*. The following rules can be added to these sections to provide more convenient display of some OCCT data types.
### \[AutoExpand\] section
~~~~~
; Open CASCADE classes
Standard_Transient=<,t> count=<count,d>
Handle_Standard_Transient=<entity,x> count=<entity->count,d> <,t>
TCollection_AsciiString=<mylength,d> <mystring,s>
TCollection_HAsciiString=<myString.mylength,d> <myString.mystring,s>
TCollection_ExtendedString=<mylength,d> <mystring,su>
TCollection_HExtendedString=<myString.mylength,d> <myString.mystring,su>
TCollection_BaseSequence=size=<Size,d> curr=<CurrentIndex,d>
TCollection_BasicMap=size=<mySize,d>
NCollection_BaseSequence=size=<mySize,d> curr=<myCurrentIndex,d>
NCollection_BaseList=length=<myLength,d>
NCollection_BaseMap=size=<mySize,d> buckets=<myNbBuckets>
NCollection_BaseVector=length=<myLength,d>
TDF_Label=<myLabelNode,x> tag=<myLabelNode->myTag>
TDF_LabelNode=tag=<myTag,d>
TDocStd_Document=format=<myStorageFormat.mystring,su> count=<count,d> <,t>
TopoDS_Shape=<myTShape.entity,x> <myOrient>
gp_XYZ=<x,g>, <y,g>, <z,g>
gp_Pnt=<coord.x,g>, <coord.y,g>, <coord.z,g>
gp_Vec=<coord.x,g>, <coord.y,g>, <coord.z,g>
gp_Dir=<coord.x,g>, <coord.y,g>, <coord.z,g>
gp_XY=<x,g>, <y,g>
gp_Pnt2d=<coord.x,g>, <coord.y,g>
gp_Dir2d=<coord.x,g>, <coord.y,g>
gp_Vec2d=<coord.x,g>, <coord.y,g>
gp_Mat2d={<matrix[0][0],g>,<matrix[0][1],g>}, {<matrix[1][0],g>,<matrix[1][1],g>}
gp_Ax1=loc={<loc.coord.x,g>, <loc.coord.y,g>, <loc.coord.z,g>} vdir={<vdir.coord.x,g>, <vdir.coord.y,g>, <vdir.coord.z,g>}
~~~~~
### \[Visualizer\] section
~~~~~
; Open CASCADE classes
NCollection_Handle<*> {
preview ( *((($T0::Ptr*)$e.entity)->myPtr) )
children ( (($T0::Ptr*)$e.entity)->myPtr )
}
NCollection_List<*> {
preview ( #( "NCollection_List [", $e.myLength, "]" ) )
children ( #list( head: $c.myFirst, next: myNext ) : #(*($T1*)(&$e+1)) )
}
NCollection_Array1<*> {
preview ( #( "NCollection_Array1 [", $e.myLowerBound, "..", $e.myUpperBound, "]" ) )
children ( #array( expr: $c.myData[$i], size: 1+$c.myUpperBound ) )
}
math_Vector {
preview ( #( "math_Vector [", $e.LowerIndex, "..", $e.UpperIndex, "]" ) )
children ( #array ( expr: ((double*)($c.Array.Addr))[$i], size: 1+$c.UpperIndex ) )
}
TColStd_Array1OfReal {
preview ( #( "Array1OfReal [", $e.myLowerBound, "..", $e.myUpperBound, "]" ) )
children ( #array ( expr: ((double*)($c.myStart))[$i], size: 1+$c.myUpperBound ) )
}
Handle_TColStd_HArray1OfReal {
preview ( #( "HArray1OfReal [",
((TColStd_HArray1OfReal*)$e.entity)->myArray.myLowerBound, "..",
((TColStd_HArray1OfReal*)$e.entity)->myArray.myUpperBound, "] ",
[$e.entity,x], " count=", $e.entity->count ) )
children ( #array ( expr: ((double*)(((TColStd_HArray1OfReal*)$e.entity)->myArray.myStart))[$i],
size: 1+((TColStd_HArray1OfReal*)$e.entity)->myArray.myUpperBound ) )
}
TColStd_Array1OfInteger {
preview ( #( "Array1OfInteger [", $e.myLowerBound, "..", $e.myUpperBound, "]" ) )
children ( #array ( expr: ((int*)($c.myStart))[$i], size: 1+$c.myUpperBound ) )
}
Handle_TColStd_HArray1OfInteger {
preview ( #( "HArray1OfInteger [",
((TColStd_HArray1OfInteger*)$e.entity)->myArray.myLowerBound, "..",
((TColStd_HArray1OfInteger*)$e.entity)->myArray.myUpperBound, "] ",
[$e.entity,x], " count=", $e.entity->count ) )
children ( #array ( expr: ((int*)(((TColStd_HArray1OfInteger*)$e.entity)->myArray.myStart))[$i],
size: 1+((TColStd_HArray1OfInteger*)$e.entity)->myArray.myUpperBound ) )
}
Handle_TCollection_HExtendedString {
preview ( #( "HExtendedString ", [$e.entity,x], " count=", $e.entity->count,
" ", ((TCollection_HExtendedString*)$e.entity)->myString ) )
children ( #([actual members]: [$e,!] ) )
}
Handle_TCollection_HAsciiString {
preview ( #( "HAsciiString ", [$e.entity,x], " count=", $e.entity->count,
" ", ((TCollection_HAsciiString*)$e.entity)->myString ) )
children ( #([actual members]: [$e,!],
#array( expr: ((TCollection_HAsciiString*)$e.entity)->myString.mystring[$i],
size: ((TCollection_HAsciiString*)$e.entity)->myString.mylength) ) )
}
~~~~~
In Visual Studio 2012 and later, visualizers can be put in a separate file in subdirectory *Visualizers*. See file *occt.natvis* for example.
@section occt_debug_perf Performance measurement tools
It is recommended to use specialized performance analysis tools to profile OCCT and application code.
However, when such tools are not available or cannot be used for some reason, tools provided by OSD package can be used: low-level C functions and macros defined in *OSD_PerfMeter.h* and *OSD_PerfMeter* class.
This tool maintains an array of 100 global performance counters that can be started and stopped independently. Adding a performance counter to a function of interest allows to get statistics on the number of calls and the total execution time of the function.
* In C++ code, this can be achieved by creating local variable *OSD_PerfMeter* in each block of code to be measured.
* In C or Fortran code, use functions *perf_start_meter* and *perf_stop_meter* to start and stop the counter.
Note that this instrumentation is intended to be removed when the profiling is completed.
Macros provided in *OSD_PerfMeter.h* can be used to keep instrumentation code permanently but enable it only when macro *PERF_ENABLE_METERS* is defined.
Each counter has its name shown when the collected statistics are printed.
In DRAW, use command *dperf* to print all performance statistics.
Note that performance counters are not thread-safe.

View File

@@ -0,0 +1,146 @@
<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<Type Name="gp_XY">
<DisplayString>[{(float)x} {(float)y}]</DisplayString>
</Type>
<Type Name="gp_Pnt2d">
<AlternativeType Name="gp_Vec2d"></AlternativeType>
<AlternativeType Name="gp_Dir2d"></AlternativeType>
<DisplayString>[{(float)cood.x} {(float)cood.y}]</DisplayString>
</Type>
<Type Name="gp_XYZ">
<DisplayString>[{(float)x} {(float)y} {(float)z}]</DisplayString>
</Type>
<Type Name="gp_Pnt">
<AlternativeType Name="gp_Vec"></AlternativeType>
<AlternativeType Name="gp_Dir"></AlternativeType>
<DisplayString>[{(float)coord.x} {(float)coord.y} {(float)coord.z}]</DisplayString>
</Type>
<Type Name="NCollection_Vec2&lt;*&gt;">
<DisplayString>[{v[0]} {v[1]}]</DisplayString>
</Type>
<Type Name="NCollection_Vec3&lt;*&gt;">
<DisplayString>[{v[0]} {v[1]} {v[2]}]</DisplayString>
</Type>
<Type Name="NCollection_Vec4&lt;*&gt;">
<DisplayString>[{v[0]} {v[1]} {v[2]} {v[3]}]</DisplayString>
</Type>
<Type Name="gp_Mat2d">
<DisplayString>
[{(float)matrix[0][0]} {(float)matrix[0][1]}], [{(float)matrix[1][0]} {(float)matrix[1][1]}]
</DisplayString>
</Type>
<Type Name="NCollection_Mat4&lt;*&gt;">
<Expand>
<Item Name="row0">((NCollection_Vec4&lt;$T1&gt;*)myMat)[0]</Item>
<Item Name="row1">((NCollection_Vec4&lt;$T1&gt;*)myMat)[1]</Item>
<Item Name="row2">((NCollection_Vec4&lt;$T1&gt;*)myMat)[2]</Item>
<Item Name="row3">((NCollection_Vec4&lt;$T1&gt;*)myMat)[3]</Item>
</Expand>
</Type>
<Type Name="Handle_Standard_Transient">
<DisplayString Condition="entity==0x00000000">NULL</DisplayString>
<DisplayString Condition="entity!=0x00000000">[count={entity->count}]</DisplayString>
<Expand>
<ExpandedItem>*entity</ExpandedItem>
</Expand>
</Type>
<Type Name="NCollection_Handle&lt;*&gt;">
<DisplayString Condition="entity==0x00000000">NULL</DisplayString>
<DisplayString Condition="entity!=0x00000000">[count={entity->count}]</DisplayString>
<Expand>
<ExpandedItem>*((NCollection_Handle&lt;$T1&gt;::Ptr*)entity)->myPtr</ExpandedItem>
</Expand>
</Type>
<Type Name="TCollection_AsciiString">
<DisplayString>{mylength}: {mystring,s}</DisplayString>
</Type>
<Type Name="TCollection_HAsciiString">
<DisplayString>{myString.mylength}: {myString.mystring,s}</DisplayString>
</Type>
<Type Name="NCollection_UtfString&lt;*&gt;">
<DisplayString>{myLength}: {myString,s}</DisplayString>
</Type>
<Type Name="TCollection_ExtendedString">
<DisplayString>{mylength}: {(wchar_t *)mystring,su}</DisplayString>
</Type>
<Type Name="TCollection_HExtendedString">
<DisplayString>{myString.mylength}: {(wchar_t *)myString.mystring,su}</DisplayString>
</Type>
<Type Name="TCollection_BaseSequence">
<DisplayString>TCollection_Sequence [{Size}], curr={CurrentIndex}</DisplayString>
</Type>
<Type Name="TCollection_BasicMap">
<AlternativeType Name="NCollection_BaseMap"/>
<DisplayString>TCollection_Map [{mySize}]</DisplayString>
</Type>
<Type Name="TColStd_PackedMapOfInteger">
<DisplayString>TColStd_PackedMapOfInteger [{myExtent}]</DisplayString>
</Type>
<Type Name="NCollection_Vector&lt;*&gt;">
<DisplayString>NCollection_Vector [{myLength}]</DisplayString>
<Expand>
<IndexListItems Condition="myData->Length&lt;myLength">
<Size>myData->Length</Size>
<ValueNode>*($T1*)((char*)myData->DataPtr + $i * myItemSize)</ValueNode>
</IndexListItems>
<IndexListItems Condition="myData->Length&gt;=myLength">
<Size>myLength</Size>
<ValueNode>*($T1*)((char*)myData->DataPtr + $i * myItemSize)</ValueNode>
</IndexListItems>
</Expand>
</Type>
<Type Name="NCollection_List&lt;*&gt;">
<DisplayString>NCollection_List [{myLength}]</DisplayString>
<Expand>
<LinkedListItems>
<Size>myLength</Size>
<HeadPointer>myFirst</HeadPointer>
<NextPointer>myNext</NextPointer>
<ValueNode>*($T1*)(sizeof(NCollection_ListNode) + ((char *)this))</ValueNode>
</LinkedListItems>
</Expand>
</Type>
<Type Name="Bnd_B2f">
<AlternativeType Name="Bnd_B2d"></AlternativeType>
<DisplayString Condition="myCenter[0] &gt; 1000000000000000000.">VOID</DisplayString>
<DisplayString Condition="myCenter[0] &lt; 1000000000000000000.">
Center: [{(float)myCenter[0]} {(float)myCenter[1]}], hSize: [{(float)myHSize[0]} {(float)myHSize[1]}]
</DisplayString>
</Type>
<Type Name="Bnd_B3f">
<AlternativeType Name="Bnd_B3d"></AlternativeType>
<DisplayString Condition="myCenter[0] &gt; 1000000000000000000.">VOID</DisplayString>
<DisplayString Condition="myCenter[0] &lt; 1000000000000000000.">
Center: [{(float)myCenter[0]} {(float)myCenter[1]} {(float)myCenter[2]}], hSize: [{(float)myHSize[0]} {(float)myHSize[1]} {(float)myHSize[2]}]
</DisplayString>
</Type>
<Type Name="TDF_Label">
<DisplayString Condition="myLabelNode==0">NULL</DisplayString>
<DisplayString Condition="myLabelNode!=0">[:{myLabelNode->myTag}]</DisplayString>
<Expand>
<ExpandedItem>*myLabelNode</ExpandedItem>
</Expand>
</Type>
<Type Name="TDF_LabelNode">
<DisplayString>[:{myTag}]</DisplayString>
<Expand>
<Item Name="brother" Condition="myBrother!=0">* myBrother</Item>
<Item Name="child" Condition="myFirstChild!=0">* myFirstChild</Item>
<ExpandedItem>myFirstAttribute</ExpandedItem>
</Expand>
</Type>
<Type Name="Handle_TDF_Attribute">
<DisplayString Condition="entity==0x00000000">NULL</DisplayString>
<DisplayString Condition="entity!=0x00000000">
[transaction={((TDF_Attribute*)entity)->myTransaction}]
</DisplayString>
<Expand>
<!--Item Name="next" Condition="myNext.entity!=0x00000000">myNext</Item-->
<ExpandedItem>(TDF_Attribute*)entity</ExpandedItem>
</Expand>
</Type>
<Type Name="OpenGl_Context">
<DisplayString>[{myGlVerMajor}.{myGlVerMinor}]</DisplayString>
</Type>
</AutoVisualizer>

View File

@@ -3,15 +3,16 @@
The following documents provide information on OCCT building, development and testing:
* @subpage dev_guides__building "Building OCCT from sources"
* @subpage dev_guides__documentation "Documentation system"
* @subpage dev_guides__coding_rules "Coding Rules"
* @subpage dev_guides__contribution_workflow "Contribution Workflow"
* @subpage dev_guides__git_guide "Guide to installing and using Git for OCCT development"
* @subpage dev_guides__tests "Automatic Testing system"
* @subpage occt_dev_guides__building "Building OCCT from sources"
* @subpage occt_dev_guides__documentation "Documentation system"
* @subpage occt_dev_guides__coding_rules "Coding Rules"
* @subpage occt_dev_guides__contribution_workflow "Contribution Workflow"
* @subpage occt_dev_guides__git_guide "Guide to installing and using Git for OCCT development"
* @subpage occt_dev_guides__tests "Automatic Testing system"
* @subpage occt_dev_guides__debug "Debugging tools and hints"
Two other documents provide details on obsolete technologies used by OCCT,
to be removed in future releases:
* @subpage dev_guides__wok "Workshop Organization Kit (WOK)"
* @subpage dev_guides__cdl "Component Definition Language (CDL)"
* @subpage occt_dev_guides__wok "Workshop Organization Kit (WOK)"
* @subpage occt_dev_guides__cdl "Component Definition Language (CDL)"

View File

@@ -1,137 +1,142 @@
Documentation System {#dev_guides__documentation}
Documentation System {#occt_dev_guides__documentation}
======================
@tableofcontents
@section OCCT_DM_SECTION_1 Introduction
This document provides practical guidenes for generation and editing of OCCT user documentation.
This document provides practical guidelines for generation and editing of OCCT user documentation.
@section OCCT_DM_SECTION_2 Prerequisites
<b>Tcl/Tk</b>
You need to have the following software installed to generate the documentation.
**Tcl/Tk**
Version 8.5 or 8.6: http://www.tcl.tk/software/tcltk/download.html
<b>Doxygen</b>
**Doxygen**
Version 1.8.4 or above: http://www.stack.nl/~dimitri/doxygen/download.html
<b>MathJax</b> (used for rendering math formulas in browser).
See \ref OCCT_DM_SECTION_A_9 paragraph for more detailed description.
The latest version: http://www.mathjax.org/download/
**Dot**
Part of Graphviz software, used by Doxygen for generation of class diagrams in Reference Manual: http://www.graphviz.org/Download..php
<b>MiKTeX</b> or equivalent tool (used for PDF document creation)
**MiKTeX** or other package providing **pdflatex** command (only needed for generation of PDF documents): http://miktex.org/download
Latest version: http://miktex.org/download
**Inkscape** (only needed for generation of PDF documents containing SVG images): http://www.inkscape.org/download
**Note**: to generate pdf documentation with MiKTeX you should execute gendoc.bat within MiKTeX environment
(run gendoc.bat in MiKTeX command promt or update PATH for MiKTeX bin folder). Also in process of pdf generation
MiKTeX can request you to download missing packages if MiKTeX was installed with option below:
When generating PDF documentation, **pdflatex** and **inkscape** executables should be accessible by PATH variable.
You can use *custom.bat* file to add necessary paths to the *PATH* variable.
@image html /dev_guides/documentation/images/documentation_image002.png
@image latex /dev_guides/documentation/images/documentation_image002.png
Note that in the process of PDF generation MiKTeX may need some packages not installed by default.
We recommend setting option "Install missing packages on-the-fly" to "Ask me first" (default) during MiKTeX installation:
If this option is set to "Yes", MiKTeX will download missing packages automatically.
@figure{/dev_guides/documentation/images/documentation_miktex.png}
On the first run of **pdflatex** it will open a dialog window prompting for installation of missing packages.
Follow the instructions to proceed (define proxy settings if needed, select a mirror site to download from, etc.).
**MathJax** is used for rendering math formulas in browser (HTML and CHM outputs): http://www.mathjax.org.
By default MathJAX scripts and fonts are taken from http://cdn.mathjax.org/mathjax/latest and no installation of MathJAX is necessary if Internet is accessible.
If you need to use OCCT documentation while off-line, you can install a local copy of MatJAX, see http://www.mathjax.org/download/.
See \ref OCCT_DM_SECTION_A_9 for more details on inserting mathematical expressions.
@section OCCT_DM_SECTION_2_1 Documentation Generation
Run gendoc.bat from OCCT directory to generate all articles are defined in FILES.txt:
Run command *gendoc* from command prompt (with OCCT directory as current one) to generate OCCT documentation.
The synopsis is:
gendoc.bat options:
gendoc \[-h\] {-refman|-overview} \[-html|-pdf|-chm\] \[-m=<list of modules>|-ug=<list of docs>\] \[-v\] \[-s=<search_mode>\] \[-mathjax=<path>\]
Here the options are:
* -html : To generate HTML files (cannot be used with -pdf);
* -pdf : To generate PDF files (cannot be used with -html);
* -m=\<modules_list\> : Specifies list of articles to generate. If it is not specified, all files, mentioned in FILES.txt are processed;
* -l=\<document_name\> : Specifies the article caption for a single document;
* -h : Prints help message;
* -v : Specifies the Verbose mode (info on all script actions is shown).
* Choice of documentation to be generated:
* <i>-overview</i>: To generate Overview and User Guides (cannot be used with -refman)
* <i>-refman</i>: To generate class Reference Manual (cannot be used with -overview)
If you run the command without arguments (like example above) it will generate HTML documentation
for all articles are defined into FILES.txt.
* Choice of output format:
* <i>-html</i>: To generate HTML files (default, cannot be used with -pdf or -chm)
* <i>-pdf</i>: To generate PDF files (cannot be used with -refman, -html, or -chm)
* <i>-chm</i>: To generate CHM files (cannot be used with -html or -pdf)
**Note**: the generation process generates PDF files for each article,
but in html case it generates common Html page with references to the ones.
* Additional options:
* <i>-m=\<modules_list\></i>: List of OCCT modules (separated with comma), for generation of Reference Manual
* <i>-ug=\<docs_list\></i>: List of MarkDown documents (separated with comma), to use for generation of Overview / User Guides
* <i>-mathjax=\<path\></i>: To use local or alternative copy of MathJax
* <i>-s=\<search_mode\></i>: Specifies the Search mode of HTML documents; can be: none | local | server | external
* <i>-h</i>: Prints this help message
* <i>-v</i>: Enables more verbose output
For generation of specific article you need:
* have it's name with relative path (from \%OCCDIR\%/dox/ to the file) contained in FILES.txt
(is located into \%OCCDIR\%/dox/ directory).
**Note**
@verbatim
devs_guid/documentation/documentation.md
@endverbatim
* In case of PDF output the utility generates a separate PDF file for each document;
* In case of HTML output the utility generates a common Table of contents containing references to all documents.
* In case of CHM output single CHM file is generated
where documentation .md is name of article and devs_guid/documentation/ is relative path of it
**Examples**
* use this name with -m option in the generation process:
To generate the output for a specific document specify the path to the corresponding MarkDown file (paths relative to *dox* sub-folder can be given), for instance:
@verbatim
% gendoc.bat -html -m=devs_guid/documentation/documentation.md
@endverbatim
~~~~
> gendoc -overview -ug=dev_guides/documentation/documentation.md
~~~~
Multiple files are separated with comma:
To generate Reference Manual for the whole Open CASCADE Technology library, run:
~~~~
> gendoc -refman
~~~~
@verbatim
% gendoc.bat -html -m=MD_FILE_1,MD_FILE_2
@endverbatim
To sepcify a article name with -l option, use quotes to prevent incorrect interpretation of whitespaces:
@verbatim
% gendoc.bat -pdf -m=MD_FILE_1 -l="Label of MD_FILE_1 document"
@endverbatim
To generate Reference Manual for Foundation Classes and Modeling Data modules only, with search option, run:
~~~~
> gendoc -refman -m=FoundationClasses,ModelingData,ModelingAlgorithms -s=local
~~~~
@section OCCT_DM_SECTION_3 Documentation Conventions
This section contains information about conventions in the field of OCCT documentation file format,
structure of documentation directories, etc.
This section contains information about file format conventions, directories structure, etc.
@subsection OCCT_DM_SECTION_3_1 File Format
The format used for documentation is MarkDown with Doxygen extensions.
The MarkDown files have a "*.md" extension and are based on rules desribed in
\ref OCCT_DM_SECTION_A section.
The MarkDown files have a <i>*.md</i> extension and are based on rules described in \ref OCCT_DM_SECTION_A section.
@subsection OCCT_DM_SECTION_3_2 Directory Structure
@image html /dev_guides/documentation/images/documentation_image001.png
@image latex /dev_guides/documentation/images/documentation_image001.png
@figure{/dev_guides/documentation/images/documentation_folders.png}
Every separate article has own folder if images are used in it. These images
are stored into "images" subfolder.
Each document has its own folder if there are any images used in it. These images are stored in *images* subfolder.
If you want to use the same image for several documents, you can place it in *dox/resources* folder.
**Note**: To avoid incorrect image display, use a relative path to the image (starting from *dox* folder). For instance:
If you want to use the same image for several articles, you can place the one into "dox/resources" folder.
**Note**: Every article can use any image that is used by others articles. To avoid incorrect image
displaying, use relative path to the image (starting from dox folder). For instance
@verbatim
@image html /dev_guides/snv/images/snv_image001.svg
@figure{/dev_guides/documentation/images/documentation_test_image.svg}
@endverbatim
Result of generation of the documentation is:
%OCCT_DIR% / doc - a folder for generated articles;
* html/ - a directory for generated HTML pages;
* pdf/ - a directory for generated PDF files.
The documentation is generated in subfolder *doc* :
* *html* - a directory for generated HTML pages;
* *pdf* - a directory for generated PDF files.
@section OCCT_DM_SECTION_4 Adding a New Article
@section OCCT_DM_SECTION_4 Adding a New Document
- Place a new article into folder that is chosen taking into account the place of the article
at the hierarchy of the documentation. For instance the article about "using SVN working with OCCT
source code" (svn.md - the file of the article) might be placed into /dox/dev_guides/ . If the article has images then you may create
the own folder of the article and subfolder in it for images. For instance
*/dox/dev_guides/svn/ - for svn.md file
*/dox/dev_guides/svn/images/ - for images
Place a new document in the folder taking into account its logical position in the documentation hierarchy. For instance, the document *svn.md* about the use of SVN to work with OCCT source code can be placed into <i>/dox/dev_guides/</i>.
If there are images in the document, it should be placed in its own folder containing a subfolder for images. For instance:
* <i> /dox/dev_guides/svn/ </i> - for *svn.md* file;
* <i> /dox/dev_guides/svn/images/ </i> - for images.
Add a relative path to *svn.md* in file <i>dox/FILES.txt</i>. For instance
- Update dox/FILES.txt to add relative path to svn.md. For instance
@verbatim
dev_guides/snv/svn.md
dev_guides/svn/svn.md
@endverbatim
**Note**: the place of the relative path to an article is connected with the place
into treeview of html version.
**Note** that the order of paths to documents in *FILES.txt* is reproduced in the Table of Contents in the HTML output. Please, place them logically.
Note, that you should specify a file tag, not the document name.
See <a href="#OCCT_DM_SECTION_A_1">Header section</a> for details.
**Note** that you should specify a file tag, not the document name. See <a href="#OCCT_DM_SECTION_A_1">Header section</a> for details.
@section OCCT_DOC_SECTION_5 Additional Resources
@@ -145,69 +150,60 @@ http://www.stack.nl/~dimitri/doxygen/manual
@section OCCT_DM_SECTION_A Appendix 1: Document Syntax
Each OCCT document file in *.md format has a simple structure.
It can contain:
| Content type | Obligation |
| :---------------- | :-------------------: |
| Header | M |
| Footer | M |
| Plain text | O |
| List | O |
| Table | O |
| Code | O |
| Formula | O |
| Image | O |
| Page numbers | M (auto generation) |
| Table of contents | M (auto generation) |
The legend:
* M is for Mandatory
* O is for Optional
@subsection OCCT_DM_SECTION_A_1 Text Caption (a header)
headings of different levels can be specified with the following code:
A document file in *.md format must start with a proper header defining a caption and a unique tag.
@verbatim
Header 1 {#header1}
=======
Documentation System {#dev_guides__documentation}
=====================
@endverbatim
to get
The document structure is formed by sections that must be defined consistently.
Header 1
=========
The document can contain plain text, lists, tables, code snippets, images, math, etc.
Any specific text elements can be introduced by Markdown language tags or by usual HTML tags.
and with the following code:
The table of contents, page numbers (in PDF), and figure numbers (in PDF) are generated automatically.
@subsection OCCT_DM_SECTION_A_1 Headers and hierarchic document structure
Headers of different levels can be specified with the following tags:
* <i>\@section</i> - for the first-level headers;
* <i>\@subsection</i> - for the second level headers;
* <i>\@subsubsection</i> - for the third level headers.
For example:
@verbatim
Header 2 {#header2}
--------
@section occt_ocaf_1 Basic Concepts
@subsection occt_ocaf_1_1 Applications and Documents
@subsubsection occt_ocaf_1_1_1 The document and the data framework
@endverbatim
to get
Please, note that section names can be used for references within the document and in other documents, so it is necessary to use the common prefix indicative of the document name for all section names in the given document.
For example, *occt_ocaf* for sections in Open CASCADE Application Framework manual.
Header 2
---------
The remaining part of section names in most documents consists only of numbers, for example *1_1*. Actually, the hierarchical structure of the output table of contents is not based on these numbers and is generated automatically.
Where a word in curly braces is a MarkDown-style reference, which can be used in table of contents.
If you would like to have the table of contents, it is recommended to use \@section,
\@subsection and \@subsubsection pages instead of MarkDown headers as follows:
The numbers are only indicative of a section location in the body of the document. However, duplicate section names in a document inevitably cause errors during generation.
@verbatim
@section Section_Name Section Header
@subsection SubSection_Name SubSection Header
@subsubsection SubSubSection_Name SubSubSection Header
@endverbatim
If you insert a section in the middle of a big document, do not renumber the document to the end (which is inefficient and error prone), but choose an arbitrary number or letter, not yet used in the document section naming, and base the naming in this section on it.
The section hierarchy is limited to three levels and further levels cannot be presented in the Table of Contents.
However, the fourth and fifth level headers can be tagged with <i>####</i> and <i>#####</i> correspondingly.
It is also possible to use tags <i>##</i> and <i>###</i> for second and third level headers if you do not wish to show them in the table of contents or make references to them.
@subsection OCCT_DM_SECTION_A_2 Plain Text
Plain text is a text in a notepad-like format. To insert special symbols,
like \< , \> or \\, prepend them with \\ character: \\\<, \\\>, \\\\
To emphasize some words, write one pair of asterisks ( * ) or underscores ( _ ) across the word
to make it *italic* and two pairs of these symbols to make a word **Bold**.
A plain text is organized in paragraphs, separated by empty lines in MarkDown source.
The length of lines is not restricted; it is recommended to put each sentence on a separate line -- this is optimal for easier comparison of different versions of the same document.
To insert special symbols, like \< , \> or \\, prepend them with \\ character: \\\<, \\\>, \\\\, etc.
To emphasize a word or a group of words, wrap the text with one pair of asterisks (*) or underscores (_) to make it *italic* and two pairs of these symbols to make it **Bold**.
**Note** that if your emphasized text starts or ends with a special symbol, the asterisks may not work. Use explicit HTML tags \<i\>\</i\> and \<b\>\</b\> instead.
@subsection OCCT_DM_SECTION_A_3 Lists
@@ -238,7 +234,7 @@ then a space. Numbered lists can also be nested. Thus this code
1. Sub-item 1
2. Sub-item 2
2. List item 2
3. List item 3
4. List item 3
@endverbatim
produces this list:
@@ -249,6 +245,11 @@ produces this list:
2. List item 2
3. List item 3
**Note** that numbers of list items in the output are generated so they do not necessarily follow the numbering of source items.
In some cases automatic generation adversely restarts the numbering, i.e. you get list items 1. 1. 1. instead of 1. 2. 3. in the output.
The use of explicit HTML tags \<ol\>\</ol\> and \<li\>\</li\> can help in this case.
Each list item can contain several paragraphs of text; these paragraphs must
have the same indentation as text after bullet or number in the numbered list
item (otherwise numbering will be broken).
@@ -258,29 +259,7 @@ Code blocks can be inserted as paragraphs with additional indentation
and their use may cause numeration to be reset.
Example of complex nested list:
@verbatim
1. ListItem_1
Additional paragraph
code fragment
One more paragraph
1. Sub-item 1
code fragment for sub-item 1
2. Sub-item 2
Paragraph for sub-item 2
Yet one more paragraph for list item 1
2. ListItem_2
@endverbatim
Example of a complex nested list:
1. List item 1
@@ -302,8 +281,6 @@ Example of complex nested list:
2. List item 2
Note that numbers of paragraphs are regenerated so they do not necessarily
follow numbering of source items.
@subsection OCCT_DM_SECTION_A_4 Tables
@@ -340,19 +317,19 @@ which will looks as follows:
| 10 | 10 | 10 |
| 1000 | 1000 | 1000 |
Note that each table raw should be contained in one line of text; complex
tables can be created using HTML tags.
Note that each table row should be contained in one line of text; complex tables can be created using HTML tags.
@subsection OCCT_DM_SECTION_A_5 Code Blocks
It is recommended to indent a code lines with 4 spaces.
Paragraphs indented with 4 or more spaces are considered as code fragments and rendered using Courier font.
Example:
This line is indented by 4 spaces and rendered as a code block.
A fenced code block does not require indentation, and is defined by a pair of "fence lines".
Such line consists of 3 or more tilde (~) characters on a line.
The end of the block should have the same number of tildes. Here is an example:
~~~~~~~~~~~~~~~~~~~~~~~
a one-line code block
~~~~~~~~~~~~~~~~~~~~~~~
The end of the block should have the same number of tildes.
Thus it is strongly advised to use only three or four tildes.
By default the output is the same as for a normal code block.
To highlight the code, the developer has to indicate the typical file extension,
@@ -360,99 +337,84 @@ which corresponds to the programming language, after the opening fence.
For highlighting according to the C++ language, for instance, write the following code (the curly braces and dot are optional):
@verbatim
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
~~~{.cpp}
int func(int a,int b) { return a*b; }
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~
@endverbatim
which will produce:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
~~~{.cpp}
int func(int a,int b) { return a*b; }
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~
Verbatim content can be written by using framing \@verbatim \@endverbatim . For instance
verbatim text
Smaller code blocks can be inserted by wrapping with tags <i>\@code</i> and <i>\@endcode</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_6 References
To insert a reference to a website, it is proposed to write a URL. For example: http://en.wikipedia.org
To insert a reference to another part of the same document, the developer can write:
To insert a reference to a website, it is sufficient to write an URL.
For example: http://en.wikipedia.org
@verbatim
@htmlonly
<a href="#OCCT_DOC_SECTION_5">Doxygen Configuration file</a>
@endhtmlonly
@endverbatim
To insert a reference to a document or its subsection, use command <i>\@ref</i> followed by the document or section tag name.
For instance, @code @ref OCCT_DM_SECTION_A @endcode will be rendered as @ref OCCT_DM_SECTION_A.
to get a link to paragraph : @htmlonly <a href="#OCCT_DOC_SECTION_5">Doxygen configuration</a> @endhtmlonly
Note that links between documents will not work in PDF output if each document is generated independently.
Hence it is recommended to add a name of the referenced section after the tag name in the <i>\@ref</i> command (in quotes): this will guarantee that the reference is recognizable for the reader even if the cross-link is not instantiated.
For instance: @code @ref occt_modat_1 "Geometry Utilities" @endcode will be rendered as @ref occt_modat_1 "Geometry Utilities".
@subsection OCCT_DM_SECTION_A_7 Images
To insert image into document the developer can write the following code(in Doxygen-style):
For inserting images into the document use the command <i>\@figure</i>, as follows:
For HTML document:
@verbatim
@image html /relative/path/to/image/image001.png "Image caption"
@figure{/relative/path/to/image/image_file_name.png,"Image caption"}
@endverbatim
For latex document:
The first argument is a path to the image file, relative to the *dox* folder.
The supported formats for images are PNG, JPG, and SVG.
The file extension must be lowercase and correspond to the file format.
The image file name should have no dots except for the one before extension (names with more than one dot confuse **pdflatex**).
The second argument is optional, it defines the caption for the image to be inserted.
The caption argument, if given, should be quoted, even if it is a single word.
Captions are included below the image; in PDF output the images with caption are numbered automatically.
Example:
@verbatim
@image latex /relative/path/to/image/image001.png "Image caption"
@figure{/dev_guides/documentation/images/documentation_test_image.svg,"Test SVG image"}
@endverbatim
*Note*: When markdown document is used to generate html document the latex insertion is ignored (and vice versa)
due to this fact you can use image insertions in the pair, like example below:
is rendered as:
@figure{/dev_guides/documentation/images/documentation_test_image.svg,"Test SVG image"}
We recommend using **Inkscape** for creation and edition of vector graphics.
The graphics created in MS Word Draw and some other vector editors can be copy-pasted to Inkscape and saved as SVG images.
Note that the image that will be included in documentation is the whole page of the Inkscape document; use option "Resize page to content" in menu **File -> Document properties** of Inkscape to fit page dimensions to the picture (adding margins as necessary).
Note that the *figure* command is an alias to the standard Doxygen command *image* repeated twice: once for HTML and then for Latex output (used for PDF generation). Thus if HTML and PDF outputs should include different images or captions, command "image" can be used:
@verbatim
@image html /relative/path/to/image/image001.png "Image caption"
@image latex /relative/path/to/image/image001.png "Image caption"
@image html /relative/path/to/image/occ_logo.png
@image latex /relative/path/to/image/occ_logo.png "OCC logo"
@endverbatim
The code below tells Doxygen to insert a picture right in the place this code was written:
@verbatim
@image html /resources/occ_logo.png "OCCT logo"
@image latex /resources/occ_logo.png "OCCT logo"
@endverbatim
@image html /resources/occ_logo.png "OCCT logo"
@image latex /resources/occ_logo.png "OCCT logo"
@image html /resources/occ_logo.png
@image latex /resources/occ_logo.png "OCC logo"
@subsection OCCT_DM_SECTION_A_8 Table Of Contents
To get the table of contents at the beginning of the document, write \@tableofcontents tag.
But it is not needed now because TreeView option for HTML is used.
Use \@tableofcontents tag to get the table of contents at the beginning of the document.
Actually, it is not strictly necessary now because TreeView option for HTML is used.
The TOC in the PDF document will be generated automatically.
@subsection OCCT_DM_SECTION_A_9 Formulas
Formulas within documents will be generated using MathJax tool.
A developer has to specify these parameters in Doxyfile to enable support of MathJax in Doxygen:
USE_MATHJAX = YES
MATHJAX_FORMAT = HTML-CSS
MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
To use MathJax tool with the HTML page, it's \<head\> block has to contain
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.html}
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]},
displayAlign: "left"
});
</script>
<script type="text/javascript"
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
First script configures MathJax to understand separator types and to left allign formulas.
The second script inserts reference to MathJax tool.
This tool will always be used when the HTML output will be shown.
Formulas within MarkDown documents can be defined using LaTeX syntax.
Equations can be written by several ways:
@@ -485,8 +447,10 @@ gives the following result:
\right|
@f$
2.Formulas can also be put between @verbatim \begin{align} @endverbatim and @verbatim \end{align} @endverbatim tags. An example:
2.Formulas can also be put between @verbatim \begin{align} @endverbatim and @verbatim \end{align} @endverbatim tags.
For example:
@verbatim
\begin{align}
\dot{x} & = \sigma(y-x) \\

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -0,0 +1,91 @@
<?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="443.5307"
height="187.48862"
id="svg2"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="test_image.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.35"
inkscape:cx="295.90235"
inkscape:cy="-323.77532"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1366"
inkscape:window-height="716"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:snap-page="false"
borderlayer="false"
fit-margin-top="5"
fit-margin-left="5"
fit-margin-right="5"
fit-margin-bottom="5" />
<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(-79.097656,-21.098232)">
<path
sodipodi:type="spiral"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="path2985"
sodipodi:cx="142.85715"
sodipodi:cy="126.6479"
sodipodi:expansion="1"
sodipodi:revolution="3"
sodipodi:radius="73.178566"
sodipodi:argument="-18.174814"
sodipodi:t0="0"
d="m 142.85715,126.6479 c 2.86505,2.29205 -1.67612,4.99285 -3.80953,4.76191 -5.78142,-0.62584 -7.49143,-7.75205 -5.71428,-12.38096 3.17892,-8.28004 13.59119,-10.36558 20.95239,-6.66665 10.80286,5.42832 13.31404,19.50561 7.61903,29.52381 -7.59056,13.35269 -25.44626,16.29352 -38.09525,8.5714 -15.91746,-9.71749 -19.28891,-31.39926 -9.52378,-46.66667 11.82689,-18.490884 37.35922,-22.29349 55.23811,-10.476151 21.06966,13.926321 25.30383,43.323481 11.42852,63.809531 -16.01959,23.65196 -49.29063,28.31803 -72.38096,12.3809 C 82.334702,151.39625 77.236493,114.2452 95.238126,88.552628 115.43324,59.729444 156.46861,54.198885 184.76195,74.26698 c 31.41097,22.27939 37.37404,67.20227 15.23802,98.09525" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="225.71429"
y="55.219326"
id="text2987"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan2989"
x="225.71429"
y="55.219326">Test SVG image</tspan></text>
<path
style="fill:#d40000"
id="path2996"
d="m 225.93253,80.077991 c 3.24312,6.556366 8.29882,11.800272 13.5792,16.763957 4.5107,4.980932 7.56994,10.929012 10.6621,16.828992 2.61039,5.79272 3.86714,11.94331 7.08009,17.44901 3.75425,6.35398 6.70021,13.19689 8.79217,20.27197 4.84784,15.88966 11.74851,2.45314 -37.25143,18.61001 -0.78487,0.2588 0.15562,-1.64589 0.20424,-2.47091 0.0536,-0.90872 0.0682,-1.81932 0.10224,-2.72899 0.17911,-6.50471 -0.15488,-13.01656 0.28271,-19.50992 0.46019,-6.30504 2.24023,-12.34988 4.0286,-18.37582 2.36519,-5.44796 6.30711,-10.00347 9.73908,-14.79837 3.98599,-5.97976 8.02146,-11.96839 13.10341,-17.072556 4.37574,-4.432922 8.35123,-9.243914 12.37764,-13.99199 4.43478,-4.829914 10.15101,-8.139537 15.06208,-12.425011 14.95925,-12.429871 35.2123,-18.385688 51.95332,-26.62658 11.5059,-5.663868 -23.27039,10.786567 -34.90558,16.179851 17.6228,-9.547136 35.52389,-19.290175 55.17352,-23.555822 4.29932,-0.713125 2.15416,-0.406331 6.43505,-0.923403 0,0 -35.68459,22.595324 -35.68459,22.595324 l 0,0 c -4.12774,0.727408 -2.06126,0.312559 -6.19873,1.248113 -3.11612,0.864072 -6.22731,1.766121 -9.25625,2.908329 -0.8427,0.317783 -3.30812,1.424428 -2.49421,1.03881 40.69568,-19.281166 46.47137,-22.237336 32.54467,-15.189227 -79.1837,37.555094 -31.13152,14.703661 -6.06008,3.03043 4.62777,-2.154687 -15.27783,7.276298 -11.28272,6.532336 -1.75524,1.522667 -3.27126,3.31763 -5.09432,4.758404 -3.18452,2.516733 -7.13492,4.190007 -9.93487,7.239896 -4.62518,4.303389 -8.28044,9.606276 -12.50569,14.296007 -0.80437,0.69437 -4.493,3.820284 -5.21444,4.670532 -2.98505,3.518007 -5.33483,7.691189 -8.08882,11.393589 -2.92337,4.905278 -6.62131,9.277358 -10.15131,13.755678 -2.01215,5.68475 -3.56944,11.57461 -4.40544,17.54154 -0.83081,6.35553 -0.13439,12.77693 -0.29528,19.17264 -0.0102,1.50844 -0.0276,5.46288 -0.0732,5.48876 -34.08891,19.36365 -36.17581,33.13461 -40.63381,14.4297 -1.84609,-6.79718 -4.68694,-13.28977 -8.31428,-19.32972 -3.24304,-5.58446 -4.82126,-11.64528 -7.31615,-17.57296 -2.8174,-5.54315 -5.55105,-11.15816 -9.9264,-15.68612 -5.41001,-5.49645 -10.6705,-11.1173 -14.41843,-17.919019 0,0 38.38591,-18.02746 38.38591,-18.02746 z"
inkscape:connector-curvature="0"
transform="translate(84.097656,26.098232)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@@ -1,4 +1,4 @@
Guide to installing and using Git for OCCT development {#dev_guides__git_guide}
Guide to installing and using Git for OCCT development {#occt_dev_guides__git_guide}
=================================
@tableofcontents
@@ -121,7 +121,7 @@ The official repository contains:
If you prefer to work with the English interface, remove or rename .msg localization file
in subdirectories *share/git-gui/lib/msgs* and *share/gitk/lib/msgs* of the Git installation directory.
Before the first commit to the OCCT repository, make sure that your User Name in the Git configuration file (file *.gitconfig* in the $HOME directory) is equal to your username on the OCCT development portal.
Before the first commit to the OCCT repository, make sure that your User Name in the Git configuration file (file <i>.gitconfig</i> in the <i>$HOME</i> directory) is equal to your username on the OCCT development portal.
@subsubsection occt_gitguide_2_1_2 Installation and configuration of TortoiseGit
@@ -150,14 +150,14 @@ The official repository contains:
* After the installation select Start -> Programs -> TortoiseGit Settings to configure TortoiseGit.
Select Git->Config to add your user name and Email address to the local .gitconfig file
Select Git->Config to add your user name and Email address to the local <i>.gitconfig</i> file
@image html OCCT_GitGuide_V2_image006.png
@image latex OCCT_GitGuide_V2_image006.png
@subsection occt_gitguide_2_2 Linux platform
We assume that Linux users have Git already installed and available in the PATH.
We assume that Linux users have Git already installed and available in the *PATH*.
Make sure to configure Git so that the user name is equal to your username
on the OCCT development portal, and set SafeCrLf option to true:
@@ -190,7 +190,7 @@ The official repository contains:
It is highly recommended to use the tools that come
with the chosen Git client for generation of SSH keys.
Using incompatible tools (e.g. ssh-keygen.exe from Cygwin for code generation,
Using incompatible tools (e.g. *ssh-keygen.exe* from Cygwin for code generation,
and TortoiseGit GUI with a default Putty client for connection to server)
may lead to authentication problems.
@@ -201,8 +201,8 @@ The official repository contains:
Use this option if you have installed TortoiseGit (or other GUI Git client on Windows)
and have chosen “TortoisePLink” (or other Putty client) as SSH client during installation.
To generate the key with this client, run Puttygen (e.g. from Start menu -> TortoiseGit -> Puttygen),
then click Generate and move mouse cursor over the blank area until the key is generated.
To generate the key with this client, run **Puttygen** (e.g. from Start menu -> TortoiseGit -> Puttygen),
then click **Generate** and move mouse cursor over the blank area until the key is generated.
@image html OCCT_GitGuide_V2_image007.png "Putty key generator"
@image latex OCCT_GitGuide_V2_image007.png "Putty key generator"
@@ -221,7 +221,7 @@ The official repository contains:
during installation of TortoiseGit (or other Windows tool).
Make sure that you have *ssh* and *ssh-keygen* commands in the path.
On Windows, you might need to start 'Git Bash' command prompt window provided by Git for Windows.
On Windows, you might need to start **Git Bash** command prompt window.
Use the following command to generate SSH keys:
~~~~~
@@ -230,14 +230,14 @@ The official repository contains:
The last argument is an optional comment, which can be included with the public key and used to distinguish between different keys (if you have many). The common practice is to put here your mail address or workstation name.
The command will ask you where to store the keys. It is recommended to accept the default path *$HOME/.ssh/id_rsa*. Just press Enter for that. You will be warned if a key is already present in the specified file; you can either overwrite it by the new one, or stop generation and use the old key.
The command will ask you where to store the keys. It is recommended to accept the default path <i>$HOME/.ssh/id_rsa</i>. Just press **Enter** for that. You will be warned if a key is already present in the specified file; you can either overwrite it by the new one, or stop generation and use the old key.
If you want to be on the safe side, enter password to encrypt the private key. You will be asked to enter this password each time you use that key (e.g. access a remote Git repository), unless you use the tool that caches the key (like TortoiseGit). If you do not want to bother, enter an empty string.
On Windows, make sure to note the complete path to the generated files (the location of your $HOME might be not obvious). Two key files will be created in the specified location (by default in $HOME/.ssh/):
* *id_rsa* - private key
* id_rsa.pub - public key
* *id_rsa.pub* - public key
The content of the public key file (one text line) is the key to be added to the user account on the site (see below).
@@ -265,7 +265,7 @@ Click on that tab, then click **Add a public key**, and paste the text of the pu
to update the configuration after the new key is added.
After that time, you can try accessing Git.
@section occt_gitguide_4 WORK WITH REPOSITORY: DEVELOPER OPERATIONS
@section occt_gitguide_4 Work with repository: developer operations
@subsection occt_gitguide_4_1 General workflow
@@ -307,7 +307,7 @@ Click on that tab, then click **Add a public key**, and paste the text of the pu
> git clone gitolite@git.dev.opencascade.org:occt <path>
~~~~~
where <i><path></i> is the path to the new folder which will be created for the repository.
where <i>\<path\></i> is the path to the new folder which will be created for the repository.
* In TortoiseGit: create a new folder, open it and right-click in the Explorer window, then choose **Git Clone** in the context menu:
@@ -396,7 +396,7 @@ In TortoiseGit:
@image latex OCCT_GitGuide_V2_image014.png
Unstaged files will be shown if you check the option Show Unversioned Files.
Double-clock on each modified file to see the changes to be committed (as a difference vs. the base version).
Double-click on each modified file to see the changes to be committed (as a difference vs. the base version).
@subsection occt_gitguide_4_6 Pushing branch to the remote repository
@@ -504,7 +504,7 @@ Rebasing is a good occasion to clean-up the history of commits in the branch. Co
To rebase your branch into a single commit, you need to do the following:
* Switch to your branch (e.g. “CR12345”)
* In TortoiseGit history log, select a branch to rebase on *(remotes/origin/master)* and in the context menu choose **Rebase “CR12345” onto this**.
* In TortoiseGit history log, select a branch to rebase on <i>(remotes/origin/master)</i> and in the context menu choose **Rebase “CR12345” onto this**.
* In the **Rebase** dialog, check **Squash All**. You can also change the order of commits and define for each commit whether it should be kept (**Pick**), edited, or just skipped.
@image html OCCT_GitGuide_V2_image023.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

521
dox/license.md Normal file
View File

@@ -0,0 +1,521 @@
License {#occt_public_license}
=======
Open CASCADE Technology is available under GNU Lesser General Public License
(LGPL) version 2.1 with additional exception.
@section license_lgpl_21 GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
### Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
### TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
- 0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
1. The modified work must itself be a software library.
2. You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
3. You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
4. If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
1. Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
2. Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
3. Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
4. If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
5. Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
1. Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
2. Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
**NO** **WARRANTY**
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
### END OF TERMS AND CONDITIONS
### How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!
@section occt_lgpl_exception OPEN CASCADE EXCEPTION
### Open CASCADE Exception (version 1.0) to GNU LGPL version 2.1.
The object code (i.e. not a source) form of a "work that uses the Library"
can incorporate material from a header file that is part of the Library.
As a special exception to the GNU Lesser General Public License version 2.1,
you may distribute such object code incorporating material from header files
provided with the Open CASCADE Technology libraries (including code of CDL
generic classes) under terms of your choice, provided that you give
prominent notice in supporting documentation to this code that it makes use
of or is based on facilities provided by the Open CASCADE Technology software.

View File

@@ -1,781 +0,0 @@
# -----------------------------------------------------------------------
# Script name: CompileDocs.tcl
# This script compiles OCCT documents from *.md files to HTML pages
# Author: omy
# -----------------------------------------------------------------------
# get OCCT version from file Standard_Version.hxx (if available)
proc OverviewDoc_DetectCasVersion {theCasRoot} {
set occt_ver 6.7.0
set occt_ver_add ""
if { [file exist $theCasRoot/src/Standard/Standard_Version.hxx] } {
set fh [open $theCasRoot/src/Standard/Standard_Version.hxx]
set fh_loaded [read $fh]
close $fh
regexp {[^/]\s*#\s*define\s+OCC_VERSION_COMPLETE\s+\"([^\s]*)\"} $fh_loaded dummy occt_ver
regexp {^\s*#\s*define\s+OCC_VERSION_DEVELOPMENT\s+\"([^\s]*)\"} $fh_loaded dummy occt_ver_add
if { "$occt_ver_add" != "" } { set occt_ver ${occt_ver}.$occt_ver_add }
}
return $occt_ver
}
# Generates Doxygen configuration file for Overview documentation
proc OverviewDoc_MakeDoxyfile {casDir outDir tagFileDir {doxyFileName} {generatorMode ""} DocFilesList verboseMode searchMode hhcPath} {
set doxyFile [open $doxyFileName "w"]
set casroot $casDir
set inputDir $casDir/dox
# Common configs
puts $doxyFile "DOXYFILE_ENCODING = UTF-8"
puts $doxyFile "PROJECT_NAME = \"Open CASCADE Technology\""
puts $doxyFile "PROJECT_NUMBER = [OverviewDoc_DetectCasVersion $casDir]"
puts $doxyFile "PROJECT_BRIEF = "
puts $doxyFile "PROJECT_LOGO = $inputDir/resources/occ_logo.png"
puts $doxyFile "OUTPUT_DIRECTORY = $outDir"
puts $doxyFile "CREATE_SUBDIRS = NO"
puts $doxyFile "OUTPUT_LANGUAGE = English"
puts $doxyFile "ABBREVIATE_BRIEF = \"The \$name class\" \
\"The \$name widget\" \
\"The \$name file\" \
is \
provides \
specifies \
contains \
represents \
a \
an \
the"
puts $doxyFile "FULL_PATH_NAMES = YES"
puts $doxyFile "INHERIT_DOCS = YES"
puts $doxyFile "TAB_SIZE = 4"
puts $doxyFile "MARKDOWN_SUPPORT = YES"
puts $doxyFile "EXTRACT_ALL = YES"
puts $doxyFile "CASE_SENSE_NAMES = NO"
puts $doxyFile "INLINE_INFO = YES"
puts $doxyFile "SORT_MEMBER_DOCS = YES"
puts $doxyFile "WARNINGS = YES"
puts $doxyFile "WARN_IF_UNDOCUMENTED = YES"
puts $doxyFile "WARN_IF_DOC_ERROR = YES"
puts $doxyFile "WARN_NO_PARAMDOC = NO"
puts $doxyFile "WARN_FORMAT = \"\$file:\$line: \$text\""
puts $doxyFile "INPUT_ENCODING = UTF-8"
puts $doxyFile "FILE_PATTERNS = *.md *.dox "
puts $doxyFile "RECURSIVE = YES"
puts $doxyFile "SOURCE_BROWSER = NO"
puts $doxyFile "INLINE_SOURCES = YES"
puts $doxyFile "COLS_IN_ALPHA_INDEX = 5"
# Generation options
puts $doxyFile "GENERATE_DOCSET = NO"
puts $doxyFile "GENERATE_CHI = NO"
puts $doxyFile "GENERATE_QHP = NO"
puts $doxyFile "GENERATE_ECLIPSEHELP = NO"
puts $doxyFile "GENERATE_RTF = NO"
puts $doxyFile "GENERATE_MAN = NO"
puts $doxyFile "GENERATE_XML = NO"
puts $doxyFile "GENERATE_DOCBOOK = NO"
puts $doxyFile "GENERATE_AUTOGEN_DEF = NO"
puts $doxyFile "GENERATE_PERLMOD = NO"
# Keep doxygen comments within code blocks
puts $doxyFile "STRIP_CODE_COMMENTS = NO"
set PARAM_INPUT "INPUT ="
set PARAM_IMAGEPATH "IMAGE_PATH = $inputDir/resources/ "
foreach docFile $DocFilesList {
set NEW_IMG_PATH [file normalize [file dirname "$inputDir/$docFile"]]
if { [string compare $NEW_IMG_PATH $casroot] != 0 } {
if {[file isdirectory "$NEW_IMG_PATH/images"]} {
append PARAM_IMAGEPATH " $NEW_IMG_PATH/images"
}
}
append PARAM_INPUT " " $inputDir/$docFile
}
puts $doxyFile $PARAM_INPUT
puts $doxyFile $PARAM_IMAGEPATH
if { $generatorMode == "HTML_ONLY"} {
# Set a reference to a TAGFILE
if { $tagFileDir != "" } {
if {[file exists $tagFileDir/OCCT.tag] == 1} {
set tagPath [OverviewDoc_GetRelPath $tagFileDir $outDir/html]
puts $doxyFile "TAGFILES = $tagFileDir/OCCT.tag=$tagPath/html"
}
}
# HTML Output
puts $doxyFile "GENERATE_LATEX = NO"
puts $doxyFile "GENERATE_HTMLHELP = NO"
puts $doxyFile "GENERATE_HTML = YES"
puts $doxyFile "HTML_COLORSTYLE_HUE = 220"
puts $doxyFile "HTML_COLORSTYLE_SAT = 100"
puts $doxyFile "HTML_COLORSTYLE_GAMMA = 80"
puts $doxyFile "HTML_TIMESTAMP = YES"
puts $doxyFile "HTML_DYNAMIC_SECTIONS = YES"
puts $doxyFile "HTML_INDEX_NUM_ENTRIES = 100"
puts $doxyFile "DISABLE_INDEX = YES"
puts $doxyFile "GENERATE_TREEVIEW = YES"
puts $doxyFile "ENUM_VALUES_PER_LINE = 8"
puts $doxyFile "TREEVIEW_WIDTH = 250"
puts $doxyFile "EXTERNAL_PAGES = NO"
# HTML Search engine options
if { [string tolower $searchMode] == "none" } {
puts $doxyFile "SEARCHENGINE = NO"
puts $doxyFile "SERVER_BASED_SEARCH = NO"
puts $doxyFile "EXTERNAL_SEARCH = NO"
} else {
puts $doxyFile "SEARCHENGINE = YES"
if { [string tolower $searchMode] == "local" } {
puts $doxyFile "SERVER_BASED_SEARCH = NO"
puts $doxyFile "EXTERNAL_SEARCH = NO"
} elseif { [string tolower $searchMode] == "server" } {
puts $doxyFile "SERVER_BASED_SEARCH = YES"
puts $doxyFile "EXTERNAL_SEARCH = NO"
} elseif { [string tolower $searchMode] == "external" } {
puts $doxyFile "SERVER_BASED_SEARCH = YES"
puts $doxyFile "EXTERNAL_SEARCH = YES"
} else {
puts "ERROR: Wrong search engine type"
close $doxyFile
return
}
}
puts $doxyFile "SEARCHDATA_FILE = searchdata.xml"
puts $doxyFile "SKIP_FUNCTION_MACROS = YES"
# Formula options
puts $doxyFile "FORMULA_FONTSIZE = 12"
puts $doxyFile "FORMULA_TRANSPARENT = YES"
puts $doxyFile "USE_MATHJAX = YES"
puts $doxyFile "MATHJAX_FORMAT = HTML-CSS"
puts $doxyFile "MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest"
} elseif { $generatorMode == "CHM_ONLY"} {
puts $doxyFile "GENERATE_HTMLHELP = YES"
puts $doxyFile "CHM_FILE = ../../overview.chm"
puts $doxyFile "HHC_LOCATION = \"$hhcPath\""
puts $doxyFile "DISABLE_INDEX = YES"
# Formula options
puts $doxyFile "FORMULA_FONTSIZE = 12"
puts $doxyFile "FORMULA_TRANSPARENT = YES"
puts $doxyFile "USE_MATHJAX = YES"
puts $doxyFile "MATHJAX_FORMAT = HTML-CSS"
puts $doxyFile "MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest"
} elseif { $generatorMode == "PDF_ONLY"} {
puts $doxyFile "GENERATE_HTMLHELP = NO"
puts $doxyFile "GENERATE_HTML = NO"
puts $doxyFile "DISABLE_INDEX = YES"
puts $doxyFile "GENERATE_TREEVIEW = NO"
puts $doxyFile "PREDEFINED = PDF_ONLY"
puts $doxyFile "GENERATE_LATEX = YES"
puts $doxyFile "COMPACT_LATEX = YES"
puts $doxyFile "PDF_HYPERLINKS = YES"
puts $doxyFile "USE_PDFLATEX = YES"
puts $doxyFile "LATEX_BATCHMODE = YES"
puts $doxyFile "LATEX_OUTPUT = latex"
puts $doxyFile "LATEX_CMD_NAME = latex"
puts $doxyFile "MAKEINDEX_CMD_NAME = makeindex"
}
close $doxyFile
}
# Returns the relative path between two directories
proc OverviewDoc_GetRelPath {targetFile currentpath} {
set cc [file split [file normalize $currentpath]]
set tt [file split [file normalize $targetFile]]
if {![string equal [lindex $cc 0] [lindex $tt 0]]} {
# not on *n*x then
return -code error "$targetFile not on same volume as $currentpath"
}
while {[string equal [lindex $cc 0] [lindex $tt 0]] && [llength $cc] > 0} {
# discard matching components from the front
set cc [lreplace $cc 0 0]
set tt [lreplace $tt 0 0]
}
set prefix ""
if {[llength $cc] == 0} {
# just the file name, so targetFile is lower down (or in same place)
set prefix "."
}
# step up the tree
for {set i 0} {$i < [llength $cc]} {incr i} {
append prefix " .."
}
# stick it all together (the eval is to flatten the targetFile list)
return [eval file join $prefix $tt]
}
# Prints Help message
proc OverviewDoc_PrintHelpMessage {} {
puts "\nUsage : occdoc \[-h\] \[-html\] \[-pdf\] \[-m=<list of files>\] \[-l=<document name>\] \[-v\] \[-s\]"
puts ""
puts " Options are : "
puts " -html : To generate HTML files"
puts " (cannot be used with -pdf or -chm)"
puts " -pdf : To generate PDF files"
puts " (cannot be used with -html or chm)"
puts " -chm : To generate CHM files"
puts " (cannot be used with -html or pdf)"
puts " -hhc : To define path to hhc - chm generator"
puts " : is used with just -chm option"
puts " -m=<modules_list> : Specifies list of documents to generate."
puts " If it is not specified, all files, "
puts " mentioned in FILES.txt are processed."
puts " -l=<document_name> : Specifies the document caption "
puts " for a single document"
puts " -h : Prints help message"
puts " -v : Specifies the Verbose mode"
puts " (info on all script actions is shown)"
puts " -s=<search_mode> : Specifies the Search mode of HTML documents."
puts " Can be: none | local | server | external | "
puts " : Can be used only with -html option"
}
# Parses command line arguments
proc OverviewDoc_ParseArguments {arguments} {
global args_names
global args_values
set args_names {}
array set args_values {}
foreach arg $arguments {
if {[regexp {^(-)[a-z]+$} $arg] == 1} {
set name [string range $arg 1 [string length $arg]-1]
lappend args_names $name
set args_values($name) "NULL"
continue
} elseif {[regexp {^(-)[a-z]+=.+$} $arg] == 1} {
set equal_symbol_position [string first "=" $arg]
set name [string range $arg 1 $equal_symbol_position-1]
lappend args_names $name
set value [string range $arg $equal_symbol_position+1 [string length $arguments]-1]
# To parse a list of values for -m parameter
if { [string first "," $value] != -1 } {
set value [split $value ","];
}
set args_values($name) $value
} else {
puts "Error in argument $arg"
return 1
}
}
return 0
}
# Loads a list of docfiles from file FILES.txt
proc OverviewDoc_LoadFilesList {} {
set INPUTDIR [file normalize [file dirname [info script]]]
global available_docfiles
set available_docfiles {}
# Read data from file
if { [file exists "$INPUTDIR/FILES.txt"] == 1 } {
set FILE [open "$INPUTDIR/FILES.txt" r]
while {1} {
set line [string trim [gets $FILE]]
# trim possible comments starting with '#'
set line [regsub {\#.*} $line {}]
if {$line != ""} {
lappend available_docfiles $line
}
if {[eof $FILE]} {
close $FILE
break
}
}
} else {
return -1
}
return 0
}
# Writes new tex file for conversion from tex to pdf for a specific doc
proc OverviewDoc_MakeRefmanTex {fileName latexDir docLabel verboseMode} {
if {$verboseMode == "YES"} {
puts "INFO: Making refman.tex file for $fileName"
}
set DOCNAME "$latexDir/refman.tex"
if {[file exists $DOCNAME] == 1} {
file delete -force $DOCNAME
}
set texfile [open $DOCNAME w]
puts $texfile "\\batchmode"
puts $texfile "\\nonstopmode"
puts $texfile "\\documentclass\[oneside\]{article}"
puts $texfile "\n% Packages required by doxygen"
puts $texfile "\\usepackage{calc}"
puts $texfile "\\usepackage{doxygen}"
puts $texfile "\\usepackage{graphicx}"
puts $texfile "\\usepackage\[utf8\]{inputenc}"
puts $texfile "\\usepackage{makeidx}"
puts $texfile "\\usepackage{multicol}"
puts $texfile "\\usepackage{multirow}"
puts $texfile "\\usepackage{textcomp}"
puts $texfile "\\usepackage{amsmath}"
puts $texfile "\\usepackage\[table\]{xcolor}"
puts $texfile "\\usepackage{indentfirst}"
puts $texfile ""
puts $texfile "% Font selection"
puts $texfile "\\usepackage\[T1\]{fontenc}"
puts $texfile "\\usepackage{mathptmx}"
puts $texfile "\\usepackage\[scaled=.90\]{helvet}"
puts $texfile "\\usepackage{courier}"
puts $texfile "\\usepackage{amssymb}"
puts $texfile "\\usepackage{sectsty}"
puts $texfile "\\renewcommand{\\familydefault}{\\sfdefault}"
puts $texfile "\\allsectionsfont{%"
puts $texfile " \\fontseries{bc}\\selectfont%"
puts $texfile " \\color{darkgray}%"
puts $texfile "}"
puts $texfile "\\renewcommand{\\DoxyLabelFont}{%"
puts $texfile " \\fontseries{bc}\\selectfont%"
puts $texfile " \\color{darkgray}%"
puts $texfile "}"
puts $texfile ""
puts $texfile "% Page & text layout"
puts $texfile "\\usepackage{geometry}"
puts $texfile "\\geometry{%"
puts $texfile " a4paper,%"
puts $texfile " top=2.5cm,%"
puts $texfile " bottom=2.5cm,%"
puts $texfile " left=2.5cm,%"
puts $texfile " right=2.5cm%"
puts $texfile "}"
puts $texfile "\\tolerance=750"
puts $texfile "\\hfuzz=15pt"
puts $texfile "\\hbadness=750"
puts $texfile "\\setlength{\\emergencystretch}{15pt}"
puts $texfile "\\setlength{\\parindent}{0cm}";#0.75cm
puts $texfile "\\setlength{\\parskip}{0.2cm}"; #0.2
puts $texfile "\\makeatletter"
puts $texfile "\\renewcommand{\\paragraph}{%"
puts $texfile " \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{%"
puts $texfile "\\normalfont\\normalsize\\bfseries\\SS@parafont%"
puts $texfile " }%"
puts $texfile "}"
puts $texfile "\\renewcommand{\\subparagraph}{%"
puts $texfile " \\@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{%"
puts $texfile "\\normalfont\\normalsize\\bfseries\\SS@subparafont%"
puts $texfile " }%"
puts $texfile "}"
puts $texfile "\\makeatother"
puts $texfile ""
puts $texfile "% Headers & footers"
puts $texfile "\\usepackage{fancyhdr}"
puts $texfile "\\pagestyle{fancyplain}"
puts $texfile "\\fancyhead\[LE\]{\\fancyplain{}{\\bfseries\\thepage}}"
puts $texfile "\\fancyhead\[CE\]{\\fancyplain{}{}}"
puts $texfile "\\fancyhead\[RE\]{\\fancyplain{}{\\bfseries\\leftmark}}"
puts $texfile "\\fancyhead\[LO\]{\\fancyplain{}{\\bfseries\\rightmark}}"
puts $texfile "\\fancyhead\[CO\]{\\fancyplain{}{}}"
puts $texfile "\\fancyhead\[RO\]{\\fancyplain{}{\\bfseries\\thepage}}"
puts $texfile "\\fancyfoot\[LE\]{\\fancyplain{}{}}"
puts $texfile "\\fancyfoot\[CE\]{\\fancyplain{}{}}"
puts $texfile "\\fancyfoot\[RE\]{\\fancyplain{}{\\bfseries\\scriptsize (c) Open CASCADE 2001\-2013}}"
puts $texfile "\\fancyfoot\[LO\]{\\fancyplain{}{\\bfseries\\scriptsize (c) Open CASCADE 2001\-2013}}"
puts $texfile "\\fancyfoot\[CO\]{\\fancyplain{}{}}"
puts $texfile "\\fancyfoot\[RO\]{\\fancyplain{}{}}"
puts $texfile "\\renewcommand{\\footrulewidth}{0.4pt}"
puts $texfile "\\renewcommand{\\sectionmark}\[1\]{%"
puts $texfile " \\markright{\\thesection\\ #1}%"
puts $texfile "}"
puts $texfile ""
puts $texfile "% Indices & bibliography"
puts $texfile "\\usepackage{natbib}"
puts $texfile "\\usepackage\[titles\]{tocloft}"
puts $texfile "\\renewcommand{\\cftsecleader}{\\cftdotfill{\\cftdotsep}}"
puts $texfile "\\setcounter{tocdepth}{3}"
puts $texfile "\\setcounter{secnumdepth}{5}"
puts $texfile "\\makeindex"
puts $texfile ""
puts $texfile "% Hyperlinks (required, but should be loaded last)"
puts $texfile "\\usepackage{ifpdf}"
puts $texfile "\\ifpdf"
puts $texfile " \\usepackage\[pdftex,pagebackref=true\]{hyperref}"
puts $texfile "\\else"
puts $texfile " \\usepackage\[ps2pdf,pagebackref=true\]{hyperref}"
puts $texfile "\\fi"
puts $texfile "\\hypersetup{%"
puts $texfile " colorlinks=true,%"
puts $texfile " linkcolor=black,%"
puts $texfile " citecolor=black,%"
puts $texfile " urlcolor=blue,%"
puts $texfile " unicode%"
puts $texfile "}"
puts $texfile ""
puts $texfile "% Custom commands"
puts $texfile "\\newcommand{\\clearemptydoublepage}{%"
puts $texfile " \\newpage{\\pagestyle{empty}\\cleardoublepage}%"
puts $texfile "}"
puts $texfile "\n"
puts $texfile "%===== C O N T E N T S =====\n"
puts $texfile "\\begin{document}"
puts $texfile ""
puts $texfile "% Titlepage & ToC"
puts $texfile "\\hypersetup{pageanchor=false}"
puts $texfile "\\pagenumbering{roman}"
puts $texfile "\\begin{titlepage}"
puts $texfile "\\vspace*{7cm}"
puts $texfile "\\begin{center}%"
puts $texfile "\\includegraphics\[width=0.75\\textwidth, height=0.2\\textheight\]{../../../dox/resources/occt_logo.png}\\\\"; #\\\\\\\\
puts $texfile "{\\Large Open C\\-A\\-S\\-C\\-A\\-D\\-E Technology \\\\\[1ex\]\\Large [OverviewDoc_DetectCasVersion $latexDir/../../../] }\\\\"
puts $texfile "\\vspace*{1cm}"
puts $texfile "{\\Large $docLabel}\\\\"
puts $texfile "\\vspace*{1cm}"
# puts $texfile "{\\large Generated by Doxygen 1.8.4}\\\\"
puts $texfile "\\vspace*{0.5cm}"
puts $texfile "{\\small \\today}\\"
puts $texfile "\\end{center}"
puts $texfile "\\end{titlepage}"
puts $texfile "\\clearpage"
puts $texfile "\\pagenumbering{roman}"
puts $texfile "\\tableofcontents"
puts $texfile "\\newpage"
puts $texfile "\\pagenumbering{arabic}"
puts $texfile "\\hypersetup{pageanchor=true}"
puts $texfile ""
puts $texfile "\\let\\stdsection\\section"
puts $texfile " \\renewcommand\\section{\\pagebreak\\stdsection}"
puts $texfile "\\hypertarget{$fileName}{}"
puts $texfile "\\input{$fileName}"
puts $texfile ""
puts $texfile "% Index"
puts $texfile "\\newpage"
puts $texfile "\\phantomsection"
puts $texfile "\\addcontentsline{toc}{part}{Index}"
puts $texfile "\\printindex\n"
puts $texfile "\\end{document}"
close $texfile
}
# Postprocesses generated TeX files
proc OverviewDoc_ProcessTex {{texFiles {}} {latexDir} verboseMode} {
foreach TEX $texFiles {
if {$verboseMode == "YES"} {
puts "INFO: Preprocessing file $TEX"
}
if {![file exists $TEX]} {
puts "file $TEX doesn't exist"
return
}
set IN_F [open "$TEX" r]
set TMPFILENAME "$latexDir/temp.tex"
set OUT_F [open $TMPFILENAME w]
while {1} {
set line [gets $IN_F]
if { [string first "\\includegraphics" $line] != -1 } {
# Center images in TeX files
set line "\\begin{center}\n $line\n\\end{center}"
} elseif { [string first "\\subsection" $line] != -1 } {
# Replace \subsection with \section tag
regsub -all "\\\\subsection" $line "\\\\section" line
} elseif { [string first "\\subsubsection" $line] != -1 } {
# Replace \subsubsection with \subsection tag
regsub -all "\\\\subsubsection" $line "\\\\subsection" line
} elseif { [string first "\\paragraph" $line] != -1 } {
# Replace \paragraph with \subsubsection tag
regsub -all "\\\\paragraph" $line "\\\\subsubsection" line
}
puts $OUT_F $line
if {[eof $IN_F]} {
close $IN_F
close $OUT_F
break
}
}
file delete -force $TEX
file rename $TMPFILENAME $TEX
}
}
# Main procedure for documents compilation
proc OverviewDoc_Main { {docfiles {}} generatorMode docLabel verboseMode searchMode hhcPath} {
set INDIR [file normalize [file dirname [info script]]]
set CASROOT [file normalize [file dirname "$INDIR/../../"]]
set OUTDIR $CASROOT/doc
set PDFDIR $OUTDIR/overview/pdf
set HTMLDIR $OUTDIR/overview/html
set LATEXDIR $OUTDIR/overview/latex
set TAGFILEDIR $OUTDIR/refman
set DOXYFILE $OUTDIR/OCCT.cfg
# Create or clean the output folders
if {[file exists $OUTDIR] == 0} {
file mkdir $OUTDIR
}
if {[file exists $HTMLDIR] == 0} {
file mkdir $HTMLDIR
}
if {[file exists $PDFDIR] == 0} {
file mkdir $PDFDIR
}
if {[file exists $LATEXDIR]} {
#file delete {*}[glob -nocomplain $LATEXDIR/*.*]
file delete -force $LATEXDIR
}
file mkdir $LATEXDIR
# Run tools to compile documents
puts "[clock format [clock seconds] -format {%Y-%m-%d %H:%M}] Generating Doxyfile..."
OverviewDoc_MakeDoxyfile $CASROOT "$OUTDIR/overview" $TAGFILEDIR $DOXYFILE $generatorMode $docfiles $verboseMode $searchMode $hhcPath
# Run doxygen tool
if { $generatorMode == "HTML_ONLY"} {
puts "[clock format [clock seconds] -format {%Y-%m-%d %H:%M}] Generating HTML files..."
} elseif { $generatorMode == "CHM_ONLY" } {
puts "[clock format [clock seconds] -format {%Y-%m-%d %H:%M}] Generating CHM file..."
}
set RESULT [catch {exec doxygen $DOXYFILE > $OUTDIR/doxygen_out.log} DOX_ERROR]
if {$RESULT != 0} {
if {[llength [split $DOX_ERROR "\n"]] > 1} {
if {$verboseMode == "YES"} {
puts "See Doxygen log in $OUTDIR/doxygen_warnings_and_errors.log"
}
set DOX_ERROR_FILE [open "$OUTDIR/doxygen_warnings_and_errors.log" "w"]
puts $DOX_ERROR_FILE $DOX_ERROR
close $DOX_ERROR_FILE
} else {
puts $DOX_ERROR
}
}
# Close the Doxygen application
after 300
# Start PDF generation routine
if { $generatorMode == "PDF_ONLY" } {
puts "[clock format [clock seconds] -format {%Y-%m-%d %H:%M}] Generating PDF files..."
set OS $::tcl_platform(platform)
if { $OS == "unix" } {
set PREFIX ".sh"
} elseif { $OS == "windows" } {
set PREFIX ".bat"
}
# Prepare a list of TeX files, generated by Doxygen
cd $LATEXDIR
set TEXFILES [glob $LATEXDIR -type f -directory $LATEXDIR -tails "*.tex" ]
set REFMAN_IDX [lsearch $TEXFILES "refman.tex"]
set TEXFILES [lreplace $TEXFILES $REFMAN_IDX $REFMAN_IDX]
set IDX [lsearch $TEXFILES "$LATEXDIR"]
while { $IDX != -1} {
set TEXFILES [lreplace $TEXFILES $IDX $IDX]
set IDX [lsearch $TEXFILES "$LATEXDIR"]
}
if {$verboseMode == "YES"} {
puts "Preprocessing generated TeX files..."
}
OverviewDoc_ProcessTex $TEXFILES $LATEXDIR $verboseMode
if {$verboseMode == "YES"} {
puts "Generating PDF files from TeX files..."
}
foreach TEX $TEXFILES {
# Rewrite existing REFMAN.tex file...
set TEX [string range $TEX 0 [ expr "[string length $TEX] - 5"]]
OverviewDoc_MakeRefmanTex $TEX $LATEXDIR $docLabel $verboseMode
if {$verboseMode == "YES"} {
puts "INFO: Generating PDF file from $TEX"
# ...and use it to generate PDF from TeX...
puts "Executing $LATEXDIR/make$PREFIX..."
}
set RESULT [catch {eval exec [auto_execok $LATEXDIR/make$PREFIX] > "$OUTDIR/pdflatex_out.log"} LaTeX_ERROR]
if {$RESULT != 0} {
if {[llength [split $LaTeX_ERROR "\n"]] > 1} {
if {$verboseMode == "YES"} {
puts "See Latex log in $OUTDIR/pdflatex_warnings_and_errors.log"
}
set LaTeX_ERROR_FILE [open "$OUTDIR/pdflatex_warnings_and_errors.log" "w"]
puts $LaTeX_ERROR_FILE $LaTeX_ERROR
close $LaTeX_ERROR_FILE
} else {
puts $DOX_ERROR
}
}
# ...and place it to the specific folder
if { [file exists $PDFDIR/$TEX.pdf] == 1 } {
file delete -force $PDFDIR/$TEX.pdf
}
if {![file exists "$LATEXDIR/refman.pdf"]} {
puts "Error: file $LATEXDIR/refman.pdf does not exist"
return
}
file rename $LATEXDIR/refman.pdf "$PDFDIR/$TEX.pdf"
}
}
cd $INDIR
puts "[clock format [clock seconds] -format {%Y-%m-%d %H:%M}] Generation completed"
if { $generatorMode == "HTML_ONLY" } {
puts "View generated HTML documentation by opening: "
set RESFILE $OUTDIR/overview/html/index.html
puts "$RESFILE"
}
if { $generatorMode == "PDF_ONLY" } {
puts "PDF files are generated in: "
puts "$OUTDIR/overview/pdf folder"
}
}
# A command for User Documentation compilation
proc occdoc {args} {
# Programm options
set GEN_MODE "HTML_ONLY"
set DOCFILES {}
set DOCLABEL "Default OCCT Document"
set VERB_MODE "NO"
set SEARCH_MODE "none"
set hhcPath ""
global available_docfiles
global tcl_platform
global args_names
global args_values
global env
# Load list of docfiles
if { [OverviewDoc_LoadFilesList] != 0 } {
puts "ERROR: File FILES.txt was not found"
return
}
# Parse CL arguments
if {[OverviewDoc_ParseArguments $args] == 1} {
return
}
foreach arg_n $args_names {
if {$arg_n == "h"} {
OverviewDoc_PrintHelpMessage
return
} elseif {$arg_n == "html"} {
set GEN_MODE "HTML_ONLY"
} elseif {$arg_n == "chm"} {
set GEN_MODE "CHM_ONLY"
if {"$tcl_platform(platform)" == "windows" && [lsearch $args_names hhc] == -1} {
if { [info exist env(ProgramFiles\(x86\))] } {
set hhcPath "$env(ProgramFiles\(x86\))\\HTML Help Workshop\\hhc.exe"
puts "Info: hhc found: $hhcPath"
} elseif { [info exist env(ProgramFiles)] } {
set hhcPath "$env(ProgramFiles)\\HTML Help Workshop\\hhc.exe"
puts "Info: hhc found: $hhcPath"
}
if { ! [file exists $hhcPath] } {
puts "Error: HTML Help Compiler is not found in standard location [file dirname $hhcPath]; use option -hhc"
return
}
}
} elseif {$arg_n == "hhc"} {
global tcl_platform
if { $tcl_platform(platform) != "windows" } {
continue
}
if {$args_values(hhc) != "NULL"} {
set hhcPath $args_values(hhc)
if { [file isdirectory $hhcPath] } {
set hhcPath [file join ${hhcPath} hhc.exe]
}
if { ! [file exists $hhcPath] } {
puts "Error: HTML Help Compiler is not found in $hhcPath"
return
}
} else {
puts "Error in argument hhc"
return
}
} elseif {$arg_n == "pdf"} {
set GEN_MODE "PDF_ONLY"
} elseif {$arg_n == "v"} {
set VERB_MODE "YES"
} elseif {$arg_n == "m"} {
if {$args_values(m) != "NULL"} {
set DOCFILES $args_values(m)
} else {
puts "Error in argument m"
return
}
# Check if all chosen docfiles are correct
foreach docfile $DOCFILES {
if { [lsearch $available_docfiles $docfile] == -1 } {
puts "File \"$docfile\" is not presented in the list of available docfiles"
puts "Please, specify the correct docfile name"
return
} else {
puts "File $docfile is presented in FILES.TXT"
}
}
} elseif {$arg_n == "l"} {
if { [llength $DOCFILES] <= 1 } {
if {$args_values(l) != "NULL"} {
set DOCLABEL $args_values(l)
} else {
puts "Error in argument l"
return
}
}
} elseif {$arg_n == "s"} {
if {$args_values(s) != "NULL"} {
set SEARCH_MODE $args_values(s)
} else {
puts "Error in argument s"
return
}
} else {
puts "\nWrong argument: $arg_n"
OverviewDoc_PrintHelpMessage
return
}
}
# Specify verbose mode
if { $GEN_MODE != "PDF_ONLY" && [llength $DOCFILES] > 1 } {
set DOCLABEL ""
}
# If we don't specify list for docfiles with -m argument,
# we assume that we have to generate all docfiles
if { [llength $DOCFILES] == 0 } {
set DOCFILES $available_docfiles
}
# Start main activities
OverviewDoc_Main $DOCFILES $GEN_MODE $DOCLABEL $VERB_MODE $SEARCH_MODE $hhcPath
}

View File

@@ -1,612 +0,0 @@
Overview {#mainpage}
========
@tableofcontents
@section OCCT_OVW_SECTION_1 Welcome
Welcome to Open CASCADE Technology (OCCT), a software development platform
providing services for 3D surface and solid modeling, CAD data exchange, and
visualization. Most of OCCT functionality is available in the form of C++
libraries. OCCT can be best applied in development of software dealing with 3D
modeling (CAD), manufacturing / measuring (CAM) or numerical simulation (CAE).
@htmlonly<center>@endhtmlonly
http://www.opencascade.org
@image html /resources/occt_logo.png
@image latex /resources/occt_logo.png
@htmlonly</center>@endhtmlonly
@section OCCT_OVW_SECTION_2 Copyrights
Open CASCADE Technology and all materials, including this documentation, is
Copyright (c) 1999-2013 by OPEN CASCADE S.A.S. All rights reserved.
@htmlonly<center>@endhtmlonly
http://www.opencascade.com
@image html /resources/occ_logo.png
@image latex /resources/occ_logo.png
@htmlonly</center>@endhtmlonly
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".
Alternatively, Open CASCADE Technology may be used under the terms of Open
CASCADE commercial license or contractual agreement.
Note that Open CASCADE Technology is provided on an "AS IS" basis, WITHOUT
WARRANTY OF ANY KIND. The entire risk related to any use of the OCCT code and
materials is on you. See the @ref occt_public_license "license" text for formal
disclaimer.
Trademark information
----------------------
You are hereby informed that all software is a property of its respective authors and is protected by
international and domestic laws on intellectual property and trademarks.
Should you need further information, please directly contact the authors.
**CAS.CADE** and **Open CASCADE** are registered trademarks of
OPEN CASCADE S.A.S.
**Linux** is a registered trademark of Linus Torvalds.
**Windows** is a registered trademark of Microsoft Corporation in the United States and other countries.
**Mac** and the Mac logo, **OpenCL** and the OpenCL logo, are trademarks of
Apple Inc., registered in the U.S. and other countries.
Acknowledgements
------------------
The following parties are acknowledged for producing tools which are used within
Open CASCADE Technology libraries or for release preparation.
You are hereby informed that all rights to the software listed below belong to its respective
authors and such software may not be freely available and/or be free of charge for any kind
of use or purpose. We strongly recommend that you carefully read the license of these products
and, in case you need any further information, directly contact their authors.
**Qt** is a cross-platform application framework that is widely used for developing application software
with graphical user interface (GUI). Qt is free and open source software distributed under
the terms of the GNU Lesser General Public License. In OCCT Qt is used for programming samples.
If you need further information on Qt, please, refer to Qt Homepage (http://qt.digia.com).
**Tcl** is a high-level programming language. Tk is a graphical user interface (GUI) toolkit,
with buttons, menus, listboxes, scrollbars, and so on. Taken together Tcl and Tk provide a solution
to develop cross-platform graphical user interfaces with a native look and feel. Tcl/Tk is under copyright by
Scriptics Corp., Sun Microsystems, and other companies. However, Tcl/Tk is an open source, and
the copyright allows you to use, modify, and redistribute Tcl/Tk for any purpose, without an
explicit license agreement and without paying any license fees or royalties.
To use Tcl/Tk, please refer to the Licensing Terms (http://www.tcl.tk/software/tcltk/license.html).
**Robert Boehne** has developed **GNU Autoconf**, **Automake** and **Libtool** scripts and makefiles
for the Open CASCADE project http://sourceforge.net/projects/autoopencas/,
which became an initial groundwork for the build scripts based on respective GNU tools
(autoconf, automake and libtool) in Open CASCADE Technology version 4.0.
These scripts are now maintained by the OPEN CASCADE company.
**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 http://www.geuz.org/gl2ps/COPYING.GL2PS Version 2, November 2003.
**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.
**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.
Open CASCADE Technology WOK module on Windows also makes use of LGPL-licensed C routines **regexp**
and **getopt**, taken from GNU C library.
**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, http://www.khronos.org/opengl/. OCCT code includes header
file *glext.h* obtained from Khronos web site.
**OpenCL** (Open Computing Language) is open, royalty-free standard for
cross-platform, parallel programming of modern processors, optionally used by
OCCT for ray tracing. OpenCL specification is developed by the
Khronos group, http://www.khronos.org/opencl/. The implementations of OpenCL
are available from Apple, AMD, NVIDIA, Intel, and other vendors.
**OpenCL Installable Client Driver (ICD) Loader** is a library provided by
Khronos group which allows dispatching OpenCL calls to underlying
implementation.
**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
for automatic creation of Technical Documentation from C++ header files.
If you need further information on Doxygen, please refer to http://www.stack.nl/~dimitri/doxygen/index.html.
**Graphviz** is open source graph visualization software developed by John Ellson, Emden Gansner, Yifan Hu and Arif Bilgin.
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) (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 (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) (http://freeimage.sourceforge.net/freeimage-license.txt).
**MikTEX** is up-to-date implementation of TeX/LaTeX and related programs for Windows. It is used
for generation of User and Developer Guides in PDF format. See http://miktex.org for information
on this tool.
Adobe Systems, Inc. provides **Adobe Reader**, which can be used to view files in Portable Document Format (PDF).
@section OCCT_OVW_SECTION_3 Documentation
OCCT documentation is provided in several forms:
- This overview provides general description of OCCT structure, functionality, modules, and features.
It is available in HTML format (generated by Doxygen) and includes User and Developer Guides.
The sources of this documentation are contained in **dox** subdirectory of OCCT sources
(plain text format is used, with mixed MarkDown / Doxygen syntax mark-up).
- User and Developer Guides describing in details OCCT modules and development tools are also available in
Adobe Portable Document Format (PDF). To read this format, you need Adobe Acrobat Reader,
which is a freeware and can be downloaded from the Adobe site.
- Full reference documentation covering all OCCT classes generated automatically by Doxygen
software is provided in HTML format, in a separate package.
Reference documentation is presented in **Modules --> Toolkits --> Packages --> Classes**
logic structure with cross-references to all OCCT classes and complete in-browser search by all classes.
See @ref dev_guides__documentation "OCCT Documentation Guide" for details on OCCT documentation system.
**Generation of HTML documentation**
To generate HTML documentation from sources contained in *dox* subdirectory,
you need to have Tcl and Doxygen 1.8.4 (or above) installed on your system.
In Tcl prompt, cd to OCCT root folder and run
tclsh> source dox/start.tcl
On Windows you can also run batch script **gendoc.bat**.
**Generation of reference documentation**
Reference documentation can be generated with help of WOK tool that
is available for download from www.opencascade.org and dev.opencascade.org sites.
Prerequisites:
* Doxygen version 1.8.4 or higher
* Graphviz version 2.28.0 or higher
Run WOK (cd \<WOK_INSTALL_DIR\>/site folder):
* Using WOK TCL shell:
> wok_tclsh.sh
* Using Emacs editor:
> wok_emacs.sh
In the WOK prompt, step into your workbench:
> wokcd <your workbench>
In your workbench, use **wgendoc** command with h argument to get information about arguments of **wgendoc** command:
> wgendoc -h
then run **wgendoc** command with required arguments, for instance:
> wgendoc -output=d:/occt/doc {-m=Draw Visualization}
@section OCCT_OVW_SECTION_5 Requirements
Open CASCADE Technology is designed to be highly portable and is known to
work on wide range of platforms (UNIX, Linux, Windows, Mac OS X).
Current version is officially certified on Windows (IA-32 and x86-64),
Linux (x86-64) and MAC OS X (x86-64) platforms.
The tables below describe the recommended hardware and software configurations
for which OCCT is certified to work.
@subsection OCCT_OVW_SECTION_5_1 Linux
| Operating System | Mandriva 2010, CentOS 5.5, CentOS 6.3, Fedora 17, Fedora 18, Ubuntu-1304, Debian 6.0\* |
| ----- | ----- |
| Minimum memory | 512 MB, 1 GB recommended |
| Free disk space (complete installation) | 600 MB approx. |
| Video card | See \ref overview_req_graphics |
| Graphic library | OpenGL 1.1+ (OpenGL 2.1+ is recommended)|
| C++ | GNU gcc 4.0. - 4.7.3. |
| TCL (for testing tools) | Tcltk 8.5 or 8.6 http://www.tcl.tk/software/tcltk/8.6.html |
| Qt (for demonstration tools) | Qt 4.6.2 http://qt.nokia.com/downloads |
| Freetype (for text rendering) | freetype-2.4.11 http://sourceforge.net/projects/freetype/files/ |
| FreeImage (optional, for support of common 2D graphic formats) | FreeImage 3.15.4 http://sourceforge.net/projects/freeimage/files |
| gl2ps (optional, for export contents of OCCT viewer to vector graphic files) | gl2ps-1.3.8 http://geuz.org/gl2ps/ |
| Intel TBB (optional, for multithreaded algorithms) | TBB 3.x or 4.x http://www.threadingbuildingblocks.org/ |
| OpenCL (optional, for ray tracing visualization) | OpenCL SDK (usually one provided by vendor of your graphic card) or OpenCL ICD Loader by Khronos group, http://www.khronos.org/registry/cl |
* Debian 60 64 bit is a platform used for regular testing of contributions
@subsection OCCT_OVW_SECTION_5_2 Windows
| Operating System | Windows 8 / 7 SP1 / Vista SP2 / XP SP3 |
| ----- | ----- |
| Minimum memory | 512 MB, 1 GB recommended |
| Free disk space (complete installation) | 600 MB approx. |
| Video card | See \ref overview_req_graphics |
| Graphic library | OpenGL 1.1+ (OpenGL 2.1+ is recommended)|
| C++ | Microsoft Visual Studio: 2005 SP1, 2008 SP1\*, 2010 SP1, 2012 Update 3, 2013 <br>Intel C++ Composer XE 2013 SP1 |
| TCL (for testing tools) | ActiveTcl 8.5 or 8.6 http://www.activestate.com/activetcl/downloads |
| Qt (for demonstration tools) | Qt 4.6.2 http://qt.nokia.com/downloads |
| Freetype (OCCT Text rendering) | freetype-2.4.11 http://sourceforge.net/projects/freetype/files/ |
| FreeImage (Support of common graphic formats) | FreeImage 3.15.4 http://sourceforge.net/projects/freeimage/files |
| gl2ps (Export contents of OCCT viewer to vector graphic file) | gl2ps-1.3.8 http://geuz.org/gl2ps/ |
| Intel TBB (optional, for multithreaded algorithms) | TBB 3.x or 4.x http://www.threadingbuildingblocks.org/ |
| OpenCL (optional, for ray tracing visualization) | OpenCL SDK (usually one provided by vendor of your graphic card) or OpenCL ICD Loader by Khronos group, http://www.khronos.org/registry/cl |
* VC++ 9 32-bit is used for certification of contributions and for building
binary package of official release of OCCT on Windows.
@subsection OCCT_OVW_SECTION_5_3 MAC OS X
| Operating System | Mac OS X 10.9 Mavericks / 10.8 Mountain Lion / 10.7 Lion / 10.6.8 Snow Leopard |
| ----- | ----- |
| Minimum memory | 512 MB, 1 GB recommended |
| Free disk space (complete installation) | 600 MB approx. |
| Video card | See \ref overview_req_graphics |
| Graphic library | OpenGL 1.1+ (OpenGL 2.1+ is recommended)|
| C++ | XCode 3.2 or newer (4.x is recommended) |
| Qt (for demonstration tools) | Qt 4.6.2 http://qt.nokia.com/downloads |
| Freetype (OCCT Text rendering) | freetype-2.4.11 http://sourceforge.net/projects/freetype/files/ |
| FreeImage (Support of common graphic formats) | FreeImage 3.15.4 http://sourceforge.net/projects/freeimage/files |
| gl2ps (Export contents of OCCT viewer to vector graphic file) | gl2ps-1.3.8 http://geuz.org/gl2ps/ |
| Intel TBB (optional, for multithreaded algorithms) | TBB 3.x or 4.x http://www.threadingbuildingblocks.org/ |
| OpenCL (optional, for ray tracing visualization) | Native OpenCL 1.2.8 |
@subsection overview_req_graphics Graphic cards
For 3d viewer, graphic card or software implementation supporting OpenGL 1.1
or above is required. OpenGL 2.1+ is highly recommended.
For ray tracing, hardware implementation of OpenCL 1.1+ is required.
The following table lists graphic cards tested to work with OCCT.
| Graphic card | Driver/GL/GLSL/CL version | OS | OpenGL (fixed pipeline) | OpenGL (shaders) | OpenCL (ray tracing) |
| ---- | ---- | ---- | :----: | :----: | :----: |
| NVIDIA GeForce GT 610, 630M, 640 | Driver 311.44, GL 4.3.0, GLSL 4.30 | Windows 7 64 bit | OK | OK | OK |
| Intel(R) HD Graphics 3000 | GL 3.1.0, GLSL 1.40 | Windows 7 64 bit | OK | OK | none |
| RadeOn 9600 | GL 2.1.8454, GLSL 1.20 | | OK | bad | none |
| AMD/ATI RadeOn HD 7870 | Driver 6.14.10.12002, GL 4.2.12002, GLSL 4.20 | Windows 7 64-bit | OK | OK | OK |
| Mesa 7.8.2 Windows GDI Driver\* | GL 2.1, GLSL version 1.20 | Mac OS X 10.6 / OS X 10.9 | OK | artifacts | none |
| NVIDIA GeForce 320 | | Mac OS X 10.6 / OS X 10.9 | OK | OK | OK on OSX 10.6, bad on OSX 10.9 |
| NVIDIA GeForce 6600 GT | GL 2.1.2, GLSL 1.20 | Windows XP 32-bit | OK | OK | none |
| Apple software OpenGL | | Mac OS X 10.6 / OS X 10.9 | OK | OK | OK |
* Mesa implementation of OpenGL is used for certification testing of OCCT
@section OCCT_OVW_SECTION_4 Installation
In most cases you need to rebuild OCCT on your platform (OS, compiler) before
using it in your project, to ensure binary compatibility.
See @ref dev_guides__building for instructions on
building OCCT from sources on supported platforms.
@subsection OCCT_OVW_SECTION_4_1 Using Windows installer
On Windows Open CASCADE Technology can be installed with binaries precompiled by
Visual C++ 2008 with installation procedure.
**Recommendation:**
If you have a previous version of OCCT installed on your station,
and you do not plan to use it along with the new version, you might want to uninstall
the previous version (using Control Panel, Add/Remove Programs) before
the installation of this new version, to avoid possible problems
(conflict of system variables, paths, etc).
**Attention:** For full installation OCCT requires approximately 650 Mb of disk space,
but during the installation process you will need 1,2 Gb of free disk space.
OCCT installation with reference documentation requires 1,4 Gb on disk.
* Download the OCCT installer from OPEN CASCADE web site using the link. you have been provided
* Launch the installer and follow the instructions.
The includes and binaries of third-party libraries necessary for building and launching
OCCT are included into binary distribution (built with Visual C++ 2008).
When the installation is complete, you will find the directories for 3rd party products
(some might be absent in case of custom installation) and the main **OCCT** directory:
@image html /overview/images/overview_3rdparty.png
@image latex /overview/images/overview_3rdparty.png
The contents of the OCCT-6.7.0 directory (called further "OCCT root", or $CASROOT) are as follows:
@image html /overview/images/overview_installation.png "The directory tree"
@image latex /overview/images/overview_installation.png "The directory tree"
* **adm** This folder contains administration files, which allow rebuilding OCCT;
* **adm/cmake** This folder contains files of CMake building procedure;
* **adm/msvc** This folder contains Visual Studio projects for Visual C++ 2005, 2008 and 2010, which allow rebuilding OCCT under Windows platform in 32 and 64-bit mode;
* **data** This folder contains CAD files in different formats, which can be used to test the OCCT functionality;
* **doc** This folder contains OCCT documentation in HTML and PDF format;
* **dox** This folder contains sources of OCCT documentation in plain text (MarkDown) format;
* **drv** This folder contains source files generated by WOK (private header files and instantiations of generic classes);
* **inc** This folder contains all OCCT header files;
* **samples** This folder contains sample applications.
* **src** This folder contains OCCT source files. They are organized in folders, one per development unit;
* **tests** This folder contains scripts for OCCT testing.
* **win32/vc9** This folder contains executable and library files built in optimize mode for Windows platform by Visual C++ 2008;
@section OCCT_OVW_SECTION_4_2 Environment Variables
To run any Open CASCADE Technology application you need to set the environment variables.
### On Windows
You can define the environment variables with env.bat script located in the
$CASROOT folder. This script accepts two arguments to be used:
the version of Visual Studio (vc8 - vc12) and the architecture (win32 or win64).
The additional environment settings necessary for compiling OCCT libraries and samples
by Microsoft Visual Studio can be set using script custom.bat located in the same folder.
You might need to edit this script to correct the paths to third-party libraries
if they are installed on your system in a non-default location.
Script msvc.bat can be used with the same arguments for immediate launch of Visual Studio for (re)compiling OCCT.
### On Unix
If OCCT was built by Code::Blocks, you can define the environment variables with env_cbp.sh or custom_cbp.sh script.
If OCCT was built by Automake, you can define the environment variables with env_amk.sh or custom_amk.sh script.
The scripts are located in the OCCT root folder.
### Description of system variables:
* **CASROOT** is used to define the root directory of Open CASCADE Technology;
* **PATH** is required to define the path to OCCT binaries and 3rdparty folder;
* **LD_LIBRARY_PATH** is required to define the path to OCCT libraries (on UNIX platforms only);
* **MMGT_OPT** (optional) if set to 1, the memory manager performs optimizations as described below; if set to 2,
Intel (R) TBB optimized memory manager is used; if 0 (default), every memory block is allocated
in C memory heap directly (via malloc() and free() functions).
In the latter case, all other options except MMGT_CLEAR and MMGT_REENTRANT are ignored;
* **MMGT_CLEAR** (optional) if set to 1 (default), every allocated memory block is cleared by zeros;
if set to 0, memory block is returned as it is;
* **MMGT_CELLSIZE** (optional) defines the maximal size of blocks allocated in large pools of memory. Default is 200;
* **MMGT_NBPAGES** (optional) defines the size of memory chunks allocated for small blocks in pages
(operating-system dependent). Default is 10000;
* **MMGT_THRESHOLD** (optional) defines the maximal size of blocks that are recycled internally
instead of being returned to the heap. Default is 40000;
* **MMGT_MMAP** (optional) when set to 1 (default), large memory blocks are allocated using
memory mapping functions of the operating system; if set to 0,
they will be allocated in the C heap by malloc();
* **CSF_LANGUAGE** is required to define the default language of messages;
* **CSF_DEBUG** (optional, Windows only): if defined then a diagnostic message is displayed in case of an exception;
* **CSF_DEBUG_BOP** (optional): if defined then it should specify directory where diagnostic data on problems occured in Boolean operations will be saved;
* **CSF_MDTVTexturesDirectory** defines the directory for available textures when using texture mapping;
* **CSF_UnitsDefinition** and **CSF_UnitsLexicon** should define paths to resource files Lexi_Expr.dat and Units.dat, respectively, required for support of measurement units;
* **CSF_SHMessage** is required in order to define the path to the messages file for *ShapeHealing*;
* **CSF_XSMessage** is required in order to define the path to the messages file for **STEP** and **IGES** translators;
* **CSF_StandardDefaults** and **CSF_PluginDefaults** are required in order to maintain CASCADE Persistence mechanism to make possible any open/save operations with OCAF documents;
* **CSF_StandardLiteDefaults** is required in order to maintain *OCCT Persistence mechanism* to make possible any open/save operations with Lite OCAF documents;
* **CSF_XCAFDefaults** any open/save operations for **XDE** documents;
* **CSF_IGESDefaults** and **CSF_STEPDefaults** are required for **IGES** and **STEP** translators correspondingly in order to define the path to the resource files;
* **CSF_XmlOcafResource** is required in order to set the path to **XSD** resources, which defines XML grammar.
* **CSF_MIGRATION_TYPES** is required in order to read documents that contain old data types, such as *TDataStd_Shape*;
* **TCLLIBPATH**, **TCL_LIBRARY**, **TK_LIBRARY** and **TIX_LIBRARY** are required to allow work with **DRAW** and **WOK**.
@section OCCT_OVW_SECTION_7 Getting Started
@subsection OCCT_OVW_SECTION_7_1 Draw Test Harness
Draw is a command interpreter based on TCL and a graphical system used for testing and demonstrating OCCT modeling libraries.
Draw can be used interactively to create, display and modify objects such as curves, surfaces and topological shapes.
@image html /overview/images/overview_draw.png
@image latex /overview/images/overview_draw.png
Scripts can be written to customize Draw and perform tests.
New types of objects and new commands can be added using C++ programming language.
Draw contains:
* A command interpreter based on TCL command language.
* A 2D an 3D graphic viewer with support of operations such as zoom, pan, rotation and full-screen views.
* An optional set of geometric commands to create and modify curves and surfaces and to use OCCT geometry algorithms.
* A set of topological commands to create and modify BRep shapes and to use OCCT topology algorithms.
* A set of graphic commands for view and display operations including Mesh Visualization Service.
* A set of Application framework commands for handling of files and attributes.
* A set of Data Exchange commands for translation of files from various formats (IGES,STEP) into OCCT shapes.
* A set of Shape Healing commands: check of overlapping edges, approximation of a shape to BSpline, etc.
You can add new custom test harness commands to Draw in order to test
or demonstrate a new functionality, which you are developing.
Currently DRAW Test Harness is a single executable called DRAWEXE.
Commands grouped in toolkits can be loaded at run-time thereby implementing dynamically loaded plug-ins.
Thus you can work only with the commands that suit your needs adding
the commands dynamically without leaving the Test Harness session.
Declaration of available plug-ins is done through special resource file(s).
The pload command loads the plug-in in accordance with
the specified resource file and activates the commands implemented in the plug-in.
The whole process of using the plug-in mechanism as well as the instructions for extending Test Harness is described in the @ref user_guides__test_harness.
Draw Test Harness provides an environment for OCCT automated testing system.
Please, consult its @ref dev_guides__tests "Automated Testing System" for details.
Remarks:
* The DRAWEXE executable is delivered with the installation procedure on Windows platform only.
* To start it, launch DRAWEXE executable from Open CASCADE Technology/Draw Test Harness item of the Start\\Programs menu.
@subsection OCCT_OVW_SECTION_7_2 Experimenting with Draw Test Harness
Running Draw
------------
**On Linux:**
1. If OCCT was built by Code::Blocks use <i>$CASROOT/draw_cbp.sh</i> file to launch *DRAWEXE* executable;
2. If OCCT was built by Automake use <i>$CASROOT/draw_amk.sh</i> file to launch *DRAWEXE* executable;
Draw[1]> prompt appears in the command window
Type *pload ALL*
**On Windows:**
Launch Draw executable from Open CASCADE Technology\\Test Harness\\Draw Test Harness
item of the Start\\Programs menu or Use <i>$CASROOT\\draw.bat</i> file to launch *DRAWEXE* executable.
Draw[1]> prompt appears in the command window
Type pload ALL
**Creating your first geometric objects**
1. In the command window, type *axo* to create an axonometric view
2. Type *box b -10 -10 -10 20 20 20* to create a cube *b* of size 20, parallel to the X Y Z axis and centered on the origin. The cube will be displayed in the axonometric view in wireframe mode.
3. Type *fit* to fill the viewer with the cube
4. Type *pcylinder c 2 30* to create a cylinder *c* of radius 2 and height 30. The cylinder will be displayed in addition to the cube
**Manipulating the view**
1. Type *clear* to erase the view
2. Type *donly c* to display the cylinder only
3. Type *donly b* to display the cube only
4. Type *hlr hlr b* to display the cube in the hidden line removal mode
**Running demonstration files**
1. Type *cd ../..* to return to the root directory
2. Type *cd samples/tcl* to reach the *DrawResources* directory
3. Type *source <demo_file>* to run the demonstration file provided with Open CASCADE. The following demonstration files are available:
* bottle.tcl
* challenge.tcl
* DataExchangeDemo.tcl
* ModelingDemo.tcl
* VisualizationDemo.tcl
**Getting Help**
1. Type *help* to see all available commands
2. Type *help <command_name>* to find out the arguments for a given command
@subsection OCCT_OVW_SECTION_7_3 Programming Samples
@subsubsection OCCT_OVW_SECTION_7_3_1 MFC
Visual C++ programming samples containing 10 Visual C++ projects
illustrating how to use a particular module or functionality.
The list of MFC samples:
* Geometry
* Modeling
* Viewer2d
* Viewer3d
* ImportExport
* Ocaf
* Triangulation
* HLR
* Animation
* Convert
@image html /overview/images/overview_mvc.png
@image latex /overview/images/overview_mvc.png
**Remarks:**
* MFC samples are available only on Windows platform;
* To start a sample use Open CASCADE Technology\\Samples\\Mfc\\ item of the Start\\Programs menu;
* Read carefully readme.txt to learn about launching and compilation options.
See \subpage samples_mfc_standard "Readme" for details.
@subsubsection OCCT_OVW_SECTION_7_3_2 Qt
OCCT contains three samples based on Qt application framework
Import Export
-------------
Import Export programming sample contains 3D Viewer and Import / Export functionality.
@image html /overview/images/overview_qt.png
@image latex /overview/images/overview_qt.png
Tutorial
---------
The Qt programming tutorial teaches how to use Open CASCADE Technology services to model a 3D object.
The purpose of the tutorial is not to explain all OCCT classes but
to help start thinking in terms of the Open CASCADE Technology.
This tutorial assumes that the user has experience in using and setting up C++.
From the viewpoint of programming, Open CASCADE Technology is designed
to enhance user's C++ tools with high performance modeling classes, methods and functions.
The combination of these resources allows creating substantial applications.
**See also:** @ref tutorial "OCCT Tutorial"
Voxel
------
This is a demonstration application showing OCCT voxel models. It also includes a set of non-regression tests and other commands for testing this functionality (accessible only through TEST pre-processor definition).
**See also:** <a href="occt_voxels_wp.html">Voxels User's guide</a>
**Remarks:**
* Qt samples are available on all supported platforms;
* To start a sample on Windows use Open CASCADE Technology\\Samples\\Qt\\ item of the Start\\Programs menu.
@subsubsection OCCT_OVW_SECTION_7_3_3 C#
C# sample demonstrates integration of OCCT 3D Viewer and Import / Export functionality into .NET applications (using Windows Forms and WPF front ends).
@image html /overview/images/overview_c__ie.png
@image latex /overview/images/overview_c__ie.png
Import:
* BRep
* Iges
* Step
Export:
* Brep
* Iges
* Step
* Stl
* Vrml
See \subpage samples_csharp "Readme" for details.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

636
dox/overview/overview.md Normal file
View File

@@ -0,0 +1,636 @@
Overview {#mainpage}
========
@tableofcontents
@section OCCT_OVW_SECTION_1 Welcome
Welcome to Open CASCADE Technology (OCCT), a software development platform
providing services for 3D surface and solid modeling, CAD data exchange, and
visualization. Most of OCCT functionality is available in the form of C++
libraries. OCCT can be best applied in development of software dealing with 3D
modeling (CAD), manufacturing / measuring (CAM) or numerical simulation (CAE).
@htmlonly<center>@endhtmlonly
http://www.opencascade.org
@image html /resources/occt_logo.png
@image latex /resources/occt_logo.png
@htmlonly</center>@endhtmlonly
@section OCCT_OVW_SECTION_2 Copyrights
Open CASCADE Technology and all materials, including this documentation, is
Copyright (c) 1999-2015 by OPEN CASCADE S.A.S. All rights reserved.
@htmlonly<center>@endhtmlonly
http://www.opencascade.com
@image html /resources/occ_logo.png
@image latex /resources/occ_logo.png
@htmlonly</center>@endhtmlonly
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".
Alternatively, Open CASCADE Technology may be used under the terms of Open
CASCADE commercial license or contractual agreement.
Note that Open CASCADE Technology is provided on an "AS IS" basis, WITHOUT
WARRANTY OF ANY KIND. The entire risk related to any use of the OCCT code and
materials is on you. See the @ref occt_public_license "license" text for formal
disclaimer.
Trademark information
----------------------
You are hereby informed that all software is a property of its respective authors and is protected by
international and domestic laws on intellectual property and trademarks.
Should you need further information, please directly contact the authors.
**CAS.CADE** and **Open CASCADE** are registered trademarks of
OPEN CASCADE S.A.S.
**Linux** is a registered trademark of Linus Torvalds.
**Windows** is a registered trademark of Microsoft Corporation in the United States and other countries.
**Mac** and the Mac logo are trademarks of Apple Inc., registered in the U.S. and other countries.
Acknowledgements
------------------
The following parties are acknowledged for producing tools which are used within
Open CASCADE Technology libraries or for release preparation.
You are hereby informed that all rights to the software listed below belong to its respective
authors and such software may not be freely available and/or be free of charge for any kind
of use or purpose. We strongly recommend that you carefully read the license of these products
and, in case you need any further information, directly contact their authors.
**Qt** is a cross-platform application framework that is widely used for developing application software
with graphical user interface (GUI). Qt is free and open source software distributed under
the terms of the GNU Lesser General Public License. In OCCT Qt is used for programming samples.
If you need further information on Qt, please, refer to Qt Homepage (http://qt.digia.com).
**Tcl** is a high-level programming language. Tk is a graphical user interface (GUI) toolkit,
with buttons, menus, listboxes, scrollbars, and so on. Taken together Tcl and Tk provide a solution
to develop cross-platform graphical user interfaces with a native look and feel. Tcl/Tk is under copyright by
Scriptics Corp., Sun Microsystems, and other companies. However, Tcl/Tk is an open source, and
the copyright allows you to use, modify, and redistribute Tcl/Tk for any purpose, without an
explicit license agreement and without paying any license fees or royalties.
To use Tcl/Tk, please refer to the Licensing Terms (http://www.tcl.tk/software/tcltk/license.html).
**Robert Boehne** has developed **GNU Autoconf**, **Automake** and **Libtool** scripts and makefiles
for the Open CASCADE project http://sourceforge.net/projects/autoopencas/,
which became an initial groundwork for the build scripts based on respective GNU tools
(autoconf, automake and libtool) in Open CASCADE Technology version 4.0.
These scripts are now maintained by the OPEN CASCADE company.
**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 http://www.geuz.org/gl2ps/COPYING.GL2PS Version 2, November 2003.
**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.
**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.
Open CASCADE Technology WOK module on Windows also makes use of LGPL-licensed C routines **regexp**
and **getopt**, taken from GNU C library.
**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, http://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 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
for automatic creation of Technical Documentation from C++ header files.
If you need further information on Doxygen, please refer to http://www.stack.nl/~dimitri/doxygen/index.html.
**Graphviz** is open source graph visualization software developed by John Ellson, Emden Gansner, Yifan Hu and Arif Bilgin.
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) (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 (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) (http://freeimage.sourceforge.net/freeimage-license.txt).
**MikTEX** is up-to-date implementation of TeX/LaTeX and related programs for Windows. It is used
for generation of User and Developer Guides in PDF format. See http://miktex.org for information
on this tool.
Adobe Systems, Inc. provides **Adobe Reader**, which can be used to view files in Portable Document Format (PDF).
@section OCCT_OVW_SECTION_3 Documentation
OCCT documentation is provided in several forms:
- This overview provides general description of OCCT structure, functionality, modules, and features.
It is available in HTML format (generated by Doxygen) and includes User and Developer Guides.
The sources of this documentation are contained in **dox** subdirectory of OCCT sources
(plain text format is used, with mixed MarkDown / Doxygen syntax mark-up).
- User and Developer Guides describing in details OCCT modules and development tools are also available in
Adobe Portable Document Format (PDF). To read this format, you need Adobe Acrobat Reader,
which is a freeware and can be downloaded from the Adobe site.
- Full reference documentation covering all OCCT classes generated automatically by Doxygen
software is provided in HTML format, in a separate package.
Reference documentation is presented in **Modules --> Toolkits --> Packages --> Classes**
logic structure with cross-references to all OCCT classes and complete in-browser search by all classes.
See @ref occt_dev_guides__documentation "OCCT Documentation Guide" for details on OCCT documentation system.
**Generation of HTML documentation**
To generate HTML documentation from sources contained in *dox* subdirectory,
you need to have Tcl and Doxygen 1.8.5 (or above) installed on your system.
In Tcl prompt, cd to OCCT root folder and run
tclsh> source dox/start.tcl
On Windows you can also run batch script **gendoc.bat**.
**Generation of reference documentation**
Reference documentation can be generated with help of WOK tool that
is available for download from www.opencascade.org and dev.opencascade.org sites.
Prerequisites:
* Doxygen version 1.8.5 or higher
* Graphviz version 2.28.0 or higher
Run WOK (cd \<WOK_INSTALL_DIR\>/site folder):
* Using WOK TCL shell:
> wok_tclsh.sh
* Using Emacs editor:
> wok_emacs.sh
In the WOK prompt, step into your workbench:
> wokcd <your workbench>
In your workbench, use **wgendoc** command with h argument to get information about arguments of **wgendoc** command:
> wgendoc -h
then run **wgendoc** command with required arguments, for instance:
> wgendoc -output=d:/occt/doc {-m=Draw Visualization}
@section OCCT_OVW_SECTION_5 Requirements
Open CASCADE Technology is designed to be highly portable and is known to
work on wide range of platforms (UNIX, Linux, Windows, Mac OS X, Android).
Current version is officially certified on Windows (IA-32 and x86-64),
Linux (x86-64), MAC OS X (x86-64) and Android (4.0.4 armv7) platforms.
The tables below describe the recommended hardware and software configurations
for which OCCT is certified to work.
@subsection OCCT_OVW_SECTION_5_1 Linux
| Operating System | Mandriva 2010, CentOS 5.5, CentOS 6.3, Fedora 17, Fedora 18, Ubuntu 13.04, Debian 6.0\* |
| ----- | ----- |
| Minimum memory | 512 MB, 1 GB recommended |
| Free disk space (complete installation) | 600 MB approx. |
| Video card | See \ref overview_req_graphics |
| Graphic library | OpenGL 3.3+, OpenGL ES 2.0+ |
| C++ | GNU gcc 4.0. - 4.7.3. |
| TCL (for testing tools) | Tcl/Tk 8.5 or 8.6 http://www.tcl.tk/software/tcltk/download.html |
| Qt (for demonstration tools) | Qt 4.8.6 http://qt-project.org/downloads |
| Freetype (for text rendering) | freetype-2.5.3 http://sourceforge.net/projects/freetype/files/ |
| FreeImage (optional, for support of common 2D graphic formats) | FreeImage 3.16.0 http://sourceforge.net/projects/freeimage/files |
| gl2ps (optional, for export contents of OCCT viewer to vector graphic files) | gl2ps-1.3.8 http://geuz.org/gl2ps/ |
| Intel TBB (optional, for multithreaded algorithms) | TBB 3.x or 4.x http://www.threadingbuildingblocks.org/ |
| VTK (for VTK Integration Services | VTK 6.1.0 http://www.vtk.org/VTK/resources/software.html |
* Debian 6.0 64 bit is a platform used for regular testing of contributions
@subsection OCCT_OVW_SECTION_5_2 Windows
| Operating System | Windows 8.1 / 7 SP1 / Vista SP2 / XP SP3 |
| ----- | ----- |
| Minimum memory | 512 MB, 1 GB recommended |
| Free disk space (complete installation) | 600 MB approx. |
| Video card | See \ref overview_req_graphics |
| Graphic library | OpenGL 3.3+, OpenGL ES 2.0+ |
| C++ | Microsoft Visual Studio: 2005 SP1, 2008 SP1, 2010 SP1 \*, 2012 Update 3, 2013 <br>Intel C++ Composer XE 2013 SP1 |
| TCL (for testing tools) | Tcl/Tk 8.5 or 8.6 http://www.tcl.tk/software/tcltk/download.html |
| Qt (for demonstration tools) | Qt 4.8.6 http://qt-project.org/downloads |
| Freetype (OCCT Text rendering) | freetype-2.5.3 http://sourceforge.net/projects/freetype/files/ |
| FreeImage (Support of common graphic formats) | FreeImage 3.16.0 http://sourceforge.net/projects/freeimage/files |
| gl2ps (Export contents of OCCT viewer to vector graphic file) | gl2ps-1.3.8 http://geuz.org/gl2ps/ |
| Intel TBB (optional, for multithreaded algorithms) | TBB 3.x or 4.x http://www.threadingbuildingblocks.org/ |
| VTK (for VTK Integration Services | VTK 6.1.0 http://www.vtk.org/VTK/resources/software.html |
* VC++ 10 64-bit is used for certification of contributions and for building
binary package of official release of OCCT on Windows.
@subsection OCCT_OVW_SECTION_5_3 MAC OS X
| Operating System | OS X 10.10 Yosemite / 10.9 Mavericks / 10.8 Mountain Lion / 10.7 Lion / 10.6.8 Snow Leopard |
| ----- | ----- |
| Minimum memory | 512 MB, 1 GB recommended |
| Free disk space (complete installation) | 600 MB approx. |
| C++ | XCode 3.2 or newer (4.x is recommended) |
| TCL (for testing tools) | Tcl/Tk 8.5 or 8.6 http://www.tcl.tk/software/tcltk/download.html |
| Qt (for demonstration tools) | Qt 4.8.6 http://qt-project.org/downloads |
| Freetype (OCCT Text rendering) | freetype-2.5.3 http://sourceforge.net/projects/freetype/files/ |
| FreeImage (Support of common graphic formats) | FreeImage 3.16.0 http://sourceforge.net/projects/freeimage/files |
| gl2ps (Export contents of OCCT viewer to vector graphic file) | gl2ps-1.3.8 http://geuz.org/gl2ps/ |
| Intel TBB (optional, for multithreaded algorithms) | TBB 3.x or 4.x http://www.threadingbuildingblocks.org/ |
@subsection OCCT_OVW_SECTION_5_4 Android
| Operating System | Android 4.0.4+ |
| ----- | ----- |
| Minimum memory | 512 MB, 1 GB recommended |
| C++ | NDK r10, GNU gcc 4.8 or newer |
| Qt (for demonstration tools) | Qt 5.3.2 http://qt-project.org/downloads |
| Freetype (for text rendering) | freetype-2.5.3 http://sourceforge.net/projects/freetype/files/ |
@subsection overview_req_graphics Graphic cards
On desktop, 3D viewer requires graphic card or software implementation supporting OpenGL 1.1 or above. OpenGL 2.1+ is highly recommended.
Ray tracing requires OpenGL 4.0+ or OpenGL 3.1+ with GL_ARB_texture_buffer_object_rgb32 extension. Textures within ray tracing will be available only when GL_ARB_bindless_texture extension is provided by driver.
On mobile platforms, OpenGL ES 2.0+ is required for 3D viewer. The ray tracing is not yet available on mobile platforms.
Some old hardware might be unable to execute complex GLSL programs (e.g. with high number of light sources, clipping planes).
The following table lists graphic cards tested to work with OCCT.
| Graphic card | Driver | OS | OpenGL (fixed pipeline) | OpenGL (shaders) | OpenGL (ray tracing) |
| ---- | ---- | ---- | :----: | :----: | :----: |
| NVIDIA GeForce GTX 650 | Driver 340.52, OpenGL 4.4 | Windows 7 64 bit | OK | OK | OK |
| AMD/ATI RadeOn HD 7870 | Driver 14.100, OpenGL 4.4 | Windows 7 64-bit | OK | OK | OK |
| Intel(R) HD Graphics 2500 | Driver 10.18.10.3621, OpenGL 4.0 | Windows 7 64 bit | OK | OK | limited (no textures) |
| RadeOn 9600 | OpenGL 2.1.8454 | Windows XP 32-bit | OK | bad | unsupported by hardware |
| NVIDIA GeForce 6600 GT | OpenGL 2.1 | Windows XP 32-bit | OK | OK | unsupported by hardware |
| NVIDIA GeForce 320 | N/A | Mac OS X 10.6 / OS X 10.10 | OK | OK | not yet supported by OCCT |
| Apple software OpenGL | N/A | Mac OS X 10.6 / OS X 10.10 | OK | OK | N/A |
| Mesa 10.2.4 \* | "Gallium 0.4 on llvmpipe (LLVM 3.4, 256 bits)" OpenGL 3.0 | Windows 7 64 bit | OK | OK | unsupported by software |
* Mesa implementation of OpenGL is used for certification testing of OCCT
@section OCCT_OVW_SECTION_4 Installation
In most cases you need to rebuild OCCT on your platform (OS, compiler) before
using it in your project, to ensure binary compatibility.
See @ref occt_dev_guides__building for instructions on
building OCCT from sources on supported platforms.
@subsection OCCT_OVW_SECTION_4_1 Using Windows installer
On Windows Open CASCADE Technology can be installed with binaries precompiled by
Visual C++ 2010 with installation procedure.
**Recommendation:**
If you have a previous version of OCCT installed on your station,
and you do not plan to use it along with the new version, you might want to uninstall
the previous version (using Control Panel, Add/Remove Programs) before
the installation of this new version, to avoid possible problems
(conflict of system variables, paths, etc).
**Attention:** For full installation OCCT requires approximately 650 Mb of disk space,
but during the installation process you will need 1,2 Gb of free disk space.
OCCT installation with reference documentation requires 1,4 Gb on disk.
* Download the OCCT installer from OPEN CASCADE web site using the link. you have been provided
* Launch the installer and follow the instructions.
The includes and binaries of third-party libraries necessary for building and launching
OCCT are included into binary distribution (built with Visual C++ 2010).
When the installation is complete, you will find the directories for 3rd party products
(some might be absent in case of custom installation) and the main **OCCT** directory:
@image html /overview/images/overview_3rdparty.png
@image latex /overview/images/overview_3rdparty.png
The contents of the OCCT-6.9.0 directory (called further "OCCT root", or $CASROOT) are as follows:
@image html /overview/images/overview_installation.png "The directory tree"
@image latex /overview/images/overview_installation.png "The directory tree"
* **adm** This folder contains administration files, which allow rebuilding OCCT;
* **adm/cmake** This folder contains files of CMake building procedure;
* **adm/msvc** This folder contains Visual Studio projects for Visual C++ 2005, 2008, 2010, 2012 and 2013 which allow rebuilding OCCT under Windows platform in 32 and 64-bit mode;
* **data** This folder contains CAD files in different formats, which can be used to test the OCCT functionality;
* **doc** This folder contains OCCT documentation in HTML and PDF format;
* **dox** This folder contains sources of OCCT documentation in plain text (MarkDown) format;
* **drv** This folder contains source files generated by WOK (private header files and instantiations of generic classes);
* **inc** This folder contains all OCCT header files;
* **samples** This folder contains sample applications.
* **src** This folder contains OCCT source files. They are organized in folders, one per development unit;
* **tests** This folder contains scripts for OCCT testing.
* **win64/vc10** This folder contains executable and library files built in optimize mode for Windows platform by Visual C++ 2010;
@section OCCT_OVW_SECTION_4_2 Environment Variables
To run any Open CASCADE Technology application you need to set the environment variables.
### On Windows
You can define the environment variables with env.bat script located in the
$CASROOT folder. This script accepts two arguments to be used:
the version of Visual Studio (vc8 - vc12) and the architecture (win32 or win64).
The additional environment settings necessary for compiling OCCT libraries and samples
by Microsoft Visual Studio can be set using script custom.bat located in the same folder.
You might need to edit this script to correct the paths to third-party libraries
if they are installed on your system in a non-default location.
Script msvc.bat can be used with the same arguments for immediate launch of Visual Studio for (re)compiling OCCT.
### On Unix
If OCCT was built by Code::Blocks, you can define the environment variables with env_cbp.sh or custom_cbp.sh script.
If OCCT was built by Automake, you can define the environment variables with env_amk.sh or custom_amk.sh script.
The scripts are located in the OCCT root folder.
### Description of system variables:
* **CASROOT** is used to define the root directory of Open CASCADE Technology;
* **PATH** is required to define the path to OCCT binaries and 3rdparty folder;
* **LD_LIBRARY_PATH** is required to define the path to OCCT libraries (on UNIX platforms only);
* **MMGT_OPT** (optional) if set to 1, the memory manager performs optimizations as described below; if set to 2,
Intel (R) TBB optimized memory manager is used; if 0 (default), every memory block is allocated
in C memory heap directly (via malloc() and free() functions).
In the latter case, all other options except MMGT_CLEAR are ignored;
* **MMGT_CLEAR** (optional) if set to 1 (default), every allocated memory block is cleared by zeros;
if set to 0, memory block is returned as it is;
* **MMGT_CELLSIZE** (optional) defines the maximal size of blocks allocated in large pools of memory. Default is 200;
* **MMGT_NBPAGES** (optional) defines the size of memory chunks allocated for small blocks in pages
(operating-system dependent). Default is 10000;
* **MMGT_THRESHOLD** (optional) defines the maximal size of blocks that are recycled internally
instead of being returned to the heap. Default is 40000;
* **MMGT_MMAP** (optional) when set to 1 (default), large memory blocks are allocated using
memory mapping functions of the operating system; if set to 0,
they will be allocated in the C heap by malloc();
* **CSF_LANGUAGE** is required to define the default language of messages;
* **CSF_DEBUG** (optional, Windows only): if defined then a diagnostic message is displayed in case of an exception;
* **CSF_DEBUG_BOP** (optional): if defined then it should specify directory where diagnostic data on problems occured in Boolean operations will be saved;
* **CSF_MDTVTexturesDirectory** defines the directory for available textures when using texture mapping;
* **CSF_ShadersDirectory** defines the directory for GLSL programs (required for advanced rendering techniques and custom shaders);
* **CSF_UnitsDefinition** and **CSF_UnitsLexicon** should define paths to resource files Lexi_Expr.dat and Units.dat, respectively, required for support of measurement units;
* **CSF_SHMessage** is required in order to define the path to the messages file for *ShapeHealing*;
* **CSF_XSMessage** is required in order to define the path to the messages file for **STEP** and **IGES** translators;
* **CSF_StandardDefaults** and **CSF_PluginDefaults** are required in order to maintain CASCADE Persistence mechanism to make possible any open/save operations with OCAF documents;
* **CSF_StandardLiteDefaults** is required in order to maintain *OCCT Persistence mechanism* to make possible any open/save operations with Lite OCAF documents;
* **CSF_XCAFDefaults** any open/save operations for **XDE** documents;
* **CSF_IGESDefaults** and **CSF_STEPDefaults** are required for **IGES** and **STEP** translators correspondingly in order to define the path to the resource files;
* **CSF_XmlOcafResource** is required in order to set the path to **XSD** resources, which defines XML grammar.
* **CSF_MIGRATION_TYPES** is required in order to read documents that contain old data types, such as *TDataStd_Shape*;
* **TCLLIBPATH**, **TCL_LIBRARY**, **TK_LIBRARY** and **TIX_LIBRARY** are required to allow work with **DRAW** and **WOK**.
@section OCCT_OVW_SECTION_7 Getting Started
@subsection OCCT_OVW_SECTION_7_1 Draw Test Harness
Draw is a command interpreter based on TCL and a graphical system used for testing and demonstrating OCCT modeling libraries.
Draw can be used interactively to create, display and modify objects such as curves, surfaces and topological shapes.
@image html /overview/images/overview_draw.png
@image latex /overview/images/overview_draw.png
Scripts can be written to customize Draw and perform tests.
New types of objects and new commands can be added using C++ programming language.
Draw contains:
* A command interpreter based on TCL command language.
* A 2D an 3D graphic viewer with support of operations such as zoom, pan, rotation and full-screen views.
* An optional set of geometric commands to create and modify curves and surfaces and to use OCCT geometry algorithms.
* A set of topological commands to create and modify BRep shapes and to use OCCT topology algorithms.
* A set of graphic commands for view and display operations including Mesh Visualization Service.
* A set of Application framework commands for handling of files and attributes.
* A set of Data Exchange commands for translation of files from various formats (IGES,STEP) into OCCT shapes.
* A set of Shape Healing commands: check of overlapping edges, approximation of a shape to BSpline, etc.
You can add new custom test harness commands to Draw in order to test
or demonstrate a new functionality, which you are developing.
Currently DRAW Test Harness is a single executable called DRAWEXE.
Commands grouped in toolkits can be loaded at run-time thereby implementing dynamically loaded plug-ins.
Thus you can work only with the commands that suit your needs adding
the commands dynamically without leaving the Test Harness session.
Declaration of available plug-ins is done through special resource file(s).
The pload command loads the plug-in in accordance with
the specified resource file and activates the commands implemented in the plug-in.
The whole process of using the plug-in mechanism as well as the instructions for extending Test Harness is described in the @ref occt_user_guides__test_harness.
Draw Test Harness provides an environment for OCCT automated testing system.
Please, consult its @ref occt_dev_guides__tests "Automated Testing System" for details.
Remarks:
* The DRAWEXE executable is delivered with the installation procedure on Windows platform only.
* To start it, launch DRAWEXE executable from Open CASCADE Technology/Draw Test Harness item of the Start\\Programs menu.
@subsection OCCT_OVW_SECTION_7_2 Experimenting with Draw Test Harness
Running Draw
------------
**On Linux:**
1. If OCCT was built by Code::Blocks use <i>$CASROOT/draw_cbp.sh</i> file to launch *DRAWEXE* executable;
2. If OCCT was built by Automake use <i>$CASROOT/draw_amk.sh</i> file to launch *DRAWEXE* executable;
Draw[1]> prompt appears in the command window
Type *pload ALL*
**On Windows:**
Launch Draw executable from Open CASCADE Technology\\Test Harness\\Draw Test Harness
item of the Start\\Programs menu or Use <i>$CASROOT\\draw.bat</i> file to launch *DRAWEXE* executable.
Draw[1]> prompt appears in the command window
Type pload ALL
**Creating your first geometric objects**
1. In the command window, type *axo* to create an axonometric view
2. Type *box b -10 -10 -10 20 20 20* to create a cube *b* of size 20, parallel to the X Y Z axis and centered on the origin. The cube will be displayed in the axonometric view in wireframe mode.
3. Type *fit* to fill the viewer with the cube
4. Type *pcylinder c 2 30* to create a cylinder *c* of radius 2 and height 30. The cylinder will be displayed in addition to the cube
**Manipulating the view**
1. Type *clear* to erase the view
2. Type *donly c* to display the cylinder only
3. Type *donly b* to display the cube only
4. Type *hlr hlr b* to display the cube in the hidden line removal mode
**Running demonstration files**
1. Type *cd ../..* to return to the root directory
2. Type *cd samples/tcl* to reach the *DrawResources* directory
3. Type *source \<demo_file\>* to run the demonstration file provided with Open CASCADE. The following demonstration files are available:
* DataExchangeDemo.tcl: demonstrates sample sequence of operations with writing and reading IGES file
* ModelingDemo.tcl: demonstrates creation of simple shape and displaying it in HLR mode
* VisualizationDemo.tcl: demonstrates use of 3d viewer
* cad.tcl: creates solid shape looking like abbreviation "CAD"
* bottle.tcl: creates bottle as in OCCT Tutorial
* drill.tcl: creates twist drill bit shape
* cutter.tcl: creates milling cutter shape
* xde.tcl: demonstrates creation of simple assembly in XDE
* materials.tcl: demonstrates visual properties of materials supported by 3d viewer
* raytrace.tcl: demonstrates use of ray tracing display in 3d viewer
* dimensions.tcl: demonstrates use of dimensions, clipping, and capping in 3d viewer
**Getting Help**
1. Type *help* to see all available commands
2. Type *help \<command_name\>* to find out the arguments for a given command
@subsection OCCT_OVW_SECTION_7_3 Programming Samples
@subsubsection OCCT_OVW_SECTION_7_3_1 MFC
Visual C++ programming samples containing 10 Visual C++ projects
illustrating how to use a particular module or functionality.
The list of MFC samples:
* Geometry
* Modeling
* Viewer2d
* Viewer3d
* ImportExport
* Ocaf
* Triangulation
* HLR
* Animation
* Convert
@image html /overview/images/overview_mvc.png
@image latex /overview/images/overview_mvc.png
**Remarks:**
* MFC samples are available only on Windows platform;
* To start a sample use Open CASCADE Technology\\Samples\\Mfc\\ item of the Start\\Programs menu;
* Read carefully readme.txt to learn about launching and compilation options.
See \subpage samples_mfc_standard "Readme" for details.
@subsubsection OCCT_OVW_SECTION_7_3_2 Qt
OCCT contains three samples based on Qt application framework
Import Export
-------------
Import Export programming sample contains 3D Viewer and Import / Export functionality.
@image html /overview/images/overview_qt.png
@image latex /overview/images/overview_qt.png
Tutorial
---------
The Qt programming tutorial teaches how to use Open CASCADE Technology services to model a 3D object.
The purpose of the tutorial is not to explain all OCCT classes but
to help start thinking in terms of the Open CASCADE Technology.
This tutorial assumes that the user has experience in using and setting up C++.
From the viewpoint of programming, Open CASCADE Technology is designed
to enhance user's C++ tools with high performance modeling classes, methods and functions.
The combination of these resources allows creating substantial applications.
**See also:** @ref occt__tutorial "OCCT Tutorial"
Voxel
------
This is a demonstration application showing OCCT voxel models. It also includes a set of non-regression tests and other commands for testing this functionality (accessible only through TEST pre-processor definition).
**See also:** <a href="occt_voxels_wp.html">Voxels User's guide</a>
**Remarks:**
* Qt samples are available on all supported platforms;
* To start a sample on Windows use Open CASCADE Technology\\Samples\\Qt\\ item of the Start\\Programs menu.
@subsubsection OCCT_OVW_SECTION_7_3_3 C#
C# sample demonstrates integration of OCCT 3D Viewer and Import / Export functionality into .NET applications (using Windows Forms and WPF front ends).
@image html /overview/images/overview_c__ie.png
@image latex /overview/images/overview_c__ie.png
Import:
* BRep
* Iges
* Step
Export:
* Brep
* Iges
* Step
* Stl
* Vrml
See \subpage samples_csharp_occt "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.
@subsubsection OCCT_OVW_SECTION_7_3_4 Android
There are two samples are representing usage OCCT framework on Android mobile platform. They represent an OCCT-based 3D-viewer with CAD import support in formats BREP, STEP and IGES: jniviewer (java) and AndroidQt (qt+qml)
jniviewer
@image html /overview/images/samples_java_android_occt.jpg
@image latex /overview/images/samples_java_android_occt.jpg
Java - See \subpage samples_java_android_occt "Readme" for details.
AndroidQt
@image html /overview/images/samples_qml_android_occt.jpg
@image latex /overview/images/samples_qml_android_occt.jpg
Qt - See \subpage samples_qml_android_occt "Readme" for details.

9
dox/resources/index.html Normal file
View File

@@ -0,0 +1,9 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta http-equiv="refresh" content="0;URL=html/index.html">
</head>
<body>
</body>
</html>

View File

@@ -0,0 +1,145 @@
\batchmode
\nonstopmode
\documentclass[oneside]{article}
\n
% Packages required by doxygen
\usepackage{calc}
\usepackage{doxygen}
\usepackage{graphicx}
\usepackage[utf8]{inputenc}
\usepackage{makeidx}
\usepackage{multicol}
\usepackage{multirow}
\usepackage{textcomp}
\usepackage{amsmath}
\usepackage[table]{xcolor}
\usepackage{indentfirst}
% Font selection
\usepackage[T1]{fontenc}
\usepackage{mathptmx}
\usepackage[scaled=.90]{helvet}
\usepackage{courier}
\usepackage{amssymb}
\usepackage{sectsty}
\renewcommand{\familydefault}{\sfdefault}
\allsectionsfont{%
\fontseries{bc}\selectfont%
\color{darkgray}%
}
\renewcommand{\DoxyLabelFont}{%
\fontseries{bc}\selectfont%
\color{darkgray}%
}
% Page & text layout
\usepackage{geometry}
\geometry{%
a4paper,%
top=2.5cm,%
bottom=2.5cm,%
left=2.5cm,%
right=2.5cm%
}
\tolerance=750
\hfuzz=15pt
\hbadness=750
\setlength{\emergencystretch}{15pt}
\setlength{\parindent}{0cm}
\setlength{\parskip}{0.2cm}
\makeatletter
\renewcommand{\paragraph}{%
\@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{%
\normalfont\normalsize\bfseries\SS@parafont%
}%
}
\renewcommand{\subparagraph}{%
\@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{%
\normalfont\normalsize\bfseries\SS@subparafont%
}%
}
\makeatother
% Headers & footers
\usepackage{fancyhdr}
\pagestyle{fancyplain}
\fancyhead[LE]{\fancyplain{}{\bfseries\thepage}}
\fancyhead[CE]{\fancyplain{}{}}
\fancyhead[RE]{\fancyplain{}{\bfseries\leftmark}}
\fancyhead[LO]{\fancyplain{}{\bfseries\rightmark}}
\fancyhead[CO]{\fancyplain{}{}}
\fancyhead[RO]{\fancyplain{}{\bfseries\thepage}}
\fancyfoot[LE]{\fancyplain{}{}}
\fancyfoot[CE]{\fancyplain{}{}}
\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize (c) Open CASCADE DEFYEAR}}
\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize (c) Open CASCADE DEFYEAR}}
\fancyfoot[CO]{\fancyplain{}{}}
\fancyfoot[RO]{\fancyplain{}{}}
\renewcommand{\footrulewidth}{0.4pt}
\renewcommand{\sectionmark}[1]{%
\markright{\thesection\ #1}%
}
% Indices & bibliography
\usepackage{natbib}
\usepackage[titles]{tocloft}
\renewcommand{\cftsecleader}{\cftdotfill{\cftdotsep}}
\setcounter{tocdepth}{3}
\setcounter{secnumdepth}{5}
\makeindex
% Hyperlinks (required, but should be loaded last)
\usepackage{ifpdf}
\ifpdf
\usepackage[pdftex,pagebackref=true]{hyperref}
\else
\usepackage[ps2pdf,pagebackref=true]{hyperref}
\fi
\hypersetup{%
colorlinks=true,%
linkcolor=black,%
citecolor=black,%
urlcolor=blue,%
unicode%
}
% Custom commands
\newcommand{\clearemptydoublepage}{%
\newpage{\pagestyle{empty}\cleardoublepage}%
}
\n
%===== C O N T E N T S =====\n
\begin{document}
% Titlepage & ToC
\hypersetup{pageanchor=false}
\pagenumbering{roman}
\begin{titlepage}
\vspace*{7cm}
\begin{center}%
\includegraphics[width=0.75\textwidth, height=0.2\textheight]{../../../dox/resources/occt_logo.png}\\
{\Large Open C\-A\-S\-C\-A\-D\-E Technology \\\\\Large DEFCASVERSION }\\
\vspace*{1cm}
{\Large DEFDOCLABEL}\\
\vspace*{1cm}
\vspace*{0.5cm}
{\small \today}\
\end{center}
\end{titlepage}
\clearpage
\pagenumbering{roman}
\tableofcontents
\newpage
\pagenumbering{arabic}
\hypersetup{pageanchor=true}
\let\stdsection\section
\renewcommand\section{\pagebreak\stdsection}
\hypertarget{DEFFILENAME}{}
\input{DEFFILENAME}
% Index
\newpage
\phantomsection
\addcontentsline{toc}{part}{Index}
\printindex\n
\end{document}

View File

@@ -0,0 +1,46 @@
DOXYFILE_ENCODING = UTF-8
CREATE_SUBDIRS = NO
OUTPUT_LANGUAGE = English
MULTILINE_CPP_IS_BRIEF = YES
INHERIT_DOCS = YES
REPEAT_BRIEF = YES
ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = NO
OPTIMIZE_OUTPUT_FOR_C = YES
SUBGROUPING = YES
DISTRIBUTE_GROUP_DOC = YES
EXTRACT_ALL = YES
EXTRACT_PRIVATE = NO
EXTRACT_LOCAL_CLASSES = NO
EXTRACT_LOCAL_METHODS = NO
HIDE_FRIEND_COMPOUNDS = YES
HIDE_UNDOC_MEMBERS = NO
INLINE_INFO = YES
VERBATIM_HEADERS = NO
QUIET = YES
WARNINGS = NO
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = YES
PREDEFINED = Standard_EXPORT __Standard_API __Draw_API Handle(a):=Handle<a> DEFINE_STANDARD_ALLOC DEFINE_NCOLLECTION_ALLOC
GENERATE_HTML = YES
GENERATE_LATEX = NO
SEARCH_INCLUDES = YES
ALLEXTERNALS = NO
EXTERNAL_GROUPS = NO
COLLABORATION_GRAPH = NO
ENABLE_PREPROCESSING = YES
INCLUDE_FILE_PATTERNS = *.hxx *.pxx
EXCLUDE_PATTERNS = */Handle_*.hxx
SKIP_FUNCTION_MACROS = YES
INLINE_SOURCES = NO
HAVE_DOT = YES
DOT_GRAPH_MAX_NODES = 100
INCLUDE_GRAPH = NO
INCLUDED_BY_GRAPH = NO
DOT_MULTI_TARGETS = YES
DOT_IMAGE_FORMAT = png
GENERATE_LEGEND = YES
DOT_CLEANUP = YES
GRAPHICAL_HIERARCHY = NO

View File

@@ -0,0 +1,60 @@
DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = "Open CASCADE Technology"
PROJECT_BRIEF =
CREATE_SUBDIRS = NO
OUTPUT_LANGUAGE = English
ABBREVIATE_BRIEF =
FULL_PATH_NAMES = YES
INHERIT_DOCS = YES
TAB_SIZE = 4
MARKDOWN_SUPPORT = YES
EXTRACT_ALL = YES
CASE_SENSE_NAMES = NO
INLINE_INFO = YES
SORT_MEMBER_DOCS = YES
WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES
WARN_IF_DOC_ERROR = YES
WARN_NO_PARAMDOC = NO
WARN_FORMAT = \\$file:\$line: \$text\
INPUT_ENCODING = UTF-8
FILE_PATTERNS = *.md *.dox
RECURSIVE = YES
SOURCE_BROWSER = NO
INLINE_SOURCES = YES
COLS_IN_ALPHA_INDEX = 5
GENERATE_DOCSET = NO
GENERATE_CHI = NO
GENERATE_QHP = NO
GENERATE_ECLIPSEHELP = NO
GENERATE_RTF = NO
GENERATE_MAN = NO
GENERATE_XML = NO
GENERATE_DOCBOOK = NO
GENERATE_AUTOGEN_DEF = NO
GENERATE_PERLMOD = NO
STRIP_CODE_COMMENTS = NO
GENERATE_LATEX = NO
GENERATE_HTMLHELP = NO
GENERATE_HTML = YES
HTML_COLORSTYLE_HUE = 220
HTML_COLORSTYLE_SAT = 100
HTML_COLORSTYLE_GAMMA = 80
HTML_TIMESTAMP = YES
HTML_DYNAMIC_SECTIONS = YES
HTML_INDEX_NUM_ENTRIES = 100
DISABLE_INDEX = YES
GENERATE_TREEVIEW = YES
ENUM_VALUES_PER_LINE = 8
TREEVIEW_WIDTH = 250
EXTERNAL_PAGES = NO
SEARCHDATA_FILE = searchdata.xml
SKIP_FUNCTION_MACROS = YES
FORMULA_FONTSIZE = 12
FORMULA_TRANSPARENT = YES
USE_MATHJAX = YES
MATHJAX_FORMAT = HTML-CSS
# Define alias for inserting images in uniform way (both HTML and PDF)
ALIASES += figure{1}="\image html \1 \n"
ALIASES += figure{2}="\image html \1 \2 \n"

View File

@@ -0,0 +1,53 @@
DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = "Open CASCADE Technology"
PROJECT_BRIEF =
CREATE_SUBDIRS = NO
OUTPUT_LANGUAGE = English
ABBREVIATE_BRIEF =
FULL_PATH_NAMES = YES
INHERIT_DOCS = YES
TAB_SIZE = 4
MARKDOWN_SUPPORT = YES
EXTRACT_ALL = YES
CASE_SENSE_NAMES = NO
INLINE_INFO = YES
SORT_MEMBER_DOCS = YES
WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES
WARN_IF_DOC_ERROR = YES
WARN_NO_PARAMDOC = NO
WARN_FORMAT = \\$file:\$line: \$text\
INPUT_ENCODING = UTF-8
FILE_PATTERNS = *.md *.dox
RECURSIVE = YES
SOURCE_BROWSER = NO
INLINE_SOURCES = YES
COLS_IN_ALPHA_INDEX = 5
GENERATE_DOCSET = NO
GENERATE_CHI = NO
GENERATE_QHP = NO
GENERATE_ECLIPSEHELP = NO
GENERATE_RTF = NO
GENERATE_MAN = NO
GENERATE_XML = NO
GENERATE_DOCBOOK = NO
GENERATE_AUTOGEN_DEF = NO
GENERATE_PERLMOD = NO
STRIP_CODE_COMMENTS = NO
GENERATE_HTMLHELP = NO
GENERATE_HTML = NO
DISABLE_INDEX = YES
GENERATE_TREEVIEW = NO
PREDEFINED = PDF_ONLY
GENERATE_LATEX = YES
COMPACT_LATEX = YES
PDF_HYPERLINKS = YES
USE_PDFLATEX = YES
LATEX_BATCHMODE = YES
LATEX_OUTPUT = latex
LATEX_CMD_NAME = latex
MAKEINDEX_CMD_NAME = makeindex
# Define alias for inserting images in uniform way (both HTML and PDF)
ALIASES += figure{1}="\image latex \1 \n"
ALIASES += figure{2}="\image latex \1 \2 \n"

View File

@@ -1,7 +0,0 @@
#!/usr/bin/tclsh
# Command-line starter for occdoc command, use it as follows:
# tclsh> source dox/start.tcl [arguments]
source [file join [file dirname [info script]] occdoc.tcl]
occdoc {*}$::argv

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

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