mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-03 17:56:21 +03:00
0031050: Data Exchange - XmlXCAF persistence stores triangulation-only Faces without any geometry
BRepTools_ShapeSet now ignores myWithTriangles flag in case if triangulation is the only geometry representation.
This commit is contained in:
parent
44fafc477f
commit
8c787b5fa9
@ -215,7 +215,7 @@ void BRepTools_ShapeSet::AddGeometry(const TopoDS_Shape& S)
|
||||
Handle(BRep_TFace) TF = Handle(BRep_TFace)::DownCast(S.TShape());
|
||||
if (!TF->Surface().IsNull()) mySurfaces.Add(TF->Surface());
|
||||
|
||||
if (myWithTriangles) { // for XML Persistence
|
||||
if (myWithTriangles || TF->Surface().IsNull()) { // for XML Persistence
|
||||
Handle(Poly_Triangulation) Tr = TF->Triangulation();
|
||||
if (!Tr.IsNull()) myTriangulations.Add(Tr);
|
||||
}
|
||||
@ -751,7 +751,7 @@ void BRepTools_ShapeSet::WriteGeometry(const TopoDS_Shape& S,
|
||||
OS << " " << 0;
|
||||
OS << "\n";
|
||||
}
|
||||
if (myWithTriangles) { // for XML Persistence
|
||||
if (myWithTriangles || TF->Surface().IsNull()) { // for XML Persistence
|
||||
if (!(TF->Triangulation()).IsNull()) {
|
||||
OS << 2;
|
||||
OS << " ";
|
||||
|
@ -7,6 +7,7 @@ puts ""
|
||||
set anImgDoc1 $imagedir/${casename}_doc1.png
|
||||
set anImgDoc2 $imagedir/${casename}_doc2.png
|
||||
set anImgDiff $imagedir/${casename}_diff.png
|
||||
set aTestFile $imagedir/${casename}.xbf
|
||||
|
||||
pload XDE OCAF MODELING VISUALIZATION
|
||||
|
||||
@ -16,27 +17,27 @@ explode s F
|
||||
NewDocument D BinXCAF
|
||||
XAddShape D s
|
||||
XSetColor D s_1 1 0 0
|
||||
XShow D
|
||||
vclear
|
||||
vinit View1
|
||||
vaxo
|
||||
XDisplay -dispMode 1 D
|
||||
vfit
|
||||
vrotate 3 0 0
|
||||
vsetdispmode 1
|
||||
vdump $anImgDoc1
|
||||
|
||||
file delete ${imagedir}/test.xbf
|
||||
file delete $aTestFile
|
||||
StoreTriangulation 1
|
||||
SaveAs D ${imagedir}/test.xbf
|
||||
SaveAs D $aTestFile
|
||||
Close D
|
||||
|
||||
XOpen ${imagedir}/test.xbf D
|
||||
XShow D
|
||||
vsetdispmode 1
|
||||
XOpen $aTestFile D
|
||||
file delete $aTestFile
|
||||
vclear
|
||||
XDisplay -dispMode 1 D
|
||||
vaxo
|
||||
vfit
|
||||
vrotate 3 0 0
|
||||
vdump $anImgDoc2
|
||||
|
||||
set aDiffRes [diffimage $anImgDoc2 $anImgDoc1 0.0 0 0 $anImgDiff]
|
||||
if {$aDiffRes != 0} {
|
||||
puts "Error: document has changed after Save/Read"
|
||||
}
|
||||
if {$aDiffRes != 0} { puts "Error: document has changed after Save/Read" }
|
||||
|
38
tests/bugs/caf/bug31050
Normal file
38
tests/bugs/caf/bug31050
Normal file
@ -0,0 +1,38 @@
|
||||
puts "============"
|
||||
puts "0031050: Data Exchange - XmlXCAF persistence stores triangulation-only Faces without any geometry"
|
||||
puts "============"
|
||||
|
||||
set anImgDoc1 $imagedir/${casename}_doc1.png
|
||||
set anImgDoc2 $imagedir/${casename}_doc2.png
|
||||
set anImgDiff $imagedir/${casename}_diff.png
|
||||
set aTestFile $imagedir/${casename}.xml
|
||||
|
||||
pload XDE OCAF MODELING VISUALIZATION
|
||||
|
||||
restore [locate_data_file bug27821_nullsurf.brep] s
|
||||
explode s F
|
||||
|
||||
NewDocument D XmlXCAF
|
||||
XAddShape D s
|
||||
XSetColor D s_1 1 0 0
|
||||
vclear
|
||||
vinit View1
|
||||
vaxo
|
||||
XDisplay -dispMode 1 D
|
||||
vfit
|
||||
vrotate 3 0 0
|
||||
vdump $anImgDoc1
|
||||
|
||||
file delete $aTestFile
|
||||
StoreTriangulation 1
|
||||
SaveAs D $aTestFile
|
||||
Close D
|
||||
|
||||
XOpen $aTestFile D
|
||||
file delete $aTestFile
|
||||
vclear
|
||||
XDisplay -dispMode 1 D
|
||||
vdump $anImgDoc2
|
||||
|
||||
set aDiffRes [diffimage $anImgDoc2 $anImgDoc1 0.0 0 0 $anImgDiff]
|
||||
if {$aDiffRes != 0} { puts "Error: document has changed after Save/Read" }
|
Loading…
x
Reference in New Issue
Block a user