0029165: Visualization - misuse of enumeration in Prs3d_DatumAspect
Methods SetDrawFirstAndSecondAxis() and SetDrawThirdAxis() of the class Prs3d_DatumAspect are corrected to ensure that myAxis may be set only to valid values of the enum, and avoid unsafe operations.
0029151: GCC 7.1 warnings "this statement may fall through" [-Wimplicit-fallthrough=]
New macro Standard_FALLTHROUGH is defined for use in a switch statement immediately before a case label, if code associated with the previous case label may fall through to that
next label (i.e. does not end with "break" or "return" etc.).
This macro indicates that the fall through is intentional and should not be diagnosed by a compiler that warns on fallthrough.
The macro is inserted in places that currently generate such warning message and where fallthrough is intentional.
Doxygen comments are provided for this and other macros in Standard_Macro.hxx.
anv [Thu, 29 Dec 2016 08:48:16 +0000 (11:48 +0300)]
0028188: Improving layer color storage mechanism for DXF Import/Export
Attribute ColorByLayer was added for shapes that should be colored by the color of their layer or, if it's absent, by the parent component's layer color.
Fixing inconsistency of iterating through the map of Styles
Improving ColorByLayer mechanism
Fix for Map/IndexedMad differences.
Renaming according to convention of naming collection typedefs
0028987: Visualization, SelectMgr_SelectableObject - move out iterator from object
Added method SelectMgr_SelectableObject::Selections() and depreacted methods
Init(), More(), Next() and CurrentSelection().
Added method SelectMgr_Selection::Entities() and depreacted methods
Init(), More(), Next() and Sensitivity().
SelectMgr_SelectableObject::myAssemblyOwner has been moved to AIS_MultipleConnectedInteractive.
SelectMgr_SelectableObject::Selection() now returns NULL handle for not found selection.
SelectMgr_SelectableObject::HasSelection() is no more virtual and just retuns !Selection().IsNull().
SelectMgr_SelectionManager::mySelectors map is now declared using proper
key type Handle(SelectMgr_ViewerSelector) instead of Handle(Standard_Transient).
0029073: Regression: General Cut produces invalid shape
Boolean Operations:
1. Face/Face intersection post treatment - Unify vertices put on the section curves, which were rejected as existing ones, with the vertices of edges by which these section curves have been rejected.
2. Extend Warnings Reporting system of Boolean operations with the new warnings:
- BOPAlgo_AlertIntersectionOfPairOfShapesFailed - to be added when the intersection of pair of sub-shapes of the arguments has failed;
- BOPAlgo_AlertBuildingPCurveFailed - to be added when the building of the 2D curve of the edge on face has failed;
- BOPAlgo_AlertAcquiredSelfIntersection - to be added when the positioning and tolerances of the arguments leads to creation of self-interfered shapes.
These new warnings allow completing the operation even if intersection of some of the sub-shapes or building of some of the PCurves has failed. Moreover, they allow getting the pairs of sub-shapes on which the intersection/projection has failed, providing the user ability to analyze the intersection results.
Note that if some of these warnings appear, the result of the operation should be carefully analyzed for validity.
3. Print messages for the Warnings/Errors met during checking of the shape on self-intersection ("bopcheck" command).
0027869: Visualization - AIS_ConnectedInteractive does not support exact HLR mode
AIS_ConnectedInteractive now shares HLR computation code with AIS_Shape.
BRepTools_WireExplorer::Orientation() now returns TopAbs_FORWARD
instead of throwing exception in case of infinite Edge without vertices.
StdSelect_BRepSelectionTool::GetSensitiveForFace() now creates Select3D_SensitiveCurve
from 2 points in case of infinite Edge instead of Select3D_SensitiveFace.
0029122: Visualization - improve Font_BRepFont to handle one-line-fonts
Font_SystemFont - added a new property SingleStrokeFont().
Font_BRepFont::renderGlyph() has been extended to not close contours
when flag SingleStrokeFont() has been set.
0028150: Exception is raised during Boolean operation
ProjLib_ComputeApproxOnPolarSurface::BuildInitialCurve2d - Using the correct number of points (computed in GCPnts_QuasiUniformAbscissa class) for creation of the initial curve.
oan [Thu, 14 Sep 2017 08:39:36 +0000 (11:39 +0300)]
0028824: Possibility to build OCCT 7.1.0 and above using Visual Studio 2008
Possibility to build OCCT using Visual Studio 2008 (VC9) is restored.
For that:
- template functions and classes from namespace std or tr1 (for VC9) are imported to namespace opencascade which is then used instead of std in relevant places
- templates not provided by compiler (VC9) but required for OCCT are defined in this namespace (in Standard_Handle.hxx)
- methods implementing move semantics are excluded for VC9 compiler (which does not support && syntax)
- support of vc9 compiler is restored in build procedures and environment scripts
- check of type of the current class in macros DEFINE_STANDARD_RTTI* is refactored
VS 2008 is restored in the list of supported platforms on Overview / System Requirements.
0029038: Modeling - IntTools_EdgeEdge::FindParameters() hangs on bad curve
Make possibility to dramatically increase the step during iteration on the curve when the global resolution of the curve is too small.
Correct the functions FindParameters, FindBestSolution, FindDistPC.
The change caused improvement of the test case "boolean bfuse_complex E4", so the bug #27697 has been fixed.
The change caused dramatic improvement of the performance of the test "bugs modalg_7 bug27160", and the bug #29080 has been fixed.
0029099: Extra shapes in result of General Cut (box by ellipsoid)
Boolean Operations - when looking for the splitting parameters on the degenerated edges try not only the intersection of the 2D curve of degenerated edge with 2D curves of other edges bounded by the vertex of degenerated edge, but also the projection of the end points of the edges corresponding to the vertex on the 2d curve of degenerated edge.
0029074: Visualization, TKOpenGl - support Geometry Shader definition
Graphic3d_TypeOfShaderObject enumeration has been extended by Geometry shader object type.
OpenGl_ShaderProgram::Initialize() processes new shader object types when supported by OpenGL version.
Declarations.glsl has been fixed so that occFragColor is defined only for
Fragment Shader object only (by handling new FRAGMENT_SHADER macros).
Improved documentation of Graphic3d_ArrayOfPrimitives class.
vshader Draw Harness command has been extended to support definition
of Shader Object types other than Vertex and Fragment shader.
0029084: Visualization, AIS_Manipulator - broken transformation is applied at Rotation angles near to Pi
AIS_Manipulator::ObjectTransformation() - fixed using of manipulator axes
with temporarily applied transformation (when BehaviorOnTransform::FollowRotation is TRUE).
Start axes orientation (at the beginning of Rotation) is now used instead.
Benjamin Bihler [Fri, 18 Aug 2017 07:40:19 +0000 (10:40 +0300)]
0029014: Managing Binary Format Version Is Not Possible for Own TDF_Attributes
CDM_Application has been extended to provide application name and version.
Application name and version is stored by BinLDrivers_DocumentStorageDriver.
BinLDrivers_DocumentStorageDriver propagates application name and version
by passing it to BinMDataStd.
Made BinObjMgt_RRelocationTable store a handle to the header data of the file
begin read in to make it accessible by binary attribute drivers.
Undone storing application name and version as static fields in BinMDataStd
which is bad style and not thread-safe.
Moved method implementations to .cxx files.
Clearing a BinObjMgt_RRelocationTable now nullifies the reference to the
file header data and BinLDrivers_DocumentRetrievalDriver therefore sets
the reference after the relocation table has been cleared before reading
in the document subtree.
Command testfile is improved to be more usable by developers for checking data files used by the new test cases before their integration to the test data base:
1. Do not check and do not report problems found in the repo when checking new files -- this check is done only when argument is "-check"
2. Can check a file located in a directory listed in CSF_TestDataPath as new one without it being considered as already in the data base
3. For new BREP files, reports warning if the file contains triangulation, suggesting that it can be removed to minimize the size
4. Can identify the same (by content) file in the data base for the new files in DOS encoding (less than 1 MB)
5. Can detect duplicates among the input files
6. Outputs result in more clear form
7. When loading STL files, uses option "triangulation" to be efficient
Automated Testing System guide is updated to describe command testfile.
nds [Mon, 28 Aug 2017 09:29:29 +0000 (12:29 +0300)]
0029018: Documentation - Provide user guide for Qt browser
Documentation is added in a new "Inspector" page of "User Guides".
Inspector plugins has some improvements by the documentation needs.
New DRAW scripts are implemented for 'tinspector' command.
abv [Wed, 30 Aug 2017 15:54:07 +0000 (18:54 +0300)]
Update of title page of documentation (overview)
- Copyright year is updated
- Links to 3rd-party libraries and their licenses are actualized
- Description and snapshot of iOS sample added
- Visual Studio 2017 is mentioned among supported compilers
abv [Fri, 25 Aug 2017 11:10:02 +0000 (14:10 +0300)]
0028968: Incorrect offset for the faces with singularities
Simple offset algorithm (BRepOffset_MakeSimpleOffset) is improved to handle the case when bspline surface has imprecise singularity at one of sides (when side is degenerated but not exactly to one point).
In such case, the algorithm tries to collapse all poles of singular side of the surface to the same point; this allows avoiding flapping of normal due to small fluctuations of surface.
If face being offset contains degenerated edges, then check for singularity is done using position and tolerance of corresponding vertices.
In addition, each side is checked with some user-defined tolerance (by default Precision::Confusion()); this helps to process cases when no edge is located at that side or if such edge is not encoded as degenerated.
New parameter Tolerance is introduced for that in BRepOffset_MakeSimpleOffset class.
Tests added:
bugs modelg_7 bug28968 - on isolated faces as reported in the issue, mostly for visual check (absence of loops)
offset simple F01-05 - on original shells, checking tolerances of resulting shell
snn [Fri, 10 Feb 2017 12:48:36 +0000 (15:48 +0300)]
0028985: XCAF data structures for generic text annotations linked to GD&T annotations and saved views
1. A tool to annotate items in the hierarchical product structure was added. The tool is located under
fixed label 0:1:9. It operates two basic entities: notes and annotations located under 0:1:9:1 and 0:1:9:2
hives correspondingly. A note is an attribute derived from base class XCAFDoc_Note that is attached to a separate
label under the notes hive. An annotated item is represented by XCAFDoc_AssemblyItemRef attribute
attached to a separate label under the annotated items hive. Notes are linked to annotated items by means of
XCAFDoc_GraphNode attribute, where notes play parent roles and annotated items - child roles.
2. XCAFDoc_AssemblyItemRef defines a weak reference to a label with optional attribute GUID or sub-shape index.
3. A capability to store note/annotation labels in XCAFDoc_ViewTool was added.
4. XDE User guide was updated
abv [Fri, 18 Aug 2017 12:05:34 +0000 (15:05 +0300)]
0028478: Scope Names Are Swallowed in Message_ProgressSentry Constructors
Tests are added to control output and performance of progress indicator (bugs fclasses bug28478 and perf fclasses progress, respectively).
Implementation of class Draw_ProgressIndicator is improved to update indicator basing on achieved total progress (1% by default) instead of elapsed time since last update.
Method OSD_Chronometer::Restart() is fixed to actually reset the counter.
DRAW command readstl is improved to show progress indicator if configured (by command XProgress).
Description of class Message_ProgressIndicator is updated; code example is added in description of Message_ProgressSentry.
abv [Tue, 22 Aug 2017 12:05:00 +0000 (15:05 +0300)]
0028131: BRepOffset_MakeOffset can't create offset with a face which created by filling 3 bsplinecurve
Handling of degenerated points (with all derivatives zero) in GeomEvaluator_OffsetSurface is improved by iterative movement towards middle of the surface (extension of one-step approach implemented earlier in #28112).
kgv [Fri, 25 Aug 2017 12:49:40 +0000 (15:49 +0300)]
0029051: Visualization, TKOpenGl - wrong color of transparent dynamic highlight with OIT tuned ON
OpenGl_PrimitiveArray::Render() - removed obsolete code, which become redundant (and broken)
after moving rendering of transparent objects into OpenGl_LayerList::renderTransparent().
abv [Thu, 24 Aug 2017 12:04:14 +0000 (15:04 +0300)]
0029047: Upgrade guide -- some changes in OCCT 7.2.0 are not described
Upgrade Guide is updated to describe:
- Removal of typedefs to double in Quantity and V3d
- Removal of support of orientation in classes BRepTools_ReShape and ShapeBuild_ReShape
- Removal of AIS methods taking/returning Quantity_NameOfColor instead of Quantity_Color
- Removal of active texture state from OpenGl_Workspace
apv [Thu, 24 Aug 2017 09:44:03 +0000 (12:44 +0300)]
Update of tests database
Test for 0027049: Make non-destructive mode be defined by default in Boolean operations
Test for 0027052: Test boolean gdml_private ZI5 failure
Test for 0027069: IGES parser does not recognize comments in Parameters section
Test for 0027090: Point is classified IN solid but actually it is OUT
Test for 0027170: Reading STEP files produces invalid shapes
Test for 0027186: IGES - reconsider creation of Undefined entity in case of failure
Test for 0027214: Duplicate of test cases
Test for 0027224: Incorrect result of boolean operation in boolean bcut_complex Q1 test case
Test for 0027227: Intersection curve is not continued to the surface boundary
Test for 0027246: ShapeFix_Shape destroys shape
Test for 0027251: Shape becomes invalid when exported to STEP and imported back
Test for 0027316: exception when XAddShape
Test for 0027378: BRepLib_MakeFace produces invalid faces on periodic surfaces in case the given parametrization does not match the default
Test for 0027390: Box and Ellipsoid shape boolean cut and common introduce invalid result.
Test for 0028119: Blend fails on fused identical but shifted tori
Test for 0028144: Step reader - regression in comparison of version OCCT654
Test for 0028151: Sewing faces results in a shell with very big tolerance
Test for 0027160: Weird results of the pipe algorithm
Test for 0027623: Cannot find intersection line between two trimmed planar surfaces
Test for 0027683: Inaccurate result by bopcut
Test for 0027687: Section between shells of hull and deck is not closed
Test for 0027711: Blend-on-blend corrupts the shape
Test for 0027784: Thickness fails on cylinder with draft
Test for 0027908: Exception during offset computation
Test for 0027909: Exception during offset computation
Test for 0027910: Sharing between edges was lost after offset operation
Test for 0027911: Exception during offset computation
Test for 0027912: Exception during offset computation
Test for 0027928: BOP common produces empty compound
Test for 0027948: Cut produces unexcpected shape
Test for 0027950: Result of intersection algorithm depends too much on surface trim bounds
Test for 0027701: Crash when export empty solid to STEP
Test for 0027722: STEP error for Ellipse revol shape
abv [Fri, 18 Aug 2017 08:00:24 +0000 (11:00 +0300)]
0029015: Testdiff - possibility to visualize image differences by toggling
Command testdiff is improved to make HTML elements in the report showing diff images interactive: when user clicks on a diff image by mouse, it triggers between the A and B images.
The diff image is shown back when the mouse cursor leaves the image.
abv [Mon, 21 Aug 2017 10:19:46 +0000 (13:19 +0300)]
0028964: Draw - need to have command to apply ShapeFix_FixSmallFace tool
DRAW command fixsmallfaces is added to fix (remove) small faces in the shape.
Command OCC22586 is removed (replaced by fixsmallfaces).
Test bug28112_2 using that command is added for the two last shapes in issue #28112; test bug28112 is renamed to bug28112_1.
Test bug22586 is changed to use the new command.
'BUILD_Inspector' CMake option switches ON/OFF Inspector in compilation procedure (add additional dependency to Qt third party product)
'inspector.bat' starts sample to demonstrate possibilities of this tool.
Replacing TOOLS to INSPECTOR key for 'pload' command in DRAW cases due to this change in DrawPlugin.
Command diffimage now accepts the following syntax:
diffimage imageFile1 imageFile2 [diffImageFile]
[-toleranceOfColor {0..1}=0] [-blackWhite {on|off}=off] [-borderFilter {on|off}=off]
[-display viewName prsName1 prsName2 prsNameDiff] [-exitOnClose]
Command vinit now accepts the following syntax:
vinit [-name viewName] [-left leftPx] [-top topPx] [-width widthPx] [-height heightPx]
[-exitOnClose] [-display displayName]
Compatibility with old syntax is also preserved.
diffimage now can display compared images in 3D viewer.
The new option -exitOnClose can be used to exit application when closing the 3D View.
apv [Thu, 17 Aug 2017 07:39:08 +0000 (10:39 +0300)]
Update of tests database
Test for 0025930: thickness of spherical cap is invalid
Test for 0025939: SIGSEGV in MakeThickSolid
Test for 0025940: MakeThickSolid creates C0 continuous edges
Test for 0026604: GeomFill_Pipe doesn't fit given bounds
Test for 0026655: ChFi3d_Builder algorithm fails to build fillets if some input edges connect with seam edges
Test for 0026697: BRepFeat_MakePrism returns empty compound
Test for 0026716: Mesher cannot create a mesh of brep model due to ShapeFix_Wire::FixShifted()
Test for 0026735: Adjacent perpendicular edges are detected as overlapped by DRAW command checkoverlap.
Test for 0026793: General Fuse algorithm produces incorrect result
Test for 0026795: Unable to perform General Fuse operation on the attached faces
Test for 0026842: bopsection result does not contain any edges.
Test for 0026882: Edge/Edge intersection algorithm produces incorrect result
Test for 0026883: Wrong result of Boolean Operation
Test for 0026889: Very poor mesh result from shape
Test for 0026928: Edges are meshed too coarsly
Test for 0026933: Section works unstably due to incorrect work of the method IsExistingPaveBlock
Test for 0026943: Wrong projection of helix on cylinder by ShapeConstruct_ProjectCurveOnSurface
Test for 0026957: Unify same domain operation is slow for multiple shells
Test for 0026978: Interactive selection is insensitive to swept shell
Test for 0027004: ShapeUpgrade_UnifySameDomain produces invalid result
Test for 0026280: Mechanism 'ShapeFix' is unable to heal a shape
Test for 0026282: Mechanism 'ShapeFix' has errors revealed by wire tool 'FixTails'
Test for 0026291: BRepMesh produces mesh with gap on the attached shape
Test for 0026382: BRepMesh produces internal nodes outside the face interior
Test for 0027453: Wrongly meshed surface
Test for 0027524: The command checkshape does not find the maximal deviation between curves representations
Test for 0026225: Wrong result of chamfer in case of coinciding bound of chamfer's surface with bound of a face
Test for 0026295: Sweep fails with BRepFill_ContactOnBorder
Test for 0026374: GeomFill_Profiler fails to unify BSplines if one has knot distance less than PConf
Test for 0026558: Failing to build isoline for offset surface
Test for 0026563: Boolean cut operation in new API multi-tool mode performs fuse instead of cut
Test for 0026568: Exception when creating pipe
Test for 0027419: Incorrect result of Edge/Face intersection
Test for 0027469: Regression vs 6.9.1: Wrong result of Edge/Face intersection
Test for 0027471: Wrong result of pipe
Test for 0027472: Wrong result of cut
Test for 0027614: Sewing returns result with too high tolerance
Test for 0026154: Visualization - v3d viewer grid disappears due to automatic z-fit
Test for 0026174: Loss of color after the second write of file (iges).
nds [Fri, 26 May 2017 14:19:51 +0000 (17:19 +0300)]
0028631: Modeling Algorithms - Crash while building a 2D circle tangent to another circle and passing through its center
Code correction includes also:
- extending GccEnt to have GccEnt_Position conversion to string value and backward;
- new GeometryTest_DrawableQualifiedCurve2d DRAW object to wrap GccEnt_QualifiedCirc/GccEnt_QualifiedLin.
It is a DrawTrSurf_Curve2d with GccEnt_Position visualized in orange color.
- qcircle/qline DRAW command to create instance of GeometryTest_DrawableQualifiedCurve2d
- circ2d3Tan DRAW command to wrap GccAna_Circ2d3Tan taking qcircle/qline/point arguments.
abv [Thu, 17 Aug 2017 08:50:31 +0000 (11:50 +0300)]
0029009: Configuration - provide a way to get visual dif of SVG images
New helper script svgdiff.bat is added in adm folder.
It can be used for enabling visual diff for SVG images in TortouseGit; see Git guide for details.
0028959: Configuration, genproj - provide warning on update of scripts in root folder (msvc.bat etc.)
When updating files msvc.bat and draw.bat/sh in the root folder by copying template from adm/templates, procedure genproj will give a warning (unless the files are already the same); if the target file is newer, its copy is saved with additional extension .bak.
kgv [Wed, 16 Aug 2017 17:08:04 +0000 (20:08 +0300)]
0029007: Visualization, AIS_InteractiveContext - the method for accessing Detected owners iterator is missing
Added new method AIS_InteractiveContext::DetectedCurrentOwner().
AIS_InteractiveContext header has been restructured (methods moved into groups)
and description has been cleaned up.