PropertyPartShape: add parameter to disable copy on save
By default PropertyPartShape uses BRepBuilderAPI_Copy to copy the shape on saving, to get rid of the triangulation. However, OCCT seems to perform a deep copy and shape sharing information is lost. A new parameter, BaseApp/Preferences/Mod/Part/General/CopyShapeOnSave, is added to disable this.
This commit is contained in:
@@ -272,9 +272,15 @@ void PropertyPartShape::SaveDocFile (Base::Writer &writer) const
|
||||
return;
|
||||
// NOTE: Cleaning the triangulation may cause problems on some algorithms like BOP
|
||||
// Before writing to the project we clean all triangulation data to save memory
|
||||
BRepBuilderAPI_Copy copy(_Shape.getShape());
|
||||
const TopoDS_Shape& myShape = copy.Shape();
|
||||
BRepTools::Clean(myShape); // remove triangulation
|
||||
TopoDS_Shape myShape;
|
||||
auto hGrp = App::GetApplication().GetParameterGroupByPath(
|
||||
"User parameter:BaseApp/Preferences/Mod/Part/General");
|
||||
if(hGrp->GetBool("CopyShapeOnSave",true)) {
|
||||
BRepBuilderAPI_Copy copy(_Shape.getShape());
|
||||
myShape = copy.Shape();
|
||||
BRepTools::Clean(myShape); // remove triangulation
|
||||
}else
|
||||
myShape = _Shape.getShape();
|
||||
|
||||
if (writer.getMode("BinaryBrep")) {
|
||||
TopoShape shape;
|
||||
@@ -282,8 +288,7 @@ void PropertyPartShape::SaveDocFile (Base::Writer &writer) const
|
||||
shape.exportBinary(writer.Stream());
|
||||
}
|
||||
else {
|
||||
bool direct = App::GetApplication().GetParameterGroupByPath
|
||||
("User parameter:BaseApp/Preferences/Mod/Part/General")->GetBool("DirectAccess", true);
|
||||
bool direct = hGrp->GetBool("DirectAccess", true);
|
||||
if (!direct) {
|
||||
// create a temporary file and copy the content to the zip stream
|
||||
// once the tmp. filename is known use always the same because otherwise
|
||||
|
||||
Reference in New Issue
Block a user