mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-09-18 14:27:39 +03:00
Compare commits
5 Commits
CR33736
...
IR-2024-08
Author | SHA1 | Date | |
---|---|---|---|
|
b332761e13 | ||
|
da71394f31 | ||
|
2736652117 | ||
|
677f383561 | ||
|
bd14b69336 |
@@ -56,13 +56,17 @@ if (WIN32)
|
||||
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TBB_INCLUDE_DIR)
|
||||
endif()
|
||||
|
||||
# Get installed configuration of tbb
|
||||
get_target_property (TARGET_TBB_IMPORT_CONFS TBB::tbb IMPORTED_CONFIGURATIONS)
|
||||
list (GET TARGET_TBB_IMPORT_CONFS 0 CHOSEN_IMPORT_CONF)
|
||||
|
||||
separate_arguments (CSF_TBB)
|
||||
foreach (LIB IN LISTS CSF_TBB)
|
||||
string(TOLOWER "${LIB}" LIB_LOWER)
|
||||
string(TOUPPER "${LIB}" LIB_UPPER)
|
||||
|
||||
# Achive *.lib files and directory containing it.
|
||||
get_target_property (TBB_LIB_FILE "TBB::${LIB_LOWER}" IMPORTED_IMPLIB_RELEASE)
|
||||
get_target_property (TBB_LIB_FILE "TBB::${LIB_LOWER}" IMPORTED_IMPLIB_${CHOSEN_IMPORT_CONF})
|
||||
# Reserve cache variable for *.lib.
|
||||
if (NOT DEFINED 3RDPARTY_${LIB_UPPER}_LIBRARY)
|
||||
set (3RDPARTY_${LIB_UPPER}_LIBRARY "" CACHE FILEPATH "${LIB_UPPER} library (*.lib)")
|
||||
@@ -89,7 +93,7 @@ if (WIN32)
|
||||
endif()
|
||||
|
||||
# Achive *.dll files and directory containing it.
|
||||
get_target_property (TBB_DLL_FILE "TBB::${LIB_LOWER}" IMPORTED_LOCATION_RELEASE)
|
||||
get_target_property (TBB_DLL_FILE "TBB::${LIB_LOWER}" IMPORTED_LOCATION_${CHOSEN_IMPORT_CONF})
|
||||
# Reserve cache variable for *.dll.
|
||||
if (NOT DEFINED 3RDPARTY_${LIB_UPPER}_DLL)
|
||||
set (3RDPARTY_${LIB_UPPER}_DLL "" CACHE FILEPATH "${LIB_UPPER} library (*.dll)")
|
||||
@@ -185,13 +189,17 @@ else ()
|
||||
list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TBB_INCLUDE_DIR)
|
||||
endif()
|
||||
|
||||
# Get installed configuration of tbb
|
||||
get_target_property (TARGET_TBB_IMPORT_CONFS TBB::tbb IMPORTED_CONFIGURATIONS)
|
||||
list (GET TARGET_TBB_IMPORT_CONFS 0 CHOSEN_IMPORT_CONF)
|
||||
|
||||
separate_arguments (CSF_TBB)
|
||||
foreach (LIB IN LISTS CSF_TBB)
|
||||
string(TOLOWER "${LIB}" LIB_LOWER)
|
||||
string(TOUPPER "${LIB}" LIB_UPPER)
|
||||
|
||||
# Achive *.so files and directory containing it.
|
||||
get_target_property (TBB_SO_FILE "TBB::${LIB_LOWER}" IMPORTED_LOCATION_RELEASE)
|
||||
get_target_property (TBB_SO_FILE "TBB::${LIB_LOWER}" IMPORTED_LOCATION_${CHOSEN_IMPORT_CONF})
|
||||
# Reserve cache variable for *.so.
|
||||
if (NOT DEFINED 3RDPARTY_${LIB_UPPER}_LIBRARY)
|
||||
set (3RDPARTY_${LIB_UPPER}_LIBRARY "" CACHE FILEPATH "${LIB_UPPER} library (*.so)")
|
||||
|
@@ -341,12 +341,8 @@ void BOPAlgo_PaveFiller::PerformEE(const Message_ProgressRange& theRange)
|
||||
GeomAbs_CurveType aType1 = aBAC1.GetType();
|
||||
GeomAbs_CurveType aType2 = aBAC2.GetType();
|
||||
//
|
||||
bAnalytical = (((aType1 == GeomAbs_Line) &&
|
||||
(aType2 == GeomAbs_Line ||
|
||||
aType2 == GeomAbs_Circle)) ||
|
||||
((aType2 == GeomAbs_Line) &&
|
||||
(aType1 == GeomAbs_Line ||
|
||||
aType1 == GeomAbs_Circle)));
|
||||
bAnalytical = (aType1 == GeomAbs_Line && aType2 == GeomAbs_Circle) ||
|
||||
(aType1 == GeomAbs_Circle && aType2 == GeomAbs_Line);
|
||||
}
|
||||
//
|
||||
for (i=1; i<=aNbCPrts; ++i) {
|
||||
@@ -443,7 +439,7 @@ void BOPAlgo_PaveFiller::PerformEE(const Message_ProgressRange& theRange)
|
||||
|
||||
Standard_Real aTolVnew = BRep_Tool::Tolerance(aVnew);
|
||||
if (bAnalytical) {
|
||||
// increase tolerance for Line/Line intersection, but do not update
|
||||
// increase tolerance for Line/Circle intersection, but do not update
|
||||
// the vertex till its intersection with some other shape
|
||||
Standard_Real aTolMin = (BRepAdaptor_Curve(aE1).GetType() == GeomAbs_Line) ?
|
||||
(aCR1.Last() - aCR1.First()) / 2. : (aCR2.Last() - aCR2.First()) / 2.;
|
||||
|
492
src/DE/DE_ShapeFixConfigurationNode.cxx
Normal file
492
src/DE/DE_ShapeFixConfigurationNode.cxx
Normal file
@@ -0,0 +1,492 @@
|
||||
// Copyright (c) 2024 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#include <DE_ShapeFixConfigurationNode.hxx>
|
||||
|
||||
#include <DE_ConfigurationContext.hxx>
|
||||
#include <DE_PluginHolder.hxx>
|
||||
#include <DE_Wrapper.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(DE_ShapeFixConfigurationNode, DE_ConfigurationNode)
|
||||
|
||||
namespace
|
||||
{
|
||||
static const TCollection_AsciiString& THE_CONFIGURATION_SCOPE()
|
||||
{
|
||||
static const TCollection_AsciiString aScope = "provider";
|
||||
return aScope;
|
||||
}
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
// function : DE_ShapeFixConfigurationNode
|
||||
// purpose :
|
||||
//=======================================================================
|
||||
DE_ShapeFixConfigurationNode::DE_ShapeFixConfigurationNode()
|
||||
: DE_ConfigurationNode()
|
||||
{}
|
||||
|
||||
//=======================================================================
|
||||
// function : DE_ShapeFixConfigurationNode
|
||||
// purpose :
|
||||
//=======================================================================
|
||||
DE_ShapeFixConfigurationNode::DE_ShapeFixConfigurationNode(const Handle(DE_ShapeFixConfigurationNode)& theNode)
|
||||
: DE_ConfigurationNode(theNode)
|
||||
{
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
// function : Load
|
||||
// purpose :
|
||||
//=======================================================================
|
||||
bool DE_ShapeFixConfigurationNode::Load(const Handle(DE_ConfigurationContext)& theResource)
|
||||
{
|
||||
TCollection_AsciiString aScope = THE_CONFIGURATION_SCOPE() + "." + GetFormat() + "." + GetVendor() + ".healing";
|
||||
|
||||
HealingParameters.Tolerance3d = theResource->RealVal("tolerance3d", HealingParameters.Tolerance3d, aScope);
|
||||
HealingParameters.MaxTolerance3d = theResource->RealVal("max.tolerance3d", HealingParameters.MaxTolerance3d, aScope);
|
||||
HealingParameters.MinTolerance3d = theResource->RealVal("min.tolerance3d", HealingParameters.MinTolerance3d, aScope);
|
||||
HealingParameters.FixFreeShellMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("free.shell", (int)HealingParameters.FixFreeShellMode, aScope);
|
||||
HealingParameters.FixFreeFaceMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("free.face", (int)HealingParameters.FixFreeFaceMode, aScope);
|
||||
HealingParameters.FixFreeWireMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("free.wire", (int)HealingParameters.FixFreeWireMode, aScope);
|
||||
HealingParameters.FixSameParameterMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("same.parameter", (int)HealingParameters.FixSameParameterMode, aScope);
|
||||
HealingParameters.FixSolidMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("solid", (int)HealingParameters.FixSolidMode, aScope);
|
||||
HealingParameters.FixShellOrientationMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("shell.orientation", (int)HealingParameters.FixShellOrientationMode, aScope);
|
||||
HealingParameters.CreateOpenSolidMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("create.open.solid", (int)HealingParameters.CreateOpenSolidMode, aScope);
|
||||
HealingParameters.FixShellMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("shell", (int)HealingParameters.FixShellMode, aScope);
|
||||
HealingParameters.FixFaceOrientationMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("face.orientation", (int)HealingParameters.FixFaceOrientationMode, aScope);
|
||||
HealingParameters.FixFaceMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("face", (int)HealingParameters.FixFaceMode, aScope);
|
||||
HealingParameters.FixWireMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("wire", (int)HealingParameters.FixWireMode, aScope);
|
||||
HealingParameters.FixOrientationMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("orientation", (int)HealingParameters.FixOrientationMode, aScope);
|
||||
HealingParameters.FixAddNaturalBoundMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("add.natural.bound", (int)HealingParameters.FixAddNaturalBoundMode, aScope);
|
||||
HealingParameters.FixMissingSeamMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("missing.seam", (int)HealingParameters.FixMissingSeamMode, aScope);
|
||||
HealingParameters.FixSmallAreaWireMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("small.area.wire", (int)HealingParameters.FixSmallAreaWireMode, aScope);
|
||||
HealingParameters.RemoveSmallAreaFaceMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("remove.small.area.face", (int)HealingParameters.RemoveSmallAreaFaceMode, aScope);
|
||||
HealingParameters.FixIntersectingWiresMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("intersecting.wires", (int)HealingParameters.FixIntersectingWiresMode, aScope);
|
||||
HealingParameters.FixLoopWiresMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("loop.wires", (int)HealingParameters.FixLoopWiresMode, aScope);
|
||||
HealingParameters.FixSplitFaceMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("split.face", (int)HealingParameters.FixSplitFaceMode, aScope);
|
||||
HealingParameters.AutoCorrectPrecisionMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("auto.correct.precision", (int)HealingParameters.AutoCorrectPrecisionMode, aScope);
|
||||
HealingParameters.ModifyTopologyMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("modify.topology", (int)HealingParameters.ModifyTopologyMode, aScope);
|
||||
HealingParameters.ModifyGeometryMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("modify.geometry", (int)HealingParameters.ModifyGeometryMode, aScope);
|
||||
HealingParameters.ClosedWireMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("closed.wire", (int)HealingParameters.ClosedWireMode, aScope);
|
||||
HealingParameters.PreferencePCurveMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("preference.pcurve", (int)HealingParameters.PreferencePCurveMode, aScope);
|
||||
HealingParameters.FixReorderMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("reorder.edges", (int)HealingParameters.FixReorderMode, aScope);
|
||||
HealingParameters.FixSmallMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("remove.small.edges", (int)HealingParameters.FixSmallMode, aScope);
|
||||
HealingParameters.FixConnectedMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("connected.edges", (int)HealingParameters.FixConnectedMode, aScope);
|
||||
HealingParameters.FixEdgeCurvesMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("edge.curves", (int)HealingParameters.FixEdgeCurvesMode, aScope);
|
||||
HealingParameters.FixDegeneratedMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("add.degenerated.edges", (int)HealingParameters.FixDegeneratedMode, aScope);
|
||||
HealingParameters.FixLackingMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("add.lacking.edges", (int)HealingParameters.FixLackingMode, aScope);
|
||||
HealingParameters.FixSelfIntersectionMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("selfintersection", (int)HealingParameters.FixSelfIntersectionMode, aScope);
|
||||
HealingParameters.RemoveLoopMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("remove.loop", (int)HealingParameters.RemoveLoopMode, aScope);
|
||||
HealingParameters.FixReversed2dMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("reversed2d", (int)HealingParameters.FixReversed2dMode, aScope);
|
||||
HealingParameters.FixRemovePCurveMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("remove.pcurve", (int)HealingParameters.FixRemovePCurveMode, aScope);
|
||||
HealingParameters.FixRemoveCurve3dMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("remove.curve3d", (int)HealingParameters.FixRemoveCurve3dMode, aScope);
|
||||
HealingParameters.FixAddPCurveMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("add.pcurve", (int)HealingParameters.FixAddPCurveMode, aScope);
|
||||
HealingParameters.FixAddCurve3dMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("add.curve3d", (int)HealingParameters.FixAddCurve3dMode, aScope);
|
||||
HealingParameters.FixSeamMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("correct.order.in.seam", (int)HealingParameters.FixSeamMode, aScope);
|
||||
HealingParameters.FixShiftedMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("shifted", (int)HealingParameters.FixShiftedMode, aScope);
|
||||
HealingParameters.FixEdgeSameParameterMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("edge.same.parameter", (int)HealingParameters.FixEdgeSameParameterMode, aScope);
|
||||
HealingParameters.FixNotchedEdgesMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("notched.edges", (int)HealingParameters.FixNotchedEdgesMode, aScope);
|
||||
HealingParameters.FixTailMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("tail", (int)HealingParameters.FixTailMode, aScope);
|
||||
HealingParameters.MaxTailAngle = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("max.tail.angle", (int)HealingParameters.MaxTailAngle, aScope);
|
||||
HealingParameters.MaxTailWidth = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("max.tail.width", (int)HealingParameters.MaxTailWidth, aScope);
|
||||
HealingParameters.FixSelfIntersectingEdgeMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("selfintersecting.edge", (int)HealingParameters.FixSelfIntersectingEdgeMode, aScope);
|
||||
HealingParameters.FixIntersectingEdgesMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("intersecting.edges", (int)HealingParameters.FixIntersectingEdgesMode, aScope);
|
||||
HealingParameters.FixNonAdjacentIntersectingEdgesMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("nonadjacent.intersecting.edges", (int)HealingParameters.FixNonAdjacentIntersectingEdgesMode, aScope);
|
||||
HealingParameters.FixVertexPositionMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("vertex.position", (int)HealingParameters.FixVertexPositionMode, aScope);
|
||||
HealingParameters.FixVertexToleranceMode = (DE_ShapeFixParameters::FixMode)
|
||||
theResource->IntegerVal("vertex.tolerance", (int)HealingParameters.FixVertexToleranceMode, aScope);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
// function : Save
|
||||
// purpose :
|
||||
//=======================================================================
|
||||
TCollection_AsciiString DE_ShapeFixConfigurationNode::Save() const
|
||||
{
|
||||
TCollection_AsciiString aResult;
|
||||
TCollection_AsciiString aScope = THE_CONFIGURATION_SCOPE() + "." + GetFormat() + "." + GetVendor() + ".healing";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Shape healing parameters:\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the maximum allowable tolerance\n";
|
||||
aResult += "!Default value: 1.e-6. Available values: any real positive (non null) value\n";
|
||||
aResult += aScope + "tolerance3d :\t " + HealingParameters.Tolerance3d + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the maximum allowable tolerance\n";
|
||||
aResult += "!Default value: 1.0. Available values: any real positive (non null) value\n";
|
||||
aResult += aScope + "max.tolerance3d :\t " + HealingParameters.MaxTolerance3d + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the minimum allowable tolerance\n";
|
||||
aResult += "!Default value: 1.e-7. Available values: any real positive (non null) value\n";
|
||||
aResult += aScope + "min.tolerance3d :\t " + HealingParameters.MinTolerance3d + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode for applying fixes of ShapeFix_Shell for ShapeFix_Shape\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "free.shell :\t " + (int)HealingParameters.FixFreeShellMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode for applying fixes of ShapeFix_Face for ShapeFix_Shape\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "free.face :\t " + (int)HealingParameters.FixFreeFaceMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode for applying fixes of ShapeFix_Wire for ShapeFix_Shape\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "free.wire :\t " + (int)HealingParameters.FixFreeWireMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode for applying ShapeFix::SameParameter after all fixes\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "same.parameter :\t " + (int)HealingParameters.FixSameParameterMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode for applying fixes of ShapeFix_Solid\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "solid :\t " + (int)HealingParameters.FixSolidMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode for applying analysis and fixes of orientation of shells in the solid\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "shell.orientation :\t " + (int)HealingParameters.FixShellOrientationMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode for creation of solids. If operation is executed then solids are created from open shells ";
|
||||
aResult += "else solids are created from closed shells only\n";
|
||||
aResult += "!Default value: \"NotFix\"(0). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "create.open.solid :\t " + (int)HealingParameters.CreateOpenSolidMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode for applying fixes of ShapeFix_Shell for ShapeFix_Solid\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "shell :\t " + (int)HealingParameters.FixShellMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode for applying analysis and fixes of orientation of faces in the shell\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "face.orientation :\t " + (int)HealingParameters.FixFaceOrientationMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode for applying fixes of ShapeFix_Face\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "face :\t " + (int)HealingParameters.FixFaceMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode for applying fixes of ShapeFix_Wire\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "wire :\t " + (int)HealingParameters.FixWireMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode for applying a fix for the orientation of faces in the shell\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "orientation :\t " + (int)HealingParameters.FixOrientationMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the add natural bound mode. If operation is executed then natural boundary is added on faces that miss them\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "add.natural.bound :\t " + (int)HealingParameters.FixAddNaturalBoundMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the fix missing seam mode (tries to insert seam is missed)\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "missing.seam :\t " + (int)HealingParameters.FixMissingSeamMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the fix small area wire mode (drops small wires)\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "small.area.wire :\t " + (int)HealingParameters.FixSmallAreaWireMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the remove face with small area (drops faces with small outer wires)\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "remove.small.area.face :\t " + (int)HealingParameters.RemoveSmallAreaFaceMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the fix intersecting wires mode in ShapeFix_Face\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "intersecting.wires :\t " + (int)HealingParameters.FixIntersectingWiresMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the fix loop wires mode in ShapeFix_Face\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "loop.wires :\t " + (int)HealingParameters.FixLoopWiresMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the fix split face mode in ShapeFix_Face\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "split.face :\t " + (int)HealingParameters.FixSplitFaceMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the auto-correct precision mode in ShapeFix_Face\n";
|
||||
aResult += "!Default value: \"Fix\"(1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "auto.correct.precision :\t " + (int)HealingParameters.AutoCorrectPrecisionMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode allowed to modify topology of the wire during fixing (adding/removing edges etc.)\n";
|
||||
aResult += "!Default value: \"NotFix\"(0). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "modify.topology :\t " + (int)HealingParameters.ModifyTopologyMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode allowed to modify geometry of the edges and vertices\n";
|
||||
aResult += "!Default value: \"Fix\"(1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "modify.geometry :\t " + (int)HealingParameters.ModifyGeometryMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode allowed to defines whether the wire is to be closed (by calling methods like FixDegenerated() ";
|
||||
aResult += "!and FixConnected() for lastand first edges\n";
|
||||
aResult += "!Default value: \"Fix\"(1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "closed.wire :\t " + (int)HealingParameters.ClosedWireMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode allowed to defines the 2d representation of the wire is preferable over 3d one ";
|
||||
aResult += "(in the case of ambiguity in FixEdgeCurves)\n";
|
||||
aResult += "!and FixConnected() for lastand first edges\n";
|
||||
aResult += "!Default value: \"Fix\"(1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "preference.pcurve :\t " + (int)HealingParameters.PreferencePCurveMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode allowed to reorder edges in the wire\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "reorder.edges :\t " + (int)HealingParameters.FixReorderMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode allowed to remove small edges\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "remove.small.edges :\t " + (int)HealingParameters.FixSmallMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode for fix connecting edges in the wire\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "connected.edges :\t " + (int)HealingParameters.FixConnectedMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode for fix edges (3Dcurves and 2D curves)\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "edge.curves :\t " + (int)HealingParameters.FixEdgeCurvesMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode for add degenerated edges\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "add.degenerated.edges :\t " + (int)HealingParameters.FixDegeneratedMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode for add lacking edges\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "add.lacking.edges :\t " + (int)HealingParameters.FixLackingMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode for fix selfintersection edges\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "selfintersection :\t " + (int)HealingParameters.FixSelfIntersectionMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode allowed to remove loop\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "remove.loop :\t " + (int)HealingParameters.RemoveLoopMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode allowed to fix edge if pcurve is directed opposite to 3d curve\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "reversed2d :\t " + (int)HealingParameters.FixReversed2dMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode allowed to remove the pcurve(s) of the edge if it does not match the vertices\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "remove.pcurve :\t " + (int)HealingParameters.FixRemovePCurveMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode allowed to remove 3d curve of the edge if it does not match the vertices\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "remove.curve3d :\t " + (int)HealingParameters.FixRemoveCurve3dMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode allowed to add pcurve(s) of the edge if missing (by projecting 3d curve)\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "add.pcurve :\t " + (int)HealingParameters.FixAddPCurveMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode allowed to build 3d curve of the edge if missing\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "add.curve3d :\t " + (int)HealingParameters.FixAddCurve3dMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode allowed to correct order of pcurves in the seam edge depends on its orientation\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "correct.order.in.seam :\t " + (int)HealingParameters.FixSeamMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode allowed to shifts wrong 2D curves back, ensuring that the 2D curves of the edges in the wire are connected\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "shifted :\t " + (int)HealingParameters.FixShiftedMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode for applying EdgeSameParameter\n";
|
||||
aResult += "!Default value: \"NotFix\"(0). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "edge.same.parameter :\t " + (int)HealingParameters.FixEdgeSameParameterMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode for fix notched edges\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "notched.edges :\t " + (int)HealingParameters.FixNotchedEdgesMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode for fix tail in wire\n";
|
||||
aResult += "!Default value: \"NotFix\"(0). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "tail :\t " + (int)HealingParameters.FixTailMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode for max angle of the tails\n";
|
||||
aResult += "!Default value: \"NotFix\"(0). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "max.tail.angle :\t " + (int)HealingParameters.MaxTailAngle + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode for max tail width\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "max.tail.width :\t " + (int)HealingParameters.MaxTailWidth + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode for fix selfintersecting of edge\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "selfintersecting.edge :\t " + (int)HealingParameters.FixSelfIntersectingEdgeMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode for fix intersecting edges\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "intersecting.edges :\t " + (int)HealingParameters.FixIntersectingEdgesMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode for fix non adjacent intersecting edges\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "nonadjacent.intersecting.edges :\t " + (int)HealingParameters.FixNonAdjacentIntersectingEdgesMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode for applying ShapeFix::FixVertexPosition before all fixes\n";
|
||||
aResult += "!Default value: \"NotFix\"(0). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "vertex.position :\t " + (int)HealingParameters.FixVertexPositionMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
aResult += "!\n";
|
||||
aResult += "!Defines the mode for increases the tolerances of the edge vertices to comprise ";
|
||||
aResult += "!the ends of 3d curve and pcurve on the given face (first method) or all pcurves stored in an edge (second one)\n";
|
||||
aResult += "!Default value: \"FixOrNot\"(-1). Available values: \"FixOrNot\"(-1), \"NotFix\"(0), \"Fix\"(1)\n";
|
||||
aResult += aScope + "vertex.tolerance :\t " + (int)HealingParameters.FixVertexToleranceMode + "\n";
|
||||
aResult += "!\n";
|
||||
|
||||
return aResult;
|
||||
}
|
51
src/DE/DE_ShapeFixConfigurationNode.hxx
Normal file
51
src/DE/DE_ShapeFixConfigurationNode.hxx
Normal file
@@ -0,0 +1,51 @@
|
||||
// Copyright (c) 2024 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _DE_ShapeFixConfigurationNode_HeaderFile
|
||||
#define _DE_ShapeFixConfigurationNode_HeaderFile
|
||||
|
||||
#include <DE_ConfigurationNode.hxx>
|
||||
#include <DE_ShapeFixParameters.hxx>
|
||||
#include <TColStd_ListOfAsciiString.hxx>
|
||||
|
||||
class DE_ConfigurationContext;
|
||||
|
||||
//! Base class to work with shape healing parameters for child classes.
|
||||
class DE_ShapeFixConfigurationNode : public DE_ConfigurationNode
|
||||
{
|
||||
DEFINE_STANDARD_RTTIEXT(DE_ShapeFixConfigurationNode, DE_ConfigurationNode)
|
||||
public:
|
||||
|
||||
//! Initializes all field by default
|
||||
Standard_EXPORT DE_ShapeFixConfigurationNode();
|
||||
|
||||
//! Copies values of all fields
|
||||
//! @param[in] theConfigurationNode object to copy
|
||||
Standard_EXPORT DE_ShapeFixConfigurationNode(const Handle(DE_ShapeFixConfigurationNode)& theConfigurationNode);
|
||||
|
||||
//! Updates values according the resource
|
||||
//! @param[in] theResource input resource to use
|
||||
//! @return True if Load was successful
|
||||
Standard_EXPORT virtual bool Load(const Handle(DE_ConfigurationContext)& theResource) Standard_OVERRIDE;
|
||||
|
||||
//! Writes configuration to the string
|
||||
//! @return result resource string
|
||||
Standard_EXPORT virtual TCollection_AsciiString Save() const Standard_OVERRIDE;
|
||||
|
||||
public:
|
||||
|
||||
DE_ShapeFixParameters HealingParameters; //!< Shape healing parameters
|
||||
|
||||
};
|
||||
|
||||
#endif // _DE_ShapeFixConfigurationNode_HeaderFile
|
82
src/DE/DE_ShapeFixParameters.hxx
Normal file
82
src/DE/DE_ShapeFixParameters.hxx
Normal file
@@ -0,0 +1,82 @@
|
||||
// Copyright (c) 2024 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _DE_ShapeFixParameters_HeaderFile
|
||||
#define _DE_ShapeFixParameters_HeaderFile
|
||||
|
||||
//! Struct for shape healing parameters storage
|
||||
struct DE_ShapeFixParameters
|
||||
{
|
||||
//! Enum, classifying a type of value for parameters
|
||||
enum class FixMode : char
|
||||
{
|
||||
FixOrNot = -1, //!< Procedure will be executed or not (depending on the situation)
|
||||
NotFix = 0, //!< Procedure will be executed
|
||||
Fix = 1 //!< Procedure will be executed anyway
|
||||
};
|
||||
|
||||
double Tolerance3d = 1.e-6;
|
||||
double MaxTolerance3d = 1.0;
|
||||
double MinTolerance3d = 1.e-7;
|
||||
FixMode FixFreeShellMode = FixMode::FixOrNot;
|
||||
FixMode FixFreeFaceMode = FixMode::FixOrNot;
|
||||
FixMode FixFreeWireMode = FixMode::FixOrNot;
|
||||
FixMode FixSameParameterMode = FixMode::FixOrNot;
|
||||
FixMode FixSolidMode = FixMode::FixOrNot;
|
||||
FixMode FixShellOrientationMode = FixMode::FixOrNot;
|
||||
FixMode CreateOpenSolidMode = FixMode::NotFix;
|
||||
FixMode FixShellMode = FixMode::FixOrNot;
|
||||
FixMode FixFaceOrientationMode = FixMode::FixOrNot;
|
||||
FixMode FixFaceMode = FixMode::FixOrNot;
|
||||
FixMode FixWireMode = FixMode::FixOrNot;
|
||||
FixMode FixOrientationMode = FixMode::FixOrNot;
|
||||
FixMode FixAddNaturalBoundMode = FixMode::FixOrNot;
|
||||
FixMode FixMissingSeamMode = FixMode::FixOrNot;
|
||||
FixMode FixSmallAreaWireMode = FixMode::FixOrNot;
|
||||
FixMode RemoveSmallAreaFaceMode = FixMode::FixOrNot;
|
||||
FixMode FixIntersectingWiresMode = FixMode::FixOrNot;
|
||||
FixMode FixLoopWiresMode = FixMode::FixOrNot;
|
||||
FixMode FixSplitFaceMode = FixMode::FixOrNot;
|
||||
FixMode AutoCorrectPrecisionMode = FixMode::FixOrNot;
|
||||
FixMode ModifyTopologyMode = FixMode::NotFix;
|
||||
FixMode ModifyGeometryMode = FixMode::Fix;
|
||||
FixMode ClosedWireMode = FixMode::Fix;
|
||||
FixMode PreferencePCurveMode = FixMode::Fix;
|
||||
FixMode FixReorderMode = FixMode::FixOrNot;
|
||||
FixMode FixSmallMode = FixMode::FixOrNot;
|
||||
FixMode FixConnectedMode = FixMode::FixOrNot;
|
||||
FixMode FixEdgeCurvesMode = FixMode::FixOrNot;
|
||||
FixMode FixDegeneratedMode = FixMode::FixOrNot;
|
||||
FixMode FixLackingMode = FixMode::FixOrNot;
|
||||
FixMode FixSelfIntersectionMode = FixMode::FixOrNot;
|
||||
FixMode RemoveLoopMode = FixMode::FixOrNot;
|
||||
FixMode FixReversed2dMode = FixMode::FixOrNot;
|
||||
FixMode FixRemovePCurveMode = FixMode::FixOrNot;
|
||||
FixMode FixRemoveCurve3dMode = FixMode::FixOrNot;
|
||||
FixMode FixAddPCurveMode = FixMode::FixOrNot;
|
||||
FixMode FixAddCurve3dMode = FixMode::FixOrNot;
|
||||
FixMode FixSeamMode = FixMode::FixOrNot;
|
||||
FixMode FixShiftedMode = FixMode::FixOrNot;
|
||||
FixMode FixEdgeSameParameterMode = FixMode::NotFix;
|
||||
FixMode FixNotchedEdgesMode = FixMode::FixOrNot;
|
||||
FixMode FixTailMode = FixMode::NotFix;
|
||||
FixMode MaxTailAngle = FixMode::NotFix;
|
||||
FixMode MaxTailWidth = FixMode::FixOrNot;
|
||||
FixMode FixSelfIntersectingEdgeMode = FixMode::FixOrNot;
|
||||
FixMode FixIntersectingEdgesMode = FixMode::FixOrNot;
|
||||
FixMode FixNonAdjacentIntersectingEdgesMode = FixMode::FixOrNot;
|
||||
FixMode FixVertexPositionMode = FixMode::NotFix;
|
||||
FixMode FixVertexToleranceMode = FixMode::FixOrNot;
|
||||
};
|
||||
|
||||
#endif // _DE_ShapeFixParameters_HeaderFile
|
@@ -5,5 +5,8 @@ DE_ConfigurationNode.hxx
|
||||
DE_PluginHolder.hxx
|
||||
DE_Provider.cxx
|
||||
DE_Provider.hxx
|
||||
DE_ShapeFixConfigurationNode.cxx
|
||||
DE_ShapeFixConfigurationNode.hxx
|
||||
DE_ShapeFixParameters.hxx
|
||||
DE_Wrapper.cxx
|
||||
DE_Wrapper.hxx
|
||||
|
@@ -36,6 +36,68 @@
|
||||
|
||||
#include <Message_ProgressScope.hxx>
|
||||
|
||||
namespace
|
||||
{
|
||||
//=======================================================================
|
||||
//function : UpdateHistoryShape
|
||||
//purpose : Updates ShapeBuild_ReShape by the info of the given shape
|
||||
//=======================================================================
|
||||
bool UpdateHistoryShape (const TopoDS_Shape& theShape,
|
||||
const BRepTools_Modifier& theModifier,
|
||||
const Handle(ShapeBuild_ReShape)& theReShape)
|
||||
{
|
||||
TopoDS_Shape aResult;
|
||||
try
|
||||
{
|
||||
OCC_CATCH_SIGNALS
|
||||
aResult = theModifier.ModifiedShape (theShape);
|
||||
}
|
||||
catch (Standard_NoSuchObject const&)
|
||||
{
|
||||
// the sub shape isn't in the map
|
||||
aResult.Nullify();
|
||||
}
|
||||
|
||||
if (!aResult.IsNull() && !theShape.IsSame (aResult))
|
||||
{
|
||||
theReShape->Replace (theShape, aResult);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : UpdateHistory
|
||||
//purpose : Recursively updates ShapeBuild_ReShape to add information of all sub-shapes
|
||||
//=======================================================================
|
||||
void UpdateHistory (const TopoDS_Shape& theShape,
|
||||
const BRepTools_Modifier& theModifier,
|
||||
const Handle(ShapeBuild_ReShape)& theReShape)
|
||||
{
|
||||
for (TopoDS_Iterator theIterator (theShape, Standard_False); theIterator.More(); theIterator.Next())
|
||||
{
|
||||
const TopoDS_Shape& aCurrent = theIterator.Value();
|
||||
if (UpdateHistoryShape (aCurrent, theModifier, theReShape))
|
||||
{
|
||||
UpdateHistory (aCurrent, theModifier, theReShape);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : UpdateShapeBuild
|
||||
//purpose : Recursively updates ShapeBuild_ReShape to add information of all sub-shapes
|
||||
//=======================================================================
|
||||
void UpdateShapeBuild (const TopoDS_Shape& theShape,
|
||||
const BRepTools_Modifier& theModifier,
|
||||
const Handle(ShapeBuild_ReShape)& theReShape)
|
||||
{
|
||||
UpdateHistoryShape (theShape, theModifier, theReShape);
|
||||
UpdateHistory (theShape, theModifier, theReShape);
|
||||
}
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : ApplyModifier
|
||||
//purpose : static
|
||||
@@ -58,25 +120,35 @@ TopoDS_Shape ShapeCustom::ApplyModifier (const TopoDS_Shape &S,
|
||||
BRep_Builder B;
|
||||
B.MakeCompound ( C );
|
||||
|
||||
SF.Location (TopLoc_Location());
|
||||
Standard_Integer aShapeCount = SF.NbChildren();
|
||||
Message_ProgressScope aPS(theProgress, "Applying Modifier For Solids", aShapeCount);
|
||||
for ( TopoDS_Iterator it(SF); it.More() && aPS.More(); it.Next()) {
|
||||
TopoDS_Shape shape = it.Value();
|
||||
TopLoc_Location L = shape.Location(), nullLoc;
|
||||
shape.Location ( nullLoc );
|
||||
TopoDS_Shape res;
|
||||
for (TopoDS_Iterator it(SF); it.More() && aPS.More(); it.Next())
|
||||
{
|
||||
Message_ProgressRange aRange = aPS.Next();
|
||||
if ( context.IsBound ( shape ) )
|
||||
res = context.Find ( shape ).Oriented ( shape.Orientation() );
|
||||
else
|
||||
res = ApplyModifier ( shape, M, context ,MD, aRange);
|
||||
|
||||
TopoDS_Shape shape = it.Value();
|
||||
TopoDS_Shape aShapeNoLoc = it.Value();
|
||||
aShapeNoLoc.Location (TopLoc_Location());
|
||||
|
||||
if ( ! res.IsSame ( shape ) ) {
|
||||
context.Bind ( shape, res );
|
||||
TopoDS_Shape res;
|
||||
if (context.Find (aShapeNoLoc, res))
|
||||
{
|
||||
res.Orientation (shape.Orientation());
|
||||
res.Location (shape.Location(), Standard_False);
|
||||
}
|
||||
else
|
||||
{
|
||||
res = ApplyModifier (shape, M, context, MD, aRange, aReShape);
|
||||
}
|
||||
|
||||
if ( !res.IsSame (shape) )
|
||||
{
|
||||
context.Bind (aShapeNoLoc, res.Located (TopLoc_Location()));
|
||||
locModified = Standard_True;
|
||||
}
|
||||
res.Location ( L, Standard_False );
|
||||
B.Add ( C, res );
|
||||
|
||||
B.Add (C, res);
|
||||
}
|
||||
|
||||
if ( !aPS.More() )
|
||||
@@ -85,9 +157,16 @@ TopoDS_Shape ShapeCustom::ApplyModifier (const TopoDS_Shape &S,
|
||||
return S;
|
||||
}
|
||||
|
||||
if ( ! locModified ) return S;
|
||||
if ( !locModified )
|
||||
{
|
||||
return S;
|
||||
}
|
||||
|
||||
context.Bind ( SF, C );
|
||||
return C.Oriented ( S.Orientation() );
|
||||
|
||||
C.Orientation (S.Orientation());
|
||||
C.Location (S.Location(), Standard_False);
|
||||
return C;
|
||||
}
|
||||
|
||||
Message_ProgressScope aPS(theProgress, "Modify the Shape", 1);
|
||||
@@ -98,26 +177,7 @@ TopoDS_Shape ShapeCustom::ApplyModifier (const TopoDS_Shape &S,
|
||||
if ( !aPS.More() || !MD.IsDone() ) return S;
|
||||
if ( !aReShape.IsNull() )
|
||||
{
|
||||
for(TopoDS_Iterator theIterator(SF,Standard_False);theIterator.More();theIterator.Next())
|
||||
{
|
||||
const TopoDS_Shape & current = theIterator.Value();
|
||||
TopoDS_Shape result;
|
||||
try
|
||||
{
|
||||
OCC_CATCH_SIGNALS
|
||||
result = MD.ModifiedShape( current );
|
||||
}
|
||||
catch (Standard_NoSuchObject const&)
|
||||
{
|
||||
// the sub shape isn't in the map
|
||||
result.Nullify();
|
||||
}
|
||||
|
||||
if (!result.IsNull() && !current.IsSame(result))
|
||||
{
|
||||
aReShape->Replace(current, result);
|
||||
}
|
||||
}
|
||||
UpdateShapeBuild ( SF, MD, aReShape );
|
||||
}
|
||||
|
||||
return MD.ModifiedShape(SF).Oriented(S.Orientation());
|
||||
|
@@ -241,11 +241,9 @@ void XCAFDoc_LayerTool::SetLayer(const TDF_Label& L,
|
||||
Handle(XCAFDoc_GraphNode) FGNode;
|
||||
Handle(XCAFDoc_GraphNode) ChGNode;
|
||||
if (! LayerL.FindAttribute( XCAFDoc::LayerRefGUID(), FGNode) ) {
|
||||
FGNode = new XCAFDoc_GraphNode;
|
||||
FGNode = XCAFDoc_GraphNode::Set(LayerL);
|
||||
}
|
||||
if (! L.FindAttribute( XCAFDoc::LayerRefGUID(), ChGNode) ) {
|
||||
ChGNode = new XCAFDoc_GraphNode;
|
||||
ChGNode = XCAFDoc_GraphNode::Set(L);
|
||||
}
|
||||
FGNode->SetGraphID( XCAFDoc::LayerRefGUID() );
|
||||
|
26
tests/bugs/modalg_8/bug33648
Normal file
26
tests/bugs/modalg_8/bug33648
Normal file
@@ -0,0 +1,26 @@
|
||||
puts "==================================================="
|
||||
puts "0033648: Modeling Algorithms - Bad partition result"
|
||||
puts "==================================================="
|
||||
puts ""
|
||||
|
||||
pload MODELING
|
||||
restore [locate_data_file bug33648_1.brep] s1
|
||||
restore [locate_data_file bug33648_2.brep] s2
|
||||
|
||||
baddobjects s1 s2
|
||||
bfillds
|
||||
bbuild result
|
||||
|
||||
checkprops result -s 87.2813
|
||||
checknbshapes result -vertex 58 -edge 97 -wire 44 -face 44 -shell 4 -solid 4 -compsolid 0 -compound 2 -shape 253
|
||||
|
||||
set expected_MaxTolerance 0.05
|
||||
regexp {Tolerance +MAX=([-0-9.+eE]+)} [tolerance result] full MaxTolerance
|
||||
if { $MaxTolerance > $expected_MaxTolerance } {
|
||||
puts "Error : too big tolerance for the shape (should be less than $expected_MaxTolerance, now $MaxTolerance)"
|
||||
}
|
||||
|
||||
vinit
|
||||
vdisplay result
|
||||
vfit
|
||||
checkview -screenshot -3d -path ${imagedir}/${test_image}.png
|
Reference in New Issue
Block a user