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

4451 Commits

Author SHA1 Message Date
emv
06b59f24f4 0030656: Modeling Algorithms - Change Boolean Operations algorithm to use BVH tree instead of UBTree
Switching the Boolean Operations algorithm to use the BVH tree instead of UB tree as selection of the elements from BVH tree is usually faster.
2019-05-28 14:40:29 +03:00
emv
ce37d08a7b 0030655: Modeling Data - Provide interfaces for selection of the elements from BVH tree
Provide the easy to use interfaces for selection of the elements from BVH tree.
The selection rules should be implemented in the selector class derived from *BVH_Traverse* or in *BVH_PairTraverse* in Reject/Accept methods.

The *BVH_Traverse* is used for selection of the elements from the tree.
The *BVH_PairTraverse* is used for selection of the pairs of elements from two BVH trees.

Auxiliary changes:
- Two methods BVH_Box::IsOut(OtherBox) and BVH_Box::IsOut(Point) have been added;
- Added methods for conversion of Bnd boxes to BVH boxes

Added new class *BVH_Tools* containing useful static methods operating on BVH points and boxes.

The classes BRepExtrema_OverlapTool and BVH_DistanceField have been rebased to use the new traverse methods.

Test case for the issue.
2019-05-28 14:40:12 +03:00
osa
f2da78be2e 0030131: Foundation Classes - support of Linear builder for 2D BVH trees
BVH_LinearBuilder and BVH_RadixSorter now accept N==2.
NCollection_Vec2/3/4 - added missing division by vec operators.
2019-05-27 16:18:57 +03:00
emv
b575195f96 0030670: Modeling Algorithms - Performance improvement of Boolean Operations algorithm
The following improvements have been made in Boolean operations algorithm:
1. Added possibility to update FaceInfo structure for many faces at once which helps to avoid nested loops.
2. Improve Point-Face classification procedure by caching the FaceExplorer for a face.
2019-05-27 13:52:07 +03:00
emv
3662f79fcd 0030470: Modeling Algorithms - Invalid result of offset operation in mode "Complete" with join type "Intersection"
Added treatment of the inverted edges while removing the inside faces (collapsed ones) - RemoveInsideFaces method:
- Removing the invalid hanging blocks containing the inverted edges.
- Considering the face containing the inverted edges as the invalid one.

Test cases for the issue.
2019-02-21 13:07:57 +03:00
emv
0ba49d318f 0028747: Incorrect result of the section operation after edge refinement
Implementation of the method for simplification of the result of Boolean Operation on the API level.
The method BRepAlgoAPI_BuilderAlgo::SimplifyResult has been added, so the derived classes such as BooleanOpeation and Splitter can also use this method.
The result shape simplification should be called after the operation is done. The simplification is performed by the means of ShapeUpgrade_UnifySameDomain algorithm.

Draw command "bsimplify" has been added to control the simplification options.
Documentation for new functionality and draw commands controlling the options of Boolean operations.
Test cases for the new functionality.

Side-effect change:
The algorithms in Boolean component have been changed to use the BRepTools_History as a History tool.
Now it became possible to disable the collection of shapes modifications during Boolean Operations, which may be useful for performance sake (in draw the option is controlled by *setfillhistory* command).
Draw command "unifysamedom" has been changed to accept the angular tolerance in degrees instead of radians.
2018-12-07 16:19:58 +03:00
emv
0ffd7d3a5b 0030394: Modeling Algorithms - Empty result of offset operation (mode "Complete", join type - "Intersection")
The following changes have been made for improving the offset algorithm:
1. Multi-connexity support - intersection of the faces connected to the edge belonging to more than two faces is now performed.
2. Avoid intersection of the faces connected through internal edge.
3. Filling gaps (holes) in the splits of the created offset faces to increase possibility of creation of the closed volume from these splits.

Test cases for the issue.
2018-12-07 16:19:33 +03:00
emv
d3394d0f19 0030281: Regression to 7.2.0: Modeling Algorithms - Wrong result of CUT operation
Boolean Operations - Force the face with internal edges to be treated by the BuilderFace algorithm. It is needed for the cases when internal edges of the face go from side to side and should really split the face.
Test case for the issue.
2018-12-07 09:40:12 +03:00
emv
e7bacd9416 0029845: UnifySameDomain does not account the accumulated angle when unifying edges
Check that the accumulated angle does not exceed the given angular tolerance while merging the linear edges.
Test case for the issue.
2018-12-07 09:40:11 +03:00
emv
868642aebc 0029692: Add functionality to make the group of touching same-dimensional shapes connected
Implementation of the new class *BOPAlgo_MakeConnected* for making the group of touching same-dimensional shapes connected.
Provide the material association for the first sub-elements of the input shapes.
Provide possibility to make the connected shape periodic.

Draw commands for new algorithm:
* makeconnected - make the input shapes connected or glued, performs material associations;
* cmaterialson - returns the materials located on the requested side of a shape;
* cmakeperiodic - makes the connected shape periodic in requested directions;
* crepeatshape - repeats the periodic connected shape in requested directions requested number of times;
* cperiodictwins - returns all periodic twins for the shape;
* cclearrepetitions - clears all previous repetitions of the periodic shape, keeping the shape periodic.

Documentation & test cases for the new algorithm.
2018-12-07 09:39:31 +03:00
emv
3f96b7411e 0029683: Add functionality to make the TopoDS_Shape periodic in 3D space
Implementation of the new class *BOPAlgo_MakePeriodic* for making the shape periodic in 3D space.
Periodicity of the shape means that the shape can be repeated in any periodic direction any number of times without creation of the new geometry or splits.
The idea of this algorithm is to make the shape look similarly on the opposite sides or on the period bounds of periodic directions.
It does not mean that the opposite sides of the shape will be mirrored. It just means the the opposite sides of the shape should be split by each other and obtain the same geometry on opposite sides.
Such approach will allow repeating the shape, i.e. translating the copy of a shape on the period, without creation of new geometry because there will be no coinciding parts of different dimension.

Draw commands for the new algorithm:
* makeperiodic - makes the shape periodic in required directions;
* repeatshape - repeats the periodic shape in requested periodic direction;
* periodictwins - returns the periodic twins for the shape;
* clearrepetitions - clears all previous repetitions of the periodic shape.

Documentation & test cases for the algorithm.
2018-12-07 09:36:28 +03:00
bugmaster
42da0d5115 Correction of corrupted png file V7_3_0 2018-05-29 13:14:02 +03:00
abv
d25f052208 Raise OCCT version up to 7.3.0 (comment out "beta") 2018-05-25 21:55:01 +03:00
abv
60fddce474 0029669: Crash on opening a document with same Ocaf attributes with different IDs
Added protection against clash of attributes with the same GUID when more than one attribute of the same type but with different GUIDs are stored in the file.
If attribute with default GUID has already been read, then adding next empty attribute of the same type (done at start of its reading) will fail; in such case another attempt is made with Null GUID.
2018-05-25 21:55:00 +03:00
isn
61ace3dc72 0029816: Add possibility to get/set shape presentations for GD&T label through one function
new methods GetGDTPresentations(.) and GetGDTPresentations(.) for Dimension Tool
2018-05-25 21:55:00 +03:00
apn
2e32a64577 0029407: Generating static libraries on macOS
Update "Building with Xcode" documentation
2018-05-25 21:54:59 +03:00
apn
6acbb1c641 0029266: Configuration - CMake install does not copy pdb files in Debug mode due to the changes in 0028287
Define variable "OCCT_INSTALL_BIN_LETTER" only if compiler is some version of Microsoft Visual C.
2018-05-25 21:54:58 +03:00
kgv
fad3eca77f 0029791: Visualization - Wrong result of SelectMgr_RectangularFrustum::IsClipped
SelectMgr_RectangularFrustum::computeClippingRange() fix skipping depth range starting behind the ray.
2018-05-25 21:54:57 +03:00
drazmyslovich
3e782664b8 0029715: Mesh - Estimate the grid size of the acceleration structure by the complexity of the face
The circles acceleration structure sizes are estimated using the required deflection and the complexity of the face.
2018-05-25 21:54:56 +03:00
abv
64e93ce135 0029640: OCAF - add information on replacement of CDM_MessageDriver in upgrade guide.
Information on replacement of CDM_MessageDriver by Message_Messenger is added in the upgrade guide.
This replacement is recorded as rename in upgrade.dat
2018-05-25 21:54:55 +03:00
snn
8c7fab9b4d 0029621: Application Framework - Impossible to attach existing tessellation to XCAFDoc_Note
- XCAFNoteObjects_NoteObject transfer object for note's auxiliary data was added. It contains the following fields:
  text and attachment positions, note plane and tesselated presentation
- GetObject/SetObject methods were added to XCAFDoc_Note attribute. The following sub-labels were added to handle transfer object:
  1 - text position
  2 - note plane
  3 - attachment point
  4 - tesselated presentation
- documentation updated

Off-topic: procedure genproj now gives meaningful error message if new package is added but not listed in UDLIST
2018-05-25 21:54:54 +03:00
kgv
c9ebb2dd0e 0029811: Tests - unstable tests demo\draw\binpersist_* due to usage of the same temporary file name 2018-05-24 16:59:20 +03:00
nds
ab5b3c22e0 0029800: Upgrade Guide - TInspector correction documentation
TInspector documentation is updated
2018-05-24 15:36:30 +03:00
Benjamin Bihler
340549b052 0029775: Modeling Data - BRepAdaptor_CompCurve Parameterization Is Incorrect
Added wire connectivity requirement to class documentation of
BRepAdaptor_CompCurve.
2018-05-24 15:36:28 +03:00
kgv
8f1384072c 0029754: Coding Rules - replace Standard_Integer with Graphic3d_ZLayerId for consistency 2018-05-24 15:36:27 +03:00
ysn
57f84042ff 0029139: Overview contains old screenshots of occt
Numbers and screenshots have been updated in the overview to correspond to V7.3.0.
2018-05-24 15:36:27 +03:00
gka
ea7ffc2802 0029784: Crash at STEP file reading with enabled sub-shapes
In the method STEPCAFControl_Reader::ExpandShell protection for case when entity ""Connected_Face_Set" contains not only "FACE" entities ( for example "VERTEX_POINT" entities) was added.
2018-05-24 15:36:26 +03:00
ysn
f841d372e9 0029790: Upgrade Guide - problematic grammar and formatting
Grammar errors and formatting issues have been fixed.
2018-05-24 15:36:25 +03:00
ysn
14deaf427f 0029755: Proofread changes in the user guides from v7.2 to v7.3
Recent modifications and additions in the user and dev guides have been reviewed (except for upgrade.md and inspector.md).
2018-05-24 15:36:24 +03:00
kgv
3d77e9620e 0029764: Foundation Classes, TColStd_MapIteratorOfPackedMapOfInteger - workaround Visual Studio Linker bug with enabled CLI 2018-05-24 15:36:23 +03:00
kgv
32ca771129 0029768: Visualization, TKOpenGl - structure is entirely clipped by suppressed clipping
OpenGl_Structure::Render(), added missing check for disabled state of the plane.
vclipplane command has been extended with new option -setOverrideGlobal.
2018-05-24 15:36:23 +03:00
msv
9ce99357a4 0029746: Modeling Algoriothms - declare Boolean operation classes in BRepAlgo package as deprecated
The API classes in the package BRepAlgo providing access to old Boolean operations (Fuse, Common, Cut, Section) are marked as deprecated.
Corresponding classes from the package BRepAlgoAPI should be used instead.
2018-05-24 15:36:22 +03:00
emv
8bca7d76a5 0026493: BRepProj_Projection failed to project a wire on a shell
Problem is fixed by the fix for the issue #0028599 (porting of the BRepProj_Projection to modern Boolean Operations algorithm)
Thus, only test case is integrated here.
2018-05-24 15:36:21 +03:00
kgv
8a5905801c 0029724: Visualization - add AIS_InteractiveContext::ClearDetected() undoing MoveTo() dynamic highlighting
Introduced new method AIS_InteractiveContext::ClearDetected() allowing
to reset the list of detected objects and clear dynamically highlighted
entity under mouse cursor after previous AIS_InteractiveContext::MoveTo().

vmoveto command has been extended with new argument -reset.
2018-05-24 15:36:20 +03:00
kgv
be480fe752 0029744: Visualization - SelectMgr_ViewerSelector::PickedPoint() returns wrong 3D point for objects with transformation persistence
SelectMgr_RectangularFrustum::DetectedPoint() now takes into account myScale.
2018-05-24 15:36:18 +03:00
nds
0e4e721c6b 0029779: Visualization, SelectMgr_SelectableObject - sensitivity change for object not activated in given mode leads to crash 2018-05-24 15:36:17 +03:00
nds
26b004e9e8 0029743: Samples - Inspector tool - crash by selecting TNaming_UsedShapes tree item
- TNaming_UsedShapes is corrected to do not call methods of empty TopoDS_Shape
- TNaming_NamedShape is corrected to have not NULL TNaming_RefShape even if TopoDS_Shape is NULL(TNaming_Builder::Delete).
- DFBrowserPane presentation tree item for this is corrected in the same way and obsolete methods of processing SortedReferences are removed.
2018-05-24 15:36:16 +03:00
nds
b2300241d1 0029749: Samples - Inspector tool - remove "modified" column in TNaming_NamedShape presentation 2018-05-24 15:36:16 +03:00
nds
042e09aa36 0029748: Samples - Inspector tool - use recently opened files in TInspectorEXE
- recently files using in open file dialog
- correction of TInspectorEXE title to show opened file path by Start
2018-05-23 19:09:35 +03:00
nds
d0fbc7e5dd 0029781: Samples - Inspector tool - history tree model is not set into external callback in VInspector
- AIS_InteractiveContex and VInspector_ViewModelHistory are set into VInspector_CallBack
- minor correction of displaySelectedPresentations () to Hide/Show(by popup menu) any AIS_InteractiveObject, not only AIS_Shape (e.g. AIS_Trihedron)
2018-05-23 19:09:34 +03:00
nds
ed667b9069 0029747: Samples - Inspector tool - start DFBrowser inside FuncDemo qt sample
new Model->DFBrowser action to start Inspector tool with active DFBrowser plugin filled by the sample OCAF application.
To update content of the DFBrowser, use <F5> shortcut.
2018-05-23 07:00:35 +03:00
nds
2e93433ee5 0029735: Draw Harness - command to set 2D mode for viewer in ViewerTest package
vinit command has been extended with new option -2d_mode.
Added new command v2dmode to switch On/Off the mode.
2018-05-23 06:59:53 +03:00
nds
0c80bdbf5e 0029741: Samples - Inspector tool - wide icon size in table of TNamingNamedShape attribute in DFBrowser plugin 2018-05-23 06:58:41 +03:00
nds
72e4db54e7 0029733: TInspector can't open several cbf files
The issue is not reproduced anymore. The integration contains DRAW test for described functionality.
2018-05-23 06:57:54 +03:00
nds
b4dfd43648 0029739: Draw Harness - vdonly does not hide displayed objects 2018-05-23 06:57:17 +03:00
ika
fbcef69b1a 0029737: Data Exchange - Revert optimization in XCAF for format compability
Revert changes from 0029338, which were affected on order of GDT attribute sublabels.
2018-05-23 06:55:15 +03:00
emv
e50ebf1f0f 0029701: BRepTools::Update(Face) unexpectedly updates UV points of pcurve
The method *BRepTools::UpdateFaceUVPoints* has been modified to resets the UV points of the edge to the bounding points of the parametric curve of the edge on the face.

Test cases for the issue.

Adjust test cases heal split_angle_advanced ZC3, ZE6, ZE9 for current behavior as they show less faulty shapes now.
Adjust test case bugs modalg_6 bug21246 as it works correctly now.
2018-05-23 06:39:49 +03:00
szy
94443b4811 0029730: OCAF User's Guide correction for case of attributes with User defined GUID
Added description of attributes usage with User defined GUID
2018-05-23 06:15:11 +03:00
ifv
4563cf3e6c 0029655: [Regression to 6.9.1] Distance between cylinder and straight line
Trimming line by corner points of surface bounding box is added to reduce rang of line
Test case added
2018-05-23 06:02:39 +03:00
emv
80d55adf7c 0029698: Regression vs 7.2.0: Common operation raises FLT_INVALID_OPERATION exception
When checking if the split edge is oriented as the original one (BOPTools_AlgoTools::IsSplitToReverse()) the tangent vectors should be computed for both edges at the same point. This point is taken on the split edge and projected on the original edge.
The fix is intended to ensuring that the reference point will be taken inside the valid range of the split edge (i.e. not covered by the tolerance spheres of its bounding vertices) and the projection of this point on the original edge will be successful. Moreover, several sampling points are now taken on the split edge and processed until first valid point is found.

If requested (by a not null pointer) all *BOPTools_AlgoTools::IsSplitToReverse()* methods are now return the error status of the check. Before using the returned flag, the calling program should check this error status. For successful check the error status should be equal to zero.

New warning *BOPAlgo_AlertUnableToOrientTheShape* is now returned in the algorithms in Boolean component in case the check for correct shape orientation failed.

Test case for the issue.
2018-05-23 05:44:12 +03:00