DiscussionsIssue archiveOCCT:Data Exchange

Archived issue #0030692

Data Exchange - introduce base framework RWMesh for importing mesh data formats into XDE document

Open CASCADEOCCT:Data Exchangeclosed38 public notes

Search issues

Description

This issue is intended for creation of a new framework for importing mesh data format into XDE document - e.g. providing common auxiliary tools.

Steps to reproduce

N/A

Public activity

38 archived notes

Participants are labeled by their role within this record.

01Commenter 3
Branch [archived branch] has been created by Author.

[revision removed]


No new revisions were added by this update.
02Commenter 3
Branch [archived branch] has been updated forcibly by Author.

[revision removed]
03Commenter 3
1. On OSD_Path.hxx:

- line 234: "sever" instead of "server"

//! \\sever\share\file
 
- method IsUncPath() and possibly others should take into account possibility of using forward slashes in paths on Windows

- method IsRemoteProtocolPath() could be implemented as just
  { return *thePath != ':' && (strstr (thePath, "://") != 0); }

- it is desirable to have tests for the new methods

2. On enum RWMesh_CoordinateSystem:

- how you decided that OCCT coordinate system is "Y forward"? Why not using gp_Axis class as generic means to define axes? Let's discuss that

- RWMesh_CoordinateSystem_NB is defined inconsistently, implicitly assuming that starting value (LOWER) is zero. It should be
 RWMesh_CoordinateSystem_NB = RWMesh_CoordinateSystem_UPPER - RWMesh_CoordinateSystem_LOWER + 1
04Commenter 3
Branch [archived branch] has been updated by Author.

[revision removed]


Detailed log of new commits:

Author: Author
Date: Thu May 9 13:41:06 2019 +0300

    # 0030692 - remarks for OSD_Path

Author: Author
Date: Thu May 9 13:33:33 2019 +0300

    # 0030692 Move RWMesh_DocumentExplorer -> XCAFPrs_DocumentExplorer

05Commenter 3
Branch [archived branch] has been created by Author.

[revision removed]


Detailed log of new commits:

Author: Author
Date: Fri May 3 17:50:28 2019 +0300

    0030692: Data Exchange - introduce base framework RWMesh for importing mesh data formats into XDE document
    
    RWMesh_CafReader - added new interface class for common workflow for reading mesh data files into XDE document.
    
    OSD_Path - added auxiliary methods splitting path into folder+file pair
    and checking relative/absolute path semantically:
    OSD_Path::FolderAndFileFromPath(), ::IsRelativePath(), ::IsAbsolutePath().
06Author
> 1. On OSD_Path.hxx
Remarks applied.
07Commenter 3
Branch [archived branch] has been updated by Author.

[revision removed]


Detailed log of new commits:

Author: Author
Date: Fri May 10 16:47:14 2019 +0300

    # 0030692 - revise Coordinate System converter - use gp_Ax3

Author: Author
Date: Fri May 10 11:33:29 2019 +0300

    # 0030692 - revise coordinate system convertor
    
    V3d_TypeOfOrientation enumeration has been extended with aliases
    (like front/left) for Z-up and Y-up conentions.
    V3d_View::SetProj() now accepts argument for asking Y-up instead of Z-up.
    
    Added command vviewproj defining standard camera direction.
    Commands vaxo, vleft, vright, vtop, vbottom, vfront, vbottom now redirect to vviewproj.

Author: Author
Date: Fri May 10 09:23:02 2019 +0300

    # 0030692 - add SingleShape() method

08Commenter 3
Branch [archived branch] has been created by Author.

[revision removed]


No new revisions were added by this update.
09Author
> 2. On enum RWMesh_CoordinateSystem:
Coordinate system converter has been revised following remarks.
10Commenter 3
Branch [archived branch] has been updated forcibly by Author.

[revision removed]
11Commenter 3
Branch [archived branch] has been updated forcibly by Author.

[revision removed]
12Commenter 12
In commit message, there is mistake in the word 'conentions'.

src/V3d/V3d_TypeOfOrientation.hxx
- 22: misprint, must be '+X'

src/XCAFPrs/XCAFPrs_DocumentIdIterator.hxx
- 60: 'separator' instead of 'newline'

src/XCAFPrs/XCAFPrs_DocumentExplorer.hxx
- 34: misprint 'lead'

src/XCAFPrs/XCAFPrs_DocumentExplorer.cxx
- 376: redundant code
- 366,417: inverse condition?

RWMesh_CafReader.hxx
- 36: ill formed sentence; is 'see' extra word?
- 95: it is unclear "does is".
- 117: Why is not Standard_CString used for file name, like it is in all DE readers?

RWMesh_CoordinateSystem.hxx
- 19: wrap too long line

RWMesh_CoordinateSystemConverter.cxx
- 31: myIsEmpty must be true.

RWMesh_CoordinateSystemConverter.hxx
- 43-44: Considering all documentation comments, I would use the following:
      case RWMesh_CoordinateSystem_posYfwd_posZup: return gp_Ax3 (gp::Origin(),  gp::DZ(), gp::DX());
      case RWMesh_CoordinateSystem_negZfwd_posYup: return gp_Ax3 (gp::Origin(), gp::DY(), gp::DX());


RWMesh_CafReader.cxx
- 90,345: wrap too long line
- 106-121: why not calling SingleShape()?
- 138: why we continue if performMesh is not done?

I think RWMesh_Texture class should be moved into Image package.

I think RWMesh_Base64Decoder class should be moved to some package of TKernel, e.g. OSD or FSD.

I think RWMesh_ReadBuffer class is a general one and worth to be put in the package OSD.
13Commenter 3
Branch [archived branch] has been updated forcibly by Author.

[revision removed]
14Commenter 3
Branch [archived branch] has been created by Author.

[revision removed]


Detailed log of new commits:

Author: Author
Date: Fri May 3 17:50:28 2019 +0300

    0030692: Data Exchange - introduce base framework RWMesh for importing mesh data formats into XDE document
    
    RWMesh_CafReader - added new interface class for common workflow for reading mesh data files into XDE document.
    
    OSD_Path - added auxiliary methods splitting path into folder+file pair
    and checking relative/absolute path semantically:
    OSD_Path::FolderAndFileFromPath(), ::IsRelativePath(), ::IsAbsolutePath().
    
    V3d_TypeOfOrientation enumeration has been extended with aliases
    (like front/left) for Z-up and Y-up conventions.
    V3d_View::SetProj() now accepts argument for asking Y-up instead of Z-up.
    
    Added command vviewproj defining standard camera direction.
    Commands vaxo, vleft, vright, vtop, vbottom, vfront, vbottom now redirect to vviewproj.
    
    TCollection_AsciiString::SubString() now uses Standard_OutOfRange_Always_Raise_if() to suppress GCC warning.
15Author
- 117: Why is not Standard_CString used for file name, like it is in all DE readers?
"const char*" is clumsy and it would be better avoiding it, since users asks questions like "why are you using const char* and not TCollection_ExtendedString?".
TCollection_AsciiString is implicitly and correctly created from passed "const char*", while having TCollection_AsciiString in a first place requires passing clumsy ".ToCString()".

> I think RWMesh_Base64Decoder class should be moved
> to some package of TKernel, e.g. OSD or FSD.
Well RWMesh_Base64Decoder has nothing Operating System Dependent...
Moved to FSD, although this package does not look like a good place.

> I think RWMesh_ReadBuffer class is a general one
> and worth to be put in the package OSD.
Moved to Standard close to similar helper Standard_ArrayStreamBuffer.
16Commenter 3
Branch [archived branch] has been updated forcibly by Author.

[revision removed]
17Author
Remarks have been applied.
18Commenter 18
How the caller of RWMesh_CafReader will know that the model has been read only partially?
19Author
> How the caller of RWMesh_CafReader will know that the model has been read only partially?
The failure reason will be reported through messenger with status Message_Fail.
Currently this is expected to be happen only in case when user specifies memory limits constrains.

Probably we can also add extra status flag as property of RWMesh_CafReader.

20Commenter 20
I agree to add status flag. Please implement.
21Commenter 3
Branch [archived branch] has been updated by Author.

[revision removed]


Detailed log of new commits:

Author: Author
Date: Tue Jun 4 12:20:27 2019 +0300

    # 0030692 extra status for partial read

22Commenter 3
Branch [archived branch] has been created by Author.

[revision removed]


Detailed log of new commits:

Author: Author
Date: Fri May 3 17:50:28 2019 +0300

    0030692: Data Exchange - introduce base framework RWMesh for importing mesh data formats into XDE document
    
    RWMesh_CafReader - added new interface class for common workflow for reading mesh data files into XDE document.
    
    OSD_Path - added auxiliary methods splitting path into folder+file pair
    and checking relative/absolute path semantically:
    OSD_Path::FolderAndFileFromPath(), ::IsRelativePath(), ::IsAbsolutePath().
    
    V3d_TypeOfOrientation enumeration has been extended with aliases
    (like front/left) for Z-up and Y-up conventions.
    V3d_View::SetProj() now accepts argument for asking Y-up instead of Z-up.
    
    Added command vviewproj defining standard camera direction.
    Commands vaxo, vleft, vright, vtop, vbottom, vfront, vbottom now redirect to vviewproj.
    
    TCollection_AsciiString::SubString() now uses Standard_OutOfRange_Always_Raise_if() to suppress GCC warning.
23Author
> I agree to add status flag. Please implement.
Status has been added.
24Commenter 24
Reviewed.
25Commenter 3
Branch [archived branch] has been updated forcibly by Author.

[revision removed]
26Author
Branch [archived branch] has been updated to eliminate trivial compiler warning.
27Commenter 1
Results of compilation on jenkins-test-08

Errors:
http://jenkins-test-08.nnov.opencascade.com/view/WEEK-23-1_WEEK-23/view/OCCT%20compile/job/WEEK-23-1_WEEK-23-OCCT-CentOS64-64-opt-compile/1/parsed_console/
CentOS64-64-opt
gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-3)

 from /dn54/builds/WEEK-23-1_WEEK-23/CentOS64-64-opt/OCCT/src/FSD/FSD_Base64Decoder.cxx:18:
/dn54/builds/WEEK-23-1_WEEK-23/CentOS64-64-opt/OCCT/src/TCollection/TCollection_AsciiString.lxx: In member function ‘TCollection_AsciiString TCollection_AsciiString::SubString(Standard_Integer, Standard_Integer) const’:
/dn54/builds/WEEK-23-1_WEEK-23/CentOS64-64-opt/OCCT/src/TCollection/TCollection_AsciiString.lxx:118: error: #pragma GCC diagnostic not allowed inside functions
/dn54/builds/WEEK-23-1_WEEK-23/CentOS64-64-opt/OCCT/src/TCollection/TCollection_AsciiString.lxx:118: error: #pragma GCC diagnostic not allowed inside functions
/dn54/builds/WEEK-23-1_WEEK-23/CentOS64-64-opt/OCCT/src/TCollection/TCollection_AsciiString.lxx:118: error: #pragma GCC diagnostic not allowed inside functions
make[2]: *** [src/TKernel/CMakeFiles/TKernel.dir/__/FSD/FSD_Base64Decoder.cxx.o] Error 1
make[1]: *** [src/TKernel/CMakeFiles/TKernel.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
28Commenter 3
Branch [archived branch] has been updated by Author.

[revision removed]


Detailed log of new commits:

Author: Author
Date: Wed Jun 5 12:23:50 2019 +0300

    Eliminated gcc 4.4 compilation errors within Standard_OutOfRange_Raise_if,Standard_RangeError_Raise_if.

29Author
> CentOS64-64-opt
> gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-3)
These errors are not introduced by this patch (only for Release builds with No_Exception defined), but by #0030344 on old GCC.
The fix has been pushed to branch - please check building.
30Commenter 1
Results of compilation on jenkins-test-08

Warnings:

http://jenkins-test-08.nnov.opencascade.com/view/WEEK-23-1_WEEK-23/view/OCCT%20compile/

http://jenkins-test-08.nnov.opencascade.com/view/management/job/warnings_compare/Compare_20Warnings_20Report/

TOTAL OF NEW WARNINGS : 55

TOTAL OF FIXED WARNINGS : 0

All windows platforms:
 
23>c:\builds\WEEK-23-1_WEEK-23\Windows-32-VC10-opt\OCCT\src\Image\Image_Texture.cxx(276) : warning C4244: '=' : conversion from 'std::streamoff' to 'Standard_Size', possible loss of data

43>C:/builds/WEEK-23-1_WEEK-23/Windows-32-VC10-opt/OCCT/src/XCAFPrs/XCAFPrs_DocumentIdIterator.hxx(48) : warning C4512: 'XCAFPrs_DocumentIdIterator' : assignment operator could not be generated
43> C:/builds/WEEK-23-1_WEEK-23/Windows-32-VC10-opt/OCCT/src/XCAFPrs/XCAFPrs_DocumentIdIterator.hxx(26) : see declaration of 'XCAFPrs_DocumentIdIterator'


++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Project : WEEK-23-1_WEEK-23-OCCT-Windows-32-VC9-opt-compile
++++++++++++++++++++++++++++++++++++++++++++++++++++++++

New warnings appears: 4
 
C:\builds\WEEK-23-1_WEEK-23\Windows-32-VC9-opt\OCCT\src\Image\Image_Texture.cxx(163) : warning C4244: 'argument' : conversion from 'int64_t' to 'long', possible loss of data
C:\builds\WEEK-23-1_WEEK-23\Windows-32-VC9-opt\OCCT\src\Image\Image_Texture.cxx(201) : warning C4244: 'argument' : conversion from 'const int64_t' to 'long', possible loss of data
C:\builds\WEEK-23-1_WEEK-23\Windows-32-VC9-opt\OCCT\src\Image\Image_Texture.cxx(266) : warning C4244: 'argument' : conversion from 'int64_t' to 'long', possible loss of data

C:/builds/WEEK-23-1_WEEK-23/Windows-32-VC9-opt/OCCT/src/XCAFPrs/XCAFPrs_DocumentIdIterator.hxx(48) : warning C4512: 'XCAFPrs_DocumentIdIterator' : assignment operator could not be generated
C:/builds/WEEK-23-1_WEEK-23/Windows-32-VC9-opt/OCCT/src/XCAFPrs/XCAFPrs_DocumentIdIterator.hxx(26) : see declaration of 'XCAFPrs_DocumentIdIterator'



All Linux, MacOS and Android


New warnings appears: 3
 
In file included from /dn54/builds/WEEK-23-1_WEEK-23/ARCH463-64-clang-opt/OCCT/src/RWMesh/RWMesh_CafReader.cxx:15:
In file included from /dn54/builds/WEEK-23-1_WEEK-23/ARCH463-64-clang-opt/OCCT/build/inc/RWMesh_CafReader.hxx:1:
/dn54/builds/WEEK-23-1_WEEK-23/ARCH463-64-clang-opt/OCCT/src/RWMesh/RWMesh_CafReader.hxx:78:55: warning: expression result unused [-Wunused-value]
  Standard_Boolean ToFillIncompleteDocument() const { myToFillIncomplete; }
                                                      ^~~~~~~~~~~~~~~~~~
/dn54/builds/WEEK-23-1_WEEK-23/ARCH463-64-clang-opt/OCCT/src/RWMesh/RWMesh_CafReader.hxx:78:75: warning: control reaches end of non-void function [-Wreturn-type]
  Standard_Boolean ToFillIncompleteDocument() const { myToFillIncomplete; }
                                                                          ^

src/TKSTEPBase/CMakeFiles/TKSTEPBase.dir/__/RWStepShape/RWStepShape_RWDimensionalSize.cxx.o
In file included from /dn54/builds/WEEK-23-1_WEEK-23/ARCH463-64-opt/OCCT/build/include/opencascade/Standard_OutOfRange.hxx:1:0,
                 from /dn54/builds/WEEK-23-1_WEEK-23/ARCH463-64-opt/OCCT/src/NCollection/NCollection_BaseVector.hxx:20,
                 from /dn54/builds/WEEK-23-1_WEEK-23/ARCH463-64-opt/OCCT/build/include/opencascade/NCollection_BaseVector.hxx:1,
                 from /dn54/builds/WEEK-23-1_WEEK-23/ARCH463-64-opt/OCCT/src/NCollection/NCollection_Vector.hxx:19,
                 from /dn54/builds/WEEK-23-1_WEEK-23/ARCH463-64-opt/OCCT/build/include/opencascade/NCollection_Vector.hxx:1,
                 from /dn54/builds/WEEK-23-1_WEEK-23/ARCH463-64-opt/OCCT/src/XCAFPrs/XCAFPrs_DocumentExplorer.hxx:18,
                 from /dn54/builds/WEEK-23-1_WEEK-23/ARCH463-64-opt/OCCT/build/include/opencascade/XCAFPrs_DocumentExplorer.hxx:1,
                 from /dn54/builds/WEEK-23-1_WEEK-23/ARCH463-64-opt/OCCT/src/XCAFPrs/XCAFPrs_DocumentExplorer.cxx:15:
/dn54/builds/WEEK-23-1_WEEK-23/ARCH463-64-opt/OCCT/src/TCollection/TCollection_AsciiString.lxx: In static member function 'static TDF_Label XCAFPrs_DocumentExplorer::FindLabelFromPathId(const opencascade::handle<TDocStd_Document>&, const TCollection_AsciiString&, TopLoc_Location&, TopLoc_Location&)':
/dn54/builds/WEEK-23-1_WEEK-23/ARCH463-64-opt/OCCT/src/Standard/Standard_OutOfRange.hxx:33:3: warning: assuming signed overflow does not occur when assuming that (X - c) > X is always false [-Wstrict-overflow]
   if (CONDITION) throw Standard_OutOfRange(MESSAGE); \
   ^
/dn54/builds/WEEK-23-1_WEEK-23/ARCH463-64-opt/OCCT/src/TCollection/TCollection_AsciiString.lxx:117:3: note: in expansion of macro 'Standard_OutOfRange_Always_Raise_if'
   Standard_OutOfRange_Always_Raise_if(ToIndex > mylength || FromIndex <= 0 || FromIndex > ToIndex,
   ^
/dn54/builds/WEEK-23-1_WEEK-23/ARCH463-64-opt/OCCT/src/Standard/Standard_OutOfRange.hxx:33:3: warning: assuming signed overflow does not occur when assuming that (X - c) > X is always false [-Wstrict-overflow]
   if (CONDITION) throw Standard_OutOfRange(MESSAGE); \
   ^
/dn54/builds/WEEK-23-1_WEEK-23/ARCH463-64-opt/OCCT/src/TCollection/TCollection_AsciiString.lxx:117:3: note: in expansion of macro 'Standard_OutOfRange_Always_Raise_if'
   Standard_OutOfRange_Always_Raise_if(ToIndex > mylength || FromIndex <= 0 || FromIndex > ToIndex,
   ^

31Commenter 3
Branch [archived branch] has been updated by Author.

[revision removed]


Detailed log of new commits:

Author: Author
Date: Wed Jun 5 13:45:07 2019 +0300

    # suppress compiler warnings

32Author
> Results of compilation on jenkins-test-08
> Warnings:
Compilation warnings should be eliminated now, please check.
33Commenter 1
Fix has been tested on WEEK-23 branch.

Combination -
OCCT branch : [archived branch]
master SHA - [revision removed]
[revision removed]
Products branch : [archived branch] SHA - [revision removed]
was compiled on Linux, MacOS and Windows platforms and tested in optimize mode.

Number of compiler warnings:
No new/fixed warnings

Regressions/Differences/Improvements:
No regressions/differences

CPU differences:
Debian80-64:
OCCT
Total CPU difference: 16171.010000000148 / 16313.930000000051 [-0.88%]
Products
Total CPU difference: 10475.530000000037 / 10490.14000000005 [-0.14%]
Windows-64-VC14:
OCCT
Total CPU difference: 17609.609375 / 17714.90625 [-0.59%]
Products
Total CPU difference: 12110.65625 / 12054.984375 [+0.46%]


Image differences :
No differences that require special attention

Memory differences :
No differences that require special attention
34Commenter 3
Branch [archived branch] has been deleted by Participant.

[revision removed]
35Commenter 3
Branch [archived branch] has been deleted by Participant.

[revision removed]
36Commenter 3
Branch [archived branch] has been deleted by Participant.

[revision removed]
37Commenter 3
Branch [archived branch] has been deleted by Participant.

[revision removed]
38Commenter 3
Branch [archived branch] has been deleted by Participant.

[revision removed]

Related records