1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-14 13:30:48 +03:00

Compare commits

..

194 Commits

Author SHA1 Message Date
msv
89aebdea8d 0027033: Modeling -- ensure stable result of area calculation
The method BRepGProp_Face::LKnots has been corrected to make proper initialization of the output data for the case of a circle.
Added test case bugs/modalg_6/bug27033
2016-11-25 13:50:18 +03:00
ski
168077a6dc 0025362: Samples - Conversion to B-Spline doesn't show bspline surface on Windows 8
Added constants WM_MOUSEFIRST and WM_PAINT in WaitForInput method for correct handling of system messages.
2016-11-25 12:38:22 +03:00
apn
d96fd48ee5 Fix warning on vc14 2016-11-24 12:00:58 +03:00
apn
7dd37838f7 Modify test case bugs/mesh/bug28118 2016-11-24 11:57:08 +03:00
apn
8f16a18454 Incrementation of OCCT version up to 7.1.0 2016-11-24 07:07:01 +03:00
apn
1dd28279c8 Modify test cases according using imagedir folder for saving tmp files 2016-11-24 07:07:00 +03:00
gka
cde381c4e2 0028118: Mesh generation hangs then crashes
Protection against hangs of mesh  and crash(made by epa)
Added test case bugs/mesh/bug28118
Tests mesh* standard_* W7 are corrected (TODO removed)
2016-11-24 07:06:49 +03:00
apn
10f55672df 0026450: Boolean operation is running endless
Added test case bugs/modalg_6/bug26450
2016-11-23 18:08:37 +03:00
kgv
aff1875311 0028147: Data Exchange - NULL dereference while reading color from STEP file
StepVisual_StyledItem::Item() now does not call IsKind() on NULL object.
Add several checks for NULL to import/export.

Add test case bugs/step/bug28147
2016-11-23 15:54:55 +03:00
msv
bb2cf06962 0025920: BRepAlgoAPI_Fuse makes invalid result
The command OCC426 for test case bugs modalg_2 bug426 has been modified in order to make the test passed. The modification concerns only the old Boolean operation branch (BRepAlgo_Fuse).
2016-11-23 13:13:11 +03:00
gka
946e65b9c5 0028143: In the method ShapeFix_Edge::FixAddPCurve initialized by face location of face is not taking into account.
Class ShapeAnalysis::Surface is initialized by transformed surface in the method
ShapeFix_Edge::FixAddPCurve (const TopoDS_Edge& edge,const TopoDS_Face& face, const Standard_Boolean isSeam, const Standard_Real prec) in the case when face has location.
2016-11-23 13:12:08 +03:00
ski
7fbac3c240 0028077: Add option for genproj to generate UWP projects
Ability to generate UWP solution was added to genproj command, applied when VC version set to "vc14-uwp".
Environment variables are used to find installed Microsoft SDKs.

Visual Studio project option "Use precompiled headers" is set to "Not Using" by default.
Character set option of VS project Unicode is used instead of preprocessor definitions for UWP projects.
2016-11-23 13:10:48 +03:00
mkv
2fb5823d31 0028146: Data files with the same content in test cases
Names of used shapes were corrected in test cases
2016-11-23 13:09:48 +03:00
aiv
ce73cfd073 0028038: Incorrect documentation generated for "user guides/BRep Format"
References to external MathJax.js library were changed from HTTP to HTTPS alternative.
2016-11-23 13:07:45 +03:00
ski
4208cf1872 0028105: HLR rendering crash in MFC sample
User_Cylinder class was updated according to work as single object in Prs3d_Presentation.
2016-11-23 13:06:25 +03:00
kgv
b3eab8efc3 0028127: Visualization - transparent object breaks Z-Layer depth buffer clear
OpenGl_LayerList::Render() now calls glDepthMask(GL_TRUE) before clearing depth buffer.
Depth buffer is now cleared even if ZLayer with this command has no structures.
2016-11-23 13:05:18 +03:00
szy
5299b92ba1 0028134: TDataStd_Name attribute gets null ID.
'myID' field is initialized in constructor now.
2016-11-23 13:03:59 +03:00
emv
41aa3c3d5d 0028046: Incomplete result of offset operation in mode complete intersection
1. Special usage of the common edges not belonging to any invalidity while rebuilding the invalid faces (method IntersectFaces() in BRepOffset_MakeOffset_1.cxx).
Such edges could only be extended to the valid faces boundaries, thus could only split the face and not create any new part.

2. Test cases for the issue.
2016-11-23 13:02:53 +03:00
razmyslovich
f9ac4dc9ab 0027849: ResourceManager path computations fail for the folders containing dots
Treatment of paths in Resource_Manager is corrected to handle properly paths with dots inside.
Extraction of extension from path in DOS mode when working on Linux is corrected in OSD_Path.
Test case added.
2016-11-23 13:01:46 +03:00
ysn
ebcbd82410 0025560: Documentation - describe changes in AIS_InteractiveConnect and AIS_MultipleConnected introduced within 6.8.0
New section about scene-graph hierarchy and instancing.
 Proofreading of extended section about z-layers.
 Removal of obsolete information.

Remarks taken into account.
2016-11-23 12:57:55 +03:00
abv
45b9409aa4 0028130: Spelling error in description of class BOPAlgo_Section
Spelling error is corrected
2016-11-19 17:21:59 +03:00
abk
d673da182b 0028103: Foundation Classes - extend NCollection_Map to check whether two given maps are intersected
Mehtod HasIntersection added in NCollection_Map to check whether two given maps contain at least one same item.
'Draw' command and test to check the method were created.
2016-11-18 15:19:40 +03:00
dbp
f411f94fac 0027256: Visualization, Path Tracing - add support of alpha-channel of texture
Regenerate resource files.
2016-11-18 15:17:36 +03:00
dbp
383c6c9fb2 0028114: Visualization, Path tracing - Make path tracing mode interactive in high resolutions 2016-11-17 18:49:39 +03:00
kgv
8511408796 0028101: Visualization, Select3D_SensitiveSet - fix NULL dereference on re-adding the same sensitivity
Select3D_SensitiveSet now stores BVH_PrimitiveSet as class field (no dynamic allocation),
and BVH_PrimitiveSet subclass now stores raw pointer to Select3D_SensitiveSet (no smart pointer).

Select3D_BVHPrimitiveContent definition has been moved into Select3D_SensitiveSet
class definition to avoid confusion.

Unused field Select3D_SensitiveSet::myIsLeftChildQueuedFirst has been removed.
2016-11-17 18:49:37 +03:00
msv
c894a5fdfc 0027992: Modeling Algorithms - Extrema_ExtPS crashes on face without geometric surface
The algorithm BRepExtrema_DistShapeShape has been protected against exceptions when non-geometric shape data is given on input, like a face containing triangulation only or an edge containing polygon only. Such faces/edges are ignored by the algorithm.

BRepGProps::VolumeProperties() now ignores faces without geometric surface to avoid access violation.
2016-11-17 18:49:36 +03:00
dbp
6dd6e5c758 0028115: Visualization, Ray tracing - Fix crash on NVIDIA GPUs with driver version 373.06 when window is resized 2016-11-17 18:49:34 +03:00
kgv
f9f740d6b0 0028095: Draw Harness, ViewerTest - use RGBA format instead of BGRA within vreadpixel
OpenGl_Workspace::BufferDump() now implicitly converts RGBA dump
into requested BGR, BGRA and RGB image.

DRAW command dversion is improved to report OpenGL variant used (desktop or ES); reporting of version of MSVC is corrected for VC14 and above; reporting of HAVE_OPENCL option is removed.

Usage of command vdump is corrected in some tests to specify extension .png for an image file.

Compiler warning is eliminated in OpenGl_Text.cxx (OpenGL ES mode only).
2016-11-17 15:40:15 +03:00
kgv
564c82b4f2 0025144: Coding rules - consider rules for formatting pointers and constants placement in expressions 2016-11-17 15:38:19 +03:00
gka
16c93d97eb 0028094: Shape obtained after DRAW command "splitshape" has unnecessary high tolerance.
Check of the gap between ends of the p-curves having common vertex in the parametric space of face similar as in the class BRepCheck_Wire was added.
Check that face lies on the periodic surface was added.
Added check between ends of 2D curves in the 3D space and vertex the same which used in the BRepCheck_Wire::SelfIntersect
Test case for issue CR28094 has been created.
2016-11-17 15:36:26 +03:00
kgv
ef9a9362ae 0028093: Visualization - access violation on removal of dynamic highlighting after device loss
OpenGl_Layer::Remove() now tries to remove object from myAlwaysRenderedMap
if it was not removed from other groups.
2016-11-17 15:32:47 +03:00
ysn
8022338566 0028079: Proofreading of updates section and possible documentation changes since 7.0
Added some content from the bugtracker to porting notes.
Reviewed some other recent changes.
2016-11-17 15:31:36 +03:00
ysn
f3495b0139 0027828: Reference documentation of AIS_Trihedron contains invalid information about default size.
Fixed the description of AIS_Trihedron
2016-11-17 15:30:18 +03:00
kgv
6fe58c66d9 0028099: Visualization, OpenGl_Text - handle DIMENSION and SUBTITLE styles within Core Profile
OpenGl_Text now creates VBO for drawing background rectangle.
2016-11-17 15:28:28 +03:00
abv
45d0af05b9 0028096: VC14 compiler warnings of 7.1.0.beta
Warnings are eliminated
// minor corrections in headers
2016-11-17 15:14:42 +03:00
msv
197cddcfc9 0028092: Wrong statement in reference manual for Geom_ToroidalSurface::Bounds
Description has been corrected.
2016-11-17 14:56:19 +03:00
vpa
424392e0d8 0028061: Samples - Highlighting of any object with "Hidden On" option leads to crash in mfc Modeling
Graphic3d_Structure::Highlight() does not call UnHighlight() anymore.
2016-11-17 14:54:24 +03:00
msv
eca0539260 0028081: Fix regression in HLR introduced by the fix for 28053
The whole piece of the walking line between two vertices is no more checked for having length greater than Precision::Confusion(). Instead, only full duplicate points (comparing with gp::Resolution()) are removed, allowing the resulting line have any non-null length.

The test bugs modalg_6 bug27720_5 has been reverted to its original state.
2016-11-17 14:48:57 +03:00
nbv
326b3e283a 0028076: Test bugs moddata_2 bug469 fails when FPE are enabled
The reason of FPE exception has been eliminated.
2016-11-17 14:47:38 +03:00
kgv
bf7b2cebbe 0028056: Draw Harness, ViewerTest - correct vanimation command to produce stable timestamp on seek 2016-11-17 14:46:27 +03:00
gka
72523826de 0027575: Reading STEP file gives an empty result
Exception is raised during translation BSpline curve having only one unique knot.
Protection for such case was added
Added protection against exception during reading BSpline curve with number of control points equal to 0
Added protection against exception due to using null binder during writing XDE document

Test case for issue #27575
2016-11-17 14:45:16 +03:00
abv
7a1b96cb98 0023639: Exception on attempt to save to XmlOcaf format
Variant FULL is removed from the options of DRAW command pload; ALL can be used in all cases
2016-11-17 14:41:50 +03:00
emv
3b2af789dd 0027428: DRAW command "bsection" did not built section line between two faces (one face based on the plane)
Adjusting test case for the issue.
2016-11-09 13:12:51 +03:00
apn
aa7b761d4c Incrementing OCCT version up to 7.1.0 beta 2016-11-09 12:12:43 +03:00
apn
9d420e021d Update test case offset/shape_type_i_c/Q9 according to new behavior 2016-11-09 12:08:50 +03:00
apn
d102153bc0 Updated dependencies in mfc OCAF sample 2016-11-09 12:07:07 +03:00
kgv
baed683824 0028040: Foundation Classes, Message_Printer - handle Standard_CString messages as UTF-8 2016-11-09 11:41:20 +03:00
ysn
d5cdd12a38 0027678: Draw User's guide contains wrong example for for-loop
Signs have been restored in draw UG as per its DOC version.
2016-11-09 11:40:49 +03:00
kgv
3bae95c8a2 0028062: Samples - Shading model functionality does not work in mfc Viewer3d
Unsupported shading models have been removed from the sample dialog.
2016-11-09 11:38:32 +03:00
apn
17d16f7887 0027923: Environment variable INSTALL_DIR_LAYOUT is not documented
Added description of INSTALL_DIR_LAYOUT variable
2016-11-09 11:37:50 +03:00
szy
fa53efefc3 0027932: Improvement of standard attributes usability.
OCAF attributes TDataStd_AsciiString, TDataStd_Integer, TDataStd_Name, TDataStd_Real are extended by possibility to use custom GUID.

Now multiple attributes of any of these types can be placed at the same label using different user-defined GUIDs.
For this new "Set" methods were added into each attribute, which takes this custom GUID as an argument.
Other aspects of management of attributes on labels remain the same.

Version number of persistent OCAF documents is incremented.
However, the attributes are stored in the same way unless non-standard GUID is used for particular attribute.
Previously saved documents are fully supported, but the new documents with this extension used will be non-readable by the previous version of OCAF libraries.
2016-11-08 19:30:59 +03:00
kgv
9c86076b21 0028036: Visualization, AIS_ColoredShape - handle correctly nested compounds within Shaded display mode
AIS_ColoredShape::Compute() now parses nested compounds in two passes
to handle complex cases with compounds used for grouping styles.
2016-11-08 19:29:58 +03:00
msv
4af9e8a8b7 0028053: Regressions in HLR when FPE signals are enabled
Protect Contap_Contour from creation of null-length curves.
2016-11-08 19:29:56 +03:00
nbv
b070046674 0028054: Regression: Class BRepProj_Projection gives invalid result after projection edge based on the line on the conical surface
Problem of projection of line on the cone in the special case when starting point of the line coincides with the cone apex is fixed (by shifting this point along the source line).
2016-11-08 19:29:55 +03:00
kgv
2a8d1e7bcf 0028072: Samples - remove deprecated vector export from MFC sample 2016-11-08 18:59:10 +03:00
ski
71c089e99b 0028068: Samples - Add dimension functionality shows incorrect tip for an Edge in mfc Viewer3d
Warning message was updated to show actual information.
Additional checking of type of shape was added to prevent exceptions for Add Dimension functionality.
2016-11-08 18:57:42 +03:00
abv
2915f0b590 0028066: Samples - mfc ocaf sample could not read/save any document without environment variables
Persistence libs are loaded using DefineFormat() in OCAF sample
2016-11-08 18:52:26 +03:00
msv
e7b01db7c4 0028065: [Regression to 7.0] The method HLRAppli_ReflectLines::GetResult must be const 2016-11-08 18:50:50 +03:00
ski
a1565817f1 0028064: Samples - Raytracing does not work in Qt samples
QAction signal activated() was changed to signal triggered() to support Qt5.
2016-11-08 18:49:13 +03:00
kgv
0e5ef9264f 0028060: Samples - Objects in Geometry/Viewer2d have incorrect color
Broken custom presentations Sample2D_Text and ISession_Text
have been replaced by AIS_TextLabel.

ISession2D_Curve::Compute() - fixed defining the group without presentation aspects.
GeomSources - fixed assigning custom attributes.
2016-11-08 18:45:07 +03:00
msv
63dbfc04f8 0028059: Correction of upgrade guide for 7.1
Correction of upgrade guide for 7.1
// minor corrections
2016-11-08 18:43:33 +03:00
emv
c2bf27a6fb 0028050: Empty result of offset operation in mode complete join type intersection
1. BRepOffset_Inter3d::ConnexIntByInt
Create unique offset edge for each localized part shared between pair of faces of the input shape.

2. Test cases for the issue.
2016-11-08 18:08:01 +03:00
emv
ecf4f17cb8 0026917: 3D Offset algorithm produces incorrect result
Extension on the 3D Offset algorithm (Mode="Complete", Join Type = "Intersection")
for colliding cases to add support for new configurations of the shapes.
In the previous approach the result of the offset operation was build from
the offset faces using MakerVolume algorithm, without checking of the validity of these faces.
The new extension is based on this approach, but now the offset faces are being checked
on invalidity and rebuild in case of any. This allows (in case of successful rebuilding) to avoid creation
of the unforeseen parts such as dangling parts, spikes, inverted faces in the result of offset operation.
The main criteria for the validity of the faces is the coincidence of the normal
direction of the offset face with the normal direction of the original face.
Check for removal of invalid faces has been removed as obsolete.

BRepOffset_Inter2D: Avoid excess trimming of the edges due to coincidence with other edges.
BRepOffset_Inter3D: Careful treatment of the intersection of the faces connected only through vertices.

Eliminating the compiler warning.

Small corrections of test cases for issue CR26917
2016-11-08 18:05:05 +03:00
dbp
6e728f3b5c 0027974: Visualization, ray tracing - Improve ray tracing engine
* Multiple importance sampling for path tracing
* Improved light sources sampling (better handling several light sources)
* Fixed issues in light source intersection (light distance is taken into account)
* Add new TCL sample - OCCT Ball model for demonstrating physically-based materials
* Fix potential issue on NVIDIA GPUs ("Error: Failed to upload light source buffer")
* Path tracing materials reviewed; directional light source was smoother by default
2016-11-08 16:43:23 +03:00
msv
0d0481c787 0026738: Make Boolean operations safely treating arguments when running with fuzzy option
When fuzzy option is in force prevent increasing tolerance of input shapes. Instead pass increased by fuzzy value the tolerances of sub-shapes everywhere where it is needed by intersection algorithms.

The following changes in API have been made:

- The methods SetFuzzyValue and FuzzyValue have been moved from the classes BOPAlgo_ArgumentAnalyzer, BOPAlgo_Builder, and BOPAlgo_PaveFiller to the base class BOPAlgo_Algo.
- The public method BOPDS_DS::VerticesOnIn has been renamed to SubShapesOnIn, and the new output parameter theCommonPB has been added.
- In BOPTools_AlgoTools, a new argument "theFuzzyValue" has been added in the methods ComputeVV and AreFacesSameDomain.
- In IntTools_Context, a new argument "theFuzzyValue" has been added in the methods ComputeVE and ComputeVF.
- The methods SetFuzzyValue and FuzzyValue have been added in the classes IntTools_EdgeEdge, IntTools_FaceFace.
- In the class IntTools_EdgeFace, the methods SetTolE, SetTolF, TolE, TolF have been removed, and the methods SetFuzzyValue, FuzzyValue have been added.
- The new argument "theTol" has been added in the method IntTools_WLineTool::DecompositionOfWLine.

Some improvements in algorithms have been made during fighting with regressions:

- Correct initialization of pave blocks for degenerated edges.
- In BOPAlgo_PaveFiller::MakeBlocks(), filter out paves on intersection curve that were put on the curve accidentally due to wide range of E-F intersection vertex.
- In the method IntTools_Tools::ComputeTolerance the margin added to the computed tolerance has been increased up to 0.001%.
- The method BOPAlgo_PaveFiller::PutPaveOnCurve has been corrected in order to use the original vertex tolerance instead of the value increased during putting it on other curves.
- The new method BOPDS_PaveBlock::RemoveExtPave has been added.
- The vertex tolerance computation in BOPTools_AlgoTools::CorrectCurveOnSurface has been improved, taking into account intersection segments between p-curves (to avoid regression on "bugs modalg_6 bug22794").
- Improve IsExistingPaveBlock to make more stable catching of coincidence of common block with section curve (against regression "bugs modalg_4 bug697_2" on Linux).

Test case for the bug has been added.

The following test cases have been updated as improvements:
boolean gdml_private ZH2 ZI7 ZJ7
boolean volumemaker C4

The test case bugs/modalg_4/pro19653 has been corrected to make it stable. See comment inside the script for details.

The test case bugs/modalg_6/bug25880 has been corrected to suppress wrong bfuse commands.

The test bugs/modalg_6/bug26954_3 has been corrected to compare the result with more precise reference value.

The "faulty" TODO in boolean/volumemaker/A8 has been made actual for Linux as well.

//Eliminate compilation error on Linux.
2016-11-08 16:42:44 +03:00
ski
b2134621cc 0028027: Configuration - option BUILD_RESOURCES does not work on CMake 2.8
CMake command "string (APPEND ...)" was replaced by SET equivalent to support CMake 2.8
2016-11-08 15:15:25 +03:00
msv
a0ad45bf9a 0027802: [Regression to 7.0] Solid classifier raises exception ConstructionError
Test case has been created.
2016-11-08 15:15:24 +03:00
ski
997e128f88 0024788: Foundation Classes - remove Dico_Dictionary
Class Dico_Dictionary was replaced by NCollection_DataMap/NCollection_IndexedDataMap classes.
Changed argument name in template class NCollection_Datamap to eliminate redefinitions of static members in dependent code.
2016-11-08 15:15:22 +03:00
kgv
be70005cb5 0028039: Coding rules, TObj - pass file name by reference 2016-11-08 15:15:20 +03:00
azv
9c189bd8dc 0028028: Solid becomes invalid after scaling
The shape after scaling contains PCurves with incorrect parametrization, because of too large tolerance given.

1. Set Precision::PConfution() as a tolerance for GeomLib::SameRange.
2. Do not take into account tolerances of vertices while calculating tolerance of transformed PCurve for edge.
3. Test case bugs/modalg_6/bug28028
2016-11-08 15:15:18 +03:00
kgv
1475265b58 0028035: Visualization - V3d_Trihedron::compute() endlessly creates new graphic groups
V3d_Trihedron::compute() now reuses existing groups in the structure
and resets the flag myToCompute.
2016-11-08 15:15:16 +03:00
ifv
e841c38c71 0028030: Algorith GeomLib_CheckCurveOnSurface takes too much time for Bspline curves with big number of knots
Checking of number of knots is added. If number of knots more then allowed value, algorithm does not search distance between curves for each knot interval, but uses predefined sample point distribution.

This change was born in the scope of work on the issue 26329, but does not have direct connection to it. Therefore it has been postponed to be integrated later in its own context.

Test case for issue #28030
2016-11-08 15:15:14 +03:00
pdn
579f2938a8 0028034: Application Framework - stack overflow in LDOM destructor 2016-11-08 15:15:12 +03:00
nbv
f73c584ceb 0027896: Prm-Prm intersection algo returns wrong result if it is called with start intersection point, which lies in the domain boundary
Purger has been disabled (in IntPatch_PrmPrmIntersection algorithm) if some points have been added in the Walking line (it is stupidly, first, to insert some points in the line and, after that, to delete points from this line).

Some improvements in IntWalk_PWalking::SeekPointOnBoundary(...) method have been made (see comments in the code for detail information).

Some test cases have been adjusted according to their new behavior.
2016-11-08 15:15:11 +03:00
vpa
a3d4053c15 0027868: Visualization - AIS_InteractiveContext::Remove() might keep removed object in selection list
- AIS_InteractiveContext::unhighlightOwners is corrected to handle all objects in selection regardless of owner's selection state
2016-11-07 16:32:39 +03:00
apn
10c5aa00b0 Fixed compilation warnings on vc14 caused by CR27431_5 2016-11-03 18:04:54 +03:00
jgv
953d87f32c 0027386: BRepOffsetAPI_MakePipeShell does not provide history of generations
The method BRepOffsetAPI_MakePipeShell::Generated now returns generated shapes for sub-edges and sub-vertices of sections.

The method BRepFill_PipeShell::BuildHistory is redesigned: now it builds generated shapes for sub-edges and sub-vertices of sections.

New Draw command "gensweep" is added to sweep commands for testing of history building.
2016-11-03 18:04:33 +03:00
abk
681f3919f0 0027870: Modeling - refactoring of HLR algorithms
Toolkit 'TKHLR' was fully refactored for 'Standard_Address' and macros except about half of package 'HLRBREP' there 'Standard_Address' is used through the 'generic' mechanism.
2016-11-03 14:16:56 +03:00
ika
4a6d278356 0028014: PMIVis - some tolerances are attached to points out of the models
Fix a misprint.
2016-11-03 14:15:59 +03:00
osa
434ffc0909 0028031: Visualization, TKV3d - do not use height/width ratio of window during V3d_View::FitAll() 2016-11-03 14:15:57 +03:00
isk
62ef08dfc8 0028010: Visualization, Prs3d_Arrow - add Shading presentation builder
StdPrs_ToolCylinder, StdPrs_ToolDisk, StdPrs_ToolQuadric and StdPrs_ToolSphere
have been moved from StdPrs package to Prs3d.
2016-11-03 14:15:55 +03:00
vpa
d4507e82ba 0027008: Visualization - polygonal selection algorithm does not work with MeshVS_Mesh
- correct calculation of normals for SelectMgr_TriangularFrustum;
- test case for issue #27008
2016-11-03 14:15:53 +03:00
anv
bc9a61ec69 0028012: Exception while intersecting two surfaces
Test case for issue CR28012
2016-11-03 14:15:51 +03:00
msv
ff1541f179 0026673: BOPTools_AlgoTools::ComputeVV incorrectly checks two vertices for intersection
Test case has been created.
2016-11-03 14:15:49 +03:00
msv
8878d0ecce 0024932: addsweep does not check if the supplied variable contains a shape
Check for null shape has been added in the command addsweep implementation.

// eliminate warning

Test case for issue CR24932
Test case has been corrected.
2016-11-03 14:15:47 +03:00
vpa
f0cddd16eb 0027530: Visualization - AIS_InteractiveContext::HilightNextDetected() doesn't work in Neutral Point
- added implementation of mentioned methods for neutral point;
- sequence of detected objects was replaced by sequence of detected owner's indexes in AIS_InteractiveContext;
- commands vselnext and vselprev were corrected to update viewer properly;
- test case for issue #27530.
2016-11-03 14:15:45 +03:00
nbv
c9c7286e56 0028009: [Regression vs OCCT7.0.0] Cut produces not valid shape
The algorithm in WorkWithBoundaries::BoundaryEstimation(...) did not take into account opposite directions of cylindrical axes (when the angle between them is obtuse). After the fix it does it.

Small correction of test cases for issue CR28009
2016-11-03 14:15:43 +03:00
nbv
e2e0498b17 0027431: [Regression to 6.9.1] Huge tolerance obtained during intersection of cylinder and sphere
The root of the problem is incorrect processing of cases when intersection line goes through the apex(es) of sphere. The fix improves this situation. The algorithm is taken from DecomposeResult(...) function (see IntPatch_ImpPrmIntersection.cxx file). Before the fix, faltering steps were done to solve this problem. As result, it worked in some particular cases. Now, its possibilities have been extended significantly.

Following changes have been made in the fix:

1. Class IntPatch_ALineToWLine has been rewritten cardinally. It touches as interfaces of existing methods as adding/removing some methods/fields. Correction touches both cases: going through seam of Cone/Sphere and through pole(s) of sphere. Old interface did not allow making some actions with analytical line (ALine), e.g. splitting it on several Walking-lines (WLine).

2. Restriction-line support has been removed from Implicit-Implicit intersection result (see IntPatch_Intersection::GeomGeomPerfom(...) method). It connects with the fact that the intersection algorithm itself returns precise intersection line in analytical cases (in compare with parametric intersector). Therefore, we do not need in additional (restriction) line.

3. New class IntPatch_SpecialPoints has been added. This class contains methods to add some special points (such as apex of cone, pole of sphere, point on surface boundary etc.) in intersection line (IntPatch_PointLine). It is based on the static functions, which already exist in IntPatch_ImpPrmIntersection.cxx file (these functions have been moved to the new class).

4. Method IntPatch_WLineTool::ExtendTwoWlinesToEachOther(...) has been renamed to IntPatch_WLineTool::ExtendTwoWLines(...). It is connected with changing main idea of the method. Now it allows extending WLine to the surface boundary or to the singular point (if it is possible): cone apex, sphere pole etc. Interface of this method has been corrected, too. At that, old functionality (extending to each other) has been kept. For implementation of this algorithm, new enumeration "IntPatchWT_WLsConnectionType" has been created.

5. Method IntPatch_PointLine::CurvatureRadiusOfIntersLine(...) has been added. See IntPatch_PointLine.hxx for detail information. It allows correct step computing depended on the local curvature of the intersection line. This method uses geometrical properties of intersected surfaces to compute local curvature. Therefore, it can be applied in wide range of cases even if the intersection curve is not represented in explicit form (e.g. in case of param-param-intersection).

6. Method IntSurf::SetPeriod(...) has been created.

7. Additional check has been added in Draft_Modification::Perform() method for better choice of correct fragment of intersection line for processing DRAFT operation.

8. New overload method IntPatch_Point::SetValue() has been added.

9. Some refactoring of the code has been made.

Creation of test case for issue #27431.

---------------------------------------------------------------------------------------------
Some test cases have been adjusted according to their new behavior.

   tests\bugs\modalg_4\bug62
It is really IMPROVEMENT (but fortuitous).

   tests\bugs\modalg_5\bug25838
The behavior of this test has been reverted to the state before fixing the issue #27341. Main problem has not been fixed in #27341. It was fortuitous improvement.

    tests\bugs\moddata_2\bug565
Quality of intersection curve was not checked. And the curve is bad on both MASTER and FIX. Input data are really wrong: plane-like-cone. However, on the MASTER, four intersection curves (the quality is insignificant) are expected. On the fix, not empty intersection result is expected simply.

   tests\boolean\volumemaker\A8
Differences in images and CPU is expected. Difference in images is expected to be fixed in the issue #26020. Now, we should apply this behavior.
Much CPU time is spent by IntTools_FaceFace::ComputeTolReached3d(...) and GeomInt_IntSS::BuildPCurves(...) methods calling. These methods are not touched by the algorithm. It is the result of change of intersection curve(s) form. However, the new Curve(s) seems to be valid and can be applied. As result, new behavior can be applied, too.

   tests\boolean\volumemaker\F8
   tests\boolean\volumemaker\F9
   tests\boolean\volumemaker\G5
   tests\boolean\volumemaker\G6
CPU difference is expected. Much CPU time is spent by IntPatch_PointLine::CurvatureRadiusOfIntersLine(...) method calling. This method is really new (it does not exist on the MASTER) and is really useful. Therefore, we should apply new behavior.

   tests\boolean\volumemaker\G1
CPU difference is expected. Much CPU time is spent by IntTools_WLineTool::DecompositionOfWLine(...) and IntTools_FaceFace::ComputeTolReached3d(...) methods calling. These methods are not touched by the algorithm. It is the result of change of intersection curve(s) form. However, the new Curve(s) seems to be valid and can be applied. As result, new behavior can be applied, too.

   tests\bugs\modalg_6\bug26619
Differences in images is expected. The test keeps its BAD status on the FIX. But the result on the fix is nearer to expected than on the MASTER. Issue #27014 is still actual. As before, it is not clear, why the number of entities is different. The number of section curves has not been changed. Interfered entities are the same as on the MASTER.

   tests\bugs\modalg_5\bug25319_1(2)
The reason is described in the issue #27896.

Small correction in the test case
2016-11-03 14:15:41 +03:00
emv
416022a12f 0027441: The method IntTools_Context::IsVertexOnLine incorrectly computes parameter of the point on the curve
Choosing the closest bound to the checking point.
2016-11-03 14:15:39 +03:00
gka
320a322080 0026524: ShapeFix_Face crash when performing fix on an invalid face.
Check that method Context() returns not null handle was added.
2016-11-03 14:15:37 +03:00
ika
43d3f6d8d8 0027975: Data Exchange - Add possibility to connect DGTs to vertices.
Implement new function to find Product_Definition_Shape entity.
Modify Reader to add possibility of import DGTs, connected to some geometry items.
Update test cases.
2016-11-03 14:15:34 +03:00
kgv
4d19a2c5e7 0027991: Modeling Algorithms - BRepGProp_Face crashes on face without geometric surface
BRepGProps now ignores faces without geometric surface to avoid access violation.
BRepExtrema_DistShapeShape::DistanceMapMap() now skips comparison between void bounding boxes.
BRepBndLib::Add() now ignores useTriangulation flag for faces without geometric surfaces, and uses triangulation if any for updating of the box.
2016-10-28 17:26:51 +03:00
ski
ee5befae97 0027258: Configuration - generate built-in replacement for mandatory resource files
Generation of header files from resource files was added to CMake and genproj procedures.

Message_MsgFile has been extended with new method ::LoadFromString()
for loading messages from embedded resources.
Message_MsgFile::LoadFromString() is now a preferred way
for loading message resources by application
as alternative to environment variables.

TObje/TObj.msg is now embedded into TObj_Application.cxx.
TObj_Application now loads its global messages
on instantiation of the first class instance.

UnitsAPI/Lexi_Expr.dat now completely embedded into Units_Lexicon.cxx.
UnitsAPI/Units.dat now embedded into Units_UnitsDictionary.cxx
but can be regenerated from resource file.
The definition of the following units have been removed:
benne à charbon, calorie (diététique).

Unused message files XSMessage/IGES.us and IGES.fr have been removed.
Related code IGESData.cxx has been removed as well.

XSMessage/XSTEP.us is now embedded into Interface_StaticStandards.cxx
and used for fallback initialization in case when file resources
defined by CSF_XSMessage environment variable are missing.

SHMessage/SHAPE.us is now embedded into ShapeExtend.cxx
and used for fallback initialization in case when file resources
defined by CSF_XHMessage environment variable are missing.
Duplicating code has been removed from ShapeProcess_OperLibrary.cxx.

Shaders/Declarations.glsl and Shaders/DeclarationsImpl.glsl
are now embedded into OpenGl_ShaderProgram.cxx.
CSF_ShadersDirectory is no more required for using OCCT 3D Viewer.

Ray-Tracing GLSL programs from Shaders are now embedded into OpenGl_View_Raytrace.cxx.
File resources are still used instead of embedded programs
when CSF_ShadersDirectory is defined, but this functionality
is intended for OCCT development.

Enumeration Graphic3d_ShaderProgram::ShaderName_Phong
demonstrating custom GLSL program usage has been removed.
2016-10-28 14:30:28 +03:00
apn
30f5e1a74b Modify test case v3d/raytrace/bug25221 according to new draw commands. 2016-10-28 14:28:42 +03:00
apn
91764a8f6d 0025792: BRepAlgoAPI_Section fails depending on order of arguments
Added test case bugs/modalg_6/bug25792
2016-10-27 17:54:31 +03:00
emv
e2a37a80f6 0027244: Test case with workaround for issue 0027240
Test case for issue CR27404
2016-10-27 17:53:28 +03:00
gka
a965c45b2d 0027404: Data Exchange - access violation when reading STEP file
Added check on the null handle
Test case for issue CR27404
2016-10-27 17:50:59 +03:00
nds
ee905e847d 0027692: Visualization, AIS_AngleDimension - exterior angle and arrows visibility improvements
Extension of angle presentation to provide this functionality
2016-10-27 17:48:30 +03:00
emv
0391af0aa1 0028002: Invalid result of Boolean Fuse operation
The SolidClassifier algorithm does not take into account the internal parts of the solid and its faces.
But in some cases the parts which are internal on some shapes can be included in other shapes of
the same solid with FORWARD/REVERSED orientation and therefore should be counted as well.

The fix changes the procedure of the initialization of the tree of bounding boxes of the edges and
vertices of the solid in SolidExplorer algorithm to treat the internal/external parts of the solid correctly.
2016-10-27 17:43:43 +03:00
apn
964e27d91c 0027260: Incorrect result of General Fuse operation
Added test case bugs/modalg_6/bug27260
2016-10-27 17:42:37 +03:00
ski
d26375e22c 0027514: Configuration, CMake - relative paths are not correctly handled for INSTALL_DIR
Relative path can be used as INSTALL_DIR.
2016-10-27 17:41:37 +03:00
anv
dc6ae350f3 0027971: Intersection with degenerated conical surface is translated incorrectly
Added check for infinite surfaces.
2016-10-27 17:38:41 +03:00
kgv
15173be5c9 0027960: Configuration - fix compilation of OSD_Directory with MinGW-w64
Check _NATIVE_WCHAR_T_DEFINED only within _MSC_VER since it is msvc-specific.
2016-10-27 17:30:26 +03:00
duv
be86ba90c4 0025221: Visualization - Depth test errors in ray-tracing scene containing face outlines
Calculation of polygon offset for ray tracing has been changed.
Issues with wrong data in FBO depth buffer has been resolved.
2016-10-27 17:29:00 +03:00
msv
6b8f3bdc36 0025214: HLR fails to project edges
Avoid getting non-existing array items. Use reference to array items instead of pointers where it is possible.
Create test case. Before the fix this test raised exception in debug mode.
2016-10-27 17:27:26 +03:00
nbv
95f8c6082d 0027856: Regression vs 6.7.1: General Fuse operation fails to fuse the solids
Method WorkWithBoundaries::BoundaryEstimation(...) has been brought in balance with IsParallel(...) method, which checks if cylinder axes are parallel.
2016-10-27 17:26:00 +03:00
msv
dd6b34fda4 0027782: Hidden Line Removal algorithm fails to handle filleted edges
Create test case for the bug.
Minor correction in test case bugs/modalg_6/bug27782
2016-10-27 17:24:41 +03:00
ika
9bba178dce 0027570: Unacceptable performance during reading large STEP files
Improvement of translating assemblies from STEP.
2016-10-27 17:22:41 +03:00
kgv
1beb58d745 0027764: Visualization - add functionality for animation of 3D camera and interactive objects
Added classes AIS_Animation, AIS_AnimationCamera, AIS_AnimationObjectLocatio.

Draw Harness command vanimation has been modified to manage animation timeline.
Command vfit has been extended with option -noupdate.
Formatting of vviewparams command output has been improved.
Functionality of commands vlocreset, vlocmove, vloctranslate, vlocrotate,
vlocmirror, vlocscale has been merged into vlocation/vsetlocation.
vlocation now can print the current local transformation of the object.

v3d/ivtk test group does not call vfit anymore.

Fixed misprint in test cases bugs/vis/bug24623_3 and bug25532.
2016-10-27 17:21:02 +03:00
oan
f204ec4c37 0025264: Mesh very slow for Revol shape
Test case added
Small corrections of test case
2016-10-27 17:18:42 +03:00
ski
75378f50ea 0027339: CMake install should launch generation of overview documentation
Documentation is generated automatically during build/install process
Added check of minimum Doxygen version.
Install process causes generation of Overview documentation (unless already generated) by checking of occt_logo.png file existing.
Overview project regenerates documentation if any source file was changed.
2016-10-27 17:16:42 +03:00
emv
4945db69e5 0028001: Remove unused BOPCol_VectorOfInteger.hxx
Removing the remains of BOPCol_Array1, which was replaced with BOPCol_NCVector.
2016-10-27 17:14:19 +03:00
kgv
7bbccb5f4e 0027986: Visualization - AIS_InteractiveContext::SetLocation() does not update dynamic highlighting
AIS_InteractiveContext::SetLocation() - update HilightMode instead of DisplayMode.
PrsMgr_PresentationManager::UpdateHighlightTrsf() - fix accessing NULL presentation.
2016-10-27 17:11:33 +03:00
kgv
d94bed0e26 0027988: Visualization, AIS_InteractiveContext - fix inconsistent methods for setting highlight styles
Methods ::ChangeHighlightStyle() and ::ChangeSelectionStyle() have been
replaced by ::SetHighlightStyle() and ::SetSelectionStyle().
2016-10-27 17:09:31 +03:00
ika
0b622d670d 0027934: Data Exchange - implement STEP common labels
implement import/export
update test cases
2016-10-27 17:08:04 +03:00
emv
3f317e7d0c 0027984: Volume maker algorithm is unable to build all possible solids from the given faces
While checking the section edges between pair of faces on coincidence with the
existing edges use for checking only the edges from these two faces.

Test case for the issue.
2016-10-27 17:06:03 +03:00
vpa
871dcdc201 0027969: Visualization - add interfaces to access selecting volumes from SelectMgr_SelectingVolumeManager
- getter for selection frustum computed during last run of selection mechanism was added to SelectMgr_SelectingVolumeManager;
- getters for frustum planes were added to SelectMgr_BaseFrustum and its successors;
- an API for applications to get frustum planes was added to SelectBasics_SelectingVolumeManager.
2016-10-27 17:04:44 +03:00
emv
dd115e1227 0027987: CellsBuilder algorithm does not find shared common parts of the arguments
Treatment of the possibility of shared parts has been added.
2016-10-27 17:03:24 +03:00
nds
73ddbb9acc 0027688: Visualization, AIS_Dimension - add possibility to set custom text value
Implementation of custom text in dimension presentation;
Test case is provided for this bug;
Code correction: Standard_EXPORT is removed for inline method.
Minor correction of test case bugs/vis/bug27688
2016-10-27 17:02:18 +03:00
aka
b969ebe7cf 0027769: BRepOffsetAPI_MakePipeShell produces a face based on degenerated toroidal surface
method BuildKPart was modified in order to create sphere instead of torus in case of major radius <= tolerance
Minor corrections in test case bugs/modalg_6/bug27769
2016-10-27 16:59:49 +03:00
kgv
7c3ef2f752 0024393: Visualization - objects position with enchanced precision
Graphic3d_ZLayerSettings - public fields have been replaced by methods.
Added new property Origin defining local coordinate system for all Layer objects.

Syntax of Draw Harness command VZLayer has been redesigned.

Graphic3d_CStructure now stores bounding box with double precision floats.
OpenGl_BVHTreeSelector - frustum culling now works with double precision floats.
2016-10-21 11:12:13 +03:00
kgv
ebc369da1d 0027972: Visualization - remove unused and not implemented property V3d_View::EnableGLLight() 2016-10-21 11:12:11 +03:00
oan
df18769ea6 0027959: BRepMesh_Delaun produces mesh with gaps on internal edges
Check both sides of internal link for adjusted triangle and process left and right polygons separately
Small correction of test case for issue CR27959
2016-10-21 11:12:08 +03:00
isk
caf231b050 0024291: Visualization - move Z-buffer trihedron presentation from TKOpenGl to TKV3d
Not implemented method V3d_View::TriedronEcho() and enum Aspect_TypeOfTriedronEcho have been removed.
The following methods have been removed from Graphic3d_CView class:
TriedronDisplay(), TriedronErase(), ZBufferTriedronSetup(), TriedronEcho().
New class V3d_Trihedron has been added as replacement of removed OpenGl_Trihedron
which now uses Graphic3d_TMF_TriedronPers persistence.
2016-10-21 11:12:05 +03:00
kgv
2ec85268a1 0027957: Visualization, AIS_InteractiveContext - protect from displaying the same AIS_InteractiveObject within multiple contexts
AIS_InteractiveContext methods adding object to the context now throws Standard_ProgramError exception
if object has been already displayed in another context.
AIS_InteractiveContext::Remove() now NULLifies context assigned to the object.

AIS_InteractiveContext now inherits from Standard_Transient instead of deprecated MMgt_TShared
and defines C++ destructor instead of method Delete().

AIS_InteractiveObject - undocumented property State() has been removed.
Undocumented property Users() has been moved to AIS_IdenticRelation.

Draw Harness command vclose now clear AIS_InteractiveContext content
before nullifying it to ensure that objects have been properly removed.

AIS_MultipleConnectedInteractive now overrides method ::SetContext()
to assign context for children objects.
2016-10-21 11:12:03 +03:00
kgv
1be4179947 0027961: Visualization - remove unused and no more working OpenGl_AVIWriter 2016-10-21 11:12:00 +03:00
mpv
bf95447514 0027604: Application Framework - memory is not released after closing XBF file
Virtual method *BinLDrivers_DocumentRetrievalDriver::Clear* now allows to Clear a cash data accumulated during a reading.
So, in successor class BinDrivers_DocumentRetrievalDriver this allows clearing the BinMNaming_NamedShapeDriver set of stored shapes when it is not needed anymore.
2016-10-21 11:10:44 +03:00
kgv
c8c250a59d 0027963: Coding Rules - eliminate GCC compiler warnings -Wmissing-field-initializers in OSD_File.cxx 2016-10-14 14:24:36 +03:00
kgv
8b1441e374 0027945: Visualization - handle correctly view clipping planes within zoom-persistent objects
OpenGl_Structure::Render() and SelectMgr_ViewerSelector::checkOverlap()
now clip entire zoom/rotate persistence object
by checking anchor point with global clipping planes.

Image dump has been added to the new test case.
2016-10-13 14:01:37 +03:00
kgv
a8122531ce 0027953: Foundation Classes - eliminate global variables from OSD_Path 2016-10-13 14:00:06 +03:00
kgv
922da0a825 0027931: Coding rules, Precision.hxx - eliminate dead code within PRECISION_OBSOLETE macros 2016-10-13 13:57:56 +03:00
kgv
5f4bd4d4d2 0027943: Visualization - fix broken shading by positional light for object with local transformation
OpenGl_ShaderManager, per-vertex shading and per-fragment shading
- do not apply model-world matrix on the light sources
which are expected to be defined in world-space.
2016-10-13 13:56:39 +03:00
kgv
bd6a845441 0027952: Visualization - do not reset RayTracing state on changing structures not in main Z-Layer 2016-10-13 13:55:35 +03:00
anv
bbbca107a2 0027824: Parasolid XMT file generates weird geometry after conversion
Fixed adapter for C0 offsets
2016-10-13 13:52:56 +03:00
nbv
d07a6c39cf 0027930: XMT file conversion loops infinitely
Now, the algorithm tries to estimate U- and V-ranges of future intersection curve(s) on the surface. This information is used in stop-criterium of the algorithm instead of full surface range used earlier. It allows reducing dependencies of intersection result on the surface ranges.
Tuning of test case bugs/modalg_6/bug27937_1
2016-10-13 13:49:02 +03:00
aml
d1d68ce714 0027946: Out of range item access in offset algorithm
Out of range access has been eliminated.
2016-10-13 13:46:39 +03:00
vro
c4a2f61e57 0027619: Improvement on manuipulation of data by TPrsStd_AISPresentation attribute.
The branch contains a fix on Undo/Redo for TPrsStd_AISPresentation attribute + an opportunity to deselect the interactive object.
getData() now calls FindAttribute(), the field myData disappeared.
A fix of regression on bug73_3.
A cleverer solution.
2016-10-13 13:45:25 +03:00
kgv
0f5ea4b5f8 0027941: Foundation Classes - NCollection_Vector::Iterator::offsetV() does not match NCollection_Vector::end() 2016-10-13 13:43:07 +03:00
kgv
b88b0cf7fc 0027944: Visualization, V3d_View - filter duplicates within ::AddClipPlane() 2016-10-13 13:41:36 +03:00
ski
3c1624950a 0027915: Foundation Classes - remove the class NCollection_QuickSort
Class NCollection_QuickSort was removed.
Direction of dimension lines was corrected.
Updated porting notes.
minor corrections in AIS
2016-10-13 13:40:36 +03:00
nbv
4e283d3379 0027895: Correction in the constructor Extrema_ExtElC::Extrema_ExtElC (const gp_Lin&,const gp_Lin&,const Standard_Real)
Computation algorithm is made more simple.
Adjusting some test cases according to their new behavior.
2016-10-07 13:37:35 +03:00
nbv
e146ef9a93 0026894: Intersection algorithm between two infinite cylinders is hanging
1. VRange of intersection curve has been limited. As result, too oblong intersection curve(s) will be never returned.
2. Now, purger algorithm is not called for lines obtained by Geom-Geom intersection method.
3. New statuses are entered in IntPatch_ImpImpIntersection class. It makes intersection algorithm more informative and flexible for using.
4. Method IntPatch_ImpImpIntersection::GetStatus() has been created.

Tuning of test case bugs modalg_6/bug26894
2016-10-07 13:37:33 +03:00
nbv
d30895f5da 0023178: Intersection of cylinders fails to produce results
1. Unification of trimmed and not-trimmed cylinders processing (IntPatch_Intersection::GeomGeomPerfomTrimSurf() method has been removed).
2. Interface of IntPatch_ImpImpIntersection::Perform(...) method has been changed.
3. Now, WLine purging is forbidden for Geom-Geom-Intersection.
4. Bnd_Range class has been created. See Bnd_Range.hxx for detail information.
5. Algorithm of AddBoundaryPoint function has been improved in order to obtain intersection points in both boundaries (VFirst and VLast of every surface).
6. Earlier, method Geom2dConvert::ConcatG1(...) increased resulted B-spline degree (in case of not succession of previous iteration). Now increased value has been limited by Geom2d_BSplineCurve::MaxDegree() value (max degree = 25).
7. Algorithm of B-spline closure definition has been changed in the methods Geom2dConvert::C0BSplineToC1BSplineCurve(...) and Geom2dConvert::C0BSplineToArrayOfC1BSplineCurve(...).

Creation of test case for this issue.
Adjusting test cases according to their new behavior.

Small correction in the code according to KGV's remark.
2016-10-07 13:37:31 +03:00
apn
fe4fc02d7b 0027864: Add vtk support to products java wrapper
Fix redefinition IVtkVTK_EXPORT error during wrapping in products java sample.
Removed defined(__WIN32__)
2016-10-06 12:36:21 +03:00
ski
90b858262b 0027905: Visualization - randomly directed arrows on test v3d mesh B7
Behaviour of command meshvectors is stable now.
It shows default vector (0,0,1) for volume entity.
Test cases for issue CR27905
2016-10-06 12:31:34 +03:00
nbv
95ae6ebb1b 0027929: Methods D0 and D1 for trimmed offset surface return different values if the surface has osculating surface
Using osculating surface is forbidden if the normal to basis (for offset) surface is well defined.

Creation of test case for this issue.
Adjusting test cases according to their new behavior.
2016-10-06 12:27:40 +03:00
nbv
41ce5887ad 0027892: Construction error in offset
Provide proper initialization of the field Geom_OffsetSurface::myOscSurf in the case of creating offset of the trimmed bspline surface.

Adjusting test cases according to their new behavior.
2016-10-06 12:26:21 +03:00
kgv
88e55ec7ef 0024073: Coding rules - ambiguous call to overloaded function StdPrs_DeflectionCurve::Match()
Default parameters values have been removed from the methods
StdPrs_DeflectionCurve::Match() to avoid ambiguity.
2016-10-06 12:21:18 +03:00
dbp
d877e61038 0027899: Visualization, Ray Tracing - Provide ability to rebuild GLSL shaders on the fly
For debugging and performance analysis it is reasonable to provide the ability to rebuild ray tracing shaders on the fly.
In this way, it will be possible to analyze the impact of different shaders modifications
without re-launching and re-configuring the scene.
This functionality can be used in the following way:
> vrenderparams -rebuild
2016-10-06 12:19:06 +03:00
kgv
ede89abcb9 0027916: Visualization - access violation occurs within AIS_ColoredShape::Compute() for NULL shape
AIS_ColoredShape::Compute() - add NULL shape check.
AIS presentations - removed redundant clearance within ::Compute()
which is always done in advance within PrsMgr_PresentationManager::Update().
2016-10-06 12:16:28 +03:00
kgv
b2bafb33a9 0027883: Visualization - AIS_InteractiveContext::IsDisplayed() does not return displayed state for specified Display Mode 2016-09-30 11:19:19 +03:00
isn
ece3f95012 0027890: BndLib_Add2dCurve::Add(..) works incorrect on some curves
Draw Harness command 'gbounding' has been extended
to pass curve2d as args and to work in two modes ('normal' and optimal).
2016-09-30 11:17:21 +03:00
msv
c58b30780a 0027888: Fuse of valid untouched solids leads to result with faulties
Incorrect result of classification of a point relatively a solid leads to faulty interferences between vertices/edges of one solid with another one.  Classification has been corrected by checking if an auxiliary point in face coincides with the face boundary in 3D space.

Test case has been created.
2016-09-30 11:17:20 +03:00
abv
c381fda2d6 0027713: Test bugs fclasses bug6143 is not OK for Linux after restoring FPS (26329)
Use standard (POSIX-compliant) macro "__linux__" for identification of Linux system, instead of obsolete "linux"
2016-09-30 11:17:19 +03:00
ifv
f4dee9bb20 0026329: Restore floating point signals handling in DRAW
Added DRAW command dsetsignal, resetting OSD signal handler with either armed or disabled FPE handler, according to an option.
If called without arguments, it sets FPE handler only if environment variable OSD_FPE is defined (with value different from 0).
On start, DRAW calls dsetsignal to set FPE signal if CSF_FPE is defined.
Test bugs fclasses bug6143 uses dsetsignal to set FPE handler unconditionally before the test command, and resets it to default at the end.

A number of changes in the code have been done in order to fix floating point exceptions that became generated after enabling signals:

- Global functions Sinh() and Cosh() defined in Standard_Real.hxx are improved to raise Standard_NumericError exception if argument is too big (greater than 710.47586), instead of relying on system treatment of floating point overflow. These functions are used instead of sinh and cosh in ElCLib.cxx.

- Maximal value of parameter on hyperbola is restricted by 23 (corresponding to ~1e10 in 3d) in order to avoid FP overflow in Extrema_GenExtCS.cxx, ShapeFix_EdgeProjAux.cxx.

- Interface of the root curve adaptor class Adaptor3d_Curve has been updated to add new virtual methods BasisCurve and OffsetValue. They complement the adaptor for the case of offset curves. These methods are used in Extrema_GenExtCS.cxx to restrict domain search in the case of offset of hyperbola, in order to get rid of floating point overflow. All classes inheriting Adaptor3d_Curve have been changed to implement the new virtual methods.

- Protection against division by zero has been implemented in ApproxInt_KnotTools.cxx, BRepClass3d_SClassifier.cxx, BRepGProp_Face.cxx, BRepMesh_FastDiscretFace.cxx, Geom2dGcc_Circ2d2TanOnIter.cxx, Geom2dInt_Geom2dCurveTool.cxx, IntPolyh_MaillageAffinage.cxx.

- Protection against calling of math functions of infinite arguments has been added in BRepCheck_Edge.cxx, BRepLib.cxx, CSLib_NormalPolyDef.cxx, Extrema_FuncExtPC.gxx, Extrema_GExtPC.gxx, Extrema_GLocateExtPC.gxx, Intf_InterferencePolygonPolyhedron.gxx, ShapeAnalysis_Surface.cxx, ShapeAnalysis_TransferParametersProj.cxx, ShapeAnalysis_Wire.cxx, math_FunctionSetRoot.cxx.

- Proper initialization of local variables is done in BOPAlgo_PaveFiller_6.cxx, XSDRAWSTLVRML.cxx.

- Inconsistent usage of Standard_Boolean* to access integer data in HLR (caused by #27772) is corrected

Some test cases have been updated to actual state.
2016-09-30 11:17:17 +03:00
abv
73594f7248 0027901: Resource_Manager creates directory with insufficient permissions
Resource_Manager now sets RWXD permissions for the created directories to allow their removal.
Method OSD_Directory::Build() will create intermediate directories if they do not exist yet.
OSD_FileNode is corrected to clean error status in method Exists().

Tests bugs fclasses bug181_1 and bug181_2 are corrected to check existence of generated resource files; TODO is removed in bug181_2.
2016-09-30 11:17:16 +03:00
abv
3a5a656c15 0027794: A danger in the 'NCollection_Vector' initializing constructor
Constructor of NCollection_Vector is now declared as explicit.
2016-09-30 11:17:15 +03:00
vpa
0d5880e11a 0027893: Visualization - AIS_InteractiveContext::SetSelected does not work
- misprint in check of global selection existence in AIS_InteractiveContext::SetSelected was corrected;
- remaining occurrencies of hard-coded 0 selection mode were corrected to use global selection mode;
- test case for issue #27983
2016-09-30 11:17:13 +03:00
kgv
949c9b7f28 0027891: Visualization - FPE due to use of DBL_MAX in SelectMgr_SelectingVolumeManager::DetectedPoint() 2016-09-30 11:17:12 +03:00
vpa
8e5fb5eabc 0027818: Visualization - provide an interface to define highlight presentation properties
- introduces a wrapper for setting up highlight properties: Graphic3d_HighlightStyle;
- API of all methods that use highlight or selection color is changed to deal with Graphic3d_HighlightStyle;
- highlight in shading mode now supports transparency, implemented via blending;
- transparency for selection can also be set, but implementing custom entity owners with additional presentation on application level;
- methods PrsMgr_PresentationManager::Highlight, PrsMgr_PresentationManager::BoundBox that highlight object with hard-coded color are removed;
- deprecated methods of SelectMgr_EntityOwner, that use presentation manager's highlight method, were removed;
- methods of IsHilighted AIS context with selection color checks were replaced;
- added API to store dynamic and selection highlight to Prs3d_Drawer class;
- customization of dynamic and selection highlight for particular objects is now available through SelectMgr_SelectableObject::HilightAttributes();
- AIS_InteractiveContext highlight methods were updated to support individual highlight styles of interactive objects;
- introduced new command - vselprops, that allows to customize global selection and highlight properties like autoactivation, pixel tolerance and colors;
- Draw Harness commands vautoactivatesel and vselprecision were removed, use vselprops instead;
- fixed bug in command's parser;
- test case for issue #27818
2016-09-30 11:17:11 +03:00
dbp
3a9b5dc86a 0027607: Visualization - Implement adaptive screen space sampling in path tracing
This commit provides useful functionality for path tracing rendering core.

1) Graphic3d_RenderingParams class was extended with additional AdaptiveScreenSampling option (disabled by default).
   If this option is enabled, path tracing tries to adjust the number of samples for different screen areas.

   In this way, the more complex areas (from the point of light conditions) are sampled more intensively,
   while the simple areas are sampled very rarely.
   For example, caustics and glossy reflections are typical candidates for more precise sampling.

   In general, this allows to equalize image convergence and not to waste resources for already converged areas.
   It is also possible to visualize sampling densities by enabling ShowSamplingTiles option
   (activating and deactivating this option does not affect on the accumulated image).

2) Mixing OpenGL and ray-tracing output has been changed.
   Now blending is performed using OpenGL functionality, while ray-tracing shaders only output correct Z-value.

Test case bugs vis bug27083 has been updated,
since the alpha value is now correctly set by Ray-Tracing to 1, opaque.
2016-09-30 11:17:10 +03:00
kgv
6a24c6ded9 0027900: Coding rules - drop redundant Name parameter from V3d_Viewer constructor
Removed unused methods AIS_InteractiveContext::DomainOfMainViewer(),
V3d_Viewer::NextName(), V3d_Viewer::Domain().

NCollection_List - added methods Contains() and Remove() taking item value.
V3d_Viewer now uses V3d_ListOfLight, V3d_ListOfView instead of V3d_ListOfTransient.

Removed obsolete ZFit workaround from command XShow.
2016-09-30 11:16:53 +03:00
kgv
1f7f5a900f 0025180: Visualization - Homogeneous transformation API in TKV3d
PrsMgr_PresentableObject, Graphic3d_Structure now consistently
take and store Handle(Geom_Transformation) instead of
TColStd_Array2OfReal / Graphic3d_Mat4.
Low-level advanced methods have been modified to pass Handle(Geom_Transformation).
High-level methods have been preserved accepting old syntax taking gp_Trsf.

Geom_Transformation now inlines most methods.
2016-09-30 09:43:26 +03:00
kgv
778cd66786 0027860: Visualization - clean up Transformation Persistence API
Graphic3d_Camera::TransformMatrices redundant NCollection_Handle usage
has been replaced with validity flags.

Graphic3d_TransModeFlags now defined as enumeration, not integer bit flags.
Graphic3d_TMF_PanPers and Graphic3d_TMF_FullPers have been removed.
Graphic3d_TMF_ZoomRotatePers has been introduced.

Graphic3d_TransformPers is now inherits Standard_Transient.
Graphic3d_TransformPers now defines dedicated constructors
for 3D persistence (zoom / rotate) and 2D persistence (2d / trihedron).
2D persistence now supports dedicated values for X and Y offsets.
The corner is now specified by enumeration Aspect_TypeOfTriedronPosition
instead of indirect interpretation of anchor point values.
Fixed handling of Graphic3d_TMF_ZoomRotatePers (combination of Graphic3d_TMF_RotatePers + Graphic3d_TMF_ZoomPers).

PrsMgr_PresentableObject, Graphic3d_CStructure now hold
Handle(Graphic3d_TransformPers) instead of a value.
Method ::SetTransformPersistence(), ::TransformPersistence()
now works with Handle(Graphic3d_TransformPers).
Old methods have been marked deprecated.
2016-09-30 09:43:12 +03:00
aml
27ba9c6006 0027696: Return max distance in xdistcs Draw command
Message about maximal distance is added for xdistcs command.
2016-09-30 09:15:32 +03:00
nbv
e8e26df06c 0027873: Exception is raised in BRepFill_Filling::FindExtremitiesOfHoles()
The reason of exception has been eliminated.
Creation of the test case for this issue.
Correction of unstable test case.

Some test cases have been adjusted according to their new behavior.
2016-09-23 09:57:52 +03:00
kgv
14cb22a1a4 0027879: Draw Harness, ViewerTest - disable VSync within non-interactive mode 2016-09-23 09:57:51 +03:00
jgv
8d795b5130 0027720: HLRBrep_Algo BSpline missing edges
The algorithm that builds outlines ("silhouettes") makes an outline in 2d parametric space of the surface starting from some previously detected point where normal is orthogonal to direction of view. So, the surface is previously discretized into (m*n) sample points and some of them become starting points for future outlines.

    If the surface has non-uniform parametrization and/or some local extremums of curvature, the outlines can not be built without breaks, so there are several groups of consequent outlines in this case. Unfortunately, it leads to the situation when current number of sample points becomes insufficient to build all the parts of outlines.

    The idea is to detect the "holes" between already constructed parts of outlines and then complete the construction.

New auxiliary draw command for testing of HLR.

Correction according to the remarks.

Update of test case according to the developer's directive
2016-09-23 09:57:50 +03:00
bugmaster
b1c5466550 0006768: Problems making offset wires
Adding testing case
2016-09-23 09:57:48 +03:00
kgv
e620e2857f 0027880: Samples - fix handling of Unicode paths within MFC import/export sample 2016-09-23 09:57:47 +03:00
bugmaster
b357dcc225 0014531: Boolean Operation Algorithm fails
Adding test case
2016-09-23 09:57:46 +03:00
nbv
84bd25527c 0027875: GeomFill_NSections constructor crash on sequence of curve containing only one curve
The GeomFill_NSections algorithm cannot create any surface from sequence with single curve only.

Therefore, return is provided in corresponding place of the code. Additionally, some public methods of GeomFill_NSections class checks if the surface has been created earlier.

Test case for this issue has been created.

Compiler error has been eliminated.
2016-09-22 12:27:14 +03:00
jgv
5da005403b 0027822: Exception access violation is raised in BRepOffsetAPI_MakePipeShell during of build
New public method IsDone() is added to abstract class BRepFill_SectionLaw.

Test case bugs/modlag_6/bug27822 has been added
2016-09-22 12:26:07 +03:00
bugmaster
aea33d0ab8 0010234: BRepOffsetAPI_MakePipeShell fails on spine built from two segments and profile built from arc
Adding testing case
2016-09-22 12:19:45 +03:00
rkv
a2f76b15f1 0027567: VIS - possible memory leaks due to use of plain pointers: Fix also the VIS guide. Add the test v3d/ivtk/bug27567. Add a draw command "ivtkremove".
0027734: Configuration - TKIVtkDraw build fails with TBB: Remove unnecessary define statement (windows specific).

Small correction of test case for issue CR27567
2016-09-22 12:14:30 +03:00
kgv
fb0b05319f 0027838: Foundation Classes - support wchar_t* input within TCollection_AsciiString and TCollection_ExtendedString
TCollection_ExtendedString/TCollection_AsciiString description
has been updated to reflect usage of this classes for Unicode strings.

TCollection_ExtendedString now defines constructor taking wchar_t* (all platforms)
and method ::ToWideString() returning wchar_t* (Windows only).
TCollection_AsciiString now defines constructor taking wchar_t*.

TCollection_ExtendedString/TCollection_AsciiString now defines
auxiliary methods ::StartsWith() and ::EndsWith().

TCollection_ExtendedString internals has been updated to eliminate
duplicated code for converting between UTF-16 and UTF-8.

Code has been cleaned up from redundant explicit conversions to wchar_t*.
Global method OSD_OpenStream()/OSD_OpenFileBuf() have been replaced
by C++ template to eliminate copy-paste for different STL collections.

OSD_SharedLibrary now uses wide-char system API call LoadLibraryExW()
on Windows for consistency.

New macro Standard_UNUSED has been added for marking possibly unused functions and variables
(to suppress gcc/clang compiler warnings).
2016-09-15 12:33:55 +03:00
ika
935069d23d 0027808: Some geometric_tolerances are not imported.
Process datum_feature entity during collecting shape_aspects of GDT.
Update test cases.
2016-09-15 12:22:16 +03:00
msv
14ea8abd0a 0027830: Infinite HLR looping
Make protection of HLR algo against garbage data in faces. In particular case, there are faces built on a periodical surfaces, which U bounds exceed period thousands times. Such faces are excluded from the process of edges hiding.

In addition, while fitting the intersection point in period for periodical faces, replace looping with the single call to AdjustPeriodic method.

- Add new test case.
- Update tests of HLR according to new numbers of subshapes.

Update of test cases according to the new behavior
2016-09-15 12:19:52 +03:00
Sergey Solomin
4aaadad7bc 0027867: Visualization - AIS_InteractiveContext::HasSelectedShape() returns true if selected interactive is instance of AIS_Shape only 2016-09-15 12:16:18 +03:00
kgv
49e5d23824 0027861: Configuration - include ApplicationFramework to UWP list 2016-09-15 12:14:31 +03:00
bugmaster
46f4a251a0 0022037: Exception (Construction Error) during splitting face with hole by another face
Adding test case
2016-09-15 12:13:18 +03:00
bugmaster
d0aafb064b 0025138: SIGSEGV when sweeping along helix
Adding test case
2016-09-15 12:11:58 +03:00
kgv
3202bf1e9e 0027816: Visualization - provide an API for overriding clipping planes list
Graphic3d_SequenceOfHClipPlane now inherits Standard_Transient.
PrsMgr_PresentableObject, Graphic3d_Structure, Graphic3d_CStructure,
V3d_View, OpenGl_View now manages the plane list by Handle.
The getters ::GetClipPlanes() has been removed,
setters taking non-handle ::SetClipPlanes() has been marked deprecated.

OpenGl_Structure::Render() and SelectMgr_ViewerSelector::checkOverlap()
now disable global (view) clipping planes for objects
with flags Graphic3d_TMF_TriedronPers and Graphic3d_TMF_2d
or with new flag Graphic3d_SequenceOfHClipPlane::ToOverrideGlobal().

OpenGl_Clipping now implements interface for managing clipping planes
without copying the sequences.
The filtering of duplicates is no more performed by OpenGl_Clipping
- application is responsible to not do this.
OpenGl_Clipping tries avoiding unnecessary allocations for managing
list of active planes.

MFC sample has been updated to use V3d_View::ClipPlanes() method.
2016-09-15 12:09:20 +03:00
msv
ef444297f5 0027862: Exception in BRepOffsetAPI_MakePipeShell
Check if the shape is not null before querying its ShapeType.
Create test case for the bug.

Small correction of test case for issue CR27862
2016-09-15 12:04:32 +03:00
kgv
4897e58dcd 0027854: Foundation Classes - OSD_Parallel::NbLogicalProcessors() should handle Android specifically
Read CPU info from sysfs.
2016-09-15 11:55:53 +03:00
kgv
70ca46fecc 0027844: Foundation Classes - remove method OSD_File::Print() 2016-09-15 11:53:32 +03:00
kgv
d2edda76a9 0027853: Visualization, OpenGl_Texture - optimize sequential upload of texture image
Graphic3d_TextureRoot - added methods Revision() and UpdateRevision()
for marking updates in texture data source.
OpenGl_AspectFace handles Graphic3d_TextureRoot::Revision() changes.
OpenGl_Texture::Init() now patches already allocated texture image when possible.

Graphic3d_Texture2D - added methods HasMipMaps()/SetMipMaps()
for configuring MipMap usage (as alternative to sub-classing).
2016-09-15 11:50:32 +03:00
nbv
c204d492ae 0027851: Wrong result of classification of the point relative to the solid
Test case creation.
2016-09-15 11:38:53 +03:00
razmyslovich
a165f00280 0027863: Geom_BSplineSurface::SetVKnot(const Standard_Integer, const Standard_Real) has no effect
Fix Geom_BSplineSurface::SetVKnot function to have the same behavior as SetUKnot.
2016-09-15 11:36:45 +03:00
apl
099f351396 0027739: Visualization, TKV3d - implement individual acceleration data structure for selection of 2D persistent objects
Low-level selection algorithms has been improved to explicitly support 2D
transformation persistent objects. This patch generally touches:

1) SelectMgr_SelectableObjectSet - the lists of objects has been split onto three
subsets (regular, 3d-persistent, 2d-persistent). Each subset has individual BVH
tree. The algorithms are now have more flexibility to update only those trees
that is really required for actual camera state.

2) SelectMgr_ViewerSelector - explicitly supports Eye space selection operations
on BVH tree for 2d-persistent subset. Change of camera position does not
anymore affect acceleration data structure (BVH tree) of 2d-persistent selectable objects.

3) Other classes from SelectMgr have been fine-tuned to provide appropriate API.

Porting notes:

This patch touches very low-level selection classes. If the low-level features were used
the following modifications may need to be considered for porting:

1) Iteration over objects of SelectMgr_SelectableObjectSet should now
be implemented with corresponding Iterator class.

2) SelectMgr_BaseFrustum::ScaleAndTransform and derived classes return
Handle(SelectMgr_BaseFrustum) instead of NCollection_Handle<> type.

Small correction of test case for issue CR27739
2016-09-15 11:35:10 +03:00
ika
c10703215e 0027313: Exception during WriteStep with PMI
Add check for datum position during export of datum_system
Add Draw commands for set/get datum position
update test cases

Correction of case bugs/step/bug27313
2016-09-15 11:30:46 +03:00
bugmaster
7b3aef359f 0025423: Incorrect result of splitting some shapes
Adding testing case
2016-09-15 11:20:16 +03:00
bugmaster
15b9dfc95d 0022609: Cut operation between two solids produces not valid shape
Adding test case
2016-09-15 11:18:16 +03:00
bugmaster
849c137461 0022454: Export /Import of valid model leads to lost of tolerances
Adding testing case
2016-09-15 11:16:18 +03:00
1794 changed files with 52302 additions and 35257 deletions

View File

@@ -52,6 +52,9 @@ set_property (GLOBAL PROPERTY OCC_VERSION_MAINTENANCE ${OCC_VERSION_MAINTENANCE}
set (INSTALL_TEST_CASES OFF CACHE BOOL "${INSTALL_TEST_CASES_DESCR}")
# Regeneration of OCCT resource files
set (BUILD_RESOURCES OFF CACHE BOOL "${BUILD_RESOURCES_DESCR}")
# single-configuration generator
set (SINGLE_GENERATOR OFF)
if (CMAKE_BUILD_TYPE)
@@ -285,13 +288,16 @@ if (NOT DEFINED INSTALL_DIR_CMAKE)
endif()
endif()
# include occt macros
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_resources")
# install LICENSE_LGPL_21.txt and OCCT_LGPL_EXCEPTION.txt files
if ("${INSTALL_DIR_LAYOUT}" STREQUAL "Unix")
OCCT_INSTALL_FILE_OR_DIR ("LICENSE_LGPL_21.txt" "${INSTALL_DIR}/${INSTALL_DIR_DOC}")
OCCT_INSTALL_FILE_OR_DIR ("OCCT_LGPL_EXCEPTION.txt" "${INSTALL_DIR}/${INSTALL_DIR_DOC}")
OCCT_INSTALL_FILE_OR_DIR ("LICENSE_LGPL_21.txt" "${INSTALL_DIR_DOC}")
OCCT_INSTALL_FILE_OR_DIR ("OCCT_LGPL_EXCEPTION.txt" "${INSTALL_DIR_DOC}")
else()
OCCT_INSTALL_FILE_OR_DIR ("LICENSE_LGPL_21.txt" "${INSTALL_DIR}")
OCCT_INSTALL_FILE_OR_DIR ("OCCT_LGPL_EXCEPTION.txt" "${INSTALL_DIR}")
OCCT_INSTALL_FILE_OR_DIR ("LICENSE_LGPL_21.txt" ".")
OCCT_INSTALL_FILE_OR_DIR ("OCCT_LGPL_EXCEPTION.txt" ".")
endif()
if(APPLE)
@@ -340,6 +346,10 @@ if (ANDROID AND BUILD_MODULE_Draw)
message (STATUS "Info. Draw module is turned off due to it is not supported on Android")
set (BUILD_MODULE_Draw OFF CACHE BOOL "${BUILD_MODULE_Draw_DESCR}" FORCE)
endif()
if ("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore" AND BUILD_MODULE_Draw)
message (STATUS "Info. Draw module is turned off due to it is not supported on UWP")
set (BUILD_MODULE_Draw OFF CACHE BOOL "${BUILD_MODULE_Draw_DESCR}" FORCE)
endif()
# Overview
if (NOT DEFINED BUILD_DOC_Overview)
@@ -580,11 +590,11 @@ if (BUILD_DOC_Overview)
endif()
if (INSTALL_DOC_Overview)
install (DIRECTORY "${CMAKE_BINARY_DIR}/doc/overview" DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_DOC}")
install (DIRECTORY "${CMAKE_BINARY_DIR}/doc/overview" DESTINATION "${INSTALL_DIR_DOC}")
# create overview.html only for windows
if (WIN32 AND "${INSTALL_DIR_LAYOUT}" STREQUAL "Windows")
OCCT_INSTALL_FILE_OR_DIR ("dox/resources/overview.html" "${INSTALL_DIR}/${INSTALL_DIR_DOC}/..")
OCCT_INSTALL_FILE_OR_DIR ("dox/resources/overview.html" "${INSTALL_DIR_DOC}/..")
endif()
endif()
@@ -671,6 +681,12 @@ COLLECT_AND_INSTALL_OCCT_HEADER_FILES ("${CMAKE_BINARY_DIR}" "${BUILD_TOOLKITS}"
string(TIMESTAMP CURRENT_TIME "%H:%M:%S")
message (STATUS "Info: \(${CURRENT_TIME}\) End the collecting")
list (FIND BUILD_TOOLKITS DRAWEXE DRAWEXE_INDEX)
if (${DRAWEXE_INDEX} GREATER -1)
OCCT_INSTALL_FILE_OR_DIR ("data/" "${INSTALL_DIR_DATA}")
OCCT_INSTALL_FILE_OR_DIR ("samples/tcl" "${INSTALL_DIR_SAMPLES}")
endif()
if (WIN32)
set (SCRIPT_EXT bat)
else()
@@ -678,45 +694,51 @@ else()
endif()
# OCCT samples
# get absolute path from INSTALL_DIR
set (INSTALL_DIR_ABSOLUTE "${INSTALL_DIR}")
if(NOT IS_ABSOLUTE "${INSTALL_DIR_ABSOLUTE}")
get_filename_component(INSTALL_DIR_ABSOLUTE "${CMAKE_BINARY_DIR}/${INSTALL_DIR}" ABSOLUTE)
endif()
if (INSTALL_SAMPLES)
OCCT_CONFIGURE ("adm/templates/env.samples.${SCRIPT_EXT}.in" "env.samples.${SCRIPT_EXT}")
if (WIN32)
OCCT_INSTALL_FILE_OR_DIR ("samples/CSharp" "${INSTALL_DIR}/${INSTALL_DIR_SAMPLES}")
OCCT_INSTALL_FILE_OR_DIR ("samples/mfc" "${INSTALL_DIR}/${INSTALL_DIR_SAMPLES}")
OCCT_INSTALL_FILE_OR_DIR ("samples/CSharp" "${INSTALL_DIR_SAMPLES}")
OCCT_INSTALL_FILE_OR_DIR ("samples/mfc" "${INSTALL_DIR_SAMPLES}")
if ("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore")
OCCT_INSTALL_FILE_OR_DIR ("samples/xaml" "${INSTALL_DIR}/${INSTALL_DIR_SAMPLES}")
OCCT_INSTALL_FILE_OR_DIR ("samples/xaml" "${INSTALL_DIR_SAMPLES}")
endif()
install (FILES "${CMAKE_BINARY_DIR}/env.samples.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_SAMPLES}/CSharp" RENAME "env.${SCRIPT_EXT}")
install (FILES "${CMAKE_BINARY_DIR}/env.samples.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_SAMPLES}/mfc/standard" RENAME "env.${SCRIPT_EXT}")
install (FILES "${CMAKE_BINARY_DIR}/env.samples.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SAMPLES}/CSharp" RENAME "env.${SCRIPT_EXT}")
install (FILES "${CMAKE_BINARY_DIR}/env.samples.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SAMPLES}/mfc/standard" RENAME "env.${SCRIPT_EXT}")
endif()
OCCT_INSTALL_FILE_OR_DIR ("samples/java" "${INSTALL_DIR}/${INSTALL_DIR_SAMPLES}")
OCCT_INSTALL_FILE_OR_DIR ("samples/ocafsamples" "${INSTALL_DIR}/${INSTALL_DIR_SAMPLES}")
OCCT_INSTALL_FILE_OR_DIR ("samples/qt" "${INSTALL_DIR}/${INSTALL_DIR_SAMPLES}")
OCCT_INSTALL_FILE_OR_DIR ("samples/java" "${INSTALL_DIR_SAMPLES}")
OCCT_INSTALL_FILE_OR_DIR ("samples/ocafsamples" "${INSTALL_DIR_SAMPLES}")
OCCT_INSTALL_FILE_OR_DIR ("samples/qt" "${INSTALL_DIR_SAMPLES}")
install (FILES "${CMAKE_BINARY_DIR}/env.samples.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_SAMPLES}/qt/FuncDemo" RENAME "env.${SCRIPT_EXT}")
install (FILES "${CMAKE_BINARY_DIR}/env.samples.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_SAMPLES}/qt/IESample" RENAME "env.${SCRIPT_EXT}")
install (FILES "${CMAKE_BINARY_DIR}/env.samples.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_SAMPLES}/qt/Tutorial" RENAME "env.${SCRIPT_EXT}")
install (FILES "${CMAKE_BINARY_DIR}/env.samples.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SAMPLES}/qt/FuncDemo" RENAME "env.${SCRIPT_EXT}")
install (FILES "${CMAKE_BINARY_DIR}/env.samples.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SAMPLES}/qt/IESample" RENAME "env.${SCRIPT_EXT}")
install (FILES "${CMAKE_BINARY_DIR}/env.samples.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SAMPLES}/qt/Tutorial" RENAME "env.${SCRIPT_EXT}")
endif()
if (INSTALL_TEST_CASES)
OCCT_INSTALL_FILE_OR_DIR ("tests/" "${INSTALL_DIR}/${INSTALL_DIR_TESTS}")
OCCT_INSTALL_FILE_OR_DIR ("tests/" "${INSTALL_DIR_TESTS}")
endif()
list (FIND BUILD_TOOLKITS DRAWEXE DRAWEXE_INDEX)
if (${DRAWEXE_INDEX} GREATER -1)
# copy data and samples/tcl folders to install script folder
OCCT_INSTALL_FILE_OR_DIR ("data/" "${INSTALL_DIR}/${INSTALL_DIR_DATA}")
OCCT_INSTALL_FILE_OR_DIR ("samples/tcl" "${INSTALL_DIR}/${INSTALL_DIR_SAMPLES}")
OCCT_INSTALL_FILE_OR_DIR ("data/" "${INSTALL_DIR_DATA}")
OCCT_INSTALL_FILE_OR_DIR ("samples/tcl" "${INSTALL_DIR_SAMPLES}")
# copy draw script to install script folder
if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/adm/templates/draw.${SCRIPT_EXT}")
install (FILES "${BUILD_PATCH}/adm/templates/draw.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_SCRIPT}"
install (FILES "${BUILD_PATCH}/adm/templates/draw.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SCRIPT}"
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_WRITE WORLD_EXECUTE)
else()
install (FILES "${CMAKE_SOURCE_DIR}/adm/templates/draw.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_SCRIPT}"
install (FILES "${CMAKE_SOURCE_DIR}/adm/templates/draw.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SCRIPT}"
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_WRITE WORLD_EXECUTE)
endif()
@@ -740,18 +762,18 @@ if (EXISTS "${INSTALL_DIR}/${INSTALL_DIR_SCRIPT}/custom.${SCRIPT_EXT}")
file (WRITE "${INSTALL_DIR}/${INSTALL_DIR_SCRIPT}/custom.${SCRIPT_EXT}" "${CUSTOM_CONTENT}")
else()
OCCT_CONFIGURE_AND_INSTALL ("adm/templates/custom.${SCRIPT_EXT}.main" "custom.${SCRIPT_EXT}" "custom.${SCRIPT_EXT}" "${INSTALL_DIR}/${INSTALL_DIR_SCRIPT}")
OCCT_CONFIGURE_AND_INSTALL ("adm/templates/custom.${SCRIPT_EXT}.main" "custom.${SCRIPT_EXT}" "custom.${SCRIPT_EXT}" "${INSTALL_DIR_SCRIPT}")
endif()
# write current custom.bat/sh (for install directory)
set (SUB_CUSTOM_BUILD_NAME "custom_${COMPILER}_${COMPILER_BITNESS}.install.${SCRIPT_EXT}")
OCCT_CONFIGURE_AND_INSTALL ("adm/templates/custom.install.${SCRIPT_EXT}.in" "${SUB_CUSTOM_BUILD_NAME}" "${SUB_CUSTOM_NAME}" "${INSTALL_DIR}/${INSTALL_DIR_SCRIPT}")
OCCT_CONFIGURE_AND_INSTALL ("adm/templates/custom.install.${SCRIPT_EXT}.in" "${SUB_CUSTOM_BUILD_NAME}" "${SUB_CUSTOM_NAME}" "${INSTALL_DIR_SCRIPT}")
# write current custom.bat/sh (for build directory)
OCCT_CONFIGURE ("adm/templates/custom.build.${SCRIPT_EXT}.in" "${SUB_CUSTOM_NAME}")
if (BUILD_MODULE_MfcSamples)
OCCT_INSTALL_FILE_OR_DIR ("adm/templates/sample.bat" "${INSTALL_DIR}/${INSTALL_DIR_SCRIPT}")
OCCT_INSTALL_FILE_OR_DIR ("adm/templates/sample.bat" "${INSTALL_DIR_SCRIPT}")
OCCT_COPY_FILE_OR_DIR ("adm/templates/sample.bat" "${CMAKE_BINARY_DIR}")
endif()
@@ -759,7 +781,7 @@ endif()
OCCT_CONFIGURE ("adm/templates/env.${SCRIPT_EXT}.in" "env.${SCRIPT_EXT}")
# install env script
install (FILES "${CMAKE_BINARY_DIR}/env.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_SCRIPT}")
install (FILES "${CMAKE_BINARY_DIR}/env.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SCRIPT}")
# copy DrawAppliInit from OCCT source to build directory
if (NOT EXISTS "${CMAKE_BINARY_DIR}/DrawAppliInit")
@@ -772,9 +794,9 @@ foreach(RESOURCE ${RESOURCES})
get_filename_component(RESOURCE_FOLDER ${RESOURCE} DIRECTORY)
if(NOT "${RESOURCE_FOLDER}" STREQUAL "")
get_filename_component(RESOURCE_FOLDER ${RESOURCE_FOLDER} NAME)
OCCT_INSTALL_FILE_OR_DIR ("src/${RESOURCE}" "${INSTALL_DIR}/${INSTALL_DIR_RESOURCE}/${RESOURCE_FOLDER}")
OCCT_INSTALL_FILE_OR_DIR ("src/${RESOURCE}" "${INSTALL_DIR_RESOURCE}/${RESOURCE_FOLDER}")
else()
OCCT_INSTALL_FILE_OR_DIR ("src/${RESOURCE}" "${INSTALL_DIR}/${INSTALL_DIR_RESOURCE}")
OCCT_INSTALL_FILE_OR_DIR ("src/${RESOURCE}" "${INSTALL_DIR_RESOURCE}")
endif()
endforeach()
@@ -929,7 +951,7 @@ endif()
# Configure and install cmake config file
configure_file("${CMAKE_SOURCE_DIR}/adm/templates/OpenCASCADEConfig.cmake.in" "OpenCASCADEConfig.cmake" @ONLY)
install(FILES "${CMAKE_BINARY_DIR}/OpenCASCADEConfig.cmake" DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_CMAKE}")
install(FILES "${CMAKE_BINARY_DIR}/OpenCASCADEConfig.cmake" DESTINATION "${INSTALL_DIR_CMAKE}")
# Configure cmake version file
include(CMakePackageConfigHelpers)
@@ -938,7 +960,7 @@ write_basic_package_version_file( ${CMAKE_BINARY_DIR}/OpenCASCADEConfigVersion.c
COMPATIBILITY ExactVersion )
# Install cmake version file
install (FILES "${CMAKE_BINARY_DIR}/OpenCASCADEConfigVersion.cmake" DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_CMAKE}")
install (FILES "${CMAKE_BINARY_DIR}/OpenCASCADEConfigVersion.cmake" DESTINATION "${INSTALL_DIR_CMAKE}")
# Install the export set for use with the install-tree for each configuration
foreach (OCCT_MODULE ${OCCT_MODULES_ENABLED})

View File

@@ -6,6 +6,5 @@ Shaders
XSMessage
XSTEPResource
XmlOcafResource
UnitsAPI/Lexi_Expr.dat
UnitsAPI/Units.dat
TObj/TObj.msg

View File

@@ -5,7 +5,6 @@ n Bnd
n BVH
n CSLib
n Convert
n Dico
n ElCLib
n ElSLib
n Expr

View File

@@ -196,17 +196,17 @@ macro (THIRDPARTY_PRODUCT PRODUCT_NAME HEADER_NAME LIBRARY_NAME LIBRARY_NAME_DEB
if (WIN32)
if (SINGLE_GENERATOR)
install (FILES "${3RDPARTY_${PRODUCT_NAME}_DLL}" DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
install (FILES "${3RDPARTY_${PRODUCT_NAME}_DLL}" DESTINATION "${INSTALL_DIR_BIN}")
else()
install (FILES "${3RDPARTY_${PRODUCT_NAME}_DLL}"
CONFIGURATIONS Release
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
DESTINATION "${INSTALL_DIR_BIN}")
install (FILES "${3RDPARTY_${PRODUCT_NAME}_DLL}"
CONFIGURATIONS RelWithDebInfo
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}i")
DESTINATION "${INSTALL_DIR_BIN}i")
install (FILES "${3RDPARTY_${PRODUCT_NAME}_DLL}"
CONFIGURATIONS Debug
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}d")
DESTINATION "${INSTALL_DIR_BIN}d")
endif()
else()
get_filename_component(ABS_PATH ${3RDPARTY_${PRODUCT_NAME}_LIBRARY} REALPATH)
@@ -215,19 +215,19 @@ macro (THIRDPARTY_PRODUCT PRODUCT_NAME HEADER_NAME LIBRARY_NAME LIBRARY_NAME_DEB
get_filename_component(FREEIMLIB ${3RDPARTY_${PRODUCT_NAME}_LIBRARY} NAME)
if (SINGLE_GENERATOR)
install (FILES "${ABS_PATH}" DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}" RENAME ${FREEIMLIB}.3)
install (FILES "${ABS_PATH}" DESTINATION "${INSTALL_DIR_LIB}" RENAME ${FREEIMLIB}.3)
else()
install (FILES "${ABS_PATH}"
CONFIGURATIONS Release
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}"
DESTINATION "${INSTALL_DIR_LIB}"
RENAME ${FREEIMLIB}.3)
install (FILES "${ABS_PATH}"
CONFIGURATIONS RelWithDebInfo
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}i"
DESTINATION "${INSTALL_DIR_LIB}i"
RENAME ${FREEIMLIB}.3)
install (FILES "${ABS_PATH}"
CONFIGURATIONS Debug
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}d"
DESTINATION "${INSTALL_DIR_LIB}d"
RENAME ${FREEIMLIB}.3)
endif()
endif()
@@ -236,19 +236,19 @@ macro (THIRDPARTY_PRODUCT PRODUCT_NAME HEADER_NAME LIBRARY_NAME LIBRARY_NAME_DEB
get_filename_component(GL2PSLIB ${3RDPARTY_${PRODUCT_NAME}_LIBRARY} NAME)
if (SINGLE_GENERATOR)
install (FILES "${ABS_PATH}" DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}" RENAME ${GL2PSLIB}.1)
install (FILES "${ABS_PATH}" DESTINATION "${INSTALL_DIR_LIB}" RENAME ${GL2PSLIB}.1)
else()
install (FILES "${ABS_PATH}"
CONFIGURATIONS Release
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}"
DESTINATION "${INSTALL_DIR_LIB}"
RENAME ${GL2PSLIB}.1)
install (FILES "${ABS_PATH}"
CONFIGURATIONS RelWithDebInfo
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}i"
DESTINATION "${INSTALL_DIR_LIB}i"
RENAME ${GL2PSLIB}.1)
install (FILES "${ABS_PATH}"
CONFIGURATIONS Debug
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}d"
DESTINATION "${INSTALL_DIR_LIB}d"
RENAME ${GL2PSLIB}.1)
endif()
endif()

View File

@@ -1,9 +1,10 @@
# doxygen
set (DOXYGEN_MINIMUM_VERSION 1.8.4)
if (DO_ONLY_CHECK_FOR_DOXYGEN)
message (STATUS "Info. Detecting doxygen")
set (DOXYGEN_SKIP_DOT ON)
find_package (Doxygen)
find_package (Doxygen ${DOXYGEN_MINIMUM_VERSION})
set (CAN_DOXYGEN_BE_USED OFF)
if (DOXYGEN_EXECUTABLE)
@@ -33,7 +34,7 @@ else()
if (NOT 3RDPARTY_DOXYGEN_EXECUTABLE OR (NOT 3RDPARTY_SKIP_DOT_EXECUTABLE AND NOT 3RDPARTY_DOT_EXECUTABLE))
set (DOXYGEN_SKIP_DOT ${3RDPARTY_SKIP_DOT_EXECUTABLE})
find_package (Doxygen)
find_package (Doxygen ${DOXYGEN_MINIMUM_VERSION})
if (NOT 3RDPARTY_DOXYGEN_EXECUTABLE AND DOXYGEN_EXECUTABLE)
set (3RDPARTY_DOXYGEN_EXECUTABLE "${DOXYGEN_EXECUTABLE}" CACHE FILEPATH "${3RDPARTY_DOXYGEN_EXECUTABLE_DESCR}" FORCE)

View File

@@ -300,17 +300,17 @@ if (BUILD_SHARED_LIBS)
if (WIN32)
if (SINGLE_GENERATOR)
install (FILES "${3RDPARTY_FREETYPE_DLL}" DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
install (FILES "${3RDPARTY_FREETYPE_DLL}" DESTINATION "${INSTALL_DIR_BIN}")
else()
install (FILES "${3RDPARTY_FREETYPE_DLL}"
CONFIGURATIONS Release
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
DESTINATION "${INSTALL_DIR_BIN}")
install (FILES "${3RDPARTY_FREETYPE_DLL}"
CONFIGURATIONS RelWithDebInfo
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}i")
DESTINATION "${INSTALL_DIR_BIN}i")
install (FILES "${3RDPARTY_FREETYPE_DLL}"
CONFIGURATIONS Debug
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}d")
DESTINATION "${INSTALL_DIR_BIN}d")
endif()
else()
get_filename_component(3RDPARTY_FREETYPE_LIBRARY_ABS ${3RDPARTY_FREETYPE_LIBRARY} REALPATH)
@@ -318,20 +318,20 @@ if (BUILD_SHARED_LIBS)
if (SINGLE_GENERATOR)
install (FILES "${3RDPARTY_FREETYPE_LIBRARY_ABS}"
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}"
DESTINATION "${INSTALL_DIR_LIB}"
RENAME ${3RDPARTY_FREETYPE_LIBRARY_NAME}.6)
else()
install (FILES "${3RDPARTY_FREETYPE_LIBRARY_ABS}"
CONFIGURATIONS Release
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}"
DESTINATION "${INSTALL_DIR_LIB}"
RENAME ${3RDPARTY_FREETYPE_LIBRARY_NAME}.6)
install (FILES "${3RDPARTY_FREETYPE_LIBRARY_ABS}"
CONFIGURATIONS RelWithDebInfo
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}i"
DESTINATION "${INSTALL_DIR_LIB}i"
RENAME ${3RDPARTY_FREETYPE_LIBRARY_NAME}.6)
install (FILES "${3RDPARTY_FREETYPE_LIBRARY_ABS}"
CONFIGURATIONS Debug
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}d"
DESTINATION "${INSTALL_DIR_LIB}d"
RENAME ${3RDPARTY_FREETYPE_LIBRARY_NAME}.6)
endif()
endif()

View File

@@ -33,7 +33,6 @@ if (WIN32)
set (CSF_gdi32 "gdi32.lib")
set (CSF_user32 "user32.lib")
set (CSF_wsock32 "wsock32.lib")
set (CSF_winspool "Winspool.lib")
set (CSF_psapi "Psapi.lib")
set (CSF_AviLibs "ws2_32.lib vfw32.lib")
if ("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore" OR USE_GLES2)

View File

@@ -257,6 +257,8 @@ macro (COLLECT_AND_INSTALL_OCCT_HEADER_FILES ROOT_TARGET_OCCT_DIR OCCT_BUILD_TOO
foreach (FILE_INDEX RANGE ${ALL_FILES_NB})
list (GET OCCT_ALL_FILE_NAMES ${FILE_INDEX} OCCT_FILE_NAME)
string (REGEX REPLACE "[^:]+:+" "" OCCT_FILE_NAME "${OCCT_FILE_NAME}")
if ("${OCCT_FILE_IN_DIR_NAME}" STREQUAL "${OCCT_FILE_NAME}")
set (OCCT_FILE_IN_DIR_STATUS ON)
@@ -296,10 +298,11 @@ macro (COLLECT_AND_INSTALL_OCCT_HEADER_FILES ROOT_TARGET_OCCT_DIR OCCT_BUILD_TOO
foreach (OCCT_HEADER_FILE ${OCCT_HEADER_FILES_COMPLETE})
get_filename_component (HEADER_FILE_NAME ${OCCT_HEADER_FILE} NAME)
set (OCCT_HEADER_FILE_CONTENT "#include \"${OCCT_HEADER_FILE}\"")
configure_file ("${TEMPLATE_HEADER_PATH}" "${ROOT_TARGET_OCCT_DIR}/inc/${HEADER_FILE_NAME}" @ONLY)
endforeach()
install (FILES ${OCCT_HEADER_FILES_COMPLETE} DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_INCLUDE}")
install (FILES ${OCCT_HEADER_FILES_COMPLETE} DESTINATION "${INSTALL_DIR_INCLUDE}")
string(TIMESTAMP CURRENT_TIME "%H:%M:%S")
message (STATUS "Info: \(${CURRENT_TIME}\) Checking headers in inc folder...")

View File

@@ -0,0 +1,77 @@
# OCCT resource files generation
macro (OCCT_GENERATE_CONTENT_ONLY CurrentResource)
set (RESOURCE_FILES)
set (isResDirectory FALSE)
if (IS_DIRECTORY "${CMAKE_SOURCE_DIR}/src/${CurrentResource}")
file (STRINGS "${CMAKE_SOURCE_DIR}/src/${CurrentResource}/FILES" RESOURCE_FILES)
set (CurrentResource_Directory "${CurrentResource}")
set (isResDirectory TRUE)
else()
get_filename_component (CurrentResource_Name "${CurrentResource}" NAME)
list (APPEND RESOURCE_FILES "res:::${CurrentResource_Name}")
get_filename_component (CurrentResource_Directory "${CurrentResource}" DIRECTORY)
endif()
# Add current toolkit into RESOURCE_TOOLKITS array to copy it to the BUILD directory
list (APPEND RESOURCE_TOOLKITS "${CurrentResource_Directory}")
list (REMOVE_DUPLICATES RESOURCE_TOOLKITS)
if (BUILD_RESOURCES)
foreach (RESOURCE_FILE ${RESOURCE_FILES})
string (REGEX MATCH "^[^:]+:::" IS_RESOURCE "${RESOURCE_FILE}")
if (IS_RESOURCE)
string (REGEX REPLACE "[^:]+:+" "" RESOURCE_FILE "${RESOURCE_FILE}")
get_filename_component (CurrentResource_FileName "${RESOURCE_FILE}" NAME)
string (REPLACE "." "_" CurrentResource_FileName "${CurrentResource_FileName}")
set (HEADER_FILE_NAME "${CurrentResource_Directory}_${CurrentResource_FileName}.pxx")
set (toProcessResFile TRUE)
if (isResDirectory)
list (FIND RESOURCE_FILES "${HEADER_FILE_NAME}" aResIndex)
if ("${aResIndex}" STREQUAL "-1")
set (toProcessResFile FALSE)
endif()
endif()
if (toProcessResFile)
message(STATUS "Info. Generating header file from resource file: ${CMAKE_SOURCE_DIR}/src/${CurrentResource_Directory}/${RESOURCE_FILE}")
# generate content for header file
set (OCCT_HEADER_FILE_CONTENT "// This file has been automatically generated from resource file src/${CurrentResource_Directory}/${RESOURCE_FILE}\n\n")
# read resource file
file (STRINGS "${CMAKE_SOURCE_DIR}/src/${CurrentResource_Directory}/${RESOURCE_FILE}" RESOURCE_FILE_LINES_LIST)
set (OCCT_HEADER_FILE_CONTENT "${OCCT_HEADER_FILE_CONTENT}static const char ${CurrentResource_Directory}_${CurrentResource_FileName}[] =")
foreach (line IN LISTS RESOURCE_FILE_LINES_LIST)
string (REPLACE "\"" "\\\"" line "${line}")
set (OCCT_HEADER_FILE_CONTENT "${OCCT_HEADER_FILE_CONTENT}\n \"${line}\\n\"")
endforeach()
set (OCCT_HEADER_FILE_CONTENT "${OCCT_HEADER_FILE_CONTENT};")
# Save generated content to header file
set (HEADER_FILE "${CMAKE_SOURCE_DIR}/src/${CurrentResource_Directory}/${HEADER_FILE_NAME}")
if (EXISTS "${HEADER_FILE}")
file (REMOVE "${HEADER_FILE}")
endif()
configure_file ("${CMAKE_SOURCE_DIR}/adm/templates/header.in" "${HEADER_FILE}" @ONLY NEWLINE_STYLE LF)
endif()
endif()
endforeach()
endif()
endmacro()
FILE_TO_LIST ("adm/RESOURCES" RESOURCES)
foreach (CurrentResource ${RESOURCES})
get_filename_component (CurrentResource_FileName "${CurrentResource}" NAME)
if ("${CurrentResource_FileName}" STREQUAL TObj.msg OR
"${CurrentResource_FileName}" STREQUAL Units.dat OR
"${CurrentResource}" STREQUAL XSMessage OR
"${CurrentResource}" STREQUAL SHMessage OR
"${CurrentResource}" STREQUAL Shaders)
OCCT_GENERATE_CONTENT_ONLY ("${CurrentResource}")
endif()
endforeach()

View File

@@ -147,14 +147,14 @@ if ("${PROJECT_NAME}" STREQUAL "DRAWEXE")
add_executable (${PROJECT_NAME} ${USED_SRCFILES} ${USED_INCFILES} ${USED_RCFILE})
install (TARGETS ${PROJECT_NAME}
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}\${OCCT_INSTALL_BIN_LETTER}")
DESTINATION "${INSTALL_DIR_BIN}\${OCCT_INSTALL_BIN_LETTER}")
else()
add_library (${PROJECT_NAME} ${USED_SRCFILES} ${USED_INCFILES} ${USED_RCFILE})
if (MSVC)
install (FILES ${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bind/${PROJECT_NAME}.pdb
CONFIGURATIONS Debug
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}\${OCCT_INSTALL_BIN_LETTER}")
DESTINATION "${INSTALL_DIR_BIN}\${OCCT_INSTALL_BIN_LETTER}")
endif()
if (BUILD_SHARED_LIBS AND NOT "${BUILD_SHARED_LIBRARY_NAME_POSTFIX}" STREQUAL "")

View File

@@ -237,37 +237,37 @@ macro (TBB_PRODUCT_SEARCH PRODUCT_NAME)
if (WIN32)
if (SINGLE_GENERATOR)
install (FILES ${3RDPARTY_${PRODUCT_NAME}_DLL} DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
install (FILES ${3RDPARTY_${PRODUCT_NAME}_DLL} DESTINATION "${INSTALL_DIR_BIN}")
else()
install (FILES ${3RDPARTY_${PRODUCT_NAME}_DLL}
CONFIGURATIONS Release
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
DESTINATION "${INSTALL_DIR_BIN}")
install (FILES ${3RDPARTY_${PRODUCT_NAME}_DLL}
CONFIGURATIONS RelWithDebInfo
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}i")
DESTINATION "${INSTALL_DIR_BIN}i")
install (FILES ${3RDPARTY_${PRODUCT_NAME}_DLL}
CONFIGURATIONS Debug
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}d")
DESTINATION "${INSTALL_DIR_BIN}d")
endif()
else()
get_filename_component (PRODUCT_LIBRARY_NAME ${3RDPARTY_${PRODUCT_NAME}_LIBRARY} NAME)
if (SINGLE_GENERATOR)
install (FILES ${3RDPARTY_${PRODUCT_NAME}_LIBRARY}.2
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}"
DESTINATION "${INSTALL_DIR_LIB}"
RENAME ${PRODUCT_LIBRARY_NAME}.2)
else()
install (FILES ${3RDPARTY_${PRODUCT_NAME}_LIBRARY}.2
CONFIGURATIONS Release
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}"
DESTINATION "${INSTALL_DIR_LIB}"
RENAME ${PRODUCT_LIBRARY_NAME}.2)
install (FILES ${3RDPARTY_${PRODUCT_NAME}_LIBRARY}.2
CONFIGURATIONS RelWithDebInfo
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}i"
DESTINATION "${INSTALL_DIR_LIB}i"
RENAME ${PRODUCT_LIBRARY_NAME}.2)
install (FILES ${3RDPARTY_${PRODUCT_NAME}_LIBRARY}.2
CONFIGURATIONS Debug
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}d"
DESTINATION "${INSTALL_DIR_LIB}d"
RENAME ${PRODUCT_LIBRARY_NAME}.2)
endif()
endif()

View File

@@ -210,40 +210,40 @@ if (BUILD_SHARED_LIBS)
file (GLOB TCL_DLLS "${3RDPARTY_TCL_DLL_DIR}/*.dll")
if (SINGLE_GENERATOR)
install (FILES ${TCL_DLLS} DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
install (FILES ${TCL_DLLS} DESTINATION "${INSTALL_DIR_BIN}")
else()
install (FILES ${TCL_DLLS}
CONFIGURATIONS Release
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
DESTINATION "${INSTALL_DIR_BIN}")
install (FILES ${TCL_DLLS}
CONFIGURATIONS RelWithDebInfo
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}i")
DESTINATION "${INSTALL_DIR_BIN}i")
install (FILES ${TCL_DLLS}
CONFIGURATIONS Debug
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}d")
DESTINATION "${INSTALL_DIR_BIN}d")
endif()
else()
get_filename_component(3RDPARTY_TCL_LIBRARY_REALPATH ${3RDPARTY_TCL_LIBRARY} REALPATH)
if (SINGLE_GENERATOR)
install (FILES ${3RDPARTY_TCL_LIBRARY_REALPATH} DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}")
install (FILES ${3RDPARTY_TCL_LIBRARY_REALPATH} DESTINATION "${INSTALL_DIR_LIB}")
else()
install (FILES ${3RDPARTY_TCL_LIBRARY_REALPATH}
CONFIGURATIONS Release
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}")
DESTINATION "${INSTALL_DIR_LIB}")
install (FILES ${3RDPARTY_TCL_LIBRARY_REALPATH}
CONFIGURATIONS RelWithDebInfo
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}i")
DESTINATION "${INSTALL_DIR_LIB}i")
install (FILES ${3RDPARTY_TCL_LIBRARY_REALPATH}
CONFIGURATIONS Debug
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}d")
DESTINATION "${INSTALL_DIR_LIB}d")
endif()
endif()
if (TCL_TCLSH_VERSION)
# tcl is required to install in lib folder (without)
install (DIRECTORY "${3RDPARTY_TCL_LIBRARY_DIR}/tcl8" DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}")
install (DIRECTORY "${3RDPARTY_TCL_LIBRARY_DIR}/tcl${TCL_TCLSH_VERSION}" DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}")
install (DIRECTORY "${3RDPARTY_TCL_LIBRARY_DIR}/tcl8" DESTINATION "${INSTALL_DIR_LIB}")
install (DIRECTORY "${3RDPARTY_TCL_LIBRARY_DIR}/tcl${TCL_TCLSH_VERSION}" DESTINATION "${INSTALL_DIR_LIB}")
else()
message (STATUS "\nWarning: tclX.X subdir won't be copyied during the installation process.")
message (STATUS "Try seeking tcl within another folder by changing 3RDPARTY_TCL_DIR variable.")

View File

@@ -216,39 +216,39 @@ if (BUILD_SHARED_LIBS)
file (GLOB TK_DLLS "${3RDPARTY_TK_DLL_DIR}/*.dll")
if (SINGLE_GENERATOR)
install (FILES ${TK_DLLS} DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
install (FILES ${TK_DLLS} DESTINATION "${INSTALL_DIR_BIN}")
else()
install (FILES ${TK_DLLS}
CONFIGURATIONS Release
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
DESTINATION "${INSTALL_DIR_BIN}")
install (FILES ${TK_DLLS}
CONFIGURATIONS RelWithDebInfo
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}i")
DESTINATION "${INSTALL_DIR_BIN}i")
install (FILES ${TK_DLLS}
CONFIGURATIONS Debug
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}d")
DESTINATION "${INSTALL_DIR_BIN}d")
endif()
else()
get_filename_component(3RDPARTY_TK_LIBRARY_REALPATH ${3RDPARTY_TK_LIBRARY} REALPATH)
if (SINGLE_GENERATOR)
install (FILES ${3RDPARTY_TK_LIBRARY_REALPATH} DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}")
install (FILES ${3RDPARTY_TK_LIBRARY_REALPATH} DESTINATION "${INSTALL_DIR_LIB}")
else()
install (FILES ${3RDPARTY_TK_LIBRARY_REALPATH}
CONFIGURATIONS Release
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}/")
DESTINATION "${INSTALL_DIR_LIB}/")
install (FILES ${3RDPARTY_TK_LIBRARY_REALPATH}
CONFIGURATIONS RelWithDebInfo
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}/i")
DESTINATION "${INSTALL_DIR_LIB}/i")
install (FILES ${3RDPARTY_TK_LIBRARY_REALPATH}
CONFIGURATIONS Debug
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}d")
DESTINATION "${INSTALL_DIR_LIB}d")
endif()
endif()
if (TCL_TCLSH_VERSION)
# tk is required to install in lib folder (without)
install (DIRECTORY "${3RDPARTY_TK_LIBRARY_DIR}/tk${TCL_TCLSH_VERSION}" DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_LIB}")
install (DIRECTORY "${3RDPARTY_TK_LIBRARY_DIR}/tk${TCL_TCLSH_VERSION}" DESTINATION "${INSTALL_DIR_LIB}")
else()
message (STATUS "\nWarning: tkX.X subdir won't be copyied during the installation process.")
message (STATUS "Try seeking tk within another folder by changing 3RDPARTY_TK_DIR variable.")

View File

@@ -18,6 +18,8 @@ set (BUILD_YACCLEX_DESCR
ExprIntrp functionality are generated automatically with Flex/Bison. Checking this options
leads to automatic search of Flex/Bison binaries and regeneration of the mentioned files")
set (BUILD_RESOURCES_DESCR "Enables regeneration of OCCT resource files")
set (BUILD_WITH_DEBUG_DESCR
"Enables extended messages of many OCCT algorithms, usually printed to cout.
These include messages on internal errors and special cases encountered, timing etc.
@@ -158,10 +160,5 @@ set (USE_D3D_DESCR "Indicates whether optional Direct3D wrapper in OCCT visualiz
macro (BUILD_MODULE MODULE_NAME)
set (ENABLE_MODULE TRUE)
set (OCCT_MODULES_FOR_UWP FoundationClasses ModelingAlgorithms ModelingData DataExchange Visualization)
list (FIND OCCT_MODULES_FOR_UWP ${OCCT_MODULE} CAN_BE_USED_IN_UWP)
if ("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore" AND CAN_BE_USED_IN_UWP EQUAL -1)
set (ENABLE_MODULE FALSE)
endif()
set (BUILD_MODULE_${MODULE_NAME} ${ENABLE_MODULE} CACHE BOOL "${BUILD_MODULE_${MODULE_NAME}_DESCR}")
endmacro()

View File

@@ -70,7 +70,7 @@ proc gendoc {args} {
set DOCLABEL ""
set VERB_MODE "NO"
set SEARCH_MODE "none"
set MATHJAX_LOCATION "http://cdn.mathjax.org/mathjax/latest"
set MATHJAX_LOCATION "https://cdn.mathjax.org/mathjax/latest"
set mathjax_js_name "MathJax.js"
set DOCTYPE_COMBO_FLAG 0
set GENMODE_COMBO_FLAG 0

View File

@@ -108,9 +108,155 @@ proc osutils:findSrcSubPath {theSubPath} {
return "$::THE_CASROOT/src/$theSubPath"
}
# Auxiliary tool comparing content of two files line-by-line.
proc osutils:isEqualContent { theContent1 theContent2 } {
set aLen1 [llength $theContent1]
set aLen2 [llength $theContent2]
if { $aLen1 != $aLen2 } {
return false
}
for {set aLineIter 0} {$aLineIter < $aLen1} {incr aLineIter} {
set aLine1 [lindex $theContent1 $aLineIter]
set aLine2 [lindex $theContent2 $aLineIter]
if { $aLine1 != $aLine2 } {
return false
}
}
return true
}
# Auxiliary function for writing new file content only if it has been actually changed
# (e.g. to preserve file timestamp on no change).
# Useful for automatically (re)generated files.
proc osutils:writeTextFile { theFile theContent {theEol lf} } {
if {[file exists "${theFile}"]} {
set aFileOld [open "${theFile}" rb]
fconfigure $aFileOld -translation crlf
set aLineListOld [split [read $aFileOld] "\n"]
close $aFileOld
# append empty line for proper comparison (which will be implicitly added by last puts below)
set aContent $theContent
lappend aContent ""
if { [osutils:isEqualContent $aLineListOld $aContent] == true } {
return false
}
file delete -force "${theFile}"
}
set anOutFile [open "$theFile" "w"]
fconfigure $anOutFile -translation $theEol
foreach aLine ${theContent} {
puts $anOutFile "${aLine}"
}
close $anOutFile
return true
}
# Function re-generating header files for specified text resource
proc genResources { theResource } {
global path
set aResFileList {}
set aResourceAbsPath [file normalize "${path}/src/${theResource}"]
set aResourceDirectory ""
set isResDirectory false
if {[file isdirectory "${aResourceAbsPath}"]} {
if {[file exists "${aResourceAbsPath}/FILES"]} {
set aFilesFile [open "${aResourceAbsPath}/FILES" rb]
set aResFileList [split [read $aFilesFile] "\n"]
close $aFilesFile
}
set aResFileList [lsearch -inline -all -not -exact $aResFileList ""]
set aResourceDirectory "${theResource}"
set isResDirectory true
} else {
set aResourceName [file tail "${theResource}"]
lappend aResFileList "res:::${aResourceName}"
set aResourceDirectory [file dirname "${theResource}"]
}
foreach aResFileIter ${aResFileList} {
if {![regexp {^[^:]+:::(.+)} "${aResFileIter}" dump aResFileIter]} {
continue
}
set aResFileName [file tail "${aResFileIter}"]
regsub -all {\.} "${aResFileName}" {_} aResFileName
set aHeaderFileName "${aResourceDirectory}_${aResFileName}.pxx"
if { $isResDirectory == true && [lsearch $aResFileList $aHeaderFileName] == -1 } {
continue
}
# generate
set aContent {}
lappend aContent "// This file has been automatically generated from resource file src/${aResourceDirectory}/${aResFileIter}"
lappend aContent ""
# generate necessary structures
set aLineList {}
if {[file exists "${path}/src/${aResourceDirectory}/${aResFileIter}"]} {
set anInputFile [open "${path}/src/${aResourceDirectory}/${aResFileIter}" rb]
fconfigure $anInputFile -translation crlf
set aLineList [split [read $anInputFile] "\n"]
close $anInputFile
}
# drop empty trailing line
set anEndOfFile ""
if { [lindex $aLineList end] == "" } {
set aLineList [lreplace $aLineList end end]
set anEndOfFile "\\n"
}
lappend aContent "static const char ${aResourceDirectory}_${aResFileName}\[\] ="
set aNbLines [llength $aLineList]
set aLastLine [expr $aNbLines - 1]
for {set aLineIter 0} {$aLineIter < $aNbLines} {incr aLineIter} {
set aLine [lindex $aLineList $aLineIter]
regsub -all {\"} "${aLine}" {\\"} aLine
if { $aLineIter == $aLastLine } {
lappend aContent " \"${aLine}${anEndOfFile}\";"
} else {
lappend aContent " \"${aLine}\\n\""
}
}
# Save generated content to header file
set aHeaderFilePath "${path}/src/${aResourceDirectory}/${aHeaderFileName}"
if { [osutils:writeTextFile $aHeaderFilePath $aContent] == true } {
puts "Generating header file from resource file: ${path}/src/${aResourceDirectory}/${aResFileIter}"
} else {
#puts "Header file from resource ${path}/src/${aResourceDirectory}/${aResFileIter} is up-to-date"
}
}
}
# Function re-generating header files for all text resources
proc genAllResources {} {
global path
set aCasRoot [file normalize $path]
if {![file exists "$aCasRoot/adm/RESOURCES"]} {
puts "OCCT directory is not defined correctly: $aCasRoot"
return
}
set aFileResources [open "$aCasRoot/adm/RESOURCES" rb]
set anAdmResources [split [read $aFileResources] "\r\n"]
close $aFileResources
set anAdmResources [lsearch -inline -all -not -exact $anAdmResources ""]
foreach line $anAdmResources {
genResources "${line}"
}
}
# Wrapper-function to generate VS project files
proc genproj {theIDE args} {
set aSupportedIDEs { "vc7" "vc8" "vc9" "vc10" "vc11" "vc12" "vc14" "cbp" "xcd" }
set aSupportedIDEs { "vc7" "vc8" "vc9" "vc10" "vc11" "vc12" "vc14" "vc14-uwp" "cbp" "xcd"}
set aSupportedPlatforms { "wnt" "lin" "mac" "ios" "qnx" }
set isHelpRequire false
@@ -159,14 +305,15 @@ proc genproj {theIDE args} {
puts "usage: genproj IDE \[Platform\] \[-static\] \[-h|-help|--help\]
IDE must be one of:
vc8 - Visual Studio 2005
vc9 - Visual Studio 2008
vc10 - Visual Studio 2010
vc11 - Visual Studio 2012
vc12 - Visual Studio 2013
vc14 - Visual Studio 2015
cbp - CodeBlocks
xcd - XCode
vc8 - Visual Studio 2005
vc9 - Visual Studio 2008
vc10 - Visual Studio 2010
vc11 - Visual Studio 2012
vc12 - Visual Studio 2013
vc14 - Visual Studio 2015
vc14-uwp - Visual Studio 2015 for Universal Windows Platform project
cbp - CodeBlocks
xcd - XCode
Platform (optional, only for CodeBlocks and XCode):
wnt - Windows
@@ -193,6 +340,7 @@ proc genproj {theIDE args} {
OS:MKPRC "$anAdmPath" "$theIDE" "$aLibType" "$aPlatform" "$aCmpl"
genprojbat "$theIDE" $aPlatform
genAllResources
}
proc genprojbat {theIDE thePlatform} {
@@ -223,7 +371,7 @@ proc genprojbat {theIDE thePlatform} {
file copy -force -- "$::THE_CASROOT/adm/templates/draw.${aTargetPlatformExt}" "$::path/draw.${aTargetPlatformExt}"
}
if {[regexp {(vc)[0-9]*$} $theIDE] == 1} {
if {[regexp {(vc)[0-9]*$} $theIDE] == 1 || [regexp {(vc)[0-9]*-uwp$} $theIDE] == 1} {
file copy -force -- "$::THE_CASROOT/adm/templates/msvc.bat" "$::path/msvc.bat"
} else {
switch -exact -- "$theIDE" {
@@ -266,7 +414,7 @@ proc OS:MKPRC { theOutDir theIDE theLibType thePlatform theCmpl } {
# Create output directory
set aWokStation "$thePlatform"
if { [lsearch -exact {vc7 vc8 vc9 vc10 vc11 vc12 vc14} $theIDE] != -1 } {
if { [lsearch -exact {vc7 vc8 vc9 vc10 vc11 vc12 vc14 vc14-uwp} $theIDE] != -1 } {
set aWokStation "msvc"
}
@@ -294,6 +442,14 @@ proc OS:MKPRC { theOutDir theIDE theLibType thePlatform theCmpl } {
set aModules [osutils:juststation $goaway $aModules]
}
# Draw module is turned off due to it is not supported on UWP
if { [regexp {(vc)[0-9]*-uwp$} $theIDE] == 1 } {
set aDrawIndex [lsearch -exact ${aModules} "Draw"]
if { ${aDrawIndex} != -1 } {
set aModules [lreplace ${aModules} ${aDrawIndex} ${aDrawIndex}]
}
}
# generate one solution for all projects if complete OS or VAS is processed
set anAllSolution "OCCT"
@@ -318,12 +474,13 @@ proc OS:MKPRC { theOutDir theIDE theLibType thePlatform theCmpl } {
"vc7" -
"vc8" -
"vc9" -
"vc10" -
"vc11" -
"vc12" -
"vc14" { OS:MKVC $anOutDir $aModules $anAllSolution $theIDE }
"cbp" { OS:MKCBP $anOutDir $aModules $anAllSolution $thePlatform $theCmpl }
"xcd" {
"vc10" -
"vc11" -
"vc12" -
"vc14" -
"vc14-uwp" { OS:MKVC $anOutDir $aModules $anAllSolution $theIDE }
"cbp" { OS:MKCBP $anOutDir $aModules $anAllSolution $thePlatform $theCmpl }
"xcd" {
set ::THE_GUIDS_LIST($::aTKNullKey) "000000000000000000000000"
OS:MKXCD $anOutDir $aModules $anAllSolution $theLibType $thePlatform
}
@@ -676,7 +833,7 @@ proc osutils:collectinc {theModules theIncPath} {
foreach aHeaderFile [concat [glob -nocomplain -dir $aCasRoot/src/$anUnit "*.\[hgl\]xx"] $aHFiles] {
set aHeaderFileName [file tail $aHeaderFile]
regsub -all -- {@OCCT_HEADER_FILE@} $aHeaderTmpl "$aFromBuildIncToSrcPath/$anUnit/$aHeaderFileName" aShortCutHeaderFileContent
regsub -all -- {@OCCT_HEADER_FILE_CONTENT@} $aHeaderTmpl "#include \"$aFromBuildIncToSrcPath/$anUnit/$aHeaderFileName\"" aShortCutHeaderFileContent
if {[file exists "$theIncPath/$aHeaderFileName"] && [file readable "$theIncPath/$aHeaderFileName"]} {
set fp [open "$theIncPath/$aHeaderFileName" r]
@@ -760,7 +917,7 @@ proc osutils:vcsolution:header { vcversion } {
append var \
"Microsoft Visual Studio Solution File, Format Version 13.00\n" \
"# Visual Studio 2013\n"
} elseif { "$vcversion" == "vc14" } {
} elseif { "$vcversion" == "vc14" || "$vcversion" == "vc14-uwp"} {
append var \
"Microsoft Visual Studio Solution File, Format Version 12.00\n" \
"# Visual Studio 14\n"
@@ -997,19 +1154,41 @@ proc osutils:vcproj:readtemplate {theVcVer isexec} {
set aVerExt "v${aVerExt}0"
set aCmpl32 ""
set aCmpl64 ""
set aCharSet "MultiByte"
if { $isexec } {
set anExt "${anExt}x"
set what "$what executable"
}
if { "$theVcVer" == "vc10" } {
# SSE2 is enabled by default in vc11+, but not in vc10 for 32-bit target
set aCmpl32 "\n <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>"
set aCmpl32 "<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>"
}
set aTmpl [osutils:readtemplate $anExt "MS VC++ project ($what)"]
regsub -all -- {__VCVER__} $aTmpl $theVcVer aTmpl
regsub -all -- {__VCVEREXT__} $aTmpl $aVerExt aTmpl
regsub -all -- {__VCMPL32__} $aTmpl $aCmpl32 aTmpl
regsub -all -- {__VCMPL64__} $aTmpl $aCmpl64 aTmpl
if { $theVcVer == "vc14-uwp" } {
set aVerExt "v140"
set UwpWinRt "<CompileAsWinRT>false</CompileAsWinRT>"
foreach bitness {32 64} {
set indent ""
if {"[set aCmpl${bitness}]" != ""} {
set indent "\n "
}
set aCmpl${bitness} "[set aCmpl${bitness}]${indent}${UwpWinRt}"
}
set aCharSet "Unicode"
}
foreach bitness {32 64} {
set format_template ""
if {"[set aCmpl${bitness}]" == ""} {
set format_template "\[\\r\\n\\s\]*"
}
regsub -all -- "${format_template}__VCMPL${bitness}__" $aTmpl "[set aCmpl${bitness}]" aTmpl
}
regsub -all -- {__VCVER__} $aTmpl $theVcVer aTmpl
regsub -all -- {__VCVEREXT__} $aTmpl $aVerExt aTmpl
regsub -all -- {__VCCHARSET__} $aTmpl $aCharSet aTmpl
return $aTmpl
}
@@ -1109,7 +1288,6 @@ proc osutils:csfList { theOS theCsfLibsMap theCsfFrmsMap } {
if { "$::HAVE_GLES2" == "true" } {
set aLibsMap(CSF_OpenGlLibs) "libEGL libGLESv2"
}
set aLibsMap(CSF_winspool) "Winspool"
set aLibsMap(CSF_psapi) "Psapi"
set aLibsMap(CSF_d3d9) "d3d9"
@@ -1454,7 +1632,14 @@ proc osutils:vcproj { theVcVer theOutDir theToolKit theGuidsMap {theProjTmpl {}
}
regsub -all -- {__PROJECT_GUID__} $theProjTmpl $aGuidsMap($theToolKit) theProjTmpl
set theProjTmpl [osutils:uwp:proj ${theVcVer} ${theProjTmpl}]
set aUsedLibs [list]
if { "$theVcVer" == "vc14-uwp" } {
lappend aUsedLibs "WindowsApp.lib"
}
foreach tkx [osutils:commonUsedTK $theToolKit] {
lappend aUsedLibs "${tkx}.lib"
}
@@ -3081,3 +3266,61 @@ proc osutils:xcdx { theOutDir theExecutable theGuidsMap } {
puts $aPlistFile $aPlistTmpl
close $aPlistFile
}
# Returns available Windows SDKs versions
proc osutils:sdk { theSdkMajorVer {isQuietMode false} {theSdkDirectories {}} } {
if { ![llength ${theSdkDirectories}] } {
foreach anEnvVar { "ProgramFiles" "ProgramFiles\(x86\)" "ProgramW6432" } {
if {[ info exists ::env(${anEnvVar}) ]} {
lappend theSdkDirectories "$::env(${anEnvVar})/Windows Kits/${theSdkMajorVer}/Include"
}
}
}
set sdk_versions {}
foreach sdk_dir ${theSdkDirectories} {
if { [file isdirectory ${sdk_dir}] } {
lappend sdk_versions [glob -tails -directory "${sdk_dir}" -type d *]
}
}
if {![llength ${sdk_versions}] && !${isQuietMode}} {
error "Error : Could not find Windows SDK ${theSdkMajorVer}"
}
return [join [lsort -unique ${sdk_versions}] " "]
}
# Generate global properties to Visual Studio project file for UWP solution
proc osutils:uwp:proj { theVcVer theProjTmpl } {
set uwp_properties ""
set uwp_generate_metadata ""
set uwp_app_container ""
set format_template ""
if { ${theVcVer} == "vc14-uwp" } {
set sdk_versions [osutils:sdk 10]
set sdk_max_ver [lindex ${sdk_versions} end]
set uwp_properties "<DefaultLanguage>en-US</DefaultLanguage>\n \
<ApplicationType>Windows Store</ApplicationType>\n \
<ApplicationTypeRevision>10.0</ApplicationTypeRevision>\n \
<MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>\n \
<AppContainerApplication>true</AppContainerApplication>\n \
<WindowsTargetPlatformVersion>${sdk_max_ver}</WindowsTargetPlatformVersion>\n \
<WindowsTargetPlatformMinVersion>${sdk_max_ver}</WindowsTargetPlatformMinVersion>"
set uwp_generate_metadata "<GenerateWindowsMetadata>false</GenerateWindowsMetadata>"
regsub -all -- {[\r\n\s]*<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>} ${theProjTmpl} "" theProjTmpl
} else {
set format_template "\[\\r\\n\\s\]*"
}
regsub -all -- "${format_template}__UWP_PROPERTIES__" ${theProjTmpl} "${uwp_properties}" theProjTmpl
regsub -all -- "${format_template}__UWP_GENERATE_METADATA__" ${theProjTmpl} "${uwp_generate_metadata}" theProjTmpl
return ${theProjTmpl}
}

View File

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

View File

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

View File

@@ -137,8 +137,6 @@ set "CSF_PluginDefaults=%CSF_OCCTResourcePath%\StdResource"
set "CSF_XCAFDefaults=%CSF_OCCTResourcePath%\StdResource"
set "CSF_TObjDefaults=%CSF_OCCTResourcePath%\StdResource"
set "CSF_StandardLiteDefaults=%CSF_OCCTResourcePath%\StdResource"
set "CSF_UnitsLexicon=%CSF_OCCTResourcePath%\UnitsAPI\Lexi_Expr.dat"
set "CSF_UnitsDefinition=%CSF_OCCTResourcePath%\UnitsAPI\Units.dat"
set "CSF_IGESDefaults=%CSF_OCCTResourcePath%\XSTEPResource"
set "CSF_STEPDefaults=%CSF_OCCTResourcePath%\XSTEPResource"
set "CSF_XmlOcafResource=%CSF_OCCTResourcePath%\XmlOcafResource"

View File

@@ -58,8 +58,6 @@ set "CSF_PluginDefaults=%CSF_OCCTResourcePath%\StdResource"
set "CSF_XCAFDefaults=%CSF_OCCTResourcePath%\StdResource"
set "CSF_TObjDefaults=%CSF_OCCTResourcePath%\StdResource"
set "CSF_StandardLiteDefaults=%CSF_OCCTResourcePath%\StdResource"
set "CSF_UnitsLexicon=%CSF_OCCTResourcePath%\UnitsAPI\Lexi_Expr.dat"
set "CSF_UnitsDefinition=%CSF_OCCTResourcePath%\UnitsAPI\Units.dat"
set "CSF_IGESDefaults=%CSF_OCCTResourcePath%\XSTEPResource"
set "CSF_STEPDefaults=%CSF_OCCTResourcePath%\XSTEPResource"
set "CSF_XmlOcafResource=%CSF_OCCTResourcePath%\XmlOcafResource"

View File

@@ -4,7 +4,7 @@ if exist "%~dp0custom.bat" (
call "%~dp0custom.bat" %1 %2 %3
)
call "@INSTALL_DIR@\@INSTALL_DIR_SCRIPT@\env.bat" %1 %2 %3
call "@INSTALL_DIR_ABSOLUTE@\@INSTALL_DIR_SCRIPT@\env.bat" %1 %2 %3
set "BIN_DIR=win%ARCH%\%VCVER%\bind"
set "LIB_DIR=win%ARCH%\%VCVER%\libd"

View File

@@ -6,8 +6,8 @@ if [ -e "custom.sh" ]; then
source "custom.sh";
fi
if [ -e "@INSTALL_DIR@/@INSTALL_DIR_SCRIPT@/env.sh" ]; then
source "@INSTALL_DIR@/@INSTALL_DIR_SCRIPT@/env.sh";
if [ -e "@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_SCRIPT@/env.sh" ]; then
source "@INSTALL_DIR_ABSOLUTE@/@INSTALL_DIR_SCRIPT@/env.sh";
fi
if test "${QTDIR}" == ""; then

View File

@@ -217,8 +217,6 @@ export CSF_PluginDefaults="${CASROOT}/src/StdResource"
export CSF_XCAFDefaults="${CASROOT}/src/StdResource"
export CSF_TObjDefaults="${CASROOT}/src/StdResource"
export CSF_StandardLiteDefaults="${CASROOT}/src/StdResource"
export CSF_UnitsLexicon="${CASROOT}/src/UnitsAPI/Lexi_Expr.dat"
export CSF_UnitsDefinition="${CASROOT}/src/UnitsAPI/Units.dat"
export CSF_IGESDefaults="${CASROOT}/src/XSTEPResource"
export CSF_STEPDefaults="${CASROOT}/src/XSTEPResource"
export CSF_XmlOcafResource="${CASROOT}/src/XmlOcafResource"

View File

@@ -114,8 +114,6 @@ export CSF_PluginDefaults="${CSF_OCCTResourcePath}/StdResource"
export CSF_XCAFDefaults="${CSF_OCCTResourcePath}/StdResource"
export CSF_TObjDefaults="${CSF_OCCTResourcePath}/StdResource"
export CSF_StandardLiteDefaults="${CSF_OCCTResourcePath}/StdResource"
export CSF_UnitsLexicon="${CSF_OCCTResourcePath}/UnitsAPI/Lexi_Expr.dat"
export CSF_UnitsDefinition="${CSF_OCCTResourcePath}/UnitsAPI/Units.dat"
export CSF_IGESDefaults="${CSF_OCCTResourcePath}/XSTEPResource"
export CSF_STEPDefaults="${CSF_OCCTResourcePath}/XSTEPResource"
export CSF_XmlOcafResource="${CSF_OCCTResourcePath}/XmlOcafResource"

View File

@@ -1 +1 @@
#include "@OCCT_HEADER_FILE@"
@OCCT_HEADER_FILE_CONTENT@

View File

@@ -28,6 +28,8 @@ if /I "%VCVER%" == "vc8" (
set "VisualStudioExpressName=WDExpress"
) else if /I "%VCVER%" == "vc14" (
set "DevEnvDir=%VS140COMNTOOLS%..\IDE"
) else if /I "%VCVER%" == "vc14-uwp" (
set "DevEnvDir=%VS140COMNTOOLS%..\IDE"
) else (
echo Error: wrong VS identifier
exit /B

View File

@@ -20,23 +20,28 @@
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>__PROJECT_GUID__</ProjectGuid>
__UWP_PROPERTIES__
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>__VCVEREXT__</PlatformToolset>
<CharacterSet>__VCCHARSET__</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>__VCVEREXT__</PlatformToolset>
<CharacterSet>__VCCHARSET__</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>__VCVEREXT__</PlatformToolset>
<CharacterSet>__VCCHARSET__</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>__VCVEREXT__</PlatformToolset>
<CharacterSet>__VCCHARSET__</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
@@ -96,7 +101,9 @@
<WarningLevel>Level4</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
<FloatingPointModel>Precise</FloatingPointModel>__VCMPL32__
<FloatingPointModel>Precise</FloatingPointModel>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
__VCMPL32__
</ClCompile>
<ResourceCompile>
<AdditionalIncludeDirectories>..\..\..\inc;$(CSF_OPT_INC);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
@@ -111,6 +118,7 @@
<ProgramDatabaseFile>.\..\..\..\win32\__VCVER__\bin\__TKNAM__.pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
<ImportLibrary>..\..\..\win32\__VCVER__\lib\__TKNAM__.lib</ImportLibrary>
__UWP_GENERATE_METADATA__
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
@@ -141,7 +149,9 @@
<CompileAs>Default</CompileAs>
<DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<FloatingPointModel>Precise</FloatingPointModel>__VCMPL32__
<FloatingPointModel>Precise</FloatingPointModel>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
__VCMPL32__
</ClCompile>
<ResourceCompile>
<AdditionalIncludeDirectories>..\..\..\inc;$(CSF_OPT_INC);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
@@ -156,6 +166,7 @@
<ProgramDatabaseFile>..\..\..\win32\__VCVER__\bind\__TKNAM__.pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
<ImportLibrary>..\..\..\win32\__VCVER__\libd\__TKNAM__.lib</ImportLibrary>
__UWP_GENERATE_METADATA__
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@@ -185,7 +196,9 @@
<WarningLevel>Level4</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
<FloatingPointModel>Precise</FloatingPointModel>__VCMPL64__
<FloatingPointModel>Precise</FloatingPointModel>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
__VCMPL64__
</ClCompile>
<ResourceCompile>
<AdditionalIncludeDirectories>..\..\..\inc;$(CSF_OPT_INC);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
@@ -200,6 +213,7 @@
<ProgramDatabaseFile>.\..\..\..\win64\__VCVER__\bin\__TKNAM__.pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
<ImportLibrary>..\..\..\win64\__VCVER__\lib\__TKNAM__.lib</ImportLibrary>
__UWP_GENERATE_METADATA__
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@@ -230,7 +244,9 @@
<CompileAs>Default</CompileAs>
<DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<FloatingPointModel>Precise</FloatingPointModel>__VCMPL64__
<FloatingPointModel>Precise</FloatingPointModel>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
__VCMPL64__
</ClCompile>
<ResourceCompile>
<AdditionalIncludeDirectories>..\..\..\inc;$(CSF_OPT_INC);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
@@ -245,6 +261,7 @@
<ProgramDatabaseFile>..\..\..\win64\__VCVER__\bind\__TKNAM__.pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
<ImportLibrary>..\..\..\win64\__VCVER__\libd\__TKNAM__.lib</ImportLibrary>
__UWP_GENERATE_METADATA__
</Link>
</ItemDefinitionGroup>
<ItemGroup>

1131
data/occ/Ball.brep Normal file

File diff suppressed because one or more lines are too long

View File

@@ -35,7 +35,7 @@ endif()
# configuration file for doxygen
set (OCCT_CONFIG_FOR_DOXYGEN "${OCCT_GENERATED_DOC_DIR}/occt.cfg")
set (3RDPARTY_MATHJAX_RELATIVE_PATH "http://cdn.mathjax.org/mathjax/latest")
set (3RDPARTY_MATHJAX_RELATIVE_PATH "https://cdn.mathjax.org/mathjax/latest")
configure_file ("${OCCT_OVERVIEW_RESOURCE_DIR}/occt_ug_html.doxyfile" "${OCCT_CONFIG_FOR_DOXYGEN}" COPYONLY)
@@ -92,11 +92,22 @@ file (APPEND ${OCCT_CONFIG_FOR_DOXYGEN} "\nMATHJAX_RELPATH = ${3RDPARTY_M
# Copy index file to provide fast access to HTML documentation
file(COPY "${OCCT_OVERVIEW_RESOURCE_DIR}/index.html" DESTINATION "${OCCT_GENERATED_OVERVIEW_DIR}")
add_custom_target (${PROJECT_NAME}
COMMAND ${3RDPARTY_DOXYGEN_EXECUTABLE} ${OCCT_CONFIG_FOR_DOXYGEN}
WORKING_DIRECTORY ${OCCT_GENERATED_DOC_DIR}
COMMENT "Generating OCCT overview documentation with Doxygen"
SOURCES ${OCCT_ARTICLES_ABSPATH}
VERBATIM)
# get relative paths to documentation source files
file (GLOB_RECURSE OCCT_OVERVIEW_FILES "${OCCT_OVERVIEW_DIR}/*")
add_custom_command(OUTPUT "${OCCT_GENERATED_DOC_DIR}/overview/html/occt_logo.png"
COMMAND ${3RDPARTY_DOXYGEN_EXECUTABLE} ${OCCT_CONFIG_FOR_DOXYGEN}
DEPENDS ${OCCT_OVERVIEW_FILES}
WORKING_DIRECTORY ${OCCT_GENERATED_DOC_DIR}
COMMENT "Generating OCCT overview documentation with Doxygen"
VERBATIM
)
add_custom_target(${PROJECT_NAME} ALL
DEPENDS "${OCCT_GENERATED_DOC_DIR}/overview/html/occt_logo.png" ${OCCT_OVERVIEW_FILES}
SOURCES ${OCCT_ARTICLES_ABSPATH}
VERBATIM
)
# Create Documentation folder in solution view
set_property (TARGET ${PROJECT_NAME} PROPERTY FOLDER "Documentation")

View File

@@ -5,26 +5,26 @@ Building with CMake {#occt_dev_guides__building_cmake}
@section build_cmake_intro General
This article describes the **CMake**-based build process which is now suggested as a standard way to produce the binaries of Open CASCADE Technology from sources. *OCCT requires CMake version 2.8.12 or later*.
This article describes the **CMake**-based build process, which is now suggested as a standard way to produce the binaries of Open CASCADE Technology from sources. *OCCT requires CMake version 2.8.12 or later*.
@note Comparing to the previous (6.x) releases of Open CASCADE Technology, OCCT 7.0 comes with a complete set of CMake scripts and projects, so that there is no need to use WOK anymore. Moreover, CMake gives you a powerful configuration tool which allows to control many aspects of OCCT deployment. At the same time this tool is quite intuitive which is a significant advantage over the legacy WOK utilities.
@note Compared to the previous (6.x) releases of Open CASCADE Technology, OCCT 7.x has a complete set of CMake scripts and projects, so that there is no need to use WOK anymore. Moreover, CMake gives you a powerful configuration tool, which allows to control many aspects of OCCT deployment. At the same time this tool is quite intuitive, which is a significant advantage over the legacy WOK utilities.
Here we describe the build procedure on example of Windows platform with Visual Studio 2010.
Here we describe the build procedure on the example of Windows platform with Visual Studio 2010.
However, CMake is cross-platform and can be used to build OCCT on Linux and OS X in essentially the same way.
@note Before you start, make sure to have installed all the 3-rd party products that you are going to use with OCCT; see @ref occt_dev_guides__building.
@note Before you start, make sure to have installed all 3-rd party products that you are going to use with OCCT; see @ref occt_dev_guides__building.
@section build_cmake_start Start CMake
CMake is a tool that generates the actual project files for the selected target build system (e.g. Unix makefiles) or IDE (e.g. Visual Studio 2010).
For unexpericnced users we recommend to start with *cmake-gui* -- cross-platform GUI tool provided by CMake on Windows, Mac and Linux.
A command-line alternative, *ccmake* also can be used.
For unexperienced users we recommend to start with *cmake-gui* -- a cross-platform GUI tool provided by CMake on Windows, Mac and Linux.
A command-line alternative, *ccmake* can also be used.
CMake deals with three directories: source, build or binary and install.
CMake deals with three directories: source, build or binary and installation.
* The source directory is where the sources of OCCT are located in your filesystem
* The build or binary directory is where all the files created during CMake configuration and generation process will be located. The mentioned process will be described below.
* The source directory is where the sources of OCCT are located in your file system;
* The build or binary directory is where all files created during CMake configuration and generation process will be located. The mentioned process will be described below.
* The installation directory is where binaries will be installed after building the *INSTALL* project that is created by CMake generation process, along with header files and resources required for OCCT use in applications.
The good practice is not to use the source directory as a build one.
@@ -48,9 +48,9 @@ If the command-line tool is used, run the tool from the build directory with a s
Press *c* to configure.
All required actions in the configuration process will be described with using the GUI tool below.
All actions required in the configuration process with the GUI tool will be described below.
If the gui-tool is used, run the tool without additional arguments and after that specify the source directory by clicking **Browse Source** and the build (binary) one by clicking **Browse Build**.
If the GUI tool is used, run this tool without additional arguments and after that specify the source directory by clicking **Browse Source** and the build (binary) one by clicking **Browse Build**.
@figure{/dev_guides/building/cmake/images/cmake_image001.png}
@@ -60,29 +60,29 @@ Once the source and build directories are selected, "Configure" button should be
@figure{/dev_guides/building/cmake/images/cmake_image002.png}
To build OCCT with using Universal Windows Platform (UWP) specify path to toolchain file for cross-compiling <i>d:/occt/adm/templates/uwp.toolchain.config.cmake</i>.
To build OCCT for Universal Windows Platform (UWP) specify the path to toolchain file for cross-compiling <i>d:/occt/adm/templates/uwp.toolchain.config.cmake</i>.
**Note**: Universal Windows Platform (UWP) is supported only on "Visual Studio 14 2015". File <i>d:/occt/samples/xaml/ReadMe.md</i> desribes building procedure of XAML (UWP) sample.
**Note**: Universal Windows Platform (UWP) is supported only on "Visual Studio 14 2015". File <i>d:/occt/samples/xaml/ReadMe.md</i> describes the building procedure of XAML (UWP) sample.
Once "Finish" button is pressed, the first pass of the configuration process is executed. At the end of the process, CMake outputs the list of environment variables which have to be properly specified for successful configuration.
Once "Finish" button is pressed, the first pass of the configuration process is executed. At the end of the process, CMake outputs the list of environment variables, which have to be properly specified for successful configuration.
@figure{/dev_guides/building/cmake/images/cmake_image003.png}
The error message provides an information about these variables. This message will appear after each pass of the process until all required variables are specified correctly.
The error message provides some information about these variables. This message will appear after each pass of the process until all required variables are specified correctly.
The change of the state of some variables can lead to the appearance of new variables. The new variables appeared after the pass of the configuration process is notified with red color by CMake GUI tool.
The change of the state of some variables can lead to the appearance of new variables. The new variables appeared after the pass of the configuration process are highlighted with red color by CMake GUI tool.
Note: There is "grouped" option which groups variables with a common prefix.
Note: There is "grouped" option, which groups variables with a common prefix.
The following table enumerates the full list of environment variables used at configuration stage:
The following table gives the full list of environment variables used at the configuration stage:
| Variable | Type | Purpose |
|----------|------|---------|
| CMAKE_BUILD_TYPE | String | Specifies the build type on single-configuration generators (sush as make). Possible values are Debug, Release and RelWithDebInfo |
| USE_FREEIMAGE | Boolean flag | Indicates whether Freeimage product should be used in OCCT visualization module for support of popular graphics image formats (PNG, BMP etc) |
| USE_GL2PS | Boolean flag | Indicates whether GL2PS product should be used in OCCT visualization module for support of vector image formats (PS, EPS etc) |
| CMAKE_BUILD_TYPE | String | Specifies the build type on single-configuration generators (such as make). Possible values are Debug, Release and RelWithDebInfo |
| USE_FREEIMAGE | Boolean flag | Indicates whether FreeImage product should be used in OCCT visualization module for support of popular graphics image formats (PNG, BMP, etc.) |
| USE_GL2PS | Boolean flag | Indicates whether GL2PS product should be used in OCCT visualization module for support of vector image formats (PS, EPS, etc.) |
| USE_TBB | Boolean flag | Indicates whether TBB 3rd party is used or not. TBB stands for Threading Building Blocks, the technology of Intel Corp, which comes with different mechanisms and patterns for injecting parallelism into your application. OCCT remains parallel even without TBB product |
| USE_VTK | Boolean flag | Indicates whether VTK 3rd party is used or not. VTK stands for Visualization ToolKit, the technology of Kitware Inc intended for general-purpose scientific visualization. OCCT comes with a bridge between CAD data representation and VTK by means of its dedicated VIS component (VTK Integration Services). You may skip this 3rd party unless you are planning to use VTK visualization for OCCT geometry. The official documentation @ref occt_user_guides__vis for the details on VIS |
| USE_VTK | Boolean flag | Indicates whether VTK 3rd party is used or not. VTK stands for Visualization ToolKit, the technology of Kitware Inc intended for general-purpose scientific visualization. OCCT comes with a bridge between CAD data representation and VTK by means of its dedicated VIS component (VTK Integration Services). You may skip this 3rd party unless you are planning to use VTK visualization for OCCT geometry. See the official documentation @ref occt_user_guides__vis for the details on VIS |
| 3RDPARTY_DIR | Path | Defines the root directory where all required 3rd party products will be searched. Once you define this path it is very convenient to click "Configure" button in order to let CMake automatically detect all necessary products|
| 3RDPARTY_FREETYPE_* | Path | Path to Freetype binaries |
| 3RDPARTY_TCL_* 3RDPARTY_TK_* | Path | Path to Tcl/Tk binaries |
@@ -91,20 +91,21 @@ The following table enumerates the full list of environment variables used at co
| 3RDPARTY_TBB* | Path | Path to TBB binaries |
| 3RDPARTY_VTK_* | Path | Path to VTK binaries |
| BUILD_MODULE_<MODULE>| Boolean flag | Indicates whether the corresponding OCCT module should be built or not. It should be noted that some toolkits of a module can be built even if this module is not checked (this happens if some other modules depend on these toolkits). The main modules and their descriptions can be found in @ref user_guides |
| BUILD_LIBRARY_TYPE | String | Specifies the type of library to be created. "Shared" libraries are linked dynamically and loaded at runtime. "Static" libraries are archives of object files for use when linking other targets |
| BUILD_LIBRARY_TYPE | String | Specifies the type of library to be created. "Shared" libraries are linked dynamically and loaded at runtime. "Static" libraries are archives of object files used when linking other targets |
| BUILD_ADDITIONAL_TOOLKITS | String | Semicolon-separated individual toolkits to include into build process. If you want to build some particular libraries (toolkits) only, then you may uncheck all modules in the corresponding *BUILD_MODUE_\<MODULE\>* options and provide the list of necessary libraries here. Of course, all dependencies will be resolved automatically |
| BUILD_YACCLEX | Boolean flag | Enables Flex/Bison lexical analyzers. OCCT source files relating to STEP reader and ExprIntrp functionality are generated automatically with Flex/Bison. Checking this options leads to automatic search of Flex/Bison binaries and regeneration of the mentioned files |
| BUILD_YACCLEX | Boolean flag | Enables Flex/Bison lexical analyzers. OCCT source files relating to STEP reader and ExprIntrp functionality are generated automatically with Flex/Bison. Checking this option leads to automatic search of Flex/Bison binaries and regeneration of the mentioned files |
| BUILD_MODULE_MfcSamples | Boolean flag | Indicates whether MFC samples should be built together with OCCT. This option is only relevant to Windows platforms |
| BUILD_DOC_Overview | Boolean flag | Indicates whether OCCT overview documentation project should be created together with OCCT. It is not built together with OCCT. Checking this options leads to automatic search of Doxygen binaries. Building of it will be call Doxygen command to generate the documentation in HTML format |
| BUILD_DOC_Overview | Boolean flag | Indicates whether OCCT overview documentation project should be created together with OCCT. It is not built together with OCCT. Checking this option leads to automatic search of Doxygen binaries. Its building calls Doxygen command to generate the documentation in HTML format |
| BUILD_PATCH | Path | Points to the directory recognized as a "patch" for OCCT. If specified, the files from this directory take precedence over the corresponding native OCCT sources. This way you are able to introduce patches to Open CASCADE Technology not affecting the original source distribution |
| BUILD_WITH_DEBUG | Boolean flag | Enables extended messages of many OCCT algorithms, usually printed to cout. These include messages on internal errors and special cases encountered, timing etc |
| BUILD_WITH_DEBUG | Boolean flag | Enables extended messages of many OCCT algorithms, usually printed to cout. These include messages on internal errors and special cases encountered, timing, etc. |
| CMAKE_CONFIGURATION_TYPES | String | Semicolon-separated CMake configurations |
| INSTALL_DIR | Path | Points to the installation directory. INSTALL_DIR is synonym of CMAKE_INSTALL_PREFIX . User can specify both INSTALL_DIR or CMAKE_INSTALL_PREFIX |
| INSTALL_DIR | Path | Points to the installation directory. *INSTALL_DIR* is a synonym of *CMAKE_INSTALL_PREFIX*. The user can specify both *INSTALL_DIR* or *CMAKE_INSTALL_PREFIX* |
| INSTALL_DIR_BIN | Path | Relative path to the binaries installation directory (absolute path is ${INSTALL_DIR}/${INSTALL_DIR_BIN}) |
| INSTALL_DIR_SCRIPT | Path | Relative path to the scripts installation directory (absolute path is ${INSTALL_DIR}/${INSTALL_DIR_SCRIPT}) |
| INSTALL_DIR_LIB | Path | Relative path to the libraries installation directory (absolute path is ${INSTALL_DIR}/${INSTALL_DIR_LIB}) |
| INSTALL_DIR_INCLUDE | Path | Relative path to the includes installation directory (absolute path is ${INSTALL_DIR}/${INSTALL_DIR_INCLUDE}) |
| INSTALL_DIR_RESOURCE | Path | Relative path to the resources installation directory (absolute path is ${INSTALL_DIR}/${INSTALL_DIR_RESOURCE}) |
| INSTALL_DIR_LAYOUT | String | Defines the structure of OCCT files (binaries, resources, headers, etc.) for the install directory. Two variants are predefined: for Windows (standard OCCT layout) and for Unix operating systems (standard Linux layout). If needed, the layout can be customized with INSTALL_DIR_* variables |
| INSTALL_DIR_DATA | Path | Relative path to the data files installation directory (absolute path is ${INSTALL_DIR}/${INSTALL_DIR_DATA}) |
| INSTALL_DIR_SAMPLES | Path | Relative path to the samples installation directory. Note that only "samples/tcl" folder will be installed. (absolute path is ${INSTALL_DIR}/${INSTALL_DIR_SAMPLES}) |
| INSTALL_DIR_TESTS | Path | Relative path to the tests installation directory (absolute path is ${INSTALL_DIR}/${INSTALL_DIR_TESTS}) |
@@ -118,7 +119,7 @@ The following table enumerates the full list of environment variables used at co
| INSTALL_TEST_CASES | Boolean flag | Indicates whether non-regression OCCT test scripts should be installed into the installation directory |
| INSTALL_DOC_Overview | Boolean flag | Indicates whether OCCT overview documentation should be installed into the installation directory |
**Note:** In those CMake options defining paths only the forward slashes ("/") are acceptable.
**Note:** Only the forward slashes ("/") are acceptable in the CMake options defining paths.
@section build_cmake_3rdparty 3rd party search mechanism
@@ -126,7 +127,7 @@ If *3RDPARTY_DIR* directory is defined, then required 3rd party binaries are sou
The procedure expects to find binary and header files of each 3rd party product in its own sub-directory: *bin*, *lib* and *include*.
The results of the search (achived on the next pass of the configuration process) are recorded in the corresponding variables:
The results of the search (achieved on the next pass of the configuration process) 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 the directory containing a library (e.g. <i>D:/3rdparty/tcltk-86-32/lib</i>).

View File

@@ -248,7 +248,8 @@ Use of tabulation characters for indentation is disallowed.
Punctuation rules follow the rules of the English language.
* C/C++ reserved words, commas, colons and semicolons should be followed by a space character if they are not at the end of a line.
* There should be no space characters after '(' and before ')'. Closing and opening brackets should be separated by a space character.
* For better readability it is also recommended to surround conventional operators by a space character. See the following examples:
* For better readability it is also recommended to surround conventional operators by a space character.
Examples:
~~~~~{.cpp}
while (true) // NOT: while( true ) ...
@@ -261,6 +262,30 @@ for (anIter = 0; anIter < 10; ++anIter) // NOT: for (anIter=0;anIter<10;++anIter
}
~~~~~
### Declaration of pointers and references
In declarations of simple pointers and references put asterisk (*) or ampersand (&) right after the type without extra space.
Since declaration of several variables with mixed pointer types contrudicts this rule, it should be avoided. Instead, declare each variable independently with fully qualified type.
Examples:
~~~~~{.cpp}
Standard_Integer *theVariable; // not recommended
Standard_Integer * theVariable; // not recommended
Standard_Integer* theVariable; // this is OK
Standard_Integer *&theVariable; // not recommended
Standard_Integer *& theVariable; // not recommended
Standard_Integer*& theVariable; // this is OK
Standard_Integer **theVariable; // not recommended
Standard_Integer ** theVariable; // not recommended
Standard_Integer** theVariable; // this is OK
Standard_Integer *theA, theB, **theC; // not recommended (declare each variable independently)
~~~~~
### Separate logical blocks
Separate logical blocks of code with one blank line and comments.
@@ -345,6 +370,25 @@ if (!theAlgo.IsNull()) // preferred
Having all code in the same line is less convenient for debugging.
### Comparison expressions with constants
In comparisons, put the variable (in the current context) on the left side and constant on the right side of expression.
That is, the so called "Yoda style" is to be avoided.
~~~~~{.cpp}
if (NULL != thePointer) // Yoda style, not recommended
if (thePointer != NULL) // OK
if (34 < anIter) // Yoda style, not recommended
if (anIter > 34) // OK
if (theNbValues >= anIter) // bad style (constant function argument vs. local variable)
if (anIter <= theNbValues) // OK
if (THE_LIMIT == theValue) // bad style (global constant vs. variable)
if (theValue == THE_LIMIT) // OK
~~~~~
### Alignment
Use alignment wherever it enhances the readability. See the following example:

View File

@@ -58,7 +58,7 @@ for (Standard_Integer aGr = 1; aGr <= aLen; ++aGr)
Porting of user applications from an earlier OCCT version to version 6.5.2 requires taking into account the following major changes:
* Any code that has been generated by WOK from CDL generic classes *Tcollection_DataMap* and *Tcollection_IndexedDataMap* needs to be regenerated by WOK to take into account the change in the interface of these classes.
* The enumerations *CDF_StoreStatus* and *CDF_RetrievableStatus* have been replaced by the enumerations *PCDM_StoreStatus* and *PCDM_ReaderStatus*. Correspondingly, the methods *Open, Save* and *SaveAs* of the class *TDocStd_Application* have changed their return value. Any code, which uses these enumerations, needs to be updated.
* *BRepLib_MakeFace* has been modified to accept tolerance value for resolution of degenerated edges. This tolerance parameter has no default value to ensure that the client code takes care of passing a meaningful value, not just *Precision::Confusion*, so some porting overheads are expected.
* *BRepLib_MakeFace* has been modified to receive tolerance value for resolution of degenerated edges. This tolerance parameter has no default value to ensure that the client code takes care of passing a meaningful value, not just *Precision::Confusion*, so some porting overheads are expected.
* If the callback mechanism in call_togl_redraw function was used in the application code, it is necessary to revise it to take into account the new callback execution and provide a check of reason value of Aspect_GraphicCallbackStruct in callback methods to confirm that the callback code is executed at the right moment. Now the callbacks are executed before redrawing the underlayer, before redrawing the overlayer and at the end of redrawing. The information about the moment when the callback is invoked is provided with the reason value in form of an additional bit flag <i>(OCC_PRE_REDRAW, OCC_PRE_OVERLAY)</i>. The state of OpenGl changed in callback methods will not be restored automatically, which might lead to unwanted behavior in redrawing procedure.
* The print method used in the application code might need to be revised to take into account the ability to choose between print algorithms: tile and stretch. The stretch algorithm will be selected by default during porting.
* It is recommended to *BRepMesh_DiscretFactory* users, to check *BRepMesh_DiscretFactory::SetDefault()* return value to determine plugin availability / validity. *BRepMesh_DiscretFactory::Discret()* method now returns handle instead of pointer. The code should be updated in the following manner:
@@ -82,7 +82,7 @@ Porting of user applications from an earlier OCCT version to version 6.5.3 requi
* Method *HashCode()* has been removed from class *Standard_Transient*. It is advisable to use global function <i>HashCode()</i> for Handle objects instead.
* Declaration of operators new/delete for classes has become consistent and is encapsulated in macros.
* Memory management has been changed to use standard heap <i>(MMGT_OPT=0)</i> and reentrant mode <i>(MMGT_REENTRANT=1)</i> by default.
* Map classes in *NCollection* package now accept one more argument defining a hash tool.
* Map classes in *NCollection* package now receive one more argument defining a hash tool.
@section upgrade_654 Upgrade to OCCT 6.5.4
@@ -251,6 +251,7 @@ Porting of user applications from an earlier OCCT version to version 6.9.0 requi
3D Viewer now uses GLSL programs for managing frame buffer and stereoscopic output.
For proper initialization, application should configure **CSF_ShadersDirectory** environment variable pointing to a folder with GLSL resources - files from folder **CASROOT**/src/Shaders.
*Note that **CSF_ShadersDirectory** become optional since OCCT 7.1.0 release*.
@subsection upgrade_690_selection Changes in Selection
@@ -507,7 +508,7 @@ This will eliminate the need to include the header *A* in each source file where
#### Ambiguity of calls to overloaded functions
This issue appears in the compilers that do not support default arguments in template functions (known cases are Visual C++ 10 and 11): the compiler reports an ambiguity error if a handle is used in the argument of a call to the function that has two or more overloaded versions, accepting handles to different types.
This issue appears in the compilers that do not support default arguments in template functions (known cases are Visual C++ 10 and 11): the compiler reports an ambiguity error if a handle is used in the argument of a call to the function that has two or more overloaded versions, receiving handles to different types.
The problem is that operator <i> const handle<T2>& </i> is defined for any type *T2*, thus the compiler cannot make the right choice.
Example:
@@ -984,32 +985,24 @@ Draw command *VSetTextureMode* has been deleted.
@section upgrade_occt710 Upgrade to OCCT 7.1.0
@subsection upgrade_occt710_correction_of_Parab2d Correction in *gp_Parab2d, gce_MakeParab2d* and *GCE2d_MakeParabola* classes:
1. Constructors *GCE2d_MakeParabola(const gp_Ax22d& D, const gp_Pnt2d& F)*, *gce_MakeParab2d(const gp_Ax22d& D, const gp_Pnt2d& F)* and *gp_Parab2d(const gp_Ax22d& D, const gp_Pnt2d& F)* have been deleted.
2. Objects created with some constructors of *gp_Parab2d* class may differ from the previous version. Please see the updated documentation for *gp_Parab2d* class (file *gp_Parab2d.hxx*).
3. Result returned by gp_Parab2d::Directrix() method has another direction in compare with previous OCCT-version.
@subsection upgrade_710_aspects Presentation attributes
This section should be considered if application defines custom presentations (inherited from AIS_InteractiveObject).
Previous versions of OCCT have three levels for defining presentation properties (e.g. colors, materials):
This section should be considered if application defines custom presentations, i.e. inherited from *AIS_InteractiveObject*.
The previous versions of OCCT have three levels for defining presentation properties (e.g. colors, materials, etc.):
1. For entire structure (Graphic3d_Structure / Prs3d_Presentation).
2. For specific group of primitives (Graphic3d_Group::SetGroupPrimitivesAspect()) overriding structure aspects.
3. For specific primitive array within graphic group (Graphic3d_Group::SetPrimitivesAspect()).
1. For the entire structure - *Graphic3d_Structure* / *Prs3d_Presentation*.
2. For a specific group of primitives - *Graphic3d_Group::SetGroupPrimitivesAspect()* overriding structure aspects.
3. For a specific primitive array within the graphic group - *Graphic3d_Group::SetPrimitivesAspect()*.
The first one is de facto not used for a long time since OCCT presentations always define aspects at graphic group level (overriding any structure aspects).
Within this OCCT release, this first level of aspects has been completely removed. In most cases application code should just remove missing methods; in rare cases where this functionality was intentionally used - application should explicitly define aspects to appropriate graphic groups.
The structure level has de facto not been used for a long time since OCCT presentations always define aspects at the graphic group level (overriding any structure aspects).
Within this OCCT release, structure level of aspects has been completely removed. In most cases the application code should just remove missing methods. In those rare cases, when this functionality was intentionally used, the application should explicitly define aspects to the appropriate graphic groups.
Note that the 3rd level (defining several different aspects within the same graphic group) is also should be avoided in application code since it is deprecated functionality which can be removed in further releases.
Graphic3d_Group::SetGroupPrimitivesAspect() should be the main method defining presentation attributes.
Note that defining several different aspects within the same graphic group should also be avoided in the application code since it is a deprecated functionality which can be removed in further releases.
*Graphic3d_Group::SetGroupPrimitivesAspect()* should be the main method defining presentation attributes.
The implementation of Graphic3d_Group::SetGroupPrimitivesAspect() has been changed from copying aspect values to keeping passed object.
Although it was not documented, previosly it was possible to modify single aspects instance (like Graphic3d_AspectFillArea3d) and set it to multiple groups.
Now such code would produce unexpected result and therefore should be updated to create dedicated aspect instance.
The implementation of *Graphic3d_Group::SetGroupPrimitivesAspect()* has been changed from copying aspect values to keeping the passed object.
Although it was not documented, previously it was possible to modify a single aspect instance, like *Graphic3d_AspectFillArea3d* and set it to multiple groups.
Now such code would produce an unexpected result and therefore should be updated to create the dedicated aspect instance.
@subsection upgrade_710_types Typedefs
@@ -1020,37 +1013,93 @@ The following type definitions in OCCT has been modified to use C++11 types:
- *Standard_Utf16Char* is now *char16_t* (previously *uint16_t* for compatibility with old compilers).
- *Standard_Utf32Char* is now *char32_t* (previously *uint32_t* for compatibility with old compilers).
For most applications this change should be transparent, since the size of types have not been changed.
For most applications this change should be transparent on the level of source code. Binary compatibility is not maintained, as *bool* has a different size in comparison with *unsigned int*.
@subsection upgrade_710_ffp Programmable Pipeline
Fixed-function pipeline has been already deprecated since OCCT 7.0.0.
Release 7.1.0 disables this functionality by default in favor of Programmable Pipeline (based on GLSL programs).
This also means that method *V3d_View::Export()* based on gl2ps library and requiring disabled by default functionality has been deprecated as well.
Applications should explicitly enable deprecated functionality by setting OpenGl_Caps::ffpEnable flag to TRUE within OpenGl_GraphicDriver::ChangeOptions() before creating the viewer to use V3d_View::Export(),
but being aware that this functionality is likely to be removed in a next OCCT release.
Thus the recommended way to generate vector image of a 3D model or scene is to use application-level solution independent from OpenGL.
Method *V3d_View::Export()*, based on *gl2ps* library, requires fixed pipeline and will return error if used with default settings.
Applications should explicitly enable fixed pipeline by setting *OpenGl_Caps::ffpEnable* flag to TRUE within *OpenGl_GraphicDriver::ChangeOptions()* before creating the viewer to use *V3d_View::Export()*.
This method is declared as deprecated and will be removed in one of the the next OCCT releases.
The recommended way to generate a vector image of a 3D model or scene is to use an application-level solution independent from OpenGL.
@subsection upgrade_710_trsfpers Transformation persistence
The behavior of transformation persistence flags Graphic3d_TMF_ZoomPers and Graphic3d_TMF_TriedronPers have been changed to be consistent with textured fixed-size 2D text.
Object with these flags is considered to be defined in pixel units, and presentation is no more scaled depending on view height.
Applications that need to scale such objects depending on viewport size should update them manually.
The behavior of transformation persistence flags *Graphic3d_TMF_ZoomPers* and *Graphic3d_TMF_TriedronPers* has been changed for consistency with a textured fixed-size 2D text.
An object with these flags is considered as defined in pixel units, and the presentation is no more scaled depending on the view height.
The applications that need to scale such objects depending on viewport size should update them manually.
Flags *Graphic3d_TMF_PanPers* and *Graphic3d_TMF_FullPers* have been removed.
*Graphic3d_TMF_TriedronPers* or *Graphic3d_TMF_2d* can be used instead depending on the context.
*Graphic3d_TransModeFlags* is not an integer bitmask anymore - enumeration values should be specified instead.
Several transformation persistence methods in *PrsMgr_PresentableObject* have been marked deprecated.
Transformation persistence should be defined using *Graphic3d_TransformPers* constructor directly and passed by a handle, not value.
@subsection upgrade_710_selprops Dynamic highlight and selection properties
Release 7.1.0 introduces *Graphic3d_HighlightStyle* - an entity that allows flexible customization of highlighting parameters (such as highlighting method, color, and transparency). Therefore, the signatures of the following methods related to highlighting:
- *AIS_InteractiveContext::Hilight()*;
- *AIS_InteractiveContext::HilightWithColor()*;
- *PrsMgr_PresentationManager::Color()*;
- *SelectMgr_EntityOwner::HilightWithColor()*;
have been changed to receive *Graphic3d_HighlightStyle* instead of *Quantity_Color*.
Method *AIS_InteractiveContext::Hilight* is now deprecated and highlights the interactive object with selection style.
A group of methods *AIS_InteractiveContext::IsHilighted* has changed its behavior - now they only check highlight flags of the object or the owner in the global status. If the highlight color is required on the application level, it is necessary to use overloaded methods *AIS_InteractiveContext::HighlightStyle* for the owner and the object.
The following methods have been replaced in *AIS_InteractiveContext* class:
- *HilightColor* and *SetHilightColor* by *HighlightStyle* and *SetHighlightStyle*;
- *SelectionColor* setter and getter by *SelectionStyle* and *SetSelectionStyle*.
The API of *Prs3d_Drawer* has been extended to allow setting up styles for both dynamic selection and highlighting. Therefore, it is possible to change the highlight style of a particular object on the application level via *SelectMgr_SelectableObject::HilightAttributes()* and process it in the entity owner.
@subsection upgrade_occt710_correction_of_TObj_Model Correction in TObj_Model class
Methods *TObj_Model::SaveAs* and *TObj_Model::Load* now receive *TCollection_ExtendedString* filename arguments instead of char*. UTF-16 encoding can be used to pass file names containing Unicode symbols.
@subsection upgrade_710_env Redundant environment variables
The following environment variables have become redundant:
* *CSF_UnitsLexicon* and *CSF_UnitsDefinition* are no more used. Units definition (*UnitsAPI/Lexi_Expr.dat* and *UnitsAPI/Units.dat*) is now embedded into source code.
* *CSF_XSMessage* and *CSF_XHMessage* are now optional.
English messages (XSMessage/*XSTEP.us* and SHMessage/*SHAPE.us*) are now embedded into source code
and automatically loaded when environment variables are not set.
* *CSF_ShadersDirectory* is not required any more, though it still can be used to load custom shaders.
Mandatory GLSL resources are now embedded into source code.
* *CSF_PluginDefaults* and other variables pointing to OCAF plugin resources (*CSF_StandardDefaults*, *CSF_XCAFDefaults*, *CSF_StandardLiteDefaults* and *CSF_XmlOcafResource*) are not necessary if method *TDocStd_Application::DefineFormat()* is used to enable persistence of OCAF documents.
Other environment variables still can be used to customize behavior of relevant algorithms but are not necessary any more (all required resources are embedded).
@subsection upgrade_710_removed Removed features
The following obsolete features have been removed:
* Obsolete Antialiasing API *V3d_View::SetAntialiasingOn()*. This method was intended to activate deprecated OpenGL functionality (GL_POLYGON_SMOOTH, GL_LINE_SMOOTH, GL_POINT_SMOOTH).
Instead of old API, application should request MSAA buffers for antialiasing by assigning *Graphic3d_RenderingParams::NbMsaaSamples* property of structure returned by *V3d_View::ChangeRenderingParams()*.
* *Prs3d_Drawer::ShadingAspectGlobal()* flag has been removed as not used. Corresponding calls can be removed safely from the application code.
* ZClipping planes and ZCueing (methods *V3d_View::SetZClippingType()*, *::SetZCueingOn()* and V3d_View::others).
ZClipping planes can be replaced by general-purpose clipping planes (application should update plane definion manually).
* 3D viewer printing API *V3d_View::Print()* has been removed. This functionality was available on Windows platforms only.
Applications should use general image dump API *V3d_View::ToPixMap()* and manage printing using platform-specific API at application level.
* Anti-aliasing API *V3d_View::SetAntialiasingOn()*. This method was intended to activate deprecated OpenGL functionality *GL_POLYGON_SMOOTH, GL_LINE_SMOOTH* and *GL_POINT_SMOOTH*.
Instead of the old API, the application should request MSAA buffers for anti-aliasing by assigning *Graphic3d_RenderingParams::NbMsaaSamples* property of the structure returned by *V3d_View::ChangeRenderingParams()*.
* *Prs3d_Drawer::ShadingAspectGlobal()* flag has been removed as not used. The corresponding calls can be removed safely from the application code.
* The methods managing ZClipping planes and ZCueing: *V3d_View::SetZClippingType()*, *V3d_View::SetZCueingOn()*, etc. have been removed. ZClipping planes can be replaced by general-purpose clipping planes (the application should update plane definition manually).
* The 3D viewer printing API *V3d_View::Print()* has been removed. This functionality was available on Windows platforms only. The applications should use the general image dump API *V3d_View::ToPixMap()* and manage printing using a platform-specific API at the application level.
Text resolution can be managed by rendering parameter *Graphic3d_RenderingParams::Resolution*, returned by *V3d_View::ChangeRenderingParams()*.
* Methods *PrsMgr_PresentationManager::BoundBox*, *PrsMgr_PresentationManager::Hilight* and *SelectMgr_EntityOwner::Hilight* have been removed as not used. The corresponding method in custom implementations of *SelectMgr_EntityOwner* can be removed safely. *PrsMgr_PresentationManager::Color* with the corresponding style must be used instead.
* Class *NCollection_QuickSort* has been removed. The code that used the tools provided by that class should be corrected manually. The recommended approach is to use sorting algorithms provided by STL (std::sort). See also @ref upgrade_occt700_sorttools above.
@subsection upgrade_occt710_correction_of_TObj_Model Correction in TObj_Model class
* Package *Dico*. The code that used the tools provided by that package should be corrected manually. The recommended approach is to use *NCollection_DataMap* and *NCollection_IndexedDataMap* classes.
@subsection upgrade_710_changed_methods Other changes
The following classes have been changed:
* *BVH_Sorter* class has become abstract. The list of arguments of both *Perform* methods has been changed and the methods became pure virtual.
* *Extrema_FuncExtPS* has been renamed to *Extrema_FuncPSNorm*.
* The default constructor and the constructor taking a point and a surface have been removed from class *Extrema_GenLocateExtPS*. Now the only constructor takes the surface and optional tolerances in U and V directions. The new method *Perform* takes the point with the start solution and processes it. The class has become not assignable and not copy-constructable.
* Constructors with arguments *(const gp_Ax22d& D, const gp_Pnt2d& F)* have been removed from *GCE2d_MakeParabola*, *gce_MakeParab2d* and *gp_Parab2d*. The objects created with some constructors of class *gp_Parab2d* may differ from the previous version (see the comments in *gp_Parab2d.hxx*). The result returned by *gp_Parab2d::Directrix()* method has an opposite direction in comparison with the previous OCCT versions.
* *BRepTools_Modifier* class now has two modes of work. They are defined by the boolean parameter *MutableInput*, which is turned off by default. This means that the algorithm always makes a copy of a sub-shape (e.g. vertex) if its tolerance is to be increased in the output shape. The old mode corresponds to *MutableInput* turned on. This change may impact an application if it implements a class derived from *BRepTools_Modifier*.
* The second parameter *theIsOuterWire* of method *ShapeAnalysis_Wire::CheckSmallArea* has been removed.
* In class *GeomPlate_CurveConstraint*, two constructors taking boundary curves of different types have been replaced with one constructor taking the curve of an abstract type.
* The last optional argument *RemoveInvalidFaces* has been removed from the constructor of class *BRepOffset_MakeOffset* and method *Initialize*.
* The public method *BOPDS_DS::VerticesOnIn* has been renamed into *SubShapesOnIn* and the new output parameter *theCommonPB* has been added.
Methods *TObj_Model::SaveAs* and *TObj_Model::Load* receive *TCollection_ExtendedString* filename arguments instead of char*. This shows that the filename may be not-ASCII explicitly. Also it makes OCAF API related to this functionality more conform.

View File

@@ -346,10 +346,9 @@ The scripts are located in the OCCT root folder.
* **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 3D viewer to work);
* **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** defines the path to the messages file for *ShapeHealing*;
* **CSF_XSMessage** defines the path to the messages file for **STEP** and **IGES** translators;
* **CSF_ShadersDirectory** (optional) defines the directory for GLSL programs for Ray Tracing renderer (embedded resources are used when variable is undefined);
* **CSF_SHMessage** (optional) defines the path to the messages file for *ShapeHealing*;
* **CSF_XSMessage** (optional) defines the path to the messages file for **STEP** and **IGES** translators;
* **CSF_StandardDefaults**, **CSF_StandardLiteDefaults*, **CSF_XCAFDefaults**, and **CSF_PluginDefaults** define paths to directory where configuration files for OCAF persistence are located (required for open/save operations with OCAF documents);
* **CSF_IGESDefaults** and **CSF_STEPDefaults** (optional) define paths to directory where resource files of **IGES** and **STEP** translators are located;
* **CSF_XmlOcafResource** is required in order to set the path to **XSD** resources, which defines XML grammar.

View File

@@ -203,18 +203,18 @@ Braces *quoting* prevents all substitutions. Braces are also nested. The main us
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
set x 0
# this will loop for ever
# because while argument is ;0 3;
while ;$x 3; {set x [expr $x+1]}
# because while argument is ;0 < 3;
while ;$x < 3; {set x [expr $x+1]}
# this will terminate as expected because
# while argument is {$x 3}
while {$x 3} {set x [expr $x+1]}
# while argument is {$x < 3}
while {$x < 3} {set x [expr $x+1]}
# this can be written also
while {$x 3} {
while {$x < 3} {
set x [expr $x+1]
}
# the following cannot be written
# because while requires two arguments
while {$x 3}
while {$x < 3}
{
set x [expr $x+1]
}
@@ -365,7 +365,7 @@ if condition script [elseif script .... else script]
**Example:**
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
if {$x 0} {
if {$x > 0} {
puts ;positive;
} elseif {$x == 0} {
puts ;null;
@@ -391,13 +391,13 @@ The three loop structures are similar to their C or csh equivalent. It is import
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
# while example
dset x 1.1
while {[dval x] 100} {
while {[dval x] < 100} {
circle c 0 0 x
dset x x*x
}
# for example
# incr var d, increments a variable of d (default 1)
for {set i 0} {$i 10} {incr i} {
for {set i 0} {$i < 10} {incr i} {
dset angle $i*pi/10
point p$i cos(angle0 sin(angle) 0
}
@@ -421,7 +421,7 @@ Within loops, the **break** and **continue** commands have the same effect as in
**Example:**
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
# search the index for which t$i has value ;secret;
for {set i 1} {$i = 100} {incr i} {
for {set i 1} {$i <= 100} {incr i} {
if {[set t$i] == ;secret;} break;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -1164,7 +1164,7 @@ point . x y z
#Not OK. display points on a curve c
# with dot no variables are created
for {set i 0} {$i = 10} {incr i} {
for {set i 0} {$i <= 10} {incr i} {
cvalue c $i/10 x y z
point . x y z
}
@@ -2306,7 +2306,7 @@ Creates *AIS_ConnectedInteractive* object from the input object and location and
**Example:**
~~~~~
Vinitvinit
vinit
vpoint p1 0 0 0
vpoint p2 50 0 0
vsegment segment p1 p2
@@ -2425,9 +2425,10 @@ vdimension name {-angle|-length|-radius|-diameter} -shapes shape1 [shape2 [shape
[-label left|right|hcenter|hfit top|bottom|vcenter|vfit]
[-arrow external|internal|fit] [{-arrowlength|-arlen} RealArrowLength]
[{-arrowangle|-arangle} ArrowAngle(degrees)] [-plane xoy|yoz|zox]
[-flyout FloatValue -extension FloatValue] [-value CustomNumberValue]
[-dispunits DisplayUnitsString] [-modelunits ModelUnitsString]
[-showunits | -hideunits]
[-flyout FloatValue -extension FloatValue]
[-autovalue] [-value CustomRealValue] [-textvalue CustomTextValue]
[-dispunits DisplayUnitsString]
[-modelunits ModelUnitsString] [-showunits | -hideunits]
~~~~~
Builds angle, length, radius or diameter dimension interactive object **name**.
@@ -2436,6 +2437,7 @@ Builds angle, length, radius or diameter dimension interactive object **name**.
**Example:**
~~~~~
vinit
vpoint p1 0 0 0
vpoint p2 50 50 0
vdimension dim1 -length -plane xoy -shapes p1 p2
@@ -2459,7 +2461,9 @@ vdimparam name [-text 3d|2d wf|sh|wireframe|shading IntegerSize]
[{-arrowangle|-arangle} ArrowAngle(degrees)]
[-plane xoy|yoz|zox]
[-flyout FloatValue -extension FloatValue]
[-value CustomNumberValue]
[-autovalue]
[-value CustomRealValue]
[-textvalue CustomTextValue]
[-dispunits DisplayUnitsString]
[-modelunits ModelUnitsString]
[-showunits | -hideunits]
@@ -2469,13 +2473,38 @@ Sets parameters for angle, length, radius and diameter dimension **name**.
**Example:**
~~~~~
vinit
vpoint p1 0 0 0
vpoint p2 50 50 0
vdimension dim1 -length -plane xoy -shapes p1 p2
vdimparam dim1 -flyout -15 -arrowlength 4 -showunits -value 10
vfit
vdimparam dim1 -textvalue "w_1"
vdimparam dim1 -autovalue
~~~~~
@subsubsection occt_draw_4_4_22 vmovedim
@subsubsection occt_draw_4_4_22 vdimangleparam
Syntax:
~~~~~
vangleparam name [-type interior|exterior]
[-showarrow first|second|both|none]
~~~~~
Sets parameters for angle dimension **name**.
**Example:**
~~~~~
vinit
vpoint p1 0 0 0
vpoint p2 10 0 0
vpoint p3 10 5 0
vdimension dim1 -angle -plane xoy -shapes p1 p2 p3
vfit
vangleparam dim1 -type exterior -showarrow first
~~~~~
@subsubsection occt_draw_4_4_23 vmovedim
Syntax:
~~~~~
@@ -2489,6 +2518,7 @@ are adjusted.
**Example:**
~~~~~
vinit
vpoint p1 0 0 0
vpoint p2 50 50 0
vdimension dim1 -length -plane xoy -shapes p1 p2
@@ -4021,7 +4051,7 @@ Initializes the iteration on the tree of *TreeNode* attributes with tree *ID* (o
~~~~~
InitChildNodeIterate D 0:5 1
set aChildNumber 0
for {set i 1} {$i 100} {incr i} {
for {set i 1} {$i < 100} {incr i} {
if {[ChildNodeMore] == *TRUE*} {
puts *Tree node = [ChildNodeValue]*
incr aChildNumber
@@ -5241,10 +5271,10 @@ For a 2d rotation, you need only give the center point and the angle. In 2d or 3
**Example:**
~~~~~
# make a helix of circles. create a scripte file with
# make a helix of circles. create a script file with
this code and execute it using **source**.
circle c0 10 0 0 3
for {set i 1} {$i = 10} {incr i} {
for {set i 1} {$i <= 10} {incr i} {
copy c[expr $i-1] c$i
translate c$i 0 0 3
rotate c$i 0 0 0 0 0 1 36
@@ -5366,7 +5396,7 @@ Computes points and derivatives on a surface for a pair of parameter values. The
~~~~~
# display points on a sphere
sphere s 10
for {dset t 0} {[dval t] = 1} {dset t t+0.01} {
for {dset t 0} {[dval t] <= 1} {dset t t+0.01} {
svalue s t*2*pi t*pi-pi/2 x y z
point . x y z
}
@@ -6634,7 +6664,7 @@ Locations are very economic in the data structure because multiple occurences of
# make rotated copies of a sphere in between two cylinders
# create a file source toto.tcl
# toto.tcl code:
for {set i 0} {$i 360} {incr i 20} {
for {set i 0} {$i < 360} {incr i 20} {
copy s s$i
trotate s$i 0 0 0 0 0 1 $i
}

View File

@@ -810,7 +810,7 @@ The *Load* method looks for the library name in the resource file or registry t
a148e300-5740-11d1-a904-080036aaa103.Location: libFWOSPlugin.so
~~~~~
Then the *Load* method loads the library according to the rules of the operating system of the host machine (for example, by using environment variables such as *LD_LIBRARY_PATH* with Unix and *PATH* with Windows). After that it invokes the *PLUGINFACTORY* method to return the object which supports the required service.
Then the *Load* method loads the library according to the rules of the operating system of the host machine (for example, by using environment variables such as *LD_LIBRARY_PATH* with Unix and *PATH* with Windows). After that it invokes the *PLUGINFACTORY* method to return the object, which supports the required service.
The client may then call the functions supported by this object.
#### C++ Client Plug-In Implementation
@@ -885,7 +885,7 @@ Handle(Standard_Transient) FAFactory::Factory (const Standard_GUID& theGUID)
PLUGIN(FAFactory)
~~~~~
Application might also instantiate a factory by linking to the library and calling FAFactory::Factory() directly.
Application might also instantiate a factory by linking to the library and calling *FAFactory::Factory()* directly.
@section occt_fcug_3 Collections, Strings, Quantities and Unit Conversion

View File

@@ -415,18 +415,18 @@ These classes use the "Projection" criteria for optimization.
### Extrema between Curves
The *Geom2dAPI_ExtremaCurveCurve* class allows calculation of all minimal distances between two 2D geometric curves.
The *GeomAPI_ExtremaCurveCurve* class allows calculation of all minimal distances two 3D geometric curves.
The *GeomAPI_ExtremaCurveCurve* class allows calculation of all minimal distances between two 3D geometric curves.
These classes use Euclidean distance as the criteria for optimization.
### Extrema between Curve and Surface
The *GeomAPI_ExtremaCurveSurface* class allows calculation of one extrema between a 3D curve and a surface. Extrema are the lengths of the segments orthogonal to the curve and the surface.
This class use the "Projection" criteria for optimization.
This class uses the "Projection" criteria for optimization.
### Extrema between Surfaces
The *GeomAPI_ExtremaSurfaceSurface* class allows calculation of one minimal and one maximal distance between two surfaces.
This class use Euclidean distance to compute minimum and "Projection" criteria to compute maximum.
This class uses Euclidean distance to compute the minimum, and "Projection" criteria to compute the maximum.
@section occt_modat_2 2D Geometry
@@ -1249,8 +1249,8 @@ For example, in the wire in the image we want to recuperate the edges in the ord
@subsection occt_modat_5_6 Storage of shapes
**BRepTools** and **BinTools** packages contain methods *Read* and *Write* allowing to read and write a Shape to/from a stream or a file.
The methods provided by **BRepTools** package use ASCII storage format; **BinTools** package use binary format.
*BRepTools* and *BinTools* packages contain methods *Read* and *Write* allowing to read and write a Shape to/from a stream or a file.
The methods provided by *BRepTools* package use ASCII storage format; *BinTools* package uses binary format.
Each of these methods has two arguments:
- a *TopoDS_Shape* object to be read/written;
- a stream object or a file name to read from/write to.

View File

@@ -625,7 +625,7 @@ app->NewDocument("NewDocumentFormat", doc);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Here "NewDocumentFormat" is identifier of the format of your document.
OCCT defines several standard formats, distinguishing by a set of OCAF attributes supported, and method of encoding (e.g. binary data or XML), described below.
OCCT defines several standard formats, distinguishing by a set of supported OCAF attributes, and method of encoding (e.g. binary data or XML), described below.
If your application defines specific OCAF attributes, you need to define your own format for it.
@subsubsection occt_ocaf_4_2_3 Retrieving the application to which the document belongs
@@ -655,7 +655,7 @@ doc = TDocStd_Document::Get(label);
@subsubsection occt_ocaf_4_3_format Defining storage format
OCAF uses customizable mechanism for storage of the documents.
OCAF uses a customizable mechanism for storage of the documents.
In order to use OCAF persistence to save and read your documents to / from the file, you need to define one or several formats in your application.
For that, use method TDocStd_Application::DefineFormat(), for instance:
@@ -665,8 +665,8 @@ app->DefineFormat ("NewDocumentFormat", "New format for OCAF documents", "ndf",
new NewDocumentFormat_StorageDriver());
~~~~~
Here format "NewDocumentFormat" is defined, with default file extension "ndf", and drivers for reading and storing documents from and to that format are instantiated.
Either of the drivers can be null, in this case corresponding action will not be supported for that format.
This example defines format "NewDocumentFormat" with a default file extension "ndf", and instantiates drivers for reading and storing documents from and to that format.
Either of the drivers can be null, in this case the corresponding action will not be supported for that format.
OCAF provides several standard formats, each covering some set of OCAF attributes:
@@ -687,28 +687,29 @@ OCAF provides several standard formats, each covering some set of OCAF attribute
<tr><td>TObjXml </td><td> TKXmlTObj </td><td> TKLCAF + TKTObj </td></tr>
</table>
For convenience, these toolkits provide static methods DefineFormat() accepting handle to application.
For convenience, these toolkits provide static methods *DefineFormat()* accepting handle to application.
These methods allow defining corresponding formats easily, e.g.:
~~~~~
BinDrivers::DefineFormat (app); // define format "BinOcaf"
~~~~~
Use these toolkits as example for implementation of persistence drivers for custom attributes, or new persistence formats.
Use these toolkits as an example for implementation of persistence drivers for custom attributes, or new persistence formats.
The application can define several storage formats.
On save, the format specified in the document (see TDocStd_Document::StorageFormat()) will be used (it will fail if that format is not defined in the application).
On reading, format identifier stored in the file is used, and recorded in the document.
On save, the format specified in the document (see *TDocStd_Document::StorageFormat()*) will be used (save will fail if that format is not defined in the application).
On reading, the format identifier stored in the file is used and recorded in the document.
@subsubsection occt_ocaf_4_3_plugins Defining storage format by resource files
Alternative (legacy, used in earlier versions of OCCT) method to define formats is via usage of resource files.
The alternative method to define formats is via usage of resource files.
This method was used in earlier versions of OCCT and is considered as deprecated since version 7.1.0.
This method allows loading persistence drivers on demand, using plugin mechanism.
To use this method, create your own application class inheriting from *TDocStd_Application*, and override method ResourcesName().
That method should return a string with a name of resource file, e.g. "NewDocumentFormat", which will contain description of the format.
To use this method, create your own application class inheriting from *TDocStd_Application*, and override method *ResourcesName()*.
That method should return a string with a name of resource file, e.g. "NewDocumentFormat", which will contain a description of the format.
Then create that resource file and define parameters of your format:
Then create that resource file and define the parameters of your format:
~~~~~
ndf.FileFormat: NewDocumentFormat
@@ -718,10 +719,10 @@ NewDocumentFormat.StoragePlugin: bb5aa176-c65c-4c84-862e-6b7c1fe16921
NewDocumentFormat.RetrievalPlugin: 76fb4c04-ea9a-46aa-88a2-25f6a228d902
~~~~~
Here GUIDs should be unique and correspond to the GUIDs supported by relevant plugin.
You can use either one of existing plugins (see the table above) or create your own.
The GUIDs should be unique and correspond to the GUIDs supported by relevant plugin.
You can use an existing plugins (see the table above) or create your own.
Finally, make a copy of the resource file "Plugin" from $CASROOT/src/StdResource, and, if necessary, add definition of your plugin in it, for instance:
Finally, make a copy of the resource file "Plugin" from *$CASROOT/src/StdResource* and, if necessary, add the definition of your plugin in it, for instance:
~~~~~
bb5aa176-c65c-4c84-862e-6b7c1fe16921.Location: TKNewFormat
@@ -738,7 +739,7 @@ setenv CSF_NewFormatDefaults MyApplicationPath/MyResources
@subsubsection occt_ocaf_4_3_3 Saving a document
To save the document, make sure that its parameter StorageFormat() corresponds to one of formats defined in the application, and use method *TDocStd_Application::SaveAs*, for instance:
To save the document, make sure that its parameter *StorageFormat()* corresponds to one of the formats defined in the application, and use method *TDocStd_Application::SaveAs*, for instance:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
app->SaveAs(doc, "/tmp/example.caf");

View File

@@ -121,7 +121,7 @@ IVtkTools::InitShapeMapper(Mapper);
It is possible to get an instance of *vtkLookupTable class* with a default OCCT color scheme by means of the following method:
~~~~
vtkLookupTable* Table = IVtkTools::InitLookupTable();
vtkSmartPointer<vtkLookupTable> Table = IVtkTools::InitLookupTable();
~~~~
@subsubsection occt_vis_3_2_2 Custom color scheme

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

View File

@@ -614,7 +614,7 @@ The set of sensitive primitives, which correspond to a given mode, is stocked in
Each selection mode is identified by an index. By convention, the default selection mode that allows us to grasp the interactive object in its entirety is mode *0*. However, it can be modified in the custom interactive objects using method <i>SelectMgr_SelectableObject::setGlobalSelMode()</i>.
The calculation of selection primitives (or sensitive entities) is done by the intermediary of a virtual function, *ComputeSelection*. It should be implemented for each type of interactive object that is assumed to have different selection modes using the function *AIS_ConnectedInteractive::ComputeSelection*.
The calculation of selection primitives (or sensitive entities) is done in a virtual function *ComputeSelection*. It should be implemented for each type of interactive object that is assumed to have different selection modes using the function *AIS_InteractiveObject::ComputeSelection*.
A detailed explanation of the mechanism and the manner of implementing this function has been given in @ref occt_visu_2_2 "Selection" chapter.
@@ -746,6 +746,95 @@ Standard_Boolean AIS_InteractiveContext::HasPolygonOffsets
(const Handle(AIS_InteractiveObject) &anObj)
~~~~~
@subsubsection occt_visu_3_2_7 Object hierarchy
Each *PrsMgr_PresentableObject* has a list of objects called *myChildren*.
Any transformation of *PrsMgr_PresentableObject* is also applied to its children. This hierarchy does not propagate to *Graphic3d* level and below.
*PrsMgr_PresentableObject* sends its combined (according to the hierarchy) transformation down to *Graphic3d_Structure*.
The materials of structures are not affected by the hierarchy.
Object hierarchy can be controlled by the following API calls:
* *PrsMgr_PresentableObject::AddChild*;
* *PrsMgr_PresentableObject::RemoveChild*.
@subsubsection occt_visu_3_2_8 Instancing
The conception of instancing operates the object hierarchy as follows:
* Instances are represented by separated *AIS* objects.
* Instances do not compute any presentations.
Classes *AIS_ConnectedInteractive* and *AIS_MultipleConnectedInteractive* are used to implement this conception.
*AIS_ConnectedInteractive* is an object instance, which reuses the geometry of the connected object but has its own transformation, material, visibility flag, etc. This connection is propagated down to *OpenGl* level, namely to *OpenGl_Structure*. *OpenGl_Structure* can be connected only to a single other structure.
*AIS_ConnectedInteractive* can be referenced to any *AIS_Interactive* object in general. When it is referenced to another *AIS_ConnectedInteractive*, it just copies the reference.
*AIS_MultipleConnectedInteractive* represents an assembly, which does not have its own presentation. The assemblies are able to participate in the object hierarchy and are intended to handle a grouped set of instanced objects. It behaves as a single object in terms of selection. It applies high level transformation to all sub-elements since it is located above in the hierarchy.
All *AIS_MultipleConnectedInteractive* are able to have child assemblies. Deep copy of object instances tree is performed if one assembly is attached to another.
Note that *AIS_ConnectedInteractive* cannot reference *AIS_MultipleConnectedInteractive*. *AIS_ConnectedInteractive* copies sensitive entities of the origin object for selection, unlike *AIS_MultipleConnectedInteractive* that re-uses the entities of the origin object.
Instances can be controlled by the following DRAW commands:
* *vconnect* : Creates and displays *AIS_MultipleConnectedInteractive* object from input objects and location.
* *vconnectto* : Makes an instance of object with the given position.
* *vdisconnect* : Disconnects all objects from an assembly or disconnects an object by name or number.
* *vaddconnected* : Adds an object to the assembly.
* *vlistconnected* : Lists objects in the assembly.
Have a look at the examples below:
~~~~~
pload ALL
vinit
psphere s 1
vdisplay s
vconnectto s2 3 0 0 s # make instance
vfit
~~~~~
See how proxy *OpenGl_Structure* is used to represent instance:
@figure{/user_guides/visualization/images/visualization_image029.png}
The original object does not have to be displayed in order to make instance. Also selection handles transformations of instances correctly:
~~~~~
pload ALL
vinit
psphere s 1
psphere p 0.5
vdisplay s # p is not displayed
vsetloc s -2 0 0
vconnect x 3 0 0 s p # make assembly
vfit
~~~~~
@figure{/user_guides/visualization/images/visualization_image030.png}
Here is the example of a more complex hierarchy involving sub-assemblies:
~~~~~
pload ALL
vinit
box b 1 1 1
psphere s 0.5
vdisplay b s
vsetlocation s 0 2.5 0
box d 0.5 0.5 3
box d2 0.5 3 0.5
vdisplay d d2
vconnectto b1 -2 0 0 b
vconnect z 2 0 0 b s
vconnect z2 4 0 0 d d2
vconnect z3 6 0 0 z z2
vfit
~~~~~
@subsection occt_visu_3_3 Interactive Context
@subsubsection occt_visu_3_3_1 Rules
@@ -1274,7 +1363,7 @@ when you activate one of modes: 1 2 3 4, you pick AIS objects of type:
* mode 1 : selection of the origin of the trihedron;
* mode 2 : selection of the axes -- same remarks as for the Trihedron.
For the presentation of planes and trihedra, the default unit of length is millimeter, and the default value for the representation of axes is 100. If you modify these dimensions, you must temporarily recover the object **Drawer**. From it, take the *Aspects* in which the values for length are stored (*PlaneAspect* for the plane, *FirstAxisAspect* for trihedra), and change these values inside these Aspects. Finally, recalculate the presentation.
For the presentation of planes and trihedra, the default length unit is millimeter and the default value for the representation of axes is 10. To modify these dimensions, you must temporarily recover the object **Drawer**. From it, take the *DatumAspect()* and change the value *FirstAxisLength*. Finally, recalculate the presentation.
@subsubsection occt_visu_3_5_2 Object
@@ -1296,9 +1385,7 @@ And at maximum seven selection modes, depending on the shape complexity:
* *AIS_Triangulation* is a simple interactive object for displaying triangular mesh contained in *Poly_Triangulation* container.
* *AIS_ConnectedInteractive* is an Interactive Object connecting to another interactive object reference, and located elsewhere in the viewer makes it possible not to calculate presentation and selection, but to deduce them from your object reference.
* *AIS_ConnectedShape* is an object connected to interactive objects having a shape; this class has the same decompositions as *AIS_Shape*. Furthermore, it allows a presentation of hidden parts, which are calculated automatically from the shape of its reference.
* *AIS_MultipleConnectedInteractive* is an object connected to a list of interactive objects (which can also be Connected objects. It does not require memory hungry calculations of presentation)
* *AIS_MultipleConnectedShape* is an interactive Object connected to a list of interactive objects having a Shape <i>(AIS_Shape, AIS_ConnectedShape, AIS_MultipleConnectedShape)</i>. The presentation of hidden parts is calculated automatically.
* *AIS_TexturedShape* is an Interactive Object that supports texture mapping. It is constructed as a usual AIS_Shape, but has additional methods that allow to map a texture on it.
* *MeshVS_Mesh* is an Interactive Object that represents meshes, it has a data source that provides geometrical information (nodes, elements) and can be built up from the source data with a custom presentation builder.
@@ -2404,19 +2491,58 @@ For each z-layer, it is allowed to:
* Enable / disable depth buffer clearing.
* Enable / disable polygon offset.
The corresponding method *SetZLayerOption (...)* is available in *Graphic3d_GraphicDriver* interface. You can get the options using getter from *Visual3d_ViewManager* and *V3d_Viewer*. It returns *Graphic3d_ZLayerSettings* cached in *Visual3d_ViewManager* for a given *LayerId*.
You can get the options using getter from *Visual3d_ViewManager* and *V3d_Viewer*. It returns *Graphic3d_ZLayerSettings* for a given *LayerId*.
Example:
~~~~~
// change z-layer settings
Graphic3d_ZLayerSettings aSettings = aViewer->ZLayerSettings (anId);
aSettings.EnableSetting (Graphic3d_ZLayerDepthTest);
aSettings.EnableSetting (Graphic3d_ZLayerDepthWrite);
aSettings.EnableSetting (Graphic3d_ZLayerDepthClear);
aSettings.EnableSetting (Graphic3d_ZLayerDepthOffset);
aSettings.SetEnableDepthTest (Standard_True);
aSettings.SetEnableDepthWrite(Standard_True);
aSettings.SetClearDepth (Standard_True);
aSettings.SetPolygonOffset (Graphic3d_PolygonOffset());
aViewer->SetZLayerSettings (anId, aSettings);
~~~~~
Another application for Z-Layer feature is treating visual precision issues when displaying objects far from the World Center.
The key problem with such objects is that visualization data is stored and manipulated with single precision floating-point numbers (32-bit).
Single precision 32-bit floating-point numbers give only 6-9 significant decimal digits precision,
while double precision 64-bit numbers give 15-17 significant decimal digits precision, which is sufficient enough for most applications.
When moving an Object far from the World Center, float number steadily eats precision.
The camera Eye position adds leading decimal digits to the overall Object transformation, which discards smaller digits due to floating point number nature.
For example, the object of size 0.0000123 moved to position 1000 has result transformation 1000.0000123,
which overflows single precision floating point - considering the most optimistic scenario of 9 significant digits (but it is really not this case), the result number will be 1000.00001.
This imprecision results in visual artifacts of two kinds in the 3D Viewer:
* Overall per-vertex Object distortion.
This happens when each vertex position has been defined within World Coordinate system.
* The object itself is not distorted, but its position in the World is unstable and imprecise - the object jumps during camera manipulations.
This happens when vertices have been defined within Local Coordinate system at the distance small enough to keep precision within single precision float,
however Local Transformation applied to the Object is corrupted due to single precision float.
The first issue cannot be handled without switching the entire presentation into double precision (for each vertex position).
However, visualization hardware is much faster using single precision float number rather than double precision - so this is not an option in most cases.
The second issue, however, can be negated by applying special rendering tricks.
So, to apply this feature in OCCT, the application :
* Defines Local Transformation for each object to fit the presentation data into single precision float without distortion.
* Spatially splits the world into smaller areas/cells where single precision float will be sufficient.
The size of such cell might vary and depends on the precision required by application (e.g. how much user is able to zoom in camera within application).
* Defines a Z-Layer for each spatial cell containing any object.
* Defines the Local Origin property of the Z-Layer according to the center of the cell.
~~~~~
Graphic3d_ZLayerSettings aSettings = aViewer->ZLayerSettings (anId);
aSettings.SetLocalOrigin (400.0, 0.0, 0.0);
~~~~~
* Assigns a presentable object to the nearest Z-Layer.
Note that Local Origin of the Layer is used only for rendering - everything outside will be still defined in the World Coordinate System,
including Local Transformation of the Object and Detection results.
E.g., while moving the presentation between Z-layers with different Local Origins, the Object will stay at the same place - only visualization quality will vary.
@subsubsection occt_visu_4_4_16 Clipping planes

View File

@@ -72,12 +72,7 @@ public:
return false;
}
TCollection_ExtendedString a3DName("Visu3D");
myViewer() = new V3d_Viewer (myGraphicDriver(), a3DName.ToExtString(),"", 1000.0,
V3d_XposYnegZpos, Quantity_NOC_GRAY30,
V3d_ZBUFFER,V3d_GOURAUD,V3d_WAIT,
Standard_True, Standard_False);
myViewer() = new V3d_Viewer (myGraphicDriver());
myViewer()->SetDefaultLights();
myViewer()->SetLightOn();
myView() = myViewer()->CreateView();

View File

@@ -78,12 +78,7 @@ public:
myGraphicDriver()->ChangeOptions().buffersNoSwap = true;
//myGraphicDriver()->ChangeOptions().contextDebug = true;
TCollection_ExtendedString a3DName ("Visu3D");
myViewer() = new V3d_Viewer (myGraphicDriver(), a3DName.ToExtString(), "", 1000.0,
V3d_XposYnegZpos, Quantity_NOC_GRAY30,
V3d_ZBUFFER, V3d_GOURAUD, V3d_WAIT,
Standard_True, Standard_False);
myViewer() = new V3d_Viewer (myGraphicDriver());
myViewer()->SetDefaultLights();
myViewer()->SetLightOn();
myView() = myViewer()->CreateView();

View File

@@ -32,17 +32,7 @@ $(ASSETDIR)/XSMessage: $(ASSETDIR)
-mkdir -p $(ASSETDIR)/XSMessage
cp -f -r $(OCCT_ROOT)/src/XSMessage/*.* $(ASSETDIR)/XSMessage
$(ASSETDIR)/TObj: $(ASSETDIR)
-mkdir -p $(ASSETDIR)
-mkdir -p $(ASSETDIR)/TObj
cp -f -r $(OCCT_ROOT)/src/TObj/*.msg $(ASSETDIR)/TObj
$(ASSETDIR)/UnitsAPI: $(ASSETDIR)
-mkdir -p $(ASSETDIR)
-mkdir -p $(ASSETDIR)/UnitsAPI
cp -f -r $(OCCT_ROOT)/src/UnitsAPI/*.dat $(ASSETDIR)/UnitsAPI
pre_all: $(ASSETDIR)/Shaders $(ASSETDIR)/SHMessage $(ASSETDIR)/XSMessage $(ASSETDIR)/TObj $(ASSETDIR)/UnitsAPI
pre_all: $(ASSETDIR)/Shaders $(ASSETDIR)/SHMessage $(ASSETDIR)/XSMessage
jniall: pre_all all

View File

@@ -110,9 +110,6 @@ OcctJni_Viewer::OcctJni_Viewer()
// prepare necessary environment
TCollection_AsciiString aResRoot = "/data/data/com.opencascade.jnisample/files";
setResourceEnv ("CSF_TObjMessage", aResRoot + "/TObj", "TObj.msg", Standard_False);
setResourceEnv ("CSF_UnitsLexicon", aResRoot + "/UnitsAPI", "Lexi_Expr.dat", Standard_True);
setResourceEnv ("CSF_UnitsDefinition", aResRoot + "/UnitsAPI", "Units.dat", Standard_True);
setResourceEnv ("CSF_ShadersDirectory", aResRoot + "/Shaders", "Declarations.glsl", Standard_False);
setResourceEnv ("CSF_XSMessage", aResRoot + "/XSMessage", "XSTEP.us", Standard_False);
setResourceEnv ("CSF_SHMessage", aResRoot + "/XSMessage", "SHAPE.us", Standard_False);
@@ -120,9 +117,6 @@ OcctJni_Viewer::OcctJni_Viewer()
// make sure OCCT loads the dictionary
//UnitsAPI::SetLocalSystem (UnitsAPI_SI);
// load messages for TObj
Message_MsgFile::LoadFromEnv ("CSF_TObjMessage", "TObj", "msg");
}
// =======================================================================
@@ -194,9 +188,8 @@ bool OcctJni_Viewer::init()
}
// create viewer
myViewer = new V3d_Viewer (aDriver, TCollection_ExtendedString("Viewer").ToExtString(), "", 1000.0,
V3d_XposYnegZpos, Quantity_NOC_BLACK, V3d_ZBUFFER, V3d_GOURAUD, V3d_WAIT,
Standard_True, Standard_False);
myViewer = new V3d_Viewer (aDriver);
myViewer->SetDefaultBackgroundColor (Quantity_NOC_BLACK);
myViewer->SetDefaultLights();
myViewer->SetLightOn();

View File

@@ -46,7 +46,7 @@ COCCDemoDoc::COCCDemoDoc()
Handle(Graphic3d_WNTGraphicDevice) theGraphicDevice =
((COCCDemoApp*)AfxGetApp())->GetGraphicDevice();
myViewer = new V3d_Viewer(theGraphicDevice,(Standard_ExtString )"Visu3D");
myViewer = new V3d_Viewer(theGraphicDevice);
myViewer->SetDefaultLights();
myViewer->SetLightOn();
myViewer->SetDefaultBackgroundColor(Quantity_TOC_RGB, 0.,0.,0.);

View File

@@ -32,13 +32,11 @@ set (Geometry_ISESSION2D_HEADER_FILES ${Geometry_ISESSION2D_DIR}/ISession_Curve.
${Geometry_ISESSION2D_DIR}/ISession_Direction.h
${Geometry_ISESSION2D_DIR}/ISession_Point.h
${Geometry_ISESSION2D_DIR}/ISession_Surface.h
${Geometry_ISESSION2D_DIR}/ISession_Text.h
${Geometry_ISESSION2D_DIR}/ISession2D_Curve.h)
set (Geometry_ISESSION2D_SOURCE_FILES ${Geometry_ISESSION2D_DIR}/ISession_Curve.cpp
${Geometry_ISESSION2D_DIR}/ISession_Direction.cpp
${Geometry_ISESSION2D_DIR}/ISession_Point.cpp
${Geometry_ISESSION2D_DIR}/ISession_Surface.cpp
${Geometry_ISESSION2D_DIR}/ISession_Text.cpp
${Geometry_ISESSION2D_DIR}/ISession2D_Curve.cpp)
set (Geometry_RESOURCE_DIR ${MFC_STANDARD_SAMPLES_DIR}/01_Geometry/res)
@@ -70,14 +68,14 @@ add_executable (Geometry WIN32 ${Geometry_SOURCE_FILES}
set_property(TARGET Geometry PROPERTY FOLDER Samples)
if (SINGLE_GENERATOR)
install (TARGETS Geometry DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
install (TARGETS Geometry DESTINATION "${INSTALL_DIR_BIN}")
else()
install (TARGETS Geometry
CONFIGURATIONS Release RelWithDebInfo
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
DESTINATION "${INSTALL_DIR_BIN}")
install (TARGETS Geometry
CONFIGURATIONS Debug
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}d")
DESTINATION "${INSTALL_DIR_BIN}d")
endif()
include_directories (${CMAKE_BINARY_DIR}/inc

View File

@@ -529,24 +529,6 @@
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<ClCompile Include="..\..\..\src\ISession2D\ISession_Text.cpp">
<Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
<BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
<Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
<BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
<Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\..\res\Geometry.rc">
@@ -574,7 +556,6 @@
<ClInclude Include="..\..\..\src\ISession2D\ISession_Direction.h" />
<ClInclude Include="..\..\..\src\ISession2D\ISession_Point.h" />
<ClInclude Include="..\..\..\src\ISession2D\ISession_Surface.h" />
<ClInclude Include="..\..\..\src\ISession2D\ISession_Text.h" />
<ClInclude Include="..\..\..\src\MainFrm.h" />
<ClInclude Include="..\..\..\res\resource.h" />
<ClInclude Include="..\..\..\src\StdAfx.h" />

View File

@@ -66,9 +66,6 @@
<ClCompile Include="..\..\..\src\ISession2D\ISession_Surface.cpp">
<Filter>Source Files\ISession2d</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\ISession2D\ISession_Text.cpp">
<Filter>Source Files\ISession2d</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\..\res\Geometry.rc">
@@ -115,9 +112,6 @@
<ClInclude Include="..\..\..\src\ISession2D\ISession_Surface.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\ISession2D\ISession_Text.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\MainFrm.h">
<Filter>Header Files</Filter>
</ClInclude>

View File

@@ -533,24 +533,6 @@
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<ClCompile Include="..\..\..\src\ISession2D\ISession_Text.cpp">
<Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
<BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
<Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
<BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
<Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\..\res\Geometry.rc">
@@ -578,7 +560,6 @@
<ClInclude Include="..\..\..\src\ISession2D\ISession_Direction.h" />
<ClInclude Include="..\..\..\src\ISession2D\ISession_Point.h" />
<ClInclude Include="..\..\..\src\ISession2D\ISession_Surface.h" />
<ClInclude Include="..\..\..\src\ISession2D\ISession_Text.h" />
<ClInclude Include="..\..\..\src\MainFrm.h" />
<ClInclude Include="..\..\..\res\resource.h" />
<ClInclude Include="..\..\..\src\StdAfx.h" />

View File

@@ -66,9 +66,6 @@
<ClCompile Include="..\..\..\src\ISession2D\ISession_Surface.cpp">
<Filter>Source Files\ISession2d</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\ISession2D\ISession_Text.cpp">
<Filter>Source Files\ISession2d</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\..\res\Geometry.rc">
@@ -115,9 +112,6 @@
<ClInclude Include="..\..\..\src\ISession2D\ISession_Surface.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\ISession2D\ISession_Text.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\MainFrm.h">
<Filter>Header Files</Filter>
</ClInclude>

View File

@@ -533,24 +533,6 @@
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<ClCompile Include="..\..\..\src\ISession2D\ISession_Text.cpp">
<Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
<BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
<Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
<BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
<Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\..\res\Geometry.rc">
@@ -578,7 +560,6 @@
<ClInclude Include="..\..\..\src\ISession2D\ISession_Direction.h" />
<ClInclude Include="..\..\..\src\ISession2D\ISession_Point.h" />
<ClInclude Include="..\..\..\src\ISession2D\ISession_Surface.h" />
<ClInclude Include="..\..\..\src\ISession2D\ISession_Text.h" />
<ClInclude Include="..\..\..\src\MainFrm.h" />
<ClInclude Include="..\..\..\res\resource.h" />
<ClInclude Include="..\..\..\src\StdAfx.h" />

View File

@@ -66,9 +66,6 @@
<ClCompile Include="..\..\..\src\ISession2D\ISession_Surface.cpp">
<Filter>Source Files\ISession2d</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\ISession2D\ISession_Text.cpp">
<Filter>Source Files\ISession2d</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\..\res\Geometry.rc">
@@ -115,9 +112,6 @@
<ClInclude Include="..\..\..\src\ISession2D\ISession_Surface.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\ISession2D\ISession_Text.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\MainFrm.h">
<Filter>Header Files</Filter>
</ClInclude>

View File

@@ -533,24 +533,6 @@
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<ClCompile Include="..\..\..\src\ISession2D\ISession_Text.cpp">
<Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
<BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
<Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
<BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
<Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\..\res\Geometry.rc">
@@ -578,7 +560,6 @@
<ClInclude Include="..\..\..\src\ISession2D\ISession_Direction.h" />
<ClInclude Include="..\..\..\src\ISession2D\ISession_Point.h" />
<ClInclude Include="..\..\..\src\ISession2D\ISession_Surface.h" />
<ClInclude Include="..\..\..\src\ISession2D\ISession_Text.h" />
<ClInclude Include="..\..\..\src\MainFrm.h" />
<ClInclude Include="..\..\..\res\resource.h" />
<ClInclude Include="..\..\..\src\StdAfx.h" />

View File

@@ -66,9 +66,6 @@
<ClCompile Include="..\..\..\src\ISession2D\ISession_Surface.cpp">
<Filter>Source Files\ISession2d</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\ISession2D\ISession_Text.cpp">
<Filter>Source Files\ISession2d</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\..\res\Geometry.rc">
@@ -115,9 +112,6 @@
<ClInclude Include="..\..\..\src\ISession2D\ISession_Surface.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\ISession2D\ISession_Text.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\MainFrm.h">
<Filter>Header Files</Filter>
</ClInclude>

View File

@@ -8,6 +8,7 @@
#include "MainFrm.h"
#include <Geom_Curve.hxx>
#include <Geom2d_Curve.hxx>
GeomSources::GeomSources()
{
}
@@ -104,35 +105,43 @@ void GeomSources::AddSeparator(CGeometryDoc* /*aDoc*/,TCollection_AsciiString& a
{
aMessage+= "------------------------------------------------------------------------\n";
}
void GeomSources::DisplayPoint(CGeometryDoc* aDoc,
const gp_Pnt2d& aPoint,
const char* aText,
Standard_Boolean UpdateViewer,
Standard_Real anXoffset,
Standard_Real anYoffset,
Standard_Real TextScale)
void GeomSources::DisplayPoint (CGeometryDoc* theDoc,
const gp_Pnt2d& thePoint,
const char* theText,
Standard_Boolean theToUpdateViewer,
Standard_Real theXoffset,
Standard_Real theYoffset,
Standard_Real theTextScale)
{
Handle(ISession_Point) aGraphicPoint = new ISession_Point(aPoint);
aDoc->GetISessionContext()->Display(aGraphicPoint,UpdateViewer);
Handle(ISession_Text) aGraphicText = new ISession_Text(aText,aPoint.X()+anXoffset,aPoint.Y()+anYoffset);
aGraphicText->SetScale (TextScale);
aDoc->GetISessionContext()->Display(aGraphicText,UpdateViewer);
Handle(ISession_Point) aGraphicPoint = new ISession_Point (thePoint);
theDoc->GetISessionContext()->Display (aGraphicPoint, Standard_False);
Handle(AIS_TextLabel) aLabel = new AIS_TextLabel();
aLabel->SetText (theText);
aLabel->SetPosition (gp_Pnt (thePoint.X() + theXoffset, thePoint.Y() + theYoffset, 0.0));
//aLabel->SetHeight (theTextScale);
(void )theTextScale;
theDoc->GetISessionContext()->Display (aLabel, theToUpdateViewer);
}
void GeomSources::DisplayPoint(CGeometryDoc* aDoc,
const gp_Pnt& aPoint,
const char* aText,
Standard_Boolean UpdateViewer,
Standard_Real anXoffset,
Standard_Real anYoffset,
Standard_Real aZoffset,
Standard_Real TextScale)
void GeomSources::DisplayPoint (CGeometryDoc* theDoc,
const gp_Pnt& thePoint,
const char* theText,
Standard_Boolean theToUpdateViewer,
Standard_Real theXoffset,
Standard_Real theYoffset,
Standard_Real theZoffset,
Standard_Real theTextScale)
{
Handle(ISession_Point) aGraphicPoint = new ISession_Point(aPoint);
aDoc->GetAISContext()->Display(aGraphicPoint,UpdateViewer);
Handle(ISession_Text) aGraphicText = new ISession_Text(aText,aPoint.X()+anXoffset,aPoint.Y()+anYoffset,aPoint.Z()+aZoffset);
aGraphicText->SetScale (TextScale);
aDoc->GetAISContext()->Display(aGraphicText,UpdateViewer);
Handle(ISession_Point) aGraphicPoint = new ISession_Point (thePoint);
theDoc->GetAISContext()->Display (aGraphicPoint, Standard_False);
Handle(AIS_TextLabel) aLabel = new AIS_TextLabel();
aLabel->SetText (theText);
aLabel->SetPosition (gp_Pnt (thePoint.X() + theXoffset, thePoint.Y() + theYoffset, thePoint.Z() + theZoffset));
//aLabel->SetHeight (theTextScale);
(void )theTextScale;
theDoc->GetAISContext()->Display (aLabel, theToUpdateViewer);
}
void GeomSources::DisplayCurve(CGeometryDoc* aDoc,
@@ -157,15 +166,14 @@ void GeomSources::DisplayCurveAndCurvature(CGeometryDoc* aDoc,
aDoc->GetISessionContext()->Display(aGraphicCurve,UpdateViewer);
}
void GeomSources::DisplayCurve(CGeometryDoc* aDoc,
Handle(Geom_Curve) aCurve,
Quantity_NameOfColor aNameOfColor,
Standard_Boolean UpdateViewer)
void GeomSources::DisplayCurve (CGeometryDoc* theDoc,
Handle(Geom_Curve) theCurve,
Quantity_NameOfColor theNameOfColor,
Standard_Boolean theToUpdateViewer)
{
Handle(ISession_Curve) aGraphicCurve = new ISession_Curve(aCurve);
aDoc->GetAISContext()->SetColor(aGraphicCurve,aNameOfColor, Standard_False);
aGraphicCurve->Attributes()->LineAspect()->SetColor(aNameOfColor);
aDoc->GetAISContext()->Display(aGraphicCurve,UpdateViewer);
Handle(ISession_Curve) aGraphicCurve = new ISession_Curve (theCurve);
aGraphicCurve->Attributes()->SetLineAspect (new Prs3d_LineAspect (theNameOfColor, Aspect_TOL_SOLID, 1.0));
theDoc->GetAISContext()->Display (aGraphicCurve, theToUpdateViewer);
}
void GeomSources::DisplayCurve(CGeometryDoc* aDoc,
@@ -176,20 +184,26 @@ void GeomSources::DisplayCurve(CGeometryDoc* aDoc,
aDoc->GetAISContext()->Display(aGraphicCurve,UpdateViewer);
}
void GeomSources::DisplaySurface(CGeometryDoc* aDoc,
Handle(Geom_Surface) aSurface,
Quantity_NameOfColor aNameOfColor,
Standard_Boolean UpdateViewer)
void GeomSources::DisplaySurface (CGeometryDoc* theDoc,
Handle(Geom_Surface) theSurface,
Quantity_NameOfColor theNameOfColor,
Standard_Boolean theToUpdateViewer)
{
Handle(ISession_Surface) aGraphicalSurface = new ISession_Surface(aSurface);
aDoc->GetAISContext()->SetColor(aGraphicalSurface,aNameOfColor, Standard_False);
aGraphicalSurface->Attributes()->FreeBoundaryAspect()->SetColor(aNameOfColor);
aGraphicalSurface->Attributes()->UIsoAspect()->SetColor(aNameOfColor);
aGraphicalSurface->Attributes()->VIsoAspect()->SetColor(aNameOfColor);
aDoc->GetAISContext()->Display(aGraphicalSurface,UpdateViewer);
const Handle(AIS_InteractiveContext)& aCtx = theDoc->GetAISContext();
Handle(Prs3d_ShadingAspect) aShadeAspect = new Prs3d_ShadingAspect();
Handle(Prs3d_LineAspect) aLineAspect = new Prs3d_LineAspect (theNameOfColor, Aspect_TOL_SOLID, 1.0);
Handle(Prs3d_IsoAspect) anIsoAspect = new Prs3d_IsoAspect (theNameOfColor, Aspect_TOL_SOLID, 1.0,
aCtx->DefaultDrawer()->UIsoAspect()->Number());
aShadeAspect->SetColor (theNameOfColor);
Handle(ISession_Surface) aGraphicalSurface = new ISession_Surface (theSurface);
const Handle(Prs3d_Drawer)& aDrawer = aGraphicalSurface->Attributes();
aDrawer->SetShadingAspect (aShadeAspect);
aDrawer->SetLineAspect (aLineAspect);
aDrawer->SetFreeBoundaryAspect (aLineAspect);
aDrawer->SetUIsoAspect (anIsoAspect);
aDrawer->SetVIsoAspect (anIsoAspect);
aCtx->Display (aGraphicalSurface, theToUpdateViewer);
}
void GeomSources::DisplaySurface(CGeometryDoc* aDoc,

View File

@@ -148,8 +148,7 @@ CGeometryDoc::CGeometryDoc()
myAISContext->DefaultDrawer()->VIsoAspect()->SetNumber(11);
Handle(Graphic3d_GraphicDriver) aGraphicDriver = ((OCC_App*)AfxGetApp())->GetGraphicDriver();
TCollection_ExtendedString a2DName("Visu2D");
myViewer2D = new V3d_Viewer(aGraphicDriver,a2DName.ToExtString());
myViewer2D = new V3d_Viewer (aGraphicDriver);
myViewer2D->SetCircularGridValues(0,0,1,8,0);
myViewer2D->SetRectangularGridValues(0,0,1,1,0);

View File

@@ -10,12 +10,10 @@
IMPLEMENT_STANDARD_RTTIEXT(ISession2D_Curve,AIS_InteractiveObject)
ISession2D_Curve::ISession2D_Curve(const Handle(Geom2d_Curve) aGeom2dCurve,
const Aspect_TypeOfLine aTypeOfLine,
const Aspect_WidthOfLine aWidthOfLine,
const Standard_Integer aColorIndex)
:AIS_InteractiveObject()
{
myGeom2dCurve = aGeom2dCurve;
myTypeOfLine = aTypeOfLine ;
@@ -28,10 +26,13 @@ ISession2D_Curve::ISession2D_Curve(const Handle(Geom2d_Curve) aGeom2dCurve,
myradiusratio = 1;
}
void ISession2D_Curve::Compute(const Handle(PrsMgr_PresentationManager3d)& /*aPresentationManager*/,
const Handle(Prs3d_Presentation)& aPresentation,
const Standard_Integer /*aMode*/)
void ISession2D_Curve::Compute(const Handle(PrsMgr_PresentationManager3d)& ,
const Handle(Prs3d_Presentation)& thePrs,
const Standard_Integer )
{
Handle(Graphic3d_Group) aPrsGroup = Prs3d_Root::CurrentGroup (thePrs);
aPrsGroup->SetGroupPrimitivesAspect (myDrawer->LineAspect()->Aspect());
aPrsGroup->SetGroupPrimitivesAspect (myDrawer->PointAspect()->Aspect());
Geom2dAdaptor_Curve anAdaptor(myGeom2dCurve);
GCPnts_QuasiUniformDeflection anEdgeDistrib(anAdaptor,1.e-2);
@@ -42,7 +43,7 @@ void ISession2D_Curve::Compute(const Handle(PrsMgr_PresentationManager3d)& /*aPr
for(Standard_Integer i=1;i<=anEdgeDistrib.NbPoints();++i)
aCurve->AddVertex(anEdgeDistrib.Value(i));
Prs3d_Root::CurrentGroup(aPresentation)->AddPrimitiveArray(aCurve);
aPrsGroup->AddPrimitiveArray (aCurve);
}
if (myDisplayPole)
@@ -56,7 +57,7 @@ void ISession2D_Curve::Compute(const Handle(PrsMgr_PresentationManager3d)& /*aPr
gp_Pnt2d CurrentPoint = aBezier->Pole(i);
anArrayOfVertex->AddVertex(CurrentPoint.X(),CurrentPoint.Y(),0.);
}
Prs3d_Root::CurrentGroup(aPresentation)->AddPrimitiveArray(anArrayOfVertex);
aPrsGroup->AddPrimitiveArray (anArrayOfVertex);
}
if (anAdaptor.GetType() == GeomAbs_BSplineCurve )
@@ -71,7 +72,7 @@ void ISession2D_Curve::Compute(const Handle(PrsMgr_PresentationManager3d)& /*aPr
gp_Pnt2d CurrentPoint = aBSpline->Pole(i);
anArrayOfVertex->AddVertex(CurrentPoint.X(),CurrentPoint.Y(),0.);
}
Prs3d_Root::CurrentGroup(aPresentation)->AddPrimitiveArray(anArrayOfVertex);
aPrsGroup->AddPrimitiveArray (anArrayOfVertex);
}
}
@@ -108,7 +109,7 @@ void ISession2D_Curve::Compute(const Handle(PrsMgr_PresentationManager3d)& /*aPr
Handle(Graphic3d_ArrayOfPolylines) aSegment = new Graphic3d_ArrayOfPolylines(2);
aSegment->AddVertex(P1.X(),P1.Y(),0.);
aSegment->AddVertex(P3.X(),P3.Y(),0.);
Prs3d_Root::CurrentGroup(aPresentation)->AddPrimitiveArray(aSegment);
aPrsGroup->AddPrimitiveArray (aSegment);
}
}
t += step;
@@ -116,10 +117,3 @@ void ISession2D_Curve::Compute(const Handle(PrsMgr_PresentationManager3d)& /*aPr
}
}
}
void ISession2D_Curve::ComputeSelection(const Handle(SelectMgr_Selection)& /*aSelection*/,
const Standard_Integer /*aMode*/)
{
}

View File

@@ -64,9 +64,9 @@ public:
private:
// Methods PRIVATE
//
virtual Standard_Boolean AcceptDisplayMode (const Standard_Integer theMode) const { return theMode == 0; }
virtual void Compute(const Handle(PrsMgr_PresentationManager3d)& aPresentationManager,const Handle(Prs3d_Presentation)& aPresentation,const Standard_Integer aMode = 0) ;
void ComputeSelection(const Handle(SelectMgr_Selection)& aSelection,const Standard_Integer aMode) ;
void ComputeSelection(const Handle(SelectMgr_Selection)& ,const Standard_Integer ) {}
// Fields PRIVATE
//

View File

@@ -14,48 +14,23 @@ IMPLEMENT_STANDARD_RTTIEXT(ISession_Curve,AIS_InteractiveObject)
static char THIS_FILE[]=__FILE__;
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
ISession_Curve::ISession_Curve(const Handle(Geom_Curve)& aCurve)
:AIS_InteractiveObject(),myCurve(aCurve)
void ISession_Curve::Compute (const Handle(PrsMgr_PresentationManager3d)& ,
const Handle(Prs3d_Presentation)& thePrs,
const Standard_Integer theMode)
{
}
ISession_Curve::~ISession_Curve()
{
}
void ISession_Curve::Compute(const Handle(PrsMgr_PresentationManager3d)& /*aPresentationManager*/,
const Handle(Prs3d_Presentation)& aPresentation,
const Standard_Integer aMode)
{
GeomAdaptor_Curve anAdaptorCurve(myCurve);
Handle(Prs3d_Drawer) aDrawer = new Prs3d_Drawer();
aDrawer->LineAspect()->SetColor(Quantity_NOC_RED);
switch (aMode)
GeomAdaptor_Curve anAdaptorCurve (myCurve);
switch (theMode)
{
case 1:
{
case 1 :
StdPrs_PoleCurve::Add(aPresentation, anAdaptorCurve,aDrawer);
case 0 :
StdPrs_Curve::Add( aPresentation, anAdaptorCurve ,myDrawer);
break;
Handle(Prs3d_Drawer) aPoleDrawer = new Prs3d_Drawer();
aPoleDrawer->SetLineAspect (new Prs3d_LineAspect (Quantity_NOC_RED, Aspect_TOL_SOLID, 1.0));
StdPrs_PoleCurve::Add (thePrs, anAdaptorCurve, aPoleDrawer);
}
case 0:
{
StdPrs_Curve::Add (thePrs, anAdaptorCurve, myDrawer);
break;
}
}
}
void ISession_Curve::Compute(const Handle(Prs3d_Projector)& /*aProjector*/,
const Handle(Prs3d_Presentation)& /*aPresentation*/)
{
}
void ISession_Curve::ComputeSelection(const Handle(SelectMgr_Selection)& /*aSelection*/,
const Standard_Integer /*aMode*/)
{
}

View File

@@ -2,33 +2,27 @@
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_ISESSION_CURVE_H__F981CB93_A3CC_11D1_8DA3_0800369C8A03__INCLUDED_)
#define AFX_ISESSION_CURVE_H__F981CB93_A3CC_11D1_8DA3_0800369C8A03__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
#include <Standard_Macro.hxx>
#include <Standard_DefineHandle.hxx>
#include "AIS_InteractiveObject.hxx"
class ISession_Curve;
DEFINE_STANDARD_HANDLE(ISession_Curve,AIS_InteractiveObject)
class ISession_Curve : public AIS_InteractiveObject
{
public:
ISession_Curve(const Handle(Geom_Curve)& aCurve);
virtual ~ISession_Curve();
DEFINE_STANDARD_RTTIEXT(ISession_Curve,AIS_InteractiveObject)
public:
ISession_Curve(const Handle(Geom_Curve)& theCurve) : myCurve (theCurve) {}
virtual ~ISession_Curve() {}
private:
Standard_EXPORT virtual void Compute(const Handle(PrsMgr_PresentationManager3d)& aPresentationManager,const Handle(Prs3d_Presentation)& aPresentation,const Standard_Integer aMode = 0) ;
Standard_EXPORT virtual void Compute(const Handle(Prs3d_Projector)& aProjector,const Handle(Prs3d_Presentation)& aPresentation) ;
void ComputeSelection(const Handle(SelectMgr_Selection)& aSelection,const Standard_Integer aMode) ;
virtual void Compute(const Handle(Prs3d_Projector)& ,const Handle(Prs3d_Presentation)& ) {}
virtual void ComputeSelection (const Handle(SelectMgr_Selection)& ,const Standard_Integer ) {}
private:
Handle(Geom_Curve) myCurve;
};
#endif // !defined(AFX_ISESSION_CURVE_H__F981CB93_A3CC_11D1_8DA3_0800369C8A03__INCLUDED_)
DEFINE_STANDARD_HANDLE(ISession_Curve,AIS_InteractiveObject)

View File

@@ -18,50 +18,30 @@ static char THIS_FILE[]=__FILE__;
IMPLEMENT_STANDARD_RTTIEXT(ISession_Surface,AIS_InteractiveObject)
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
ISession_Surface::ISession_Surface(const Handle(Geom_Surface)& aSurface)
:AIS_InteractiveObject(),mySurface(aSurface)
void ISession_Surface::Compute (const Handle(PrsMgr_PresentationManager3d)& ,
const Handle(Prs3d_Presentation)& thePrs,
const Standard_Integer theMode)
{
}
GeomAdaptor_Surface anAdaptorSurface (mySurface);
Handle(GeomAdaptor_HSurface) anAdaptorHSurface = new GeomAdaptor_HSurface (mySurface);
ISession_Surface::~ISession_Surface()
{
}
void ISession_Surface::Compute(const Handle(PrsMgr_PresentationManager3d)& /*aPresentationManager*/,
const Handle(Prs3d_Presentation)& aPresentation,
const Standard_Integer aMode)
{
GeomAdaptor_Surface anAdaptorSurface(mySurface);
Handle(GeomAdaptor_HSurface) anAdaptorHSurface = new GeomAdaptor_HSurface(mySurface);
Handle(Prs3d_Drawer) aDrawer = new Prs3d_Drawer();
aDrawer->LineAspect()->SetColor(Quantity_NOC_YELLOW3);
switch (aMode)
Handle(Prs3d_Drawer) aPoleDrawer = new Prs3d_Drawer();
aPoleDrawer->SetLineAspect (new Prs3d_LineAspect (Quantity_NOC_YELLOW3, Aspect_TOL_SOLID, 1.0));
switch (theMode)
{
case 2:
{
case 2:
StdPrs_ShadedSurface::Add(aPresentation,anAdaptorSurface,myDrawer);
break;
case 1 :
StdPrs_WFPoleSurface::Add(aPresentation,anAdaptorSurface,aDrawer);
case 0 :
StdPrs_WFSurface::Add(aPresentation,anAdaptorHSurface,myDrawer);
break;
StdPrs_ShadedSurface::Add (thePrs, anAdaptorSurface, myDrawer);
break;
}
case 1:
{
StdPrs_WFPoleSurface::Add (thePrs, anAdaptorSurface, aPoleDrawer);
}
case 0:
{
StdPrs_WFSurface::Add (thePrs, anAdaptorHSurface, myDrawer);
break;
}
}
}
void ISession_Surface::Compute(const Handle(Prs3d_Projector)& /*aProjector*/,
const Handle(Prs3d_Presentation)& /*aPresentation*/)
{
}
void ISession_Surface::ComputeSelection(const Handle(SelectMgr_Selection)& /*aSelection*/,
const Standard_Integer /*aMode*/)
{
}

View File

@@ -2,33 +2,29 @@
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_ISESSION_SURFACE_H__27F86F5A_A6A4_11D1_8DA4_0800369C8A03__INCLUDED_)
#define AFX_ISESSION_SURFACE_H__27F86F5A_A6A4_11D1_8DA4_0800369C8A03__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
#include <Standard_Macro.hxx>
#include <Standard_DefineHandle.hxx>
class ISession_Surface;
DEFINE_STANDARD_HANDLE(ISession_Surface,AIS_InteractiveObject)
class ISession_Surface : public AIS_InteractiveObject
{
DEFINE_STANDARD_RTTIEXT(ISession_Surface,AIS_InteractiveObject)
public:
ISession_Surface();
ISession_Surface(const Handle(Geom_Surface)& aSurface);
virtual ~ISession_Surface();
DEFINE_STANDARD_RTTIEXT(ISession_Surface,AIS_InteractiveObject)
ISession_Surface (const Handle(Geom_Surface)& theSurface) : mySurface (theSurface) {}
virtual ~ISession_Surface() {}
private:
Standard_EXPORT virtual void Compute(const Handle(PrsMgr_PresentationManager3d)& aPresentationManager,const Handle(Prs3d_Presentation)& aPresentation,const Standard_Integer aMode = 0);
Standard_EXPORT virtual void Compute(const Handle(Prs3d_Projector)& aProjector,const Handle(Prs3d_Presentation)& aPresentation);
void ComputeSelection(const Handle(SelectMgr_Selection)& aSelection,const Standard_Integer aMode);
Standard_EXPORT virtual void Compute(const Handle(PrsMgr_PresentationManager3d)& aPresentationManager,const Handle(Prs3d_Presentation)& aPresentation,const Standard_Integer aMode = 0);
virtual void Compute (const Handle(Prs3d_Projector)& ,const Handle(Prs3d_Presentation)& ) {}
virtual void ComputeSelection (const Handle(SelectMgr_Selection)& ,const Standard_Integer ) {}
Handle(Geom_Surface) mySurface;
private:
Handle(Geom_Surface) mySurface;
};
#endif // !defined(AFX_ISESSION_SURFACE_H__27F86F5A_A6A4_11D1_8DA4_0800369C8A03__INCLUDED_)
DEFINE_STANDARD_HANDLE(ISession_Surface, AIS_InteractiveObject)

View File

@@ -1,79 +0,0 @@
// ISession_Text.cpp: implementation of the ISession_Text class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "..\\GeometryApp.h"
#include "ISession_Text.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
//#define new DEBUG_NEW
#endif
IMPLEMENT_STANDARD_RTTIEXT(ISession_Text,AIS_InteractiveObject)
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
ISession_Text::ISession_Text()
{
}
ISession_Text::ISession_Text
(const TCollection_AsciiString& aText,
const Standard_Real anX , // = 0
const Standard_Real anY , // = 0
const Standard_Real aZ , // = 0
const Quantity_PlaneAngle anAngle, // = 0.0
const Standard_Real aslant, // = 0.0
const Standard_Integer aColorIndex, // = 0
const Standard_Integer aFontIndex, // = 1
const Quantity_Factor aScale) // = 1
:AIS_InteractiveObject(),MyText(aText),MyX(anX),MyY(anY),MyZ(aZ),
MyAngle(anAngle),MySlant(aslant),MyFontIndex(aFontIndex),
MyColorIndex(aColorIndex),MyScale(aScale),MyWidth(0),MyHeight(0)
{
}
ISession_Text::ISession_Text
(const TCollection_AsciiString& aText,
gp_Pnt& aPoint,
const Quantity_PlaneAngle anAngle, // = 0.0
const Standard_Real aslant, // = 0.0
const Standard_Integer aColorIndex, // = 0
const Standard_Integer aFontIndex, // = 1
const Quantity_Factor aScale) // = 1
:AIS_InteractiveObject(),MyText(aText),MyX(aPoint.X()),MyY(aPoint.Y()),MyZ(aPoint.Z()),
MyAngle(anAngle),MySlant(aslant),MyFontIndex(aFontIndex),
MyColorIndex(aColorIndex),MyScale(aScale),MyWidth(0),MyHeight(0)
{
}
ISession_Text::~ISession_Text()
{
}
void ISession_Text::Compute(const Handle(PrsMgr_PresentationManager3d)& /*aPresentationManager*/,
const Handle(Prs3d_Presentation)& aPresentation,
const Standard_Integer /*aMode*/)
{
Prs3d_Text::Draw (Prs3d_Root::CurrentGroup (aPresentation), myDrawer->TextAspect(), MyText, gp_Pnt(MyX, MyY, MyZ));
}
void ISession_Text::Compute(const Handle(Prs3d_Projector)& /*aProjector*/,
const Handle(Prs3d_Presentation)& /*aPresentation*/)
{
}
void ISession_Text::ComputeSelection(const Handle(SelectMgr_Selection)& /*aSelection*/,
const Standard_Integer /*unMode*/)
{
}

View File

@@ -1,147 +0,0 @@
// ISession_Text.h: interface for the ISession_Text class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_ISESSION_TEXT_H__A9B277C4_A69E_11D1_8DA4_0800369C8A03__INCLUDED_)
#define AFX_ISESSION_TEXT_H__A9B277C4_A69E_11D1_8DA4_0800369C8A03__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
#include <Standard_Macro.hxx>
#include <Standard_DefineHandle.hxx>
#include <TCollection_AsciiString.hxx>
#include <Standard_Real.hxx>
#include <Standard_Integer.hxx>
#include <Quantity_Factor.hxx>
#include <Quantity_PlaneAngle.hxx>
#include <PrsMgr_PresentationManager3d.hxx>
#include <SelectMgr_Selection.hxx>
#include <Standard_OStream.hxx>
#include <Standard_IStream.hxx>
#include <Standard_CString.hxx>
#include <SelectMgr_SelectableObject.hxx>
class TCollection_AsciiString;
class SelectMgr_Selection;
class ISession_Text;
DEFINE_STANDARD_HANDLE(ISession_Text,AIS_InteractiveObject)
class ISession_Text : public AIS_InteractiveObject
{
public:
ISession_Text();
ISession_Text (const TCollection_AsciiString& aText,
const Standard_Real anX = 0 ,
const Standard_Real anY = 0 ,
const Standard_Real aZ = 0 ,
const Quantity_PlaneAngle anAngle = 0.0 ,
const Standard_Real aSlant = 0.0 ,
const Standard_Integer aColorIndex = 1 ,
const Standard_Integer aFontIndex = 1 ,
const Quantity_Factor aScale = 0.1 );
ISession_Text
(const TCollection_AsciiString& aText,
gp_Pnt& aPoint,
const Quantity_PlaneAngle anAngle = 0.0 ,
const Standard_Real aSlant = 0.0 ,
const Standard_Integer aColorIndex = 1 ,
const Standard_Integer aFontIndex = 1 ,
const Quantity_Factor aScale = 0.1 );
virtual ~ISession_Text();
inline Standard_Integer NbPossibleSelection() const;
inline TCollection_AsciiString GetText() const;
inline void SetText(const TCollection_AsciiString& atext) ;
inline void GetCoord(Standard_Real& X, Standard_Real& Y, Standard_Real& Z) const ;
inline void SetCoord(const Standard_Real X, const Standard_Real Y, const Standard_Real Z=0);
inline Standard_Real GetAngle() const;
inline void SetAngle(const Standard_Real aNewAngle) ;
inline Standard_Real GetSlant() const;
inline void SetSlant(const Standard_Real aNewSlant) ;
inline Standard_Integer GetColorIndex() const;
inline void SetColorIndex(const Standard_Integer aNewColorIndex) ;
inline Standard_Integer GetFontIndex() const;
inline void SetFontIndex(const Standard_Integer aNewFontIndex) ;
inline Quantity_Factor GetScale() const;
inline void SetScale (const Quantity_Factor aNewScale) ;
DEFINE_STANDARD_RTTIEXT(ISession_Text,AIS_InteractiveObject)
private:
void Compute (const Handle(PrsMgr_PresentationManager3d)& aPresentationManager,
const Handle(Prs3d_Presentation)& aPresentation,
const Standard_Integer aMode);
void Compute (const Handle(Prs3d_Projector)& aProjector,
const Handle(Prs3d_Presentation)& aPresentation);
void ComputeSelection (const Handle(SelectMgr_Selection)& aSelection,
const Standard_Integer unMode) ;
// Fields PRIVATE
//
TCollection_AsciiString MyText ;
Standard_Real MyX ;
Standard_Real MyY ;
Standard_Real MyZ ;
Standard_Real MyAngle ;
Standard_Real MySlant ;
Standard_Integer MyColorIndex ;
Standard_Integer MyFontIndex ;
Quantity_Factor MyScale ;
Standard_Real MyWidth ;
Standard_Real MyHeight ;
};
inline Standard_Integer ISession_Text::NbPossibleSelection() const
{ return 1; }
inline TCollection_AsciiString ISession_Text::GetText() const
{ return MyText ; }
inline void ISession_Text::SetText(const TCollection_AsciiString& atext)
{ MyText = atext; }
inline void ISession_Text::GetCoord(Standard_Real& X, Standard_Real& Y, Standard_Real& Z) const
{ X = MyX; Y = MyY; Z = MyZ;}
inline void ISession_Text::SetCoord(const Standard_Real X, const Standard_Real Y, const Standard_Real Z)
{ MyX = X ; MyY = Y ; MyZ = Z ;}
inline Standard_Real ISession_Text::GetAngle() const
{ return MyAngle; }
inline void ISession_Text::SetAngle(const Standard_Real aNewAngle)
{ MyAngle = aNewAngle; }
inline Standard_Real ISession_Text::GetSlant() const
{ return MySlant; }
inline void ISession_Text::SetSlant(const Standard_Real aNewSlant)
{ MySlant = aNewSlant; }
inline Standard_Integer ISession_Text::GetColorIndex() const
{ return MyColorIndex; }
inline void ISession_Text::SetColorIndex(const Standard_Integer aNewColorIndex)
{ MyColorIndex = aNewColorIndex; }
inline Standard_Integer ISession_Text::GetFontIndex() const
{ return MyFontIndex; }
inline void ISession_Text::SetFontIndex(const Standard_Integer aNewFontIndex)
{ MyFontIndex = aNewFontIndex; }
inline Quantity_Factor ISession_Text::GetScale() const
{ return MyScale; }
inline void ISession_Text::SetScale(const Quantity_Factor aNewScale)
{ MyScale = aNewScale; }
#endif // !defined(AFX_ISESSION_TEXT_H__A9B277C4_A69E_11D1_8DA4_0800369C8A03__INCLUDED_)

View File

@@ -80,6 +80,7 @@
#include <AIS_InteractiveContext.hxx>
#include <AIS_Shape.hxx>
#include <AIS_Point.hxx>
#include <AIS_TextLabel.hxx>
#include <Aspect_Grid.hxx>
#include <Aspect_Window.hxx>
#include <Aspect_Background.hxx>
@@ -270,7 +271,6 @@
#include "ISession_Direction.h"
#include "ISession_Curve.h"
#include "ISession_Surface.h"
#include "ISession_Text.h"
#include "ISession_Point.h"
#include <UnitsAPI.hxx>

View File

@@ -40,14 +40,14 @@ add_executable ( Modeling WIN32 ${Modeling_SOURCE_FILES}
set_property (TARGET Modeling PROPERTY FOLDER Samples)
if (SINGLE_GENERATOR)
install (TARGETS Modeling DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
install (TARGETS Modeling DESTINATION "${INSTALL_DIR_BIN}")
else()
install (TARGETS Modeling
CONFIGURATIONS Release RelWithDebInfo
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
DESTINATION "${INSTALL_DIR_BIN}")
install (TARGETS Modeling
CONFIGURATIONS Debug
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}d")
DESTINATION "${INSTALL_DIR_BIN}d")
endif()
include_directories (${CMAKE_BINARY_DIR}/inc

View File

@@ -4388,7 +4388,7 @@ Standard_Real Length = System.Mass();\n\
gp_Mat I = System.MatrixOfInertia();\n\
\n");
PocessTextInDialog("Linear Properties", Message);
MessageBoxW (AfxGetApp()->m_pMainWnd->m_hWnd, (const wchar_t* )string.ToExtString(), L"Linear Properties", MB_OK);
MessageBoxW (AfxGetApp()->m_pMainWnd->m_hWnd, string.ToWideString(), L"Linear Properties", MB_OK);
}
void CModelingDoc::OnSurface()
@@ -4503,7 +4503,7 @@ Standard_Real Area = System.Mass();\n\
gp_Mat I = System.MatrixOfInertia();\n\
\n");
PocessTextInDialog("Surface Properties", Message);
MessageBoxW (AfxGetApp()->m_pMainWnd->m_hWnd, (const wchar_t* )string.ToExtString(), L"Surface Properties", MB_OK);
MessageBoxW (AfxGetApp()->m_pMainWnd->m_hWnd, string.ToWideString(), L"Surface Properties", MB_OK);
}
@@ -4585,7 +4585,7 @@ Standard_Real Volume = System.Mass();\n\
gp_Mat I = System.MatrixOfInertia();\n\
\n");
PocessTextInDialog("Volume Properties", Message);
MessageBoxW (AfxGetApp()->m_pMainWnd->m_hWnd, (const wchar_t* )string.ToExtString(), L"Volume Properties", MB_OK);
MessageBoxW (AfxGetApp()->m_pMainWnd->m_hWnd, string.ToWideString(), L"Volume Properties", MB_OK);
}

View File

@@ -36,14 +36,14 @@ add_executable (Viewer2d WIN32 ${Viewer2d_SOURCE_FILES}
set_property (TARGET Viewer2d PROPERTY FOLDER Samples)
if (SINGLE_GENERATOR)
install (TARGETS Viewer2d DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
install (TARGETS Viewer2d DESTINATION "${INSTALL_DIR_BIN}")
else()
install (TARGETS Viewer2d
CONFIGURATIONS Release RelWithDebInfo
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
DESTINATION "${INSTALL_DIR_BIN}")
install (TARGETS Viewer2d
CONFIGURATIONS Debug
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}d")
DESTINATION "${INSTALL_DIR_BIN}d")
endif()
include_directories (${CMAKE_BINARY_DIR}/inc

View File

@@ -74,6 +74,7 @@
#include <AIS_InteractiveContext.hxx>
#include <AIS_InteractiveObject.hxx>
#include <AIS_LocalContext.hxx>
#include <AIS_TextLabel.hxx>
#include <AIS_TexturedShape.hxx>
#include <Aspect_TypeOfline.hxx>

View File

@@ -5,7 +5,6 @@
#include "Viewer2dDoc.h"
#include "OCC_App.h"
#include "Primitive\Sample2D_Markers.h"
#include "Primitive\Sample2D_Text.h"
#include "Primitive\Sample2D_Face.h"
#include "Primitive\Sample2D_Image.h"
@@ -64,75 +63,69 @@ void CViewer2dDoc::OnBUTTONErase()
void CViewer2dDoc::OnBUTTONTestText()
{
int aColor= 1;
Standard_Real j;
for (j=15;j<=20;j++)
int aColor = Quantity_NOC_MATRABLUE;
for (Standard_Real j = 15; j <= 20; j++)
{
TCollection_AsciiString Text("font 0 scale ");Text+=j/20.0;
Handle (Sample2D_Text) aText =
new Sample2D_Text(Text,
gp_Pnt(0.0,15.0*(j-15.0),0.0), // thePosition
10.0*M_PI, // theAngle
(Quantity_NameOfColor)(aColor++), // theColor
Font_FA_Regular, // theFontAspect
"Courier", // theFont
j, // theScale
Graphic3d_HTA_LEFT,
Graphic3d_VTA_BOTTOM,
Standard_False); // aIsZoomable
Handle(AIS_TextLabel) aText = new AIS_TextLabel();
aText->SetText (TCollection_AsciiString ("font 0 scale ") + (j / 20.0));
aText->SetPosition (gp_Pnt (0.0, 15.0 * (j - 15.0), 0.0));
aText->SetAngle (30.0 * M_PI / 180.0);
aText->SetColor (Quantity_NameOfColor(aColor++));
aText->SetFontAspect (Font_FA_Regular);
aText->SetFont ("Courier");
aText->SetHeight (j);
aText->SetHJustification (Graphic3d_HTA_LEFT);
aText->SetVJustification (Graphic3d_VTA_BOTTOM);
aText->SetZoomable (Standard_False);
myAISContext->Display(aText, Standard_False);
}
for (j=10;j<=15;j++)
for (Standard_Real j = 10; j <= 15; j++)
{
TCollection_AsciiString Text("font 1 scale ");Text+=j/10.0;
Handle (Sample2D_Text) aText =
new Sample2D_Text(Text,
gp_Pnt(80.,15.0*(j-10.0),0.0), // thePosition
0.0, // theAngle
(Quantity_NameOfColor)(aColor++), // theColor
Font_FA_BoldItalic, // theFontAspect
"Cambria", // theFont
j*2, // theScale
Graphic3d_HTA_LEFT,
Graphic3d_VTA_BOTTOM,
Standard_False); // aIsZoomable
Handle(AIS_TextLabel) aText = new AIS_TextLabel();
aText->SetText (TCollection_AsciiString ("font 1 scale ") + (j / 10.0));
aText->SetPosition (gp_Pnt (80.0, 15.0 * (j - 10.0), 0.0));
aText->SetAngle (0.0);
aText->SetColor (Quantity_NameOfColor(aColor++));
aText->SetFontAspect (Font_FA_BoldItalic);
aText->SetFont ("Cambria");
aText->SetHeight (j * 2);
aText->SetHJustification (Graphic3d_HTA_LEFT);
aText->SetVJustification (Graphic3d_VTA_BOTTOM);
aText->SetZoomable (Standard_False);
myAISContext->Display(aText, Standard_False);
}
aColor = 1;
for (j=5;j<=10;j++)
aColor = Quantity_NOC_MATRABLUE;
for (Standard_Real j = 5; j <= 10; j++)
{
TCollection_AsciiString Text("font 2 scale ");Text+=j/10.0;
Handle (Sample2D_Text) aText =
new Sample2D_Text(Text,
gp_Pnt(140.0,15.0*(j-5.0),0.0), // thePosition
0.0, // theAngle
(Quantity_NameOfColor)(aColor++), // theColor
Font_FA_Bold, // theFontAspect
"Arial", // theFont
j*2, // theScale
Graphic3d_HTA_LEFT,
Graphic3d_VTA_BOTTOM,
Standard_False); // aIsZoomable
myAISContext->Display(aText,Standard_False);
Handle(AIS_TextLabel) aText = new AIS_TextLabel();
aText->SetText (TCollection_AsciiString ("font 2 scale ") + (j / 10.0));
aText->SetPosition (gp_Pnt (140.0, 15.0 * (j - 5.0), 0.0));
aText->SetAngle (0.0);
aText->SetColor (Quantity_NameOfColor(aColor++));
aText->SetFontAspect (Font_FA_Bold);
aText->SetFont ("Arial");
aText->SetHeight (j * 2);
aText->SetHJustification (Graphic3d_HTA_LEFT);
aText->SetVJustification (Graphic3d_VTA_BOTTOM);
aText->SetZoomable (Standard_False);
myAISContext->Display(aText, Standard_False);
}
for (j=10;j<=15;j++)
for (Standard_Real j = 10; j <= 15; j++)
{
TCollection_AsciiString Text("font 3 scale ");Text+=j/10.0;
Handle (Sample2D_Text) aText =
new Sample2D_Text(Text,
gp_Pnt(200.0,15.0*(j-10.0),0.0), // thePosition
0.0, // theAngle
(Quantity_NameOfColor)(aColor++),// theColor
Font_FA_Italic, // theFontAspect
"Georgia", // theFont
j*2, // theScale
Graphic3d_HTA_LEFT,
Graphic3d_VTA_BOTTOM,
Standard_False); // aIsZoomable
myAISContext->Display(aText,Standard_False);
Handle(AIS_TextLabel) aText = new AIS_TextLabel();
aText->SetText (TCollection_AsciiString ("font 3 scale ") + (j / 10.0));
aText->SetPosition (gp_Pnt (200.0, 15.0 * (j - 10.0), 0.0));
aText->SetAngle (0.0);
aText->SetColor (Quantity_NameOfColor(aColor++));
aText->SetFontAspect (Font_FA_Italic);
aText->SetFont ("Georgia");
aText->SetHeight (j * 2);
aText->SetHJustification (Graphic3d_HTA_LEFT);
aText->SetVJustification (Graphic3d_VTA_BOTTOM);
aText->SetZoomable (Standard_False);
myAISContext->Display(aText, Standard_False);
}
FitAll2DViews(Standard_True); // Update Viewer
@@ -321,7 +314,7 @@ void CViewer2dDoc::OnBUTTONTestImage()
NULL,
NULL,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
SupportedImageFormats() + "| all files (*.*)|*.*;||",
SupportedImageFormats() + L"| all files (*.*)|*.*;||",
NULL);
CString anInitDir (((OCC_App*) AfxGetApp())->GetInitDataDir());
@@ -332,8 +325,7 @@ void CViewer2dDoc::OnBUTTONTestImage()
{
SetCursor(AfxGetApp()->LoadStandardCursor (IDC_WAIT));
CString aFilePath = anOpenImageDlg.GetPathName();
TCollection_ExtendedString aFileNameW ((Standard_ExtString )(const wchar_t* )aFilePath);
TCollection_AsciiString aFileName (aFileNameW, '?');
TCollection_AsciiString aFileName ((const wchar_t* )aFilePath);
//erase viewer
if(myAISContext->HasOpenedContext())
@@ -355,7 +347,7 @@ void CViewer2dDoc::OnBUTTONMultipleImage()
NULL,
NULL,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
SupportedImageFormats() + "| all files (*.*)|*.*;||",
SupportedImageFormats() + L"| all files (*.*)|*.*;||",
NULL);
CString anInitDir (((OCC_App*) AfxGetApp())->GetInitDataDir());
@@ -367,8 +359,7 @@ void CViewer2dDoc::OnBUTTONMultipleImage()
{
SetCursor(AfxGetApp()->LoadStandardCursor (IDC_WAIT));
CString aFilePath = anOpenImageDlg.GetPathName();
TCollection_ExtendedString aFileNameW ((Standard_ExtString )(const wchar_t* )aFilePath);
TCollection_AsciiString aFileName (aFileNameW, '?');
TCollection_AsciiString aFileName ((const wchar_t* )aFilePath);
//erase viewer
if(myAISContext->HasOpenedContext())

View File

@@ -60,14 +60,14 @@ add_executable (Viewer3d WIN32 ${Viewer3d_SOURCE_FILES}
set_property (TARGET Viewer3d PROPERTY FOLDER Samples)
if (SINGLE_GENERATOR)
install (TARGETS Viewer3d DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
install (TARGETS Viewer3d DESTINATION "${INSTALL_DIR_BIN}")
else()
install (TARGETS Viewer3d
CONFIGURATIONS Release RelWithDebInfo
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
DESTINATION "${INSTALL_DIR_BIN}")
install (TARGETS Viewer3d
CONFIGURATIONS Debug
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}d")
DESTINATION "${INSTALL_DIR_BIN}d")
endif()
include_directories (${CMAKE_BINARY_DIR}/inc

View File

@@ -104,9 +104,8 @@ STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "ShadingModel"
FONT 8, "MS Sans Serif"
BEGIN
PUSHBUTTON "COLOR",IDC_SHADINGMODEL_COLOR,7,7,46,16
PUSHBUTTON "FLAT",IDC_SHADINGMODEL_FLAT,7,25,46,15
PUSHBUTTON "GOURAUD",IDC_SHADINGMODEL_GOURAUD,7,43,46,16
PUSHBUTTON "GOURAUD",IDC_SHADINGMODEL_GOURAUD,7,7,46,16
PUSHBUTTON "PHONG", IDC_SHADINGMODEL_PHONG, 7,25,46,15
END
IDD_MODELCLIPPING DIALOG 0, 0, 180, 74

View File

@@ -121,13 +121,16 @@ BOOL CModelClippingDlg::OnInitDialog()
{
// register and activate clipping plane
Standard_Boolean toAddPlane = Standard_True;
Graphic3d_SequenceOfHClipPlane::Iterator aPlaneIt (myView->GetClipPlanes());
for (; aPlaneIt.More(); aPlaneIt.Next())
Handle(Graphic3d_SequenceOfHClipPlane) aPlanes = myView->ClipPlanes();
if (!aPlanes.IsNull())
{
if (aPlaneIt.Value() == myClippingPlane)
for (Graphic3d_SequenceOfHClipPlane::Iterator aPlaneIt (*aPlanes); aPlaneIt.More(); aPlaneIt.Next())
{
toAddPlane = Standard_False;
break;
if (aPlaneIt.Value() == myClippingPlane)
{
toAddPlane = Standard_False;
break;
}
}
}
@@ -200,13 +203,16 @@ void CModelClippingDlg::OnCheckModelclippingonoff()
{
// register and activate clipping plane
Standard_Boolean toAddPlane = Standard_True;
Graphic3d_SequenceOfHClipPlane::Iterator aPlaneIt (myView->GetClipPlanes());
for (; aPlaneIt.More(); aPlaneIt.Next())
Handle(Graphic3d_SequenceOfHClipPlane) aPlanes = myView->ClipPlanes();
if (!aPlanes.IsNull())
{
if (aPlaneIt.Value() == myClippingPlane)
for (Graphic3d_SequenceOfHClipPlane::Iterator aPlaneIt (*aPlanes); aPlaneIt.More(); aPlaneIt.Next())
{
toAddPlane = Standard_False;
break;
if (aPlaneIt.Value() == myClippingPlane)
{
toAddPlane = Standard_False;
break;
}
}
}
@@ -233,7 +239,7 @@ void CModelClippingDlg::OnCheckModelclippingonoff()
EOL "if (...)"
EOL "{"
EOL " // register and activate clipping plane"
EOL " if (!myView->GetClipPlanes().Contains (myClippingPlane))"
EOL " if (!myView->ClipPlanes()->Contains (myClippingPlane))"
EOL " {"
EOL " myView->AddClipPlane (myClippingPlane);"
EOL " }"

View File

@@ -143,8 +143,7 @@ Handle(AIS_TexturedShape) TexturesExt_Presentation::Texturize(const TopoDS_Shape
initfile += aTFileName.ToCString();
}
TCollection_ExtendedString aFileName ((Standard_ExtString )(const wchar_t* )initfile);
aTShape->SetTextureFileName (TCollection_AsciiString (aFileName, '?'));
aTShape->SetTextureFileName (TCollection_AsciiString ((const wchar_t* )initfile));
// do other initialization of AIS_TexturedShape
aTShape->SetTextureMapOn();

View File

@@ -527,20 +527,10 @@ void CViewer3dDoc::InputEvent(const Standard_Integer /*x*/,
GetBValue (MSColor)/255.0,
Quantity_TOC_RGB);
TopoDS_Shape S = myAISContext->SelectedShape();
Handle(Geom_Surface) Surface = BRep_Tool::Surface (TopoDS::Face(S));
if (Surface->IsKind (STANDARD_TYPE (Geom_Plane)))
{
Handle(User_Cylinder)::DownCast (myAISContext->SelectedInteractive())
->SetPlanarFaceColor (CSFColor.Name());
}
else
{
Handle(User_Cylinder)::DownCast (myAISContext->SelectedInteractive())
->SetCylindricalFaceColor (CSFColor.Name());
}
Handle(AIS_InteractiveObject) aSelectedObject = myAISContext->SelectedInteractive();
Handle(User_Cylinder)::DownCast (aSelectedObject)->SetColor (CSFColor.Name());
myAISContext->Redisplay (myAISContext->SelectedInteractive());
myAISContext->Redisplay (aSelectedObject);
myState = -1;
myAISContext->CloseLocalContext();
}

View File

@@ -38,14 +38,14 @@ add_executable (ImportExport WIN32 ${ImportExport_SOURCE_FILES}
set_property (TARGET ImportExport PROPERTY FOLDER Samples)
if (SINGLE_GENERATOR)
install (TARGETS ImportExport DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
install (TARGETS ImportExport DESTINATION "${INSTALL_DIR_BIN}")
else()
install (TARGETS ImportExport
CONFIGURATIONS Release RelWithDebInfo
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
DESTINATION "${INSTALL_DIR_BIN}")
install (TARGETS ImportExport
CONFIGURATIONS Debug
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}d")
DESTINATION "${INSTALL_DIR_BIN}d")
endif()
include_directories (${CMAKE_BINARY_DIR}/inc

View File

@@ -134,19 +134,19 @@ void CImportExportApp::OnFileOpen()
// add to filter
strFilter += strFilterName;
ASSERT(!strFilter.IsEmpty()); // must have a file type name
strFilter += (TCHAR)'\0'; // next string please
strFilter += (TCHAR)'*';
strFilter += L'\0'; // next string please
strFilter += L'*';
strFilter += strFilterExt;
strFilter += (TCHAR)'\0'; // next string please
strFilter += L'\0'; // next string please
dlg.m_ofn.nMaxCustFilter++;
}
// append the "*.*" all files filter
CString allFilter;
VERIFY(allFilter.LoadString(AFX_IDS_ALLFILTER));
strFilter += allFilter;
strFilter += (TCHAR)'\0'; // next string please
strFilter += _T("*.*");
strFilter += (TCHAR)'\0'; // last string
strFilter += L'\0'; // next string please
strFilter += L"*.*";
strFilter += L'\0'; // last string
dlg.m_ofn.nMaxCustFilter++;
dlg.m_ofn.lpstrFilter = strFilter;

View File

@@ -52,14 +52,14 @@ add_executable (Ocaf WIN32 ${Ocaf_SOURCE_FILES}
set_property (TARGET Ocaf PROPERTY FOLDER Samples)
if (SINGLE_GENERATOR)
install (TARGETS Ocaf DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
install (TARGETS Ocaf DESTINATION "${INSTALL_DIR_BIN}")
else()
install (TARGETS Ocaf
CONFIGURATIONS Release RelWithDebInfo
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
DESTINATION "${INSTALL_DIR_BIN}")
install (TARGETS Ocaf
CONFIGURATIONS Debug
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}d")
DESTINATION "${INSTALL_DIR_BIN}d")
endif()
include_directories (${CMAKE_BINARY_DIR}/inc
@@ -67,4 +67,4 @@ include_directories (${CMAKE_BINARY_DIR}/inc
${Ocaf_SRC_DIR}
${MFC_STANDARD_SAMPLES_DIR}/Common)
target_link_libraries (Ocaf mfcsample TKLCAF TKVCAF TKBO)
target_link_libraries (Ocaf mfcsample TKLCAF TKVCAF TKBO TKBin TKXml)

View File

@@ -112,7 +112,7 @@
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<AdditionalDependencies>TKVCAF.lib;TKLCAF.lib;TKBrep.lib;TKIGES.lib;TKShHealing.lib;TKStep.lib;TKXSBase.lib;TKBO.lib;TKBool.lib;TKCAF.lib;TKCDF.lib;TKernel.lib;TKFeat.lib;TKFillet.lib;TKG2d.lib;TKG3d.lib;TKGeomAlgo.lib;TKGeomBase.lib;TKHLR.lib;TKMath.lib;TKOffset.lib;TKPrim.lib;TKService.lib;TKTopAlgo.lib;TKV3d.lib;TKOpenGl.lib;TKVCAF.lib;mfcsample.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>TKVCAF.lib;TKLCAF.lib;TKBrep.lib;TKIGES.lib;TKShHealing.lib;TKStep.lib;TKXSBase.lib;TKBO.lib;TKBool.lib;TKCAF.lib;TKCDF.lib;TKernel.lib;TKFeat.lib;TKFillet.lib;TKG2d.lib;TKG3d.lib;TKGeomAlgo.lib;TKGeomBase.lib;TKHLR.lib;TKMath.lib;TKOffset.lib;TKPrim.lib;TKService.lib;TKTopAlgo.lib;TKV3d.lib;TKOpenGl.lib;TKBin.lib;TKXml.lib;mfcsample.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>../../../../win32\vc10\bin/Ocaf.exe</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\win32\vc10\lib;$(CSF_OCCTLibPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
@@ -154,7 +154,7 @@
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<AdditionalDependencies>TKVCAF.lib;TKLCAF.lib;TKBrep.lib;TKIGES.lib;TKShHealing.lib;TKStep.lib;TKXSBase.lib;TKBO.lib;TKBool.lib;TKCAF.lib;TKCDF.lib;TKernel.lib;TKFeat.lib;TKFillet.lib;TKG2d.lib;TKG3d.lib;TKGeomAlgo.lib;TKGeomBase.lib;TKHLR.lib;TKMath.lib;TKOffset.lib;TKPrim.lib;TKService.lib;TKTopAlgo.lib;TKV3d.lib;TKOpenGl.lib;mfcsample.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>TKVCAF.lib;TKLCAF.lib;TKBrep.lib;TKIGES.lib;TKShHealing.lib;TKStep.lib;TKXSBase.lib;TKBO.lib;TKBool.lib;TKCAF.lib;TKCDF.lib;TKernel.lib;TKFeat.lib;TKFillet.lib;TKG2d.lib;TKG3d.lib;TKGeomAlgo.lib;TKGeomBase.lib;TKHLR.lib;TKMath.lib;TKOffset.lib;TKPrim.lib;TKService.lib;TKTopAlgo.lib;TKV3d.lib;TKOpenGl.lib;TKBin.lib;TKXml.lib;mfcsample.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>../../../../win64\vc10\bin/Ocaf.exe</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\win64\vc10\lib;$(CSF_OCCTLibPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
@@ -195,7 +195,7 @@
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<AdditionalDependencies>TKVCAF.lib;TKLCAF.lib;TKBrep.lib;TKIGES.lib;TKShHealing.lib;TKStep.lib;TKXSBase.lib;TKBO.lib;TKBool.lib;TKCAF.lib;TKCDF.lib;TKernel.lib;TKFeat.lib;TKFillet.lib;TKG2d.lib;TKG3d.lib;TKGeomAlgo.lib;TKGeomBase.lib;TKHLR.lib;TKMath.lib;TKOffset.lib;TKPrim.lib;TKService.lib;TKTopAlgo.lib;TKV3d.lib;TKOpenGl.lib;TKVCAF.lib;mfcsample.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>TKVCAF.lib;TKLCAF.lib;TKBrep.lib;TKIGES.lib;TKShHealing.lib;TKStep.lib;TKXSBase.lib;TKBO.lib;TKBool.lib;TKCAF.lib;TKCDF.lib;TKernel.lib;TKFeat.lib;TKFillet.lib;TKG2d.lib;TKG3d.lib;TKGeomAlgo.lib;TKGeomBase.lib;TKHLR.lib;TKMath.lib;TKOffset.lib;TKPrim.lib;TKService.lib;TKTopAlgo.lib;TKV3d.lib;TKOpenGl.lib;TKBin.lib;TKXml.lib;mfcsample.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>../../../../win32\vc10\bind/Ocaf.exe</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\win32\vc10\libd;$(CSF_OCCTLibPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
@@ -237,7 +237,7 @@
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<AdditionalDependencies>TKVCAF.lib;TKLCAF.lib;TKBrep.lib;TKIGES.lib;TKShHealing.lib;TKStep.lib;TKXSBase.lib;TKBO.lib;TKBool.lib;TKCAF.lib;TKCDF.lib;TKernel.lib;TKFeat.lib;TKFillet.lib;TKG2d.lib;TKG3d.lib;TKGeomAlgo.lib;TKGeomBase.lib;TKHLR.lib;TKMath.lib;TKOffset.lib;TKPrim.lib;TKService.lib;TKTopAlgo.lib;TKV3d.lib;TKOpenGl.lib;mfcsample.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>TKVCAF.lib;TKLCAF.lib;TKBrep.lib;TKIGES.lib;TKShHealing.lib;TKStep.lib;TKXSBase.lib;TKBO.lib;TKBool.lib;TKCAF.lib;TKCDF.lib;TKernel.lib;TKFeat.lib;TKFillet.lib;TKG2d.lib;TKG3d.lib;TKGeomAlgo.lib;TKGeomBase.lib;TKHLR.lib;TKMath.lib;TKOffset.lib;TKPrim.lib;TKService.lib;TKTopAlgo.lib;TKV3d.lib;TKOpenGl.lib;TKBin.lib;TKXml.lib;mfcsample.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>../../../../win64\vc10\bind/Ocaf.exe</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\win64\vc10\libd;$(CSF_OCCTLibPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>

View File

@@ -116,7 +116,7 @@
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<AdditionalDependencies>TKVCAF.lib;TKLCAF.lib;TKBrep.lib;TKIGES.lib;TKShHealing.lib;TKStep.lib;TKXSBase.lib;TKBO.lib;TKBool.lib;TKCAF.lib;TKCDF.lib;TKernel.lib;TKFeat.lib;TKFillet.lib;TKG2d.lib;TKG3d.lib;TKGeomAlgo.lib;TKGeomBase.lib;TKHLR.lib;TKMath.lib;TKOffset.lib;TKPrim.lib;TKService.lib;TKTopAlgo.lib;TKV3d.lib;TKOpenGl.lib;mfcsample.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>TKVCAF.lib;TKLCAF.lib;TKBrep.lib;TKIGES.lib;TKShHealing.lib;TKStep.lib;TKXSBase.lib;TKBO.lib;TKBool.lib;TKCAF.lib;TKCDF.lib;TKernel.lib;TKFeat.lib;TKFillet.lib;TKG2d.lib;TKG3d.lib;TKGeomAlgo.lib;TKGeomBase.lib;TKHLR.lib;TKMath.lib;TKOffset.lib;TKPrim.lib;TKService.lib;TKTopAlgo.lib;TKV3d.lib;TKOpenGl.lib;TKBin.lib;TKXml.lib;mfcsample.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>../../../../win32\vc11\bin/Ocaf.exe</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\win32\vc11\lib;$(CSF_OCCTLibPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
@@ -158,7 +158,7 @@
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<AdditionalDependencies>TKVCAF.lib;TKLCAF.lib;TKBrep.lib;TKIGES.lib;TKShHealing.lib;TKStep.lib;TKXSBase.lib;TKBO.lib;TKBool.lib;TKCAF.lib;TKCDF.lib;TKernel.lib;TKFeat.lib;TKFillet.lib;TKG2d.lib;TKG3d.lib;TKGeomAlgo.lib;TKGeomBase.lib;TKHLR.lib;TKMath.lib;TKOffset.lib;TKPrim.lib;TKService.lib;TKTopAlgo.lib;TKV3d.lib;TKOpenGl.lib;mfcsample.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>TKVCAF.lib;TKLCAF.lib;TKBrep.lib;TKIGES.lib;TKShHealing.lib;TKStep.lib;TKXSBase.lib;TKBO.lib;TKBool.lib;TKCAF.lib;TKCDF.lib;TKernel.lib;TKFeat.lib;TKFillet.lib;TKG2d.lib;TKG3d.lib;TKGeomAlgo.lib;TKGeomBase.lib;TKHLR.lib;TKMath.lib;TKOffset.lib;TKPrim.lib;TKService.lib;TKTopAlgo.lib;TKV3d.lib;TKOpenGl.lib;TKBin.lib;TKXml.lib;mfcsample.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>../../../../win64\vc11\bin/Ocaf.exe</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\win64\vc11\lib;$(CSF_OCCTLibPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
@@ -199,7 +199,7 @@
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<AdditionalDependencies>TKVCAF.lib;TKLCAF.lib;TKBrep.lib;TKIGES.lib;TKShHealing.lib;TKStep.lib;TKXSBase.lib;TKBO.lib;TKBool.lib;TKCAF.lib;TKCDF.lib;TKernel.lib;TKFeat.lib;TKFillet.lib;TKG2d.lib;TKG3d.lib;TKGeomAlgo.lib;TKGeomBase.lib;TKHLR.lib;TKMath.lib;TKOffset.lib;TKPrim.lib;TKService.lib;TKTopAlgo.lib;TKV3d.lib;TKOpenGl.lib;mfcsample.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>TKVCAF.lib;TKLCAF.lib;TKBrep.lib;TKIGES.lib;TKShHealing.lib;TKStep.lib;TKXSBase.lib;TKBO.lib;TKBool.lib;TKCAF.lib;TKCDF.lib;TKernel.lib;TKFeat.lib;TKFillet.lib;TKG2d.lib;TKG3d.lib;TKGeomAlgo.lib;TKGeomBase.lib;TKHLR.lib;TKMath.lib;TKOffset.lib;TKPrim.lib;TKService.lib;TKTopAlgo.lib;TKV3d.lib;TKOpenGl.lib;TKBin.lib;TKXml.lib;mfcsample.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>../../../../win32\vc11\bind/Ocaf.exe</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\win32\vc11\libd;$(CSF_OCCTLibPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
@@ -241,7 +241,7 @@
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<AdditionalDependencies>TKVCAF.lib;TKLCAF.lib;TKBrep.lib;TKIGES.lib;TKShHealing.lib;TKStep.lib;TKXSBase.lib;TKBO.lib;TKBool.lib;TKCAF.lib;TKCDF.lib;TKernel.lib;TKFeat.lib;TKFillet.lib;TKG2d.lib;TKG3d.lib;TKGeomAlgo.lib;TKGeomBase.lib;TKHLR.lib;TKMath.lib;TKOffset.lib;TKPrim.lib;TKService.lib;TKTopAlgo.lib;TKV3d.lib;TKOpenGl.lib;mfcsample.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>TKVCAF.lib;TKLCAF.lib;TKBrep.lib;TKIGES.lib;TKShHealing.lib;TKStep.lib;TKXSBase.lib;TKBO.lib;TKBool.lib;TKCAF.lib;TKCDF.lib;TKernel.lib;TKFeat.lib;TKFillet.lib;TKG2d.lib;TKG3d.lib;TKGeomAlgo.lib;TKGeomBase.lib;TKHLR.lib;TKMath.lib;TKOffset.lib;TKPrim.lib;TKService.lib;TKTopAlgo.lib;TKV3d.lib;TKOpenGl.lib;TKBin.lib;TKXml.lib;mfcsample.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>../../../../win64\vc11\bind/Ocaf.exe</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\win64\vc11\libd;$(CSF_OCCTLibPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>

View File

@@ -116,7 +116,7 @@
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<AdditionalDependencies>TKVCAF.lib;TKLCAF.lib;TKBrep.lib;TKIGES.lib;TKShHealing.lib;TKStep.lib;TKXSBase.lib;TKBO.lib;TKBool.lib;TKCAF.lib;TKCDF.lib;TKernel.lib;TKFeat.lib;TKFillet.lib;TKG2d.lib;TKG3d.lib;TKGeomAlgo.lib;TKGeomBase.lib;TKHLR.lib;TKMath.lib;TKOffset.lib;TKPrim.lib;TKService.lib;TKTopAlgo.lib;TKV3d.lib;TKOpenGl.lib;mfcsample.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>TKVCAF.lib;TKLCAF.lib;TKBrep.lib;TKIGES.lib;TKShHealing.lib;TKStep.lib;TKXSBase.lib;TKBO.lib;TKBool.lib;TKCAF.lib;TKCDF.lib;TKernel.lib;TKFeat.lib;TKFillet.lib;TKG2d.lib;TKG3d.lib;TKGeomAlgo.lib;TKGeomBase.lib;TKHLR.lib;TKMath.lib;TKOffset.lib;TKPrim.lib;TKService.lib;TKTopAlgo.lib;TKV3d.lib;TKOpenGl.lib;TKBin.lib;TKXml.lib;mfcsample.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>../../../../win32\vc12\bin/Ocaf.exe</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\win32\vc12\lib;$(CSF_OCCTLibPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
@@ -158,7 +158,7 @@
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<AdditionalDependencies>TKVCAF.lib;TKLCAF.lib;TKBrep.lib;TKIGES.lib;TKShHealing.lib;TKStep.lib;TKXSBase.lib;TKBO.lib;TKBool.lib;TKCAF.lib;TKCDF.lib;TKernel.lib;TKFeat.lib;TKFillet.lib;TKG2d.lib;TKG3d.lib;TKGeomAlgo.lib;TKGeomBase.lib;TKHLR.lib;TKMath.lib;TKOffset.lib;TKPrim.lib;TKService.lib;TKTopAlgo.lib;TKV3d.lib;TKOpenGl.lib;mfcsample.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>TKVCAF.lib;TKLCAF.lib;TKBrep.lib;TKIGES.lib;TKShHealing.lib;TKStep.lib;TKXSBase.lib;TKBO.lib;TKBool.lib;TKCAF.lib;TKCDF.lib;TKernel.lib;TKFeat.lib;TKFillet.lib;TKG2d.lib;TKG3d.lib;TKGeomAlgo.lib;TKGeomBase.lib;TKHLR.lib;TKMath.lib;TKOffset.lib;TKPrim.lib;TKService.lib;TKTopAlgo.lib;TKV3d.lib;TKOpenGl.lib;TKBin.lib;TKXml.lib;mfcsample.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>../../../../win64\vc12\bin/Ocaf.exe</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\win64\vc12\lib;$(CSF_OCCTLibPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
@@ -199,7 +199,7 @@
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<AdditionalDependencies>TKVCAF.lib;TKLCAF.lib;TKBrep.lib;TKIGES.lib;TKShHealing.lib;TKStep.lib;TKXSBase.lib;TKBO.lib;TKBool.lib;TKCAF.lib;TKCDF.lib;TKernel.lib;TKFeat.lib;TKFillet.lib;TKG2d.lib;TKG3d.lib;TKGeomAlgo.lib;TKGeomBase.lib;TKHLR.lib;TKMath.lib;TKOffset.lib;TKPrim.lib;TKService.lib;TKTopAlgo.lib;TKV3d.lib;TKOpenGl.lib;mfcsample.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>TKVCAF.lib;TKLCAF.lib;TKBrep.lib;TKIGES.lib;TKShHealing.lib;TKStep.lib;TKXSBase.lib;TKBO.lib;TKBool.lib;TKCAF.lib;TKCDF.lib;TKernel.lib;TKFeat.lib;TKFillet.lib;TKG2d.lib;TKG3d.lib;TKGeomAlgo.lib;TKGeomBase.lib;TKHLR.lib;TKMath.lib;TKOffset.lib;TKPrim.lib;TKService.lib;TKTopAlgo.lib;TKV3d.lib;TKOpenGl.lib;TKBin.lib;TKXml.lib;mfcsample.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>../../../../win32\vc12\bind/Ocaf.exe</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\win32\vc12\libd;$(CSF_OCCTLibPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
@@ -241,7 +241,7 @@
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<AdditionalDependencies>TKVCAF.lib;TKLCAF.lib;TKBrep.lib;TKIGES.lib;TKShHealing.lib;TKStep.lib;TKXSBase.lib;TKBO.lib;TKBool.lib;TKCAF.lib;TKCDF.lib;TKernel.lib;TKFeat.lib;TKFillet.lib;TKG2d.lib;TKG3d.lib;TKGeomAlgo.lib;TKGeomBase.lib;TKHLR.lib;TKMath.lib;TKOffset.lib;TKPrim.lib;TKService.lib;TKTopAlgo.lib;TKV3d.lib;TKOpenGl.lib;mfcsample.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>TKVCAF.lib;TKLCAF.lib;TKBrep.lib;TKIGES.lib;TKShHealing.lib;TKStep.lib;TKXSBase.lib;TKBO.lib;TKBool.lib;TKCAF.lib;TKCDF.lib;TKernel.lib;TKFeat.lib;TKFillet.lib;TKG2d.lib;TKG3d.lib;TKGeomAlgo.lib;TKGeomBase.lib;TKHLR.lib;TKMath.lib;TKOffset.lib;TKPrim.lib;TKService.lib;TKTopAlgo.lib;TKV3d.lib;TKOpenGl.lib;TKBin.lib;TKXml.lib;mfcsample.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>../../../../win64\vc12\bind/Ocaf.exe</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\win64\vc12\libd;$(CSF_OCCTLibPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>

View File

@@ -116,7 +116,7 @@
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<AdditionalDependencies>TKVCAF.lib;TKLCAF.lib;TKBrep.lib;TKIGES.lib;TKShHealing.lib;TKStep.lib;TKXSBase.lib;TKBO.lib;TKBool.lib;TKCAF.lib;TKCDF.lib;TKernel.lib;TKFeat.lib;TKFillet.lib;TKG2d.lib;TKG3d.lib;TKGeomAlgo.lib;TKGeomBase.lib;TKHLR.lib;TKMath.lib;TKOffset.lib;TKPrim.lib;TKService.lib;TKTopAlgo.lib;TKV3d.lib;TKOpenGl.lib;mfcsample.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>TKVCAF.lib;TKLCAF.lib;TKBrep.lib;TKIGES.lib;TKShHealing.lib;TKStep.lib;TKXSBase.lib;TKBO.lib;TKBool.lib;TKCAF.lib;TKCDF.lib;TKernel.lib;TKFeat.lib;TKFillet.lib;TKG2d.lib;TKG3d.lib;TKGeomAlgo.lib;TKGeomBase.lib;TKHLR.lib;TKMath.lib;TKOffset.lib;TKPrim.lib;TKService.lib;TKTopAlgo.lib;TKV3d.lib;TKOpenGl.lib;TKBin.lib;TKXml.lib;mfcsample.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>../../../../win32\vc14\bin/Ocaf.exe</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\win32\vc14\lib;$(CSF_OCCTLibPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
@@ -158,7 +158,7 @@
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<AdditionalDependencies>TKVCAF.lib;TKLCAF.lib;TKBrep.lib;TKIGES.lib;TKShHealing.lib;TKStep.lib;TKXSBase.lib;TKBO.lib;TKBool.lib;TKCAF.lib;TKCDF.lib;TKernel.lib;TKFeat.lib;TKFillet.lib;TKG2d.lib;TKG3d.lib;TKGeomAlgo.lib;TKGeomBase.lib;TKHLR.lib;TKMath.lib;TKOffset.lib;TKPrim.lib;TKService.lib;TKTopAlgo.lib;TKV3d.lib;TKOpenGl.lib;mfcsample.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>TKVCAF.lib;TKLCAF.lib;TKBrep.lib;TKIGES.lib;TKShHealing.lib;TKStep.lib;TKXSBase.lib;TKBO.lib;TKBool.lib;TKCAF.lib;TKCDF.lib;TKernel.lib;TKFeat.lib;TKFillet.lib;TKG2d.lib;TKG3d.lib;TKGeomAlgo.lib;TKGeomBase.lib;TKHLR.lib;TKMath.lib;TKOffset.lib;TKPrim.lib;TKService.lib;TKTopAlgo.lib;TKV3d.lib;TKOpenGl.lib;TKBin.lib;TKXml.lib;mfcsample.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>../../../../win64\vc14\bin/Ocaf.exe</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\win64\vc14\lib;$(CSF_OCCTLibPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
@@ -199,7 +199,7 @@
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<AdditionalDependencies>TKVCAF.lib;TKLCAF.lib;TKBrep.lib;TKIGES.lib;TKShHealing.lib;TKStep.lib;TKXSBase.lib;TKBO.lib;TKBool.lib;TKCAF.lib;TKCDF.lib;TKernel.lib;TKFeat.lib;TKFillet.lib;TKG2d.lib;TKG3d.lib;TKGeomAlgo.lib;TKGeomBase.lib;TKHLR.lib;TKMath.lib;TKOffset.lib;TKPrim.lib;TKService.lib;TKTopAlgo.lib;TKV3d.lib;TKOpenGl.lib;mfcsample.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>TKVCAF.lib;TKLCAF.lib;TKBrep.lib;TKIGES.lib;TKShHealing.lib;TKStep.lib;TKXSBase.lib;TKBO.lib;TKBool.lib;TKCAF.lib;TKCDF.lib;TKernel.lib;TKFeat.lib;TKFillet.lib;TKG2d.lib;TKG3d.lib;TKGeomAlgo.lib;TKGeomBase.lib;TKHLR.lib;TKMath.lib;TKOffset.lib;TKPrim.lib;TKService.lib;TKTopAlgo.lib;TKV3d.lib;TKOpenGl.lib;TKBin.lib;TKXml.lib;mfcsample.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>../../../../win32\vc14\bind/Ocaf.exe</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\win32\vc14\libd;$(CSF_OCCTLibPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
@@ -241,7 +241,7 @@
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<AdditionalDependencies>TKVCAF.lib;TKLCAF.lib;TKBrep.lib;TKIGES.lib;TKShHealing.lib;TKStep.lib;TKXSBase.lib;TKBO.lib;TKBool.lib;TKCAF.lib;TKCDF.lib;TKernel.lib;TKFeat.lib;TKFillet.lib;TKG2d.lib;TKG3d.lib;TKGeomAlgo.lib;TKGeomBase.lib;TKHLR.lib;TKMath.lib;TKOffset.lib;TKPrim.lib;TKService.lib;TKTopAlgo.lib;TKV3d.lib;TKOpenGl.lib;mfcsample.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>TKVCAF.lib;TKLCAF.lib;TKBrep.lib;TKIGES.lib;TKShHealing.lib;TKStep.lib;TKXSBase.lib;TKBO.lib;TKBool.lib;TKCAF.lib;TKCDF.lib;TKernel.lib;TKFeat.lib;TKFillet.lib;TKG2d.lib;TKG3d.lib;TKGeomAlgo.lib;TKGeomBase.lib;TKHLR.lib;TKMath.lib;TKOffset.lib;TKPrim.lib;TKService.lib;TKTopAlgo.lib;TKV3d.lib;TKOpenGl.lib;TKBin.lib;TKXml.lib;mfcsample.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>../../../../win64\vc14\bind/Ocaf.exe</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\..\win64\vc14\libd;$(CSF_OCCTLibPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>

View File

@@ -13,6 +13,9 @@
#include "direct.h"
#include <OSD_Environment.hxx>
#include <BinDrivers.hxx>
#include <XmlDrivers.hxx>
/////////////////////////////////////////////////////////////////////////////
// COcafApp
@@ -39,6 +42,10 @@ COcafApp::COcafApp() : OCC_App()
SampleName = "OCAF"; //for about dialog
SetSamplePath (L"..\\..\\06_Ocaf");
// load persistence
BinDrivers::DefineFormat (myApp);
XmlDrivers::DefineFormat (myApp);
try
{
UnitsAPI::SetLocalSystem(UnitsAPI_MDTV);

View File

@@ -213,7 +213,7 @@ void COcafDoc::OnCreatebox()
// Create a new box using the CNewBoxDlg Dialog parameters as attributes
TDF_Label L = TSC.CreateBox (Dlg.m_x, Dlg.m_y, Dlg.m_z, Dlg.m_w, Dlg.m_l, Dlg.m_h,
TCollection_ExtendedString ((Standard_ExtString )(const wchar_t* )Dlg.m_Name));
TCollection_ExtendedString ((const wchar_t* )Dlg.m_Name));
// Get the TPrsStd_AISPresentation of the new box TNaming_NamedShape
Handle(TPrsStd_AISPresentation) prs= TPrsStd_AISPresentation::Set(L, TNaming_NamedShape::GetID());
@@ -270,7 +270,7 @@ void COcafDoc::OnCreatecyl()
// Create a new box using the CNewCylDlg Dialog parameters as attributes
TDF_Label L = TSC.CreateCyl (Dlg.m_x, Dlg.m_y, Dlg.m_z, Dlg.m_r, Dlg.m_h,
TCollection_ExtendedString ((Standard_ExtString )(const wchar_t* )Dlg.m_Name));
TCollection_ExtendedString ((const wchar_t* )Dlg.m_Name));
// Get the TPrsStd_AISPresentation of the new cylinder TNaming_NamedShape
Handle(TPrsStd_AISPresentation) prs= TPrsStd_AISPresentation::Set(L, TNaming_NamedShape::GetID());
@@ -389,7 +389,7 @@ Handle(TFunction_Function) TFF; \n\
// Modify the box
TOcaf_Commands TSC(LabObject);
TSC.ModifyBox (Dlg.m_x, Dlg.m_y, Dlg.m_z, Dlg.m_w, Dlg.m_l, Dlg.m_h,
TCollection_ExtendedString ((Standard_ExtString )(const wchar_t* )Dlg.m_Name), log);
TCollection_ExtendedString ((const wchar_t* )Dlg.m_Name), log);
// Get the presentation of the box, display it and set it selected
Handle(TPrsStd_AISPresentation) prs= TPrsStd_AISPresentation::Set(LabObject, TNaming_NamedShape::GetID());
@@ -474,7 +474,7 @@ D->CommitCommand(); \n\
// Modify the cylinder
TOcaf_Commands TSC(LabObject);
TSC.ModifyCyl (Dlg.m_x, Dlg.m_y, Dlg.m_z, Dlg.m_r, Dlg.m_h,
TCollection_ExtendedString ((Standard_ExtString )(const wchar_t* )Dlg.m_Name), log);
TCollection_ExtendedString ((const wchar_t* )Dlg.m_Name), log);
// Get the presentation of the cylinder, display it and set it selected
Handle(TPrsStd_AISPresentation) prs= TPrsStd_AISPresentation::Set(LabObject, TNaming_NamedShape::GetID());
@@ -591,7 +591,7 @@ D->CommitCommand(); \n\
// Modify the cylinder
TOcaf_Commands ToolTSC(ToolLab);
ToolTSC.ModifyCyl (Dlg.m_x, Dlg.m_y, Dlg.m_z, Dlg.m_r, Dlg.m_h,
TCollection_ExtendedString ((Standard_ExtString )(const wchar_t* )Dlg.m_Name), log);
TCollection_ExtendedString ((const wchar_t* )Dlg.m_Name), log);
// Redisplay the modified Tool object
TDataStd_Integer::Set(ToolLab, 1);
@@ -899,7 +899,7 @@ void COcafDoc::OnCloseDocument()
void COcafDoc::OnFileSaveAs()
{
const wchar_t* SPathName = PathName;
TCollection_ExtendedString TPathName ((Standard_ExtString )SPathName);
TCollection_ExtendedString TPathName (SPathName);
CString Filter;
@@ -928,7 +928,7 @@ void COcafDoc::OnFileSaveAs()
cout << "Save As " << CSPath << endl;
PathName=CSPath;
const wchar_t* SPath = CSPath;
TCollection_ExtendedString TPath ((Standard_ExtString )SPath);
TCollection_ExtendedString TPath (SPath);
if (TPath.SearchFromEnd(".xml") > 0)
{
@@ -984,7 +984,7 @@ void COcafDoc::OnFileSave()
if(PathName!="")
{
const wchar_t* SPath = PathName;
TCollection_ExtendedString TPath ((Standard_ExtString )SPath);
TCollection_ExtendedString TPath (SPath);
if (TPath.SearchFromEnd(".xml") > 0)
{
@@ -1038,7 +1038,7 @@ m_App->SaveAs(myOcafDoc,(TCollection_ExtendedString) TPath); \n\
CString CSPath = dlg.GetPathName();
const wchar_t* SPath = CSPath;
TCollection_ExtendedString TPath ((Standard_ExtString )SPath);
TCollection_ExtendedString TPath (SPath);
// Choose storage format
if (TPath.SearchFromEnd(".xml") > 0)
@@ -1094,7 +1094,7 @@ BOOL COcafDoc::OnOpenDocument(LPCTSTR lpszPathName)
PathName = lpszPathName;
const wchar_t* aPathName = lpszPathName;
TCollection_ExtendedString anOccPathName ((Standard_ExtString)aPathName);
TCollection_ExtendedString anOccPathName (aPathName);
// Open the document in the current application
//PCDM_ReaderStatus RS = m_App->Open(TPath,myOcafDoc);

View File

@@ -22,42 +22,16 @@
TOcaf_Application::TOcaf_Application()
{
// Instanciate a TOcafFunction_BoxDriver and add it to the TFunction_DriverTable
TFunction_DriverTable::Get()->AddDriver(TOcafFunction_BoxDriver::GetID(),
new TOcafFunction_BoxDriver());
// Instanciate a TOcafFunction_BoxDriver and add it to the TFunction_DriverTable
TFunction_DriverTable::Get()->AddDriver (TOcafFunction_BoxDriver::GetID(),
new TOcafFunction_BoxDriver());
// Instanciate a TOcafFunction_CylDriver and add it to the TFunction_DriverTable
TFunction_DriverTable::Get()->AddDriver(TOcafFunction_CylDriver::GetID(),
new TOcafFunction_CylDriver());
// Instanciate a TOcafFunction_CutDriver and add it to the TFunction_DriverTable
Handle(TOcafFunction_CutDriver) myCutDriver = new TOcafFunction_CutDriver();
TFunction_DriverTable::Get()->AddDriver(TOcafFunction_CutDriver::GetID(),
new TOcafFunction_CutDriver());
// Instanciate a TOcafFunction_Cyl Driver and add it to the TFunction_DriverTable
TFunction_DriverTable::Get()->AddDriver (TOcafFunction_CylDriver::GetID(),
new TOcafFunction_CylDriver());
// Instanciate a TOcafFunction_CutDriver and add it to the TFunction_DriverTable
Handle(TOcafFunction_CutDriver) myCutDriver = new TOcafFunction_CutDriver();
TFunction_DriverTable::Get()->AddDriver (TOcafFunction_CutDriver::GetID(),
new TOcafFunction_CutDriver());
}
//=======================================================================
//function : Formats
//purpose :
//=======================================================================
void TOcaf_Application::Formats(TColStd_SequenceOfExtendedString& Formats)
{
Formats.Append(TCollection_ExtendedString("BinOcaf"));
Formats.Append(TCollection_ExtendedString("XmlOcaf"));
}
//=======================================================================
//function : ResourcesName
//purpose :
//=======================================================================
Standard_CString TOcaf_Application::ResourcesName()
{
return Standard_CString ("Standard");
}

View File

@@ -33,12 +33,6 @@ public:
// Methods PUBLIC
//
Standard_EXPORT TOcaf_Application();
Standard_EXPORT virtual void Formats(TColStd_SequenceOfExtendedString& Formats) ;
Standard_EXPORT Standard_CString ResourcesName() ;
Standard_EXPORT ~TOcaf_Application();
// Type management
//

View File

@@ -18,8 +18,6 @@
#include <Standard_TypeMismatch.hxx>
#endif
TOcaf_Application::~TOcaf_Application() {}
// DownCast method
// allow safe downcasting
//

View File

@@ -42,14 +42,14 @@ add_executable (Triangulation WIN32 ${Triangulation_SOURCE_FILES}
set_property (TARGET Triangulation PROPERTY FOLDER Samples)
if (SINGLE_GENERATOR)
install (TARGETS Triangulation DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
install (TARGETS Triangulation DESTINATION "${INSTALL_DIR_BIN}")
else()
install (TARGETS Triangulation
CONFIGURATIONS Release RelWithDebInfo
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
DESTINATION "${INSTALL_DIR_BIN}")
install (TARGETS Triangulation
CONFIGURATIONS Debug
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}d")
DESTINATION "${INSTALL_DIR_BIN}d")
endif()
include_directories (${CMAKE_BINARY_DIR}/inc

View File

@@ -64,14 +64,14 @@ add_executable (HLR WIN32 ${HLR_SOURCE_FILES}
set_property (TARGET HLR PROPERTY FOLDER Samples)
if (SINGLE_GENERATOR)
install (TARGETS HLR DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
install (TARGETS HLR DESTINATION "${INSTALL_DIR_BIN}")
else()
install (TARGETS HLR
CONFIGURATIONS Release RelWithDebInfo
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
DESTINATION "${INSTALL_DIR_BIN}")
install (TARGETS HLR
CONFIGURATIONS Debug
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}d")
DESTINATION "${INSTALL_DIR_BIN}d")
endif()
include_directories (${CMAKE_BINARY_DIR}/inc

View File

@@ -49,20 +49,14 @@ CHLRDoc::CHLRDoc()
((CHLRApp*)AfxGetApp())->GetGraphicDriver();
// VIEWER 3D
TCollection_ExtendedString a3DName ("Visu3D");
myViewer = new V3d_Viewer (theGraphicDriver, a3DName.ToExtString(), "", 1000.0,
V3d_XposYnegZpos, Quantity_NOC_GRAY30,
V3d_ZBUFFER, V3d_GOURAUD, V3d_WAIT,
Standard_True, Standard_False);
myViewer = new V3d_Viewer (theGraphicDriver);
myViewer->SetDefaultLights();
myViewer->SetLightOn();
myAISContext =new AIS_InteractiveContext (myViewer);
// 2D VIEWER: exploit V3d viewer for 2D visualization
TCollection_ExtendedString a2DName ("Visu2D");
my2DViewer = new V3d_Viewer (theGraphicDriver, a2DName.ToExtString());
my2DViewer = new V3d_Viewer (theGraphicDriver);
my2DViewer->SetCircularGridValues (0, 0, 10, 8, 0);
my2DViewer->SetRectangularGridValues (0, 0, 10, 10, 0);

View File

@@ -129,7 +129,7 @@ void CSelectionDialog::OnDisplay (bool isFit)
Handle(Graphic3d_GraphicDriver) aGraphicDriver =
((CHLRApp*)AfxGetApp())->GetGraphicDriver();
myActiveViewer = new V3d_Viewer (aGraphicDriver, (Standard_ExtString )"Visu3D");
myActiveViewer = new V3d_Viewer (aGraphicDriver);
myActiveViewer->SetDefaultLights();
myActiveViewer->SetLightOn();
myActiveView = myActiveViewer->CreateView();

View File

@@ -47,14 +47,14 @@ add_executable (Animation WIN32 ${Animation_SOURCE_FILES}
set_property (TARGET Animation PROPERTY FOLDER Samples)
if (SINGLE_GENERATOR)
install (TARGETS Animation DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
install (TARGETS Animation DESTINATION "${INSTALL_DIR_BIN}")
else()
install (TARGETS Animation
CONFIGURATIONS Release RelWithDebInfo
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
DESTINATION "${INSTALL_DIR_BIN}")
install (TARGETS Animation
CONFIGURATIONS Debug
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}d")
DESTINATION "${INSTALL_DIR_BIN}d")
endif()
include_directories (${CMAKE_BINARY_DIR}/inc

View File

@@ -52,12 +52,7 @@ CAnimationDoc::CAnimationDoc()
Handle(Graphic3d_GraphicDriver) aGraphicDriver =
((CAnimationApp*)AfxGetApp())->GetGraphicDriver();
TCollection_ExtendedString a3DName("Visu3D");
myViewer = new V3d_Viewer(aGraphicDriver,a3DName.ToExtString(),"", 1000.0,
V3d_XposYnegZpos, Quantity_NOC_GRAY30,
V3d_ZBUFFER,V3d_GOURAUD,V3d_WAIT,
Standard_True, Standard_False);
myViewer = new V3d_Viewer(aGraphicDriver);
myViewer->SetDefaultLights();
myViewer->SetLightOn();

View File

@@ -64,14 +64,14 @@ add_executable (Convert WIN32 ${Convert_SOURCE_FILES}
set_property (TARGET Convert PROPERTY FOLDER Samples)
if (SINGLE_GENERATOR)
install (TARGETS Convert DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
install (TARGETS Convert DESTINATION "${INSTALL_DIR_BIN}")
else()
install (TARGETS Convert
CONFIGURATIONS Release RelWithDebInfo
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}")
DESTINATION "${INSTALL_DIR_BIN}")
install (TARGETS Convert
CONFIGURATIONS Debug
DESTINATION "${INSTALL_DIR}/${INSTALL_DIR_BIN}d")
DESTINATION "${INSTALL_DIR_BIN}d")
endif()
include_directories (${CMAKE_BINARY_DIR}/inc

View File

@@ -39,7 +39,9 @@ Standard_Boolean OCCDemo_Presentation::WaitForInput (unsigned long aMilliSeconds
MSG msg;
if (::PeekMessage (&msg, NULL, 0, 0, PM_NOREMOVE))
{
if (msg.message == WM_KEYUP)
if ( msg.message == WM_KEYUP ||
msg.message == WM_MOUSEFIRST ||
msg.message == WM_PAINT )
{
::PeekMessage (&msg, NULL, 0, 0, PM_REMOVE);
return WaitForInput (aMilliSeconds);

View File

@@ -46,10 +46,10 @@ COCCDemoDoc::COCCDemoDoc()
Handle(Graphic3d_GraphicDriver) aGraphicDriver =
((COCCDemoApp*)AfxGetApp())->GetGraphicDriver();
myViewer = new V3d_Viewer(aGraphicDriver, (Standard_ExtString )"Visu3D");
myViewer = new V3d_Viewer(aGraphicDriver);
myViewer->SetDefaultLights();
myViewer->SetLightOn();
myViewer->SetDefaultBackgroundColor(Quantity_TOC_RGB, 0.,0.,0.);
myViewer->SetDefaultBackgroundColor (Quantity_NOC_BLACK);
myAISContext = new AIS_InteractiveContext(myViewer);
myShowResult = FALSE;

View File

@@ -76,7 +76,8 @@ void CAngleParamsVerticesPage::OnBnClickedVertex1Btn()
// Now it's ok, local context is opened and edge selection mode is activated
// Check if some vertex is selected
myAISContext->LocalContext()->InitSelected();
if (!myAISContext->LocalContext()->MoreSelected())
if (!myAISContext->LocalContext()->MoreSelected() ||
myAISContext->SelectedShape().ShapeType() != TopAbs_VERTEX)
{
AfxMessageBox (_T ("Choose the vertex and press the button again"),
MB_ICONINFORMATION | MB_OK);
@@ -95,7 +96,8 @@ void CAngleParamsVerticesPage::OnBnClickedVertex1Btn()
void CAngleParamsVerticesPage::OnBnClickedVertex2Btn()
{
myAISContext->LocalContext()->InitSelected();
if (!myAISContext->LocalContext()->MoreSelected())
if (!myAISContext->LocalContext()->MoreSelected() ||
myAISContext->SelectedShape().ShapeType() != TopAbs_VERTEX)
{
AfxMessageBox ( _T("Choose the vertex and press the button again"), MB_ICONINFORMATION | MB_OK);
return;

View File

@@ -715,8 +715,7 @@ const TCollection_AsciiString CDimensionDlg::GetUnits() const
return TCollection_AsciiString();
CString aStr;
GetDlgItem (IDC_DisplayUnits)->GetWindowText (aStr);
TCollection_ExtendedString aCharsW ((Standard_ExtString )(const wchar_t* )aStr);
return TCollection_AsciiString (aCharsW, '?');
return TCollection_AsciiString ((const wchar_t* )aStr);
}
//=======================================================================

View File

@@ -273,8 +273,7 @@ dlg.m_ofn.lpstrInitialDir = initdir;
if (dlg.DoModal() == IDOK)
{
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT));
TCollection_ExtendedString aFileNameW ((Standard_ExtString )(const wchar_t* )dlg.GetPathName());
TCollection_AsciiString aFileName (aFileNameW, '?');
TCollection_AsciiString aFileName ((const wchar_t* )dlg.GetPathName());
Standard_Integer status = ReadIGES (aFileName.ToCString(), aSequence);
if (status != IFSelect_RetDone)
{
@@ -338,8 +337,7 @@ dlg.m_ofn.lpstrInitialDir = initdir;
{
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT));
TCollection_ExtendedString aFileNameW ((Standard_ExtString )(const wchar_t* )dlg.GetPathName());
TCollection_AsciiString aFileName (aFileNameW, '?');
TCollection_AsciiString aFileName ((const wchar_t* )dlg.GetPathName());
result = SaveIGES (aFileName.ToCString(), aHSequenceOfShape);
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));
@@ -400,8 +398,7 @@ dlg.m_ofn.lpstrInitialDir = initdir;
if (dlg.DoModal() == IDOK)
{
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT));
TCollection_ExtendedString aFileNameW ((Standard_ExtString )(const wchar_t* )dlg.GetPathName());
TCollection_AsciiString aFileName (aFileNameW, '?');
TCollection_AsciiString aFileName ((const wchar_t* )dlg.GetPathName());
IFSelect_ReturnStatus ReturnStatus = ReadSTEP (aFileName.ToCString(), aSequence);
switch (ReturnStatus)
{
@@ -518,8 +515,7 @@ IFSelect_ReturnStatus CImportExport::SaveSTEP(const Handle(TopTools_HSequenceOfS
if (aDlg.DoModal() == IDOK) {
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT));
TCollection_ExtendedString aFileNameW ((Standard_ExtString )(const wchar_t* )aDlg.GetPathName());
TCollection_AsciiString aFileName (aFileNameW, '?');
TCollection_AsciiString aFileName ((const wchar_t* )aDlg.GetPathName());
STEPControl_StepModelType selection = aDlg.m_Cc1ModelType;
@@ -605,11 +601,10 @@ dlg.m_ofn.lpstrInitialDir = initdir;
if (dlg.DoModal() == IDOK) {
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT));
TCollection_ExtendedString aFileNameW ((Standard_ExtString )(const wchar_t* )dlg.GetPathName());
TCollection_AsciiString aFileName (aFileNameW, '?');
TCollection_AsciiString aFileName ((const wchar_t* )dlg.GetPathName());
TCollection_AsciiString Message;
result = SaveSTL (aFileName.ToCString(), aHSequenceOfShape, Message);
CString aMsg (Message.ToCString());
CString aMsg (TCollection_ExtendedString (Message).ToWideString());
MessageBoxW (AfxGetApp()->m_pMainWnd->m_hWnd, aMsg, result ? L"CasCade" : L"CasCade Error", result ? MB_OK : MB_ICONERROR);
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));
}
@@ -696,11 +691,10 @@ dlg.m_ofn.lpstrInitialDir = initdir;
if (dlg.DoModal() == IDOK) {
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT));
TCollection_ExtendedString aFileNameW ((Standard_ExtString )(const wchar_t* )dlg.GetPathName());
TCollection_AsciiString aFileName (aFileNameW, '?');
TCollection_AsciiString aFileName ((const wchar_t* )dlg.GetPathName());
TCollection_AsciiString Message;
result = SaveVRML (aFileName.ToCString(), aHSequenceOfShape, anArrayOfColors, anArrayOfTransparencies, Message);
CString aMsg (Message.ToCString());
CString aMsg (TCollection_ExtendedString(Message).ToWideString());
MessageBoxW (AfxGetApp()->m_pMainWnd->m_hWnd, aMsg, result ? L"CasCade" : L"CasCade Error", result ? MB_OK : MB_ICONERROR);
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));
}

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