Fix boolean operations (#17119)
* add BRepAlgoAPI wrapper files to CMakeList * introduce wrapper for BRepAlgoAPI_BooleanOperation and derivatives, set sensible default Fuzzyness for boolean operations * allow default fuzzyness to be set in settings - including off * backwards compatibility with OCCT 7.3.3 - removed newer paramateres from wrapper * added missing header * reverted src/Mod/Part/App/OpenCascadeAll.h to original state * implement some changes suggested by @wwmayer * removed unneeded destructor definitions * moved getDefaultFuzzyValue into its own helper class * removed unneeded references to base class default constructor * default to SetRunParallel(Standard_True) as suggested by @FlachyJoe * fixed license header as requested * Added new method to autocalculate fuzzyness to BooleanOperation base class and use it for those parts that do not call the obsolete constructor but also do not set precision * implemented static variable solution as suggested by @wwmayer * added helix for test case * Refactoring FCRepAlgoAPI to FCBRepAlgoAPI * Added Test Case (fuse cylinder with helix with different working and non-working Fuzzy values) * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * increased default value of FuzzyBoolean and made tests more robust for compatibility with OCCT 7.3 * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * fixes for FREECAD_USE_PCH - allow testing of FREECAD_USE_PCH on linux with cmake switch (default OFF) * removed surplus line - wasn't needed after all * included precompiled as instructed * set anti-corruption flag in boolean operations, ensures source shape is not damaged in OCCT 7.1 and higher * fix #17085 * disable subtests that were too specific for now * fixed all CLI tests - see comments in Pull Request https://github.com/FreeCAD/FreeCAD/pull/17119#issuecomment-2420772452 * Update src/Mod/PartDesign/PartDesignTests/TestTopologicalNamingProblem.py suggested updated test by CalligaroV Co-authored-by: Vincenzo Calligaro <[email protected]> * Update tests/src/Mod/Part/App/TopoShapeExpansion.cpp suggested updated test by CalligaroV Co-authored-by: Vincenzo Calligaro <[email protected]> * Update tests/src/Mod/Part/App/TopoShapeExpansion.cpp suggested updated test by CalligaroV Co-authored-by: Vincenzo Calligaro <[email protected]> * Update tests/src/Mod/Part/App/TopoShapeExpansion.cpp suggested updated test by CalligaroV Co-authored-by: Vincenzo Calligaro <[email protected]> * Update tests/src/Mod/Part/App/TopoShapeExpansion.cpp suggested updated test by CalligaroV Co-authored-by: Vincenzo Calligaro <[email protected]> * Update tests/src/Mod/Part/App/TopoShapeExpansion.cpp suggested updated test by CalligaroV Co-authored-by: Vincenzo Calligaro <[email protected]> * Update tests/src/Mod/Part/App/TopoShapeExpansion.cpp suggested updated test by CalligaroV Co-authored-by: Vincenzo Calligaro <[email protected]> * Update tests/src/Mod/Part/App/TopoShapeExpansion.cpp suggested updated test by CalligaroV Co-authored-by: Vincenzo Calligaro <[email protected]> * Update tests/src/Mod/Part/App/TopoShapeExpansion.cpp suggested updated test by CalligaroV Co-authored-by: Vincenzo Calligaro <[email protected]> * Update tests/src/Mod/Part/App/TopoShapeExpansion.cpp suggested updated test by CalligaroV Co-authored-by: Vincenzo Calligaro <[email protected]> * Update tests/src/Mod/Part/App/TopoShapeExpansion.cpp suggested updated test by CalligaroV Co-authored-by: Vincenzo Calligaro <[email protected]> * Update tests/src/Mod/Part/App/TopoShapeExpansion.cpp suggested updated test by CalligaroV Co-authored-by: Vincenzo Calligaro <[email protected]> * Update tests/src/Mod/Part/App/TopoShapeExpansion.cpp suggested updated test by CalligaroV Co-authored-by: Vincenzo Calligaro <[email protected]> * Update tests/src/Mod/Part/App/TopoShapeExpansion.cpp suggested updated test by CalligaroV Co-authored-by: Vincenzo Calligaro <[email protected]> * Update tests/src/Mod/Part/App/TopoShapeExpansion.cpp Co-authored-by: Vincenzo Calligaro <[email protected]> * remove surplus tests from github suggestion interface bug * hide the BooleanFuzzy variable - can now be only set by manually editing the config file i in FCParamGroup "Boolean" <FCFloat Name="BooleanFuzzy" Value="10.000000000000"/> * Suggestion by @FlachyJoe - add validity checks to the base and tool shape in any direct boolean op --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Vincenzo Calligaro <[email protected]>
This commit is contained in:
co-authored by
pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Vincenzo Calligaro
parent
5979ebd6f8
commit
cf8ad66373
@@ -186,7 +186,7 @@
|
||||
|
||||
#include <OCAF/ImportExportSettings.h>
|
||||
#include "MeasureClient.h"
|
||||
|
||||
#include <FuzzyHelper.h>
|
||||
|
||||
namespace Part {
|
||||
extern PyObject* initModule();
|
||||
@@ -562,6 +562,11 @@ PyMOD_INIT_FUNC(Part)
|
||||
|
||||
OCAF::ImportExportSettings::initialize();
|
||||
Part::MeasureClient::initialize();
|
||||
|
||||
Base::Reference<ParameterGrp> hGrp = App::GetApplication().GetUserParameter()
|
||||
.GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/Part/Boolean");
|
||||
|
||||
Part::FuzzyHelper::setBooleanFuzzy(hGrp->GetFloat("BooleanFuzzy",10.0));
|
||||
|
||||
PyMOD_Return(partModule);
|
||||
}
|
||||
|
||||
@@ -234,6 +234,20 @@ SET(Properties_SRCS
|
||||
)
|
||||
SOURCE_GROUP("Properties" FILES ${Properties_SRCS})
|
||||
|
||||
SET(FCBRepAlgoAPI_SRCS
|
||||
FCBRepAlgoAPI_BooleanOperation.cpp
|
||||
FCBRepAlgoAPI_BooleanOperation.h
|
||||
FCBRepAlgoAPI_Common.cpp
|
||||
FCBRepAlgoAPI_Common.h
|
||||
FCBRepAlgoAPI_Fuse.cpp
|
||||
FCBRepAlgoAPI_Fuse.h
|
||||
FCBRepAlgoAPI_Cut.cpp
|
||||
FCBRepAlgoAPI_Cut.h
|
||||
FCBRepAlgoAPI_Section.cpp
|
||||
FCBRepAlgoAPI_Section.h
|
||||
)
|
||||
SOURCE_GROUP("FCBRepAlgoAPI-wrapper" FILES ${FCBRepAlgoAPI_SRCS})
|
||||
|
||||
SET(Python_SRCS
|
||||
ArcPy.xml
|
||||
ArcPyImp.cpp
|
||||
@@ -515,6 +529,8 @@ SET(Part_SRCS
|
||||
CrossSection.h
|
||||
ExtrusionHelper.cpp
|
||||
ExtrusionHelper.h
|
||||
FuzzyHelper.cpp
|
||||
FuzzyHelper.h
|
||||
GeometryExtension.cpp
|
||||
GeometryExtension.h
|
||||
GeometryDefaultExtension.cpp
|
||||
@@ -580,7 +596,7 @@ if(EIGEN3_NO_DEPRECATED_COPY)
|
||||
PROPERTIES COMPILE_FLAGS ${EIGEN3_NO_DEPRECATED_COPY})
|
||||
endif()
|
||||
|
||||
add_library(Part SHARED ${Part_SRCS})
|
||||
add_library(Part SHARED ${Part_SRCS} ${FCBRepAlgoAPI_SRCS})
|
||||
target_link_libraries(Part ${Part_LIBS})
|
||||
if (FREECAD_WARN_ERROR)
|
||||
target_compile_warn_error(Part)
|
||||
|
||||
@@ -24,9 +24,9 @@
|
||||
#ifndef _PreComp_
|
||||
# include <algorithm>
|
||||
# include <BRepAdaptor_Surface.hxx>
|
||||
# include <BRepAlgoAPI_Common.hxx>
|
||||
# include <BRepAlgoAPI_Cut.hxx>
|
||||
# include <BRepAlgoAPI_Section.hxx>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Common.h>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Cut.h>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Section.h>
|
||||
# include <BRepBuilderAPI_MakeFace.hxx>
|
||||
# include <BRepBuilderAPI_MakeWire.hxx>
|
||||
# include <BRepPrimAPI_MakeHalfSpace.hxx>
|
||||
@@ -109,7 +109,7 @@ std::list<TopoDS_Wire> CrossSection::removeDuplicates(const std::list<TopoDS_Wir
|
||||
|
||||
void CrossSection::sliceNonSolid(double d, const TopoDS_Shape& shape, std::list<TopoDS_Wire>& wires) const
|
||||
{
|
||||
BRepAlgoAPI_Section cs(shape, gp_Pln(a,b,c,-d));
|
||||
FCBRepAlgoAPI_Section cs(shape, gp_Pln(a,b,c,-d));
|
||||
if (cs.IsDone()) {
|
||||
std::list<TopoDS_Edge> edges;
|
||||
TopExp_Explorer xp;
|
||||
@@ -134,7 +134,7 @@ void CrossSection::sliceSolid(double d, const TopoDS_Shape& shape, std::list<Top
|
||||
|
||||
BRepPrimAPI_MakeHalfSpace mkSolid(face, refPoint);
|
||||
TopoDS_Solid solid = mkSolid.Solid();
|
||||
BRepAlgoAPI_Cut mkCut(shape, solid);
|
||||
FCBRepAlgoAPI_Cut mkCut(shape, solid);
|
||||
|
||||
if (mkCut.IsDone()) {
|
||||
TopTools_IndexedMapOfShape mapOfFaces;
|
||||
@@ -262,7 +262,7 @@ void TopoCrossSection::sliceNonSolid(int idx,
|
||||
const TopoShape& shape,
|
||||
std::vector<TopoShape>& wires) const
|
||||
{
|
||||
BRepAlgoAPI_Section cs(shape.getShape(), gp_Pln(a, b, c, -d));
|
||||
FCBRepAlgoAPI_Section cs(shape.getShape(), gp_Pln(a, b, c, -d));
|
||||
if (cs.IsDone()) {
|
||||
std::string prefix(op);
|
||||
prefix += Data::indexSuffix(idx);
|
||||
@@ -296,7 +296,7 @@ void TopoCrossSection::sliceSolid(int idx,
|
||||
std::string prefix(op);
|
||||
prefix += Data::indexSuffix(idx);
|
||||
solid.makeElementShape(mkSolid, face, prefix.c_str());
|
||||
BRepAlgoAPI_Cut mkCut(shape.getShape(), solid.getShape());
|
||||
FCBRepAlgoAPI_Cut mkCut(shape.getShape(), solid.getShape());
|
||||
|
||||
if (mkCut.IsDone()) {
|
||||
TopoShape res(shape.Tag, shape.Hasher);
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
#include "PreCompiled.h"
|
||||
#ifndef _PreComp_
|
||||
# include <BRepAlgoAPI_Cut.hxx>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Cut.h>
|
||||
# include <BRepBuilderAPI_MakeFace.hxx>
|
||||
# include <BRepBuilderAPI_MakeWire.hxx>
|
||||
# include <BRepBuilderAPI_Sewing.hxx>
|
||||
@@ -266,7 +266,7 @@ void ExtrusionHelper::makeDraft(const TopoDS_Shape& shape,
|
||||
// get MomentOfInertia of first shape
|
||||
BRepGProp::VolumeProperties(*itOuter, tempProperties);
|
||||
momentOfInertiaInitial = tempProperties.MomentOfInertia(gp_Ax1(gp_Pnt(), direction));
|
||||
BRepAlgoAPI_Cut mkCut(*itOuter, *itInner);
|
||||
FCBRepAlgoAPI_Cut mkCut(*itOuter, *itInner);
|
||||
if (!mkCut.IsDone())
|
||||
Standard_Failure::Raise("Extrusion: Final cut out failed");
|
||||
BRepGProp::VolumeProperties(mkCut.Shape(), tempProperties);
|
||||
@@ -346,7 +346,7 @@ void ExtrusionHelper::checkInnerWires(std::vector<bool>& isInnerWire, const gp_D
|
||||
// get MomentOfInertia of first shape
|
||||
BRepGProp::VolumeProperties(*itInner, tempProperties);
|
||||
momentOfInertiaInitial = tempProperties.MomentOfInertia(gp_Ax1(gp_Pnt(), direction));
|
||||
BRepAlgoAPI_Cut mkCut(*itInner, *itOuter);
|
||||
FCBRepAlgoAPI_Cut mkCut(*itInner, *itOuter);
|
||||
if (!mkCut.IsDone())
|
||||
Standard_Failure::Raise("Extrusion: Cut out failed");
|
||||
BRepGProp::VolumeProperties(mkCut.Shape(), tempProperties);
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
// SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2024 Eric Price (CorvusCorax) *
|
||||
* <eric.price[at]tuebingen.mpg.de> *
|
||||
* *
|
||||
* This file is part of FreeCAD. *
|
||||
* *
|
||||
* FreeCAD is free software: you can redistribute it and/or modify it *
|
||||
* under the terms of the GNU Lesser General Public License as *
|
||||
* published by the Free Software Foundation, either version 2.1 of the *
|
||||
* License, or (at your option) any later version. *
|
||||
* *
|
||||
* FreeCAD is distributed in the hope that it will be useful, but *
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
|
||||
* Lesser General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU Lesser General Public *
|
||||
* License along with FreeCAD. If not, see *
|
||||
* <https://www.gnu.org/licenses/>. *
|
||||
* *
|
||||
**************************************************************************/
|
||||
|
||||
/**
|
||||
* FCBRepAlgoAPI provides a wrapper for various OCCT functions.
|
||||
*/
|
||||
|
||||
#include <FCBRepAlgoAPI_BooleanOperation.h>
|
||||
#include <BRepBndLib.hxx>
|
||||
#include <Bnd_Box.hxx>
|
||||
#include <BRepCheck_Analyzer.hxx>
|
||||
#include <TopoDS_Shape.hxx>
|
||||
#include <Precision.hxx>
|
||||
#include <FuzzyHelper.h>
|
||||
|
||||
FCBRepAlgoAPI_BooleanOperation::FCBRepAlgoAPI_BooleanOperation()
|
||||
{
|
||||
SetRunParallel(Standard_True);
|
||||
SetNonDestructive(Standard_True);
|
||||
}
|
||||
|
||||
|
||||
FCBRepAlgoAPI_BooleanOperation::FCBRepAlgoAPI_BooleanOperation(const TopoDS_Shape& theS1,
|
||||
const TopoDS_Shape& theS2,
|
||||
const BOPAlgo_Operation theOperation)
|
||||
: BRepAlgoAPI_BooleanOperation(theS1, theS2, theOperation)
|
||||
{
|
||||
if (!BRepCheck_Analyzer(theS1).IsValid()){
|
||||
Standard_ConstructionError::Raise("Base shape is not valid for boolean operation");
|
||||
}
|
||||
if (! BRepCheck_Analyzer(theS2).IsValid()){
|
||||
Standard_ConstructionError::Raise("Tool shape is not valid for boolean operation");
|
||||
}
|
||||
setAutoFuzzy();
|
||||
SetRunParallel(Standard_True);
|
||||
SetNonDestructive(Standard_True);
|
||||
}
|
||||
|
||||
void FCBRepAlgoAPI_BooleanOperation::setAutoFuzzy()
|
||||
{
|
||||
FCBRepAlgoAPIHelper::setAutoFuzzy(this);
|
||||
}
|
||||
|
||||
|
||||
void FCBRepAlgoAPIHelper::setAutoFuzzy(BRepAlgoAPI_BooleanOperation* op) {
|
||||
Bnd_Box bounds;
|
||||
for (TopTools_ListOfShape::Iterator it(op->Arguments()); it.More(); it.Next())
|
||||
BRepBndLib::Add(it.Value(), bounds);
|
||||
for (TopTools_ListOfShape::Iterator it(op->Tools()); it.More(); it.Next())
|
||||
BRepBndLib::Add(it.Value(), bounds);
|
||||
op->SetFuzzyValue(Part::FuzzyHelper::getBooleanFuzzy() * sqrt(bounds.SquareExtent()) * Precision::Confusion());
|
||||
}
|
||||
|
||||
void FCBRepAlgoAPIHelper::setAutoFuzzy(BRepAlgoAPI_BuilderAlgo* op) {
|
||||
Bnd_Box bounds;
|
||||
for (TopTools_ListOfShape::Iterator it(op->Arguments()); it.More(); it.Next())
|
||||
BRepBndLib::Add(it.Value(), bounds);
|
||||
op->SetFuzzyValue(Part::FuzzyHelper::getBooleanFuzzy() * sqrt(bounds.SquareExtent()) * Precision::Confusion());
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
// SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2024 Eric Price (CorvusCorax) *
|
||||
* <eric.price[at]tuebingen.mpg.de> *
|
||||
* *
|
||||
* This file is part of FreeCAD. *
|
||||
* *
|
||||
* FreeCAD is free software: you can redistribute it and/or modify it *
|
||||
* under the terms of the GNU Lesser General Public License as *
|
||||
* published by the Free Software Foundation, either version 2.1 of the *
|
||||
* License, or (at your option) any later version. *
|
||||
* *
|
||||
* FreeCAD is distributed in the hope that it will be useful, but *
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
|
||||
* Lesser General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU Lesser General Public *
|
||||
* License along with FreeCAD. If not, see *
|
||||
* <https://www.gnu.org/licenses/>. *
|
||||
* *
|
||||
**************************************************************************/
|
||||
|
||||
/**
|
||||
* FCBRepAlgoAPI provides a wrapper for various OCCT functions.
|
||||
*/
|
||||
|
||||
#ifndef FCREPALGOAPIBOOLEANOPERATION_H
|
||||
#define FCREPALGOAPIBOOLEANOPERATION_H
|
||||
#include <BRepAlgoAPI_BooleanOperation.hxx>
|
||||
|
||||
class FCBRepAlgoAPIHelper
|
||||
{
|
||||
public:
|
||||
static void setAutoFuzzy(BRepAlgoAPI_BooleanOperation* op);
|
||||
static void setAutoFuzzy(BRepAlgoAPI_BuilderAlgo* op);
|
||||
};
|
||||
|
||||
class FCBRepAlgoAPI_BooleanOperation : public BRepAlgoAPI_BooleanOperation
|
||||
{
|
||||
public:
|
||||
|
||||
DEFINE_STANDARD_ALLOC
|
||||
|
||||
//! Empty constructor
|
||||
Standard_EXPORT FCBRepAlgoAPI_BooleanOperation();
|
||||
|
||||
// set fuzzyness based on size
|
||||
void setAutoFuzzy();
|
||||
|
||||
protected: //! @name Constructors
|
||||
|
||||
//! Constructor to perform Boolean operation on only two arguments.
|
||||
//! Obsolete
|
||||
Standard_EXPORT FCBRepAlgoAPI_BooleanOperation(const TopoDS_Shape& theS1,
|
||||
const TopoDS_Shape& theS2,
|
||||
const BOPAlgo_Operation theOperation);
|
||||
|
||||
};
|
||||
#endif
|
||||
@@ -0,0 +1,42 @@
|
||||
// SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2024 Eric Price (CorvusCorax) *
|
||||
* <eric.price[at]tuebingen.mpg.de> *
|
||||
* *
|
||||
* This file is part of FreeCAD. *
|
||||
* *
|
||||
* FreeCAD is free software: you can redistribute it and/or modify it *
|
||||
* under the terms of the GNU Lesser General Public License as *
|
||||
* published by the Free Software Foundation, either version 2.1 of the *
|
||||
* License, or (at your option) any later version. *
|
||||
* *
|
||||
* FreeCAD is distributed in the hope that it will be useful, but *
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
|
||||
* Lesser General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU Lesser General Public *
|
||||
* License along with FreeCAD. If not, see *
|
||||
* <https://www.gnu.org/licenses/>. *
|
||||
* *
|
||||
**************************************************************************/
|
||||
|
||||
/**
|
||||
* FCBRepAlgoAPI provides a wrapper for various OCCT functions.
|
||||
*/
|
||||
|
||||
#include <FCBRepAlgoAPI_Common.h>
|
||||
#include <TopoDS_Shape.hxx>
|
||||
|
||||
FCBRepAlgoAPI_Common::FCBRepAlgoAPI_Common()
|
||||
{
|
||||
myOperation=BOPAlgo_COMMON;
|
||||
}
|
||||
|
||||
FCBRepAlgoAPI_Common::FCBRepAlgoAPI_Common(const TopoDS_Shape& S1,
|
||||
const TopoDS_Shape& S2)
|
||||
: FCBRepAlgoAPI_BooleanOperation(S1, S2, BOPAlgo_COMMON)
|
||||
{
|
||||
Build();
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
// SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2024 Eric Price (CorvusCorax) *
|
||||
* <eric.price[at]tuebingen.mpg.de> *
|
||||
* *
|
||||
* This file is part of FreeCAD. *
|
||||
* *
|
||||
* FreeCAD is free software: you can redistribute it and/or modify it *
|
||||
* under the terms of the GNU Lesser General Public License as *
|
||||
* published by the Free Software Foundation, either version 2.1 of the *
|
||||
* License, or (at your option) any later version. *
|
||||
* *
|
||||
* FreeCAD is distributed in the hope that it will be useful, but *
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
|
||||
* Lesser General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU Lesser General Public *
|
||||
* License along with FreeCAD. If not, see *
|
||||
* <https://www.gnu.org/licenses/>. *
|
||||
* *
|
||||
**************************************************************************/
|
||||
|
||||
/**
|
||||
* FCBRepAlgoAPI provides a wrapper for various OCCT functions.
|
||||
*/
|
||||
|
||||
#ifndef FCREPALGOAPICOMMON_H
|
||||
#define FCREPALGOAPICOMMON_H
|
||||
#include <BRepAlgoAPI_Common.hxx>
|
||||
#include <Mod/Part/App/FCBRepAlgoAPI_BooleanOperation.h>
|
||||
|
||||
|
||||
class FCBRepAlgoAPI_Common : public FCBRepAlgoAPI_BooleanOperation
|
||||
{
|
||||
public:
|
||||
|
||||
DEFINE_STANDARD_ALLOC
|
||||
|
||||
//! Empty constructor
|
||||
Standard_EXPORT FCBRepAlgoAPI_Common();
|
||||
|
||||
//! Constructor with two shapes
|
||||
//! <S1> -argument
|
||||
//! <S2> -tool
|
||||
//! <anOperation> - the type of the operation
|
||||
Standard_EXPORT FCBRepAlgoAPI_Common(const TopoDS_Shape& S1,
|
||||
const TopoDS_Shape& S2);
|
||||
|
||||
};
|
||||
#endif
|
||||
@@ -0,0 +1,42 @@
|
||||
// SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2024 Eric Price (CorvusCorax) *
|
||||
* <eric.price[at]tuebingen.mpg.de> *
|
||||
* *
|
||||
* This file is part of FreeCAD. *
|
||||
* *
|
||||
* FreeCAD is free software: you can redistribute it and/or modify it *
|
||||
* under the terms of the GNU Lesser General Public License as *
|
||||
* published by the Free Software Foundation, either version 2.1 of the *
|
||||
* License, or (at your option) any later version. *
|
||||
* *
|
||||
* FreeCAD is distributed in the hope that it will be useful, but *
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
|
||||
* Lesser General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU Lesser General Public *
|
||||
* License along with FreeCAD. If not, see *
|
||||
* <https://www.gnu.org/licenses/>. *
|
||||
* *
|
||||
**************************************************************************/
|
||||
|
||||
/**
|
||||
* FCBRepAlgoAPI provides a wrapper for various OCCT functions.
|
||||
*/
|
||||
|
||||
#include <FCBRepAlgoAPI_Cut.h>
|
||||
#include <TopoDS_Shape.hxx>
|
||||
|
||||
FCBRepAlgoAPI_Cut::FCBRepAlgoAPI_Cut()
|
||||
{
|
||||
myOperation=BOPAlgo_CUT;
|
||||
}
|
||||
|
||||
FCBRepAlgoAPI_Cut::FCBRepAlgoAPI_Cut(const TopoDS_Shape& S1,
|
||||
const TopoDS_Shape& S2)
|
||||
: FCBRepAlgoAPI_BooleanOperation(S1, S2, BOPAlgo_CUT)
|
||||
{
|
||||
Build();
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
// SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2024 Eric Price (CorvusCorax) *
|
||||
* <eric.price[at]tuebingen.mpg.de> *
|
||||
* *
|
||||
* This file is part of FreeCAD. *
|
||||
* *
|
||||
* FreeCAD is free software: you can redistribute it and/or modify it *
|
||||
* under the terms of the GNU Lesser General Public License as *
|
||||
* published by the Free Software Foundation, either version 2.1 of the *
|
||||
* License, or (at your option) any later version. *
|
||||
* *
|
||||
* FreeCAD is distributed in the hope that it will be useful, but *
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
|
||||
* Lesser General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU Lesser General Public *
|
||||
* License along with FreeCAD. If not, see *
|
||||
* <https://www.gnu.org/licenses/>. *
|
||||
* *
|
||||
**************************************************************************/
|
||||
|
||||
/**
|
||||
* FCBRepAlgoAPI provides a wrapper for various OCCT functions.
|
||||
*/
|
||||
|
||||
#ifndef FCREPALGOAPICUT_H
|
||||
#define FCREPALGOAPICUT_H
|
||||
#include <BRepAlgoAPI_Cut.hxx>
|
||||
#include <Mod/Part/App/FCBRepAlgoAPI_BooleanOperation.h>
|
||||
|
||||
|
||||
class FCBRepAlgoAPI_Cut : public FCBRepAlgoAPI_BooleanOperation
|
||||
{
|
||||
public:
|
||||
|
||||
DEFINE_STANDARD_ALLOC
|
||||
|
||||
//! Empty constructor
|
||||
Standard_EXPORT FCBRepAlgoAPI_Cut();
|
||||
|
||||
//! Constructor with two shapes
|
||||
//! <S1> -argument
|
||||
//! <S2> -tool
|
||||
//! <anOperation> - the type of the operation
|
||||
Standard_EXPORT FCBRepAlgoAPI_Cut(const TopoDS_Shape& S1,
|
||||
const TopoDS_Shape& S2);
|
||||
|
||||
};
|
||||
#endif
|
||||
@@ -0,0 +1,42 @@
|
||||
// SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2024 Eric Price (CorvusCorax) *
|
||||
* <eric.price[at]tuebingen.mpg.de> *
|
||||
* *
|
||||
* This file is part of FreeCAD. *
|
||||
* *
|
||||
* FreeCAD is free software: you can redistribute it and/or modify it *
|
||||
* under the terms of the GNU Lesser General Public License as *
|
||||
* published by the Free Software Foundation, either version 2.1 of the *
|
||||
* License, or (at your option) any later version. *
|
||||
* *
|
||||
* FreeCAD is distributed in the hope that it will be useful, but *
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
|
||||
* Lesser General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU Lesser General Public *
|
||||
* License along with FreeCAD. If not, see *
|
||||
* <https://www.gnu.org/licenses/>. *
|
||||
* *
|
||||
**************************************************************************/
|
||||
|
||||
/**
|
||||
* FCBRepAlgoAPI provides a wrapper for various OCCT functions.
|
||||
*/
|
||||
|
||||
#include <FCBRepAlgoAPI_Fuse.h>
|
||||
#include <TopoDS_Shape.hxx>
|
||||
|
||||
FCBRepAlgoAPI_Fuse::FCBRepAlgoAPI_Fuse()
|
||||
{
|
||||
myOperation=BOPAlgo_FUSE;
|
||||
}
|
||||
|
||||
FCBRepAlgoAPI_Fuse::FCBRepAlgoAPI_Fuse(const TopoDS_Shape& S1,
|
||||
const TopoDS_Shape& S2)
|
||||
: FCBRepAlgoAPI_BooleanOperation(S1, S2, BOPAlgo_FUSE)
|
||||
{
|
||||
Build();
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
// SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2024 Eric Price (CorvusCorax) *
|
||||
* <eric.price[at]tuebingen.mpg.de> *
|
||||
* *
|
||||
* This file is part of FreeCAD. *
|
||||
* *
|
||||
* FreeCAD is free software: you can redistribute it and/or modify it *
|
||||
* under the terms of the GNU Lesser General Public License as *
|
||||
* published by the Free Software Foundation, either version 2.1 of the *
|
||||
* License, or (at your option) any later version. *
|
||||
* *
|
||||
* FreeCAD is distributed in the hope that it will be useful, but *
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
|
||||
* Lesser General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU Lesser General Public *
|
||||
* License along with FreeCAD. If not, see *
|
||||
* <https://www.gnu.org/licenses/>. *
|
||||
* *
|
||||
**************************************************************************/
|
||||
|
||||
/**
|
||||
* FCBRepAlgoAPI provides a wrapper for various OCCT functions.
|
||||
*/
|
||||
|
||||
#ifndef FCREPALGOAPIFUSE_H
|
||||
#define FCREPALGOAPIFUSE_H
|
||||
#include <BRepAlgoAPI_Fuse.hxx>
|
||||
#include <Mod/Part/App/FCBRepAlgoAPI_BooleanOperation.h>
|
||||
|
||||
|
||||
class FCBRepAlgoAPI_Fuse : public FCBRepAlgoAPI_BooleanOperation
|
||||
{
|
||||
public:
|
||||
|
||||
DEFINE_STANDARD_ALLOC
|
||||
|
||||
|
||||
//! Empty constructor
|
||||
Standard_EXPORT FCBRepAlgoAPI_Fuse();
|
||||
|
||||
//! Constructor with two shapes
|
||||
//! <S1> -argument
|
||||
//! <S2> -tool
|
||||
//! <anOperation> - the type of the operation
|
||||
Standard_EXPORT FCBRepAlgoAPI_Fuse(const TopoDS_Shape& S1,
|
||||
const TopoDS_Shape& S2);
|
||||
|
||||
};
|
||||
#endif
|
||||
@@ -0,0 +1,77 @@
|
||||
// SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2024 Eric Price (CorvusCorax) *
|
||||
* <eric.price[at]tuebingen.mpg.de> *
|
||||
* *
|
||||
* This file is part of FreeCAD. *
|
||||
* *
|
||||
* FreeCAD is free software: you can redistribute it and/or modify it *
|
||||
* under the terms of the GNU Lesser General Public License as *
|
||||
* published by the Free Software Foundation, either version 2.1 of the *
|
||||
* License, or (at your option) any later version. *
|
||||
* *
|
||||
* FreeCAD is distributed in the hope that it will be useful, but *
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
|
||||
* Lesser General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU Lesser General Public *
|
||||
* License along with FreeCAD. If not, see *
|
||||
* <https://www.gnu.org/licenses/>. *
|
||||
* *
|
||||
**************************************************************************/
|
||||
|
||||
/**
|
||||
* FCBRepAlgoAPI provides a wrapper for various OCCT functions.
|
||||
*/
|
||||
|
||||
#include <FCBRepAlgoAPI_Section.h>
|
||||
#include <BRepBndLib.hxx>
|
||||
#include <Bnd_Box.hxx>
|
||||
#include <BRepCheck_Analyzer.hxx>
|
||||
#include <TopoDS_Shape.hxx>
|
||||
#include <Precision.hxx>
|
||||
#include <FuzzyHelper.h>
|
||||
|
||||
FCBRepAlgoAPI_Section::FCBRepAlgoAPI_Section()
|
||||
{
|
||||
SetRunParallel(Standard_True);
|
||||
SetNonDestructive(Standard_True);
|
||||
}
|
||||
|
||||
FCBRepAlgoAPI_Section::FCBRepAlgoAPI_Section(const TopoDS_Shape& S1, const TopoDS_Shape& S2, const Standard_Boolean PerformNow)
|
||||
: BRepAlgoAPI_Section(S1,S2,false)
|
||||
{
|
||||
if (!BRepCheck_Analyzer(S1).IsValid()){
|
||||
Standard_ConstructionError::Raise("Base shape is not valid for boolean operation");
|
||||
}
|
||||
if (! BRepCheck_Analyzer(S2).IsValid()){
|
||||
Standard_ConstructionError::Raise("Tool shape is not valid for boolean operation");
|
||||
}
|
||||
setAutoFuzzy();
|
||||
SetRunParallel(Standard_True);
|
||||
SetNonDestructive(Standard_True);
|
||||
if (PerformNow) Build();
|
||||
}
|
||||
|
||||
FCBRepAlgoAPI_Section::FCBRepAlgoAPI_Section
|
||||
(const TopoDS_Shape& Sh,
|
||||
const gp_Pln& Pl,
|
||||
const Standard_Boolean PerformNow)
|
||||
:
|
||||
BRepAlgoAPI_Section(Sh,Pl,false)
|
||||
{
|
||||
if (!BRepCheck_Analyzer(Sh).IsValid()){
|
||||
Standard_ConstructionError::Raise("Base shape is not valid for boolean operation");
|
||||
}
|
||||
setAutoFuzzy();
|
||||
SetRunParallel(Standard_True);
|
||||
if (PerformNow) Build();
|
||||
}
|
||||
|
||||
|
||||
void FCBRepAlgoAPI_Section::setAutoFuzzy()
|
||||
{
|
||||
FCBRepAlgoAPIHelper::setAutoFuzzy(this);
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
// SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2024 Eric Price (CorvusCorax) *
|
||||
* <eric.price[at]tuebingen.mpg.de> *
|
||||
* *
|
||||
* This file is part of FreeCAD. *
|
||||
* *
|
||||
* FreeCAD is free software: you can redistribute it and/or modify it *
|
||||
* under the terms of the GNU Lesser General Public License as *
|
||||
* published by the Free Software Foundation, either version 2.1 of the *
|
||||
* License, or (at your option) any later version. *
|
||||
* *
|
||||
* FreeCAD is distributed in the hope that it will be useful, but *
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
|
||||
* Lesser General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU Lesser General Public *
|
||||
* License along with FreeCAD. If not, see *
|
||||
* <https://www.gnu.org/licenses/>. *
|
||||
* *
|
||||
**************************************************************************/
|
||||
|
||||
/**
|
||||
* FCBRepAlgoAPI provides a wrapper for various OCCT functions.
|
||||
*/
|
||||
|
||||
#ifndef FCREPALGOAPISECTION_H
|
||||
#define FCREPALGOAPISECTION_H
|
||||
#include <BRepAlgoAPI_Section.hxx>
|
||||
#include <BRepBuilderAPI_Command.hxx>
|
||||
#include <Mod/Part/App/FCBRepAlgoAPI_BooleanOperation.h>
|
||||
|
||||
|
||||
class FCBRepAlgoAPI_Section : public BRepAlgoAPI_Section
|
||||
{
|
||||
public:
|
||||
|
||||
DEFINE_STANDARD_ALLOC
|
||||
|
||||
|
||||
//! Empty constructor
|
||||
Standard_EXPORT FCBRepAlgoAPI_Section();
|
||||
|
||||
//! Constructor with two shapes
|
||||
//! <S1> -argument
|
||||
//! <S2> -tool
|
||||
//! <PerformNow> - the flag:
|
||||
//! if <PerformNow>=True - the algorithm is performed immediately
|
||||
//! Obsolete
|
||||
Standard_EXPORT FCBRepAlgoAPI_Section(const TopoDS_Shape& S1, const TopoDS_Shape& S2, const Standard_Boolean PerformNow = Standard_True);
|
||||
|
||||
//! Constructor with two shapes
|
||||
//! <S1> - argument
|
||||
//! <Pl> - tool
|
||||
//! <PerformNow> - the flag:
|
||||
//! if <PerformNow>=True - the algorithm is performed immediately
|
||||
//! Obsolete
|
||||
Standard_EXPORT FCBRepAlgoAPI_Section(const TopoDS_Shape& S1, const gp_Pln& Pl, const Standard_Boolean PerformNow = Standard_True);
|
||||
|
||||
// set fuzzyness based on size
|
||||
void setAutoFuzzy();
|
||||
};
|
||||
#endif
|
||||
@@ -24,7 +24,7 @@
|
||||
#ifndef _PreComp_
|
||||
# include <memory>
|
||||
|
||||
# include <BRepAlgoAPI_BooleanOperation.hxx>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_BooleanOperation.h>
|
||||
# include <BRepCheck_Analyzer.hxx>
|
||||
# include <Standard_Failure.hxx>
|
||||
#endif
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
#include <App/PropertyLinks.h>
|
||||
#include "PartFeature.h"
|
||||
|
||||
class BRepAlgoAPI_BooleanOperation;
|
||||
class FCBRepAlgoAPI_BooleanOperation;
|
||||
|
||||
namespace Part
|
||||
{
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
#include "PreCompiled.h"
|
||||
#ifndef _PreComp_
|
||||
# include <BRepAlgoAPI_Common.hxx>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Common.h>
|
||||
# include <BRepCheck_Analyzer.hxx>
|
||||
# include <Standard_Failure.hxx>
|
||||
# include <TopExp.hxx>
|
||||
@@ -53,7 +53,7 @@ const char *Common::opCode() const
|
||||
BRepAlgoAPI_BooleanOperation* Common::makeOperation(const TopoDS_Shape& base, const TopoDS_Shape& tool) const
|
||||
{
|
||||
// Let's call algorithm computing a section operation:
|
||||
return new BRepAlgoAPI_Common(base, tool);
|
||||
return new FCBRepAlgoAPI_Common(base, tool);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
#include "PreCompiled.h"
|
||||
#ifndef _PreComp_
|
||||
# include <BRepAlgoAPI_Cut.hxx>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Cut.h>
|
||||
#endif
|
||||
|
||||
#include "FeaturePartCut.h"
|
||||
@@ -43,5 +43,5 @@ const char *Cut::opCode() const
|
||||
BRepAlgoAPI_BooleanOperation* Cut::makeOperation(const TopoDS_Shape& base, const TopoDS_Shape& tool) const
|
||||
{
|
||||
// Let's call algorithm computing a cut operation:
|
||||
return new BRepAlgoAPI_Cut(base, tool);
|
||||
return new FCBRepAlgoAPI_Cut(base, tool);
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
#include "PreCompiled.h"
|
||||
#ifndef _PreComp_
|
||||
# include <BRepAlgoAPI_Fuse.hxx>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Fuse.h>
|
||||
# include <BRepCheck_Analyzer.hxx>
|
||||
# include <Standard_Failure.hxx>
|
||||
# include <TopoDS_Iterator.hxx>
|
||||
@@ -51,7 +51,7 @@ Fuse::Fuse() = default;
|
||||
BRepAlgoAPI_BooleanOperation* Fuse::makeOperation(const TopoDS_Shape& base, const TopoDS_Shape& tool) const
|
||||
{
|
||||
// Let's call algorithm computing a fuse operation:
|
||||
return new BRepAlgoAPI_Fuse(base, tool);
|
||||
return new FCBRepAlgoAPI_Fuse(base, tool);
|
||||
}
|
||||
|
||||
const char *Fuse::opCode() const
|
||||
@@ -114,7 +114,7 @@ App::DocumentObjectExecReturn *MultiFuse::execute()
|
||||
if (shapes.size() >= 2) {
|
||||
try {
|
||||
std::vector<ShapeHistory> history;
|
||||
BRepAlgoAPI_Fuse mkFuse;
|
||||
FCBRepAlgoAPI_Fuse mkFuse;
|
||||
TopTools_ListOfShape shapeArguments, shapeTools;
|
||||
const TopoShape& shape = shapes.front();
|
||||
if (shape.isNull()) {
|
||||
@@ -131,6 +131,7 @@ App::DocumentObjectExecReturn *MultiFuse::execute()
|
||||
|
||||
mkFuse.SetArguments(shapeArguments);
|
||||
mkFuse.SetTools(shapeTools);
|
||||
mkFuse.setAutoFuzzy();
|
||||
mkFuse.Build();
|
||||
|
||||
if (!mkFuse.IsDone()) {
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
#include "PreCompiled.h"
|
||||
#ifndef _PreComp_
|
||||
# include <BRepAlgoAPI_Section.hxx>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Section.h>
|
||||
# include <Standard_Version.hxx>
|
||||
#endif
|
||||
|
||||
@@ -57,10 +57,11 @@ BRepAlgoAPI_BooleanOperation* Section::makeOperation(const TopoDS_Shape& base, c
|
||||
// Let's call algorithm computing a section operation:
|
||||
|
||||
bool approx = Approximation.getValue();
|
||||
std::unique_ptr<BRepAlgoAPI_Section> mkSection(new BRepAlgoAPI_Section());
|
||||
std::unique_ptr<FCBRepAlgoAPI_Section> mkSection(new FCBRepAlgoAPI_Section());
|
||||
mkSection->Init1(base);
|
||||
mkSection->Init2(tool);
|
||||
mkSection->Approximation(approx);
|
||||
mkSection->setAutoFuzzy();
|
||||
mkSection->Build();
|
||||
if (!mkSection->IsDone())
|
||||
throw Base::RuntimeError("Section failed");
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
// SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2024 Eric Price (CorvusCorax) *
|
||||
* <eric.price[at]tuebingen.mpg.de> *
|
||||
* *
|
||||
* This file is part of FreeCAD. *
|
||||
* *
|
||||
* FreeCAD is free software: you can redistribute it and/or modify it *
|
||||
* under the terms of the GNU Lesser General Public License as *
|
||||
* published by the Free Software Foundation, either version 2.1 of the *
|
||||
* License, or (at your option) any later version. *
|
||||
* *
|
||||
* FreeCAD is distributed in the hope that it will be useful, but *
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
|
||||
* Lesser General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU Lesser General Public *
|
||||
* License along with FreeCAD. If not, see *
|
||||
* <https://www.gnu.org/licenses/>. *
|
||||
* *
|
||||
**************************************************************************/
|
||||
|
||||
#include "PreCompiled.h"
|
||||
#include <FuzzyHelper.h>
|
||||
|
||||
using namespace Part;
|
||||
|
||||
double FuzzyHelper::BooleanFuzzy = 1.0;
|
||||
|
||||
double FuzzyHelper::getBooleanFuzzy() {
|
||||
return BooleanFuzzy;
|
||||
}
|
||||
void FuzzyHelper::setBooleanFuzzy(const double fuzzy) {
|
||||
BooleanFuzzy = fuzzy;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
// SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2024 Eric Price (CorvusCorax) *
|
||||
* <eric.price[at]tuebingen.mpg.de> *
|
||||
* *
|
||||
* This file is part of FreeCAD. *
|
||||
* *
|
||||
* FreeCAD is free software: you can redistribute it and/or modify it *
|
||||
* under the terms of the GNU Lesser General Public License as *
|
||||
* published by the Free Software Foundation, either version 2.1 of the *
|
||||
* License, or (at your option) any later version. *
|
||||
* *
|
||||
* FreeCAD is distributed in the hope that it will be useful, but *
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
|
||||
* Lesser General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU Lesser General Public *
|
||||
* License along with FreeCAD. If not, see *
|
||||
* <https://www.gnu.org/licenses/>. *
|
||||
* *
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef PART_FUZZYHELPER_H
|
||||
#define PART_FUZZYHELPER_H
|
||||
|
||||
#include <Mod/Part/PartGlobal.h>
|
||||
|
||||
namespace Part
|
||||
{
|
||||
|
||||
/**
|
||||
* @brief The FuzzyHelper class provides a static helper function to determine fuzzy value for a boolean operation
|
||||
*/
|
||||
class PartExport FuzzyHelper
|
||||
{
|
||||
public:
|
||||
static double getBooleanFuzzy();
|
||||
static void setBooleanFuzzy(const double base);
|
||||
private:
|
||||
static double BooleanFuzzy;
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
||||
#endif // PART_FUZZYHELPER_H
|
||||
@@ -115,12 +115,17 @@
|
||||
|
||||
#include <BRepAlgo.hxx>
|
||||
#include <BRepAlgo_NormalProjection.hxx>
|
||||
#include <BRepAlgoAPI_BooleanOperation.hxx>
|
||||
#include <BRepAlgoAPI_Common.hxx>
|
||||
#include <BRepAlgoAPI_Cut.hxx>
|
||||
//#include <BRepAlgoAPI_BooleanOperation.hxx>
|
||||
#include <Mod/Part/App/FCBRepAlgoAPI_BooleanOperation.h>
|
||||
//#include <BRepAlgoAPI_Common.hxx>
|
||||
#include <Mod/Part/App/FCBRepAlgoAPI_Common.h>
|
||||
//#include <BRepAlgoAPI_Cut.hxx>
|
||||
#include <Mod/Part/App/FCBRepAlgoAPI_Cut.h>
|
||||
# include <BRepAlgoAPI_Defeaturing.hxx>
|
||||
#include <BRepAlgoAPI_Fuse.hxx>
|
||||
#include <BRepAlgoAPI_Section.hxx>
|
||||
//#include <BRepAlgoAPI_Fuse.hxx>
|
||||
#include <Mod/Part/App/FCBRepAlgoAPI_Fuse.h>
|
||||
//#include <BRepAlgoAPI_Section.hxx>
|
||||
#include <Mod/Part/App/FCBRepAlgoAPI_Section.h>
|
||||
|
||||
#include <BRepBndLib.hxx>
|
||||
|
||||
|
||||
@@ -26,8 +26,8 @@
|
||||
# include <sstream>
|
||||
# include <Bnd_Box.hxx>
|
||||
# include <BRepAdaptor_Curve.hxx>
|
||||
# include <BRepAlgoAPI_Fuse.hxx>
|
||||
# include <BRepAlgoAPI_Common.hxx>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Fuse.h>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Common.h>
|
||||
# include <BRepBndLib.hxx>
|
||||
# include <BRepBuilderAPI_MakeEdge.hxx>
|
||||
# include <BRepBuilderAPI_MakeFace.hxx>
|
||||
@@ -1921,7 +1921,7 @@ bool Part::checkIntersection(const TopoDS_Shape& first, const TopoDS_Shape& seco
|
||||
|
||||
if (touch_is_intersection) {
|
||||
// If both shapes fuse to a single solid, then they intersect
|
||||
BRepAlgoAPI_Fuse mkFuse(first, second);
|
||||
FCBRepAlgoAPI_Fuse mkFuse(first, second);
|
||||
if (!mkFuse.IsDone())
|
||||
return false;
|
||||
if (mkFuse.Shape().IsNull())
|
||||
@@ -1939,7 +1939,7 @@ bool Part::checkIntersection(const TopoDS_Shape& first, const TopoDS_Shape& seco
|
||||
}
|
||||
} else {
|
||||
// If both shapes have common material, then they intersect
|
||||
BRepAlgoAPI_Common mkCommon(first, second);
|
||||
FCBRepAlgoAPI_Common mkCommon(first, second);
|
||||
if (!mkCommon.IsDone())
|
||||
return false;
|
||||
if (mkCommon.Shape().IsNull())
|
||||
|
||||
@@ -187,7 +187,7 @@ protected:
|
||||
|
||||
/**
|
||||
* Build a history of changes
|
||||
* MakeShape: The operation that created the changes, e.g. BRepAlgoAPI_Common
|
||||
* MakeShape: The operation that created the changes, e.g. FCBRepAlgoAPI_Common
|
||||
* type: The type of object we are interested in, e.g. TopAbs_FACE
|
||||
* newS: The new shape that was created by the operation
|
||||
* oldS: The original shape prior to the operation
|
||||
|
||||
@@ -131,7 +131,7 @@ struct PartExport ShapeHistory {
|
||||
ShapeHistory() {}
|
||||
/**
|
||||
* Build a history of changes
|
||||
* MakeShape: The operation that created the changes, e.g. BRepAlgoAPI_Common
|
||||
* MakeShape: The operation that created the changes, e.g. FCBRepAlgoAPI_Common
|
||||
* type: The type of object we are interested in, e.g. TopAbs_FACE
|
||||
* newS: The new shape that was created by the operation
|
||||
* oldS: The original shape prior to the operation
|
||||
|
||||
@@ -36,12 +36,12 @@
|
||||
# include <BRep_Builder.hxx>
|
||||
# include <BRep_Tool.hxx>
|
||||
# include <BRepAdaptor_Surface.hxx>
|
||||
# include <BRepAlgoAPI_Common.hxx>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Common.h>
|
||||
# include <BRepAdaptor_CompCurve.hxx>
|
||||
# include <BRepAdaptor_Curve.hxx>
|
||||
# include <BRepAlgoAPI_Cut.hxx>
|
||||
# include <BRepAlgoAPI_Fuse.hxx>
|
||||
# include <BRepAlgoAPI_Section.hxx>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Cut.h>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Fuse.h>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Section.h>
|
||||
# include <BRepBndLib.hxx>
|
||||
# include <BRepBuilderAPI_Copy.hxx>
|
||||
# include <BRepBuilderAPI_FaceError.hxx>
|
||||
@@ -1698,7 +1698,7 @@ TopoDS_Shape TopoShape::cut(TopoDS_Shape shape) const
|
||||
return this->_Shape;
|
||||
if (shape.IsNull())
|
||||
return this->_Shape;
|
||||
BRepAlgoAPI_Cut mkCut(this->_Shape, shape);
|
||||
FCBRepAlgoAPI_Cut mkCut(this->_Shape, shape);
|
||||
return makeShell(mkCut.Shape());
|
||||
}
|
||||
|
||||
@@ -1706,24 +1706,23 @@ TopoDS_Shape TopoShape::cut(const std::vector<TopoDS_Shape>& shapes, Standard_Re
|
||||
{
|
||||
if (this->_Shape.IsNull())
|
||||
return this->_Shape;
|
||||
BRepAlgoAPI_Cut mkCut;
|
||||
FCBRepAlgoAPI_Cut mkCut;
|
||||
mkCut.SetRunParallel(true);
|
||||
TopTools_ListOfShape shapeArguments,shapeTools;
|
||||
shapeArguments.Append(this->_Shape);
|
||||
for (const auto & shape : shapes) {
|
||||
if (shape.IsNull())
|
||||
throw Base::ValueError("Tool shape is null");
|
||||
if (tolerance > 0.0)
|
||||
// workaround for http://dev.opencascade.org/index.php?q=node/1056#comment-520
|
||||
shapeTools.Append(BRepBuilderAPI_Copy(shape).Shape());
|
||||
else
|
||||
shapeTools.Append(shape);
|
||||
shapeTools.Append(shape);
|
||||
}
|
||||
|
||||
mkCut.SetArguments(shapeArguments);
|
||||
mkCut.SetTools(shapeTools);
|
||||
if (tolerance > 0.0)
|
||||
if (tolerance > 0.0) {
|
||||
mkCut.SetFuzzyValue(tolerance);
|
||||
} else if (tolerance < 0.0) {
|
||||
mkCut.setAutoFuzzy();
|
||||
}
|
||||
mkCut.Build();
|
||||
if (!mkCut.IsDone())
|
||||
throw Base::RuntimeError("Multi cut failed");
|
||||
@@ -1738,7 +1737,7 @@ TopoDS_Shape TopoShape::common(TopoDS_Shape shape) const
|
||||
return this->_Shape;
|
||||
if (shape.IsNull())
|
||||
return shape;
|
||||
BRepAlgoAPI_Common mkCommon(this->_Shape, shape);
|
||||
FCBRepAlgoAPI_Common mkCommon(this->_Shape, shape);
|
||||
return makeShell(mkCommon.Shape());
|
||||
}
|
||||
|
||||
@@ -1746,24 +1745,23 @@ TopoDS_Shape TopoShape::common(const std::vector<TopoDS_Shape>& shapes, Standard
|
||||
{
|
||||
if (this->_Shape.IsNull())
|
||||
return this->_Shape;
|
||||
BRepAlgoAPI_Common mkCommon;
|
||||
FCBRepAlgoAPI_Common mkCommon;
|
||||
mkCommon.SetRunParallel(true);
|
||||
TopTools_ListOfShape shapeArguments,shapeTools;
|
||||
shapeArguments.Append(this->_Shape);
|
||||
for (const auto & shape : shapes) {
|
||||
if (shape.IsNull())
|
||||
throw Base::ValueError("Tool shape is null");
|
||||
if (tolerance > 0.0)
|
||||
// workaround for http://dev.opencascade.org/index.php?q=node/1056#comment-520
|
||||
shapeTools.Append(BRepBuilderAPI_Copy(shape).Shape());
|
||||
else
|
||||
shapeTools.Append(shape);
|
||||
shapeTools.Append(shape);
|
||||
}
|
||||
|
||||
mkCommon.SetArguments(shapeArguments);
|
||||
mkCommon.SetTools(shapeTools);
|
||||
if (tolerance > 0.0)
|
||||
if (tolerance > 0.0) {
|
||||
mkCommon.SetFuzzyValue(tolerance);
|
||||
} else if (tolerance < 0.0) {
|
||||
mkCommon.setAutoFuzzy();
|
||||
}
|
||||
mkCommon.Build();
|
||||
if (!mkCommon.IsDone())
|
||||
throw Base::RuntimeError("Multi common failed");
|
||||
@@ -1778,7 +1776,7 @@ TopoDS_Shape TopoShape::fuse(TopoDS_Shape shape) const
|
||||
return shape;
|
||||
if (shape.IsNull())
|
||||
return this->_Shape;
|
||||
BRepAlgoAPI_Fuse mkFuse(this->_Shape, shape);
|
||||
FCBRepAlgoAPI_Fuse mkFuse(this->_Shape, shape);
|
||||
return makeShell(mkFuse.Shape());
|
||||
}
|
||||
|
||||
@@ -1787,23 +1785,22 @@ TopoDS_Shape TopoShape::fuse(const std::vector<TopoDS_Shape>& shapes, Standard_R
|
||||
if (this->_Shape.IsNull())
|
||||
Standard_Failure::Raise("Base shape is null");
|
||||
|
||||
BRepAlgoAPI_Fuse mkFuse;
|
||||
FCBRepAlgoAPI_Fuse mkFuse;
|
||||
mkFuse.SetRunParallel(true);
|
||||
TopTools_ListOfShape shapeArguments,shapeTools;
|
||||
shapeArguments.Append(this->_Shape);
|
||||
for (const auto & shape : shapes) {
|
||||
if (shape.IsNull())
|
||||
throw NullShapeException("Tool shape is null");
|
||||
if (tolerance > 0.0)
|
||||
// workaround for http://dev.opencascade.org/index.php?q=node/1056#comment-520
|
||||
shapeTools.Append(BRepBuilderAPI_Copy(shape).Shape());
|
||||
else
|
||||
shapeTools.Append(shape);
|
||||
shapeTools.Append(shape);
|
||||
}
|
||||
mkFuse.SetArguments(shapeArguments);
|
||||
mkFuse.SetTools(shapeTools);
|
||||
if (tolerance > 0.0)
|
||||
if (tolerance > 0.0) {
|
||||
mkFuse.SetFuzzyValue(tolerance);
|
||||
} else if (tolerance < 0.0) {
|
||||
mkFuse.setAutoFuzzy();
|
||||
}
|
||||
mkFuse.Build();
|
||||
if (!mkFuse.IsDone())
|
||||
throw Base::RuntimeError("Multi fuse failed");
|
||||
@@ -1828,7 +1825,7 @@ TopoDS_Shape TopoShape::section(TopoDS_Shape shape, Standard_Boolean approximate
|
||||
Standard_Failure::Raise("Base shape is null");
|
||||
if (shape.IsNull())
|
||||
Standard_Failure::Raise("Tool shape is null");
|
||||
BRepAlgoAPI_Section mkSection;
|
||||
FCBRepAlgoAPI_Section mkSection;
|
||||
mkSection.Init1(this->_Shape);
|
||||
mkSection.Init2(shape);
|
||||
mkSection.Approximation(approximate);
|
||||
@@ -1845,7 +1842,7 @@ TopoDS_Shape TopoShape::section(const std::vector<TopoDS_Shape>& shapes,
|
||||
if (this->_Shape.IsNull())
|
||||
Standard_Failure::Raise("Base shape is null");
|
||||
|
||||
BRepAlgoAPI_Section mkSection;
|
||||
FCBRepAlgoAPI_Section mkSection;
|
||||
mkSection.SetRunParallel(true);
|
||||
mkSection.Approximation(approximate);
|
||||
TopTools_ListOfShape shapeArguments,shapeTools;
|
||||
@@ -1853,17 +1850,16 @@ TopoDS_Shape TopoShape::section(const std::vector<TopoDS_Shape>& shapes,
|
||||
for (const auto & shape : shapes) {
|
||||
if (shape.IsNull())
|
||||
throw Base::ValueError("Tool shape is null");
|
||||
if (tolerance > 0.0)
|
||||
// workaround for http://dev.opencascade.org/index.php?q=node/1056#comment-520
|
||||
shapeTools.Append(BRepBuilderAPI_Copy(shape).Shape());
|
||||
else
|
||||
shapeTools.Append(shape);
|
||||
shapeTools.Append(shape);
|
||||
}
|
||||
|
||||
mkSection.SetArguments(shapeArguments);
|
||||
mkSection.SetTools(shapeTools);
|
||||
if (tolerance > 0.0)
|
||||
if (tolerance > 0.0) {
|
||||
mkSection.SetFuzzyValue(tolerance);
|
||||
} else if (tolerance < 0.0) {
|
||||
mkSection.setAutoFuzzy();
|
||||
}
|
||||
mkSection.Build();
|
||||
if (!mkSection.IsDone())
|
||||
throw Base::RuntimeError("Multi section failed");
|
||||
@@ -1915,15 +1911,14 @@ TopoDS_Shape TopoShape::generalFuse(const std::vector<TopoDS_Shape> &sOthers, St
|
||||
for (const TopoDS_Shape &it: sOthers) {
|
||||
if (it.IsNull())
|
||||
throw NullShapeException("Tool shape is null");
|
||||
if (tolerance > 0.0)
|
||||
// workaround for http://dev.opencascade.org/index.php?q=node/1056#comment-520
|
||||
GFAArguments.Append(BRepBuilderAPI_Copy(it).Shape());
|
||||
else
|
||||
GFAArguments.Append(it);
|
||||
}
|
||||
mkGFA.SetArguments(GFAArguments);
|
||||
if (tolerance > 0.0)
|
||||
if (tolerance > 0.0) {
|
||||
mkGFA.SetFuzzyValue(tolerance);
|
||||
} else if (tolerance < 0.0) {
|
||||
FCBRepAlgoAPIHelper::setAutoFuzzy(&mkGFA);
|
||||
}
|
||||
mkGFA.SetNonDestructive(Standard_True);
|
||||
mkGFA.Build();
|
||||
if (!mkGFA.IsDone())
|
||||
|
||||
@@ -500,15 +500,15 @@ public:
|
||||
/** @name Boolean operation*/
|
||||
//@{
|
||||
TopoDS_Shape cut(TopoDS_Shape) const;
|
||||
TopoDS_Shape cut(const std::vector<TopoDS_Shape>&, Standard_Real tolerance = 0.0) const;
|
||||
TopoDS_Shape cut(const std::vector<TopoDS_Shape>&, Standard_Real tolerance = -1.0) const;
|
||||
TopoDS_Shape common(TopoDS_Shape) const;
|
||||
TopoDS_Shape common(const std::vector<TopoDS_Shape>&, Standard_Real tolerance = 0.0) const;
|
||||
TopoDS_Shape common(const std::vector<TopoDS_Shape>&, Standard_Real tolerance = -1.0) const;
|
||||
TopoDS_Shape fuse(TopoDS_Shape) const;
|
||||
TopoDS_Shape fuse(const std::vector<TopoDS_Shape>&, Standard_Real tolerance = 0.0) const;
|
||||
TopoDS_Shape fuse(const std::vector<TopoDS_Shape>&, Standard_Real tolerance = -1.0) const;
|
||||
TopoDS_Shape oldFuse(TopoDS_Shape) const;
|
||||
TopoDS_Shape section(TopoDS_Shape, Standard_Boolean approximate = Standard_False) const;
|
||||
TopoDS_Shape section(const std::vector<TopoDS_Shape>&,
|
||||
Standard_Real tolerance = 0.0,
|
||||
Standard_Real tolerance = -1.0,
|
||||
Standard_Boolean approximate = Standard_False) const;
|
||||
std::list<TopoDS_Wire> slice(const Base::Vector3d&, double) const;
|
||||
TopoDS_Compound slices(const Base::Vector3d&, const std::vector<double>&) const;
|
||||
@@ -1356,7 +1356,7 @@ public:
|
||||
*/
|
||||
TopoShape& makeElementGeneralFuse(const std::vector<TopoShape>& sources,
|
||||
std::vector<std::vector<TopoShape>>& modified,
|
||||
double tol = 0,
|
||||
double tol = -1.0,
|
||||
const char* op = nullptr);
|
||||
|
||||
/** Make a fusion of input shapes
|
||||
@@ -1373,7 +1373,7 @@ public:
|
||||
*/
|
||||
TopoShape& makeElementFuse(const std::vector<TopoShape>& sources,
|
||||
const char* op = nullptr,
|
||||
double tol = 0);
|
||||
double tol = -1.0);
|
||||
/** Make a fusion of this shape and an input shape
|
||||
*
|
||||
* @param source: the source shape
|
||||
@@ -1384,7 +1384,7 @@ public:
|
||||
* @return Return the new shape. The TopoShape itself is not modified.
|
||||
*/
|
||||
TopoShape
|
||||
makeElementFuse(const TopoShape& source, const char* op = nullptr, double tol = 0) const
|
||||
makeElementFuse(const TopoShape& source, const char* op = nullptr, double tol = -1.0) const
|
||||
{
|
||||
return TopoShape(0, Hasher).makeElementFuse({*this, source}, op, tol);
|
||||
}
|
||||
@@ -1402,7 +1402,7 @@ public:
|
||||
* for the same shape in the same line of code.
|
||||
*/
|
||||
TopoShape&
|
||||
makeElementCut(const std::vector<TopoShape>& sources, const char* op = nullptr, double tol = 0);
|
||||
makeElementCut(const std::vector<TopoShape>& sources, const char* op = nullptr, double tol = -1.0);
|
||||
/** Make a boolean cut of this shape with an input shape
|
||||
*
|
||||
* @param source: the source shape
|
||||
@@ -1413,7 +1413,7 @@ public:
|
||||
* @return Return the new shape. The TopoShape itself is not modified.
|
||||
*/
|
||||
TopoShape
|
||||
makeElementCut(const TopoShape& source, const char* op = nullptr, double tol = 0) const
|
||||
makeElementCut(const TopoShape& source, const char* op = nullptr, double tol = -1.0) const
|
||||
{
|
||||
return TopoShape(0, Hasher).makeElementCut({*this, source}, op, tol);
|
||||
}
|
||||
@@ -1875,7 +1875,7 @@ public:
|
||||
TopoShape& makeElementBoolean(const char* maker,
|
||||
const std::vector<TopoShape>& sources,
|
||||
const char* op = nullptr,
|
||||
double tol = 0.0);
|
||||
double tol = -1.0);
|
||||
/** Generalized shape making with mapped element name from shape history
|
||||
*
|
||||
* @param maker: op code from TopoShapeOpCodes
|
||||
@@ -1893,7 +1893,7 @@ public:
|
||||
TopoShape& makeElementBoolean(const char* maker,
|
||||
const TopoShape& source,
|
||||
const char* op = nullptr,
|
||||
double tol = 0.0);
|
||||
double tol = -1.0);
|
||||
|
||||
/** Generalized shape making with mapped element name from shape history
|
||||
*
|
||||
@@ -1907,7 +1907,7 @@ public:
|
||||
* is not modified.
|
||||
*/
|
||||
TopoShape
|
||||
makeElementBoolean(const char* maker, const char* op = nullptr, double tol = 0.0) const
|
||||
makeElementBoolean(const char* maker, const char* op = nullptr, double tol = -1.0) const
|
||||
{
|
||||
return TopoShape(0, Hasher).makeElementBoolean(maker, *this, op, tol);
|
||||
}
|
||||
|
||||
@@ -41,11 +41,11 @@
|
||||
#include <BRepTools.hxx>
|
||||
#include <BRep_Builder.hxx>
|
||||
#include <BRep_Tool.hxx>
|
||||
#include <BRepAlgoAPI_BooleanOperation.hxx>
|
||||
#include <BRepAlgoAPI_Common.hxx>
|
||||
#include <BRepAlgoAPI_Cut.hxx>
|
||||
#include <BRepAlgoAPI_Fuse.hxx>
|
||||
#include <BRepAlgoAPI_Section.hxx>
|
||||
#include <Mod/Part/App/FCBRepAlgoAPI_BooleanOperation.h>
|
||||
#include <Mod/Part/App/FCBRepAlgoAPI_Common.h>
|
||||
#include <Mod/Part/App/FCBRepAlgoAPI_Cut.h>
|
||||
#include <Mod/Part/App/FCBRepAlgoAPI_Fuse.h>
|
||||
#include <Mod/Part/App/FCBRepAlgoAPI_Section.h>
|
||||
#include <BRepBuilderAPI_Copy.hxx>
|
||||
#include <BRepBuilderAPI_FindPlane.hxx>
|
||||
#include <BRepBuilderAPI_GTransform.hxx>
|
||||
@@ -4055,15 +4055,13 @@ TopoShape& TopoShape::makeElementGeneralFuse(const std::vector<TopoShape>& _shap
|
||||
if (shape.isNull()) {
|
||||
FC_THROWM(NullShapeException, "Null input shape");
|
||||
}
|
||||
if (tol > 0.0) {
|
||||
// workaround for http://dev.opencascade.org/index.php?q=node/1056#comment-520
|
||||
shape = shape.makeElementCopy();
|
||||
}
|
||||
GFAArguments.Append(shape.getShape());
|
||||
}
|
||||
mkGFA.SetArguments(GFAArguments);
|
||||
if (tol > 0.0) {
|
||||
mkGFA.SetFuzzyValue(tol);
|
||||
} else if (tol < 0.0) {
|
||||
FCBRepAlgoAPIHelper::setAutoFuzzy(&mkGFA);
|
||||
}
|
||||
mkGFA.SetNonDestructive(Standard_True);
|
||||
mkGFA.Build();
|
||||
@@ -5666,7 +5664,7 @@ TopoShape& TopoShape::makeElementBoolean(const char* maker,
|
||||
}
|
||||
}
|
||||
|
||||
if (tolerance > 0.0 && _shapes.empty()) {
|
||||
if (tolerance != 0.0 && _shapes.empty()) {
|
||||
_shapes = shapes;
|
||||
}
|
||||
|
||||
@@ -5686,16 +5684,16 @@ TopoShape& TopoShape::makeElementBoolean(const char* maker,
|
||||
|
||||
std::unique_ptr<BRepAlgoAPI_BooleanOperation> mk;
|
||||
if (strcmp(maker, Part::OpCodes::Fuse) == 0) {
|
||||
mk.reset(new BRepAlgoAPI_Fuse);
|
||||
mk.reset(new FCBRepAlgoAPI_Fuse);
|
||||
}
|
||||
else if (strcmp(maker, Part::OpCodes::Cut) == 0) {
|
||||
mk.reset(new BRepAlgoAPI_Cut);
|
||||
mk.reset(new FCBRepAlgoAPI_Cut);
|
||||
}
|
||||
else if (strcmp(maker, Part::OpCodes::Common) == 0) {
|
||||
mk.reset(new BRepAlgoAPI_Common);
|
||||
mk.reset(new FCBRepAlgoAPI_Common);
|
||||
}
|
||||
else if (strcmp(maker, Part::OpCodes::Section) == 0) {
|
||||
mk.reset(new BRepAlgoAPI_Section);
|
||||
mk.reset(new FCBRepAlgoAPI_Section);
|
||||
buildShell = false;
|
||||
}
|
||||
else {
|
||||
@@ -5712,12 +5710,6 @@ TopoShape& TopoShape::makeElementBoolean(const char* maker,
|
||||
if (++i == 0) {
|
||||
shapeArguments.Append(shape.getShape());
|
||||
}
|
||||
else if (tolerance > 0.0) {
|
||||
auto& s = _shapes[i];
|
||||
// workaround for http://dev.opencascade.org/index.php?q=node/1056#comment-520
|
||||
s.setShape(BRepBuilderAPI_Copy(s.getShape()).Shape(), false);
|
||||
shapeTools.Append(s.getShape());
|
||||
}
|
||||
else {
|
||||
shapeTools.Append(shape.getShape());
|
||||
}
|
||||
@@ -5739,6 +5731,8 @@ TopoShape& TopoShape::makeElementBoolean(const char* maker,
|
||||
mk->SetTools(shapeTools);
|
||||
if (tolerance > 0.0) {
|
||||
mk->SetFuzzyValue(tolerance);
|
||||
} else if (tolerance < 0.0) {
|
||||
FCBRepAlgoAPIHelper::setAutoFuzzy(mk.get());
|
||||
}
|
||||
mk->Build();
|
||||
makeElementShape(*mk, inputs, op);
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
#endif
|
||||
|
||||
#include <Mod/Part/App/Interface.h>
|
||||
#include <Mod/Part/App/FuzzyHelper.h>
|
||||
#include <Mod/Part/App/IGES/ImportExportSettings.h>
|
||||
#include <Mod/Part/App/OCAF/ImportExportSettings.h>
|
||||
#include <Mod/Part/App/STEP/ImportExportSettings.h>
|
||||
|
||||
@@ -158,6 +158,11 @@
|
||||
<extends>QCheckBox</extends>
|
||||
<header>Gui/PrefWidgets.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>Gui::PrefDoubleSpinBox</class>
|
||||
<extends>QDoubleSpinBox</extends>
|
||||
<header>Gui/PrefWidgets.h</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
|
||||
#include "PreCompiled.h"
|
||||
#ifndef _PreComp_
|
||||
# include <BRepAlgoAPI_Common.hxx>
|
||||
# include <BRepAlgoAPI_Cut.hxx>
|
||||
# include <BRepAlgoAPI_Fuse.hxx>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Common.h>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Cut.h>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Fuse.h>
|
||||
# include <Standard_Failure.hxx>
|
||||
#endif
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
#include "PreCompiled.h"
|
||||
#ifndef _PreComp_
|
||||
# include <BRepAlgoAPI_Fuse.hxx>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Fuse.h>
|
||||
# include <BRep_Builder.hxx>
|
||||
# include <BRepFeat_MakePrism.hxx>
|
||||
# include <BRepPrimAPI_MakePrism.hxx>
|
||||
@@ -275,7 +275,7 @@ void FeatureExtrude::generatePrism(TopoDS_Shape& prism,
|
||||
throw Base::RuntimeError("ProfileBased: Up to face: Could not extrude the sketch!");
|
||||
auto onePrism = PrismMaker.Shape();
|
||||
|
||||
BRepAlgoAPI_Fuse fuse(prism, onePrism);
|
||||
FCBRepAlgoAPI_Fuse fuse(prism, onePrism);
|
||||
prism = fuse.Shape();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
#include "PreCompiled.h"
|
||||
#ifndef _PreComp_
|
||||
# include <BRepAlgoAPI_Cut.hxx>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Cut.h>
|
||||
# include <BRepPrimAPI_MakeRevol.hxx>
|
||||
# include <BRepFeat_MakeRevol.hxx>
|
||||
# include <gp_Lin.hxx>
|
||||
|
||||
@@ -24,9 +24,9 @@
|
||||
#include "PreCompiled.h"
|
||||
#ifndef _PreComp_
|
||||
# include <BRepAdaptor_Surface.hxx>
|
||||
# include <BRepAlgoAPI_Common.hxx>
|
||||
# include <BRepAlgoAPI_Cut.hxx>
|
||||
# include <BRepAlgoAPI_Fuse.hxx>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Common.h>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Cut.h>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Fuse.h>
|
||||
# include <BRepBndLib.hxx>
|
||||
# include <BRepBuilderAPI_MakeSolid.hxx>
|
||||
# include <BRepBuilderAPI_Sewing.hxx>
|
||||
@@ -256,7 +256,7 @@ App::DocumentObjectExecReturn* Helix::execute()
|
||||
|
||||
if (getAddSubType() == FeatureAddSub::Additive) {
|
||||
|
||||
BRepAlgoAPI_Fuse mkFuse(base.getShape(), result);
|
||||
FCBRepAlgoAPI_Fuse mkFuse(base.getShape(), result);
|
||||
if (!mkFuse.IsDone()){
|
||||
return new App::DocumentObjectExecReturn(QT_TRANSLATE_NOOP("Exception", "Error: Adding the helix failed"));
|
||||
}
|
||||
@@ -280,14 +280,14 @@ App::DocumentObjectExecReturn* Helix::execute()
|
||||
TopoShape boolOp;
|
||||
|
||||
if (Outside.getValue()) { // are we subtracting the inside or the outside of the profile.
|
||||
BRepAlgoAPI_Common mkCom(result, base.getShape());
|
||||
FCBRepAlgoAPI_Common mkCom(result, base.getShape());
|
||||
if (!mkCom.IsDone())
|
||||
return new App::DocumentObjectExecReturn(QT_TRANSLATE_NOOP("Exception", "Error: Intersecting the helix failed"));
|
||||
boolOp = this->getSolid(mkCom.Shape());
|
||||
|
||||
}
|
||||
else {
|
||||
BRepAlgoAPI_Cut mkCut(base.getShape(), result);
|
||||
FCBRepAlgoAPI_Cut mkCut(base.getShape(), result);
|
||||
if (!mkCut.IsDone())
|
||||
return new App::DocumentObjectExecReturn(QT_TRANSLATE_NOOP("Exception", "Error: Subtracting the helix failed"));
|
||||
boolOp = this->getSolid(mkCut.Shape());
|
||||
|
||||
@@ -25,8 +25,8 @@
|
||||
#ifndef _PreComp_
|
||||
# include <gp_Dir.hxx>
|
||||
# include <BRep_Builder.hxx>
|
||||
# include <BRepAlgoAPI_Cut.hxx>
|
||||
# include <BRepAlgoAPI_Fuse.hxx>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Cut.h>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Fuse.h>
|
||||
# include <BRepBuilderAPI_MakeEdge.hxx>
|
||||
# include <BRepBuilderAPI_MakeFace.hxx>
|
||||
# include <BRepBuilderAPI_MakeSolid.hxx>
|
||||
@@ -1879,7 +1879,7 @@ App::DocumentObjectExecReturn* Hole::execute()
|
||||
TopoDS_Shape protoThread = makeThread(xDir, zDir, length);
|
||||
|
||||
// fuse the thread to the hole
|
||||
BRepAlgoAPI_Fuse mkFuse(protoHole, protoThread);
|
||||
FCBRepAlgoAPI_Fuse mkFuse(protoHole, protoThread);
|
||||
if (!mkFuse.IsDone())
|
||||
return new App::DocumentObjectExecReturn(QT_TRANSLATE_NOOP("Exception", "Error: Adding the thread failed"));
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
#include "PreCompiled.h"
|
||||
#ifndef _PreComp_
|
||||
# include <BRepAlgoAPI_Fuse.hxx>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Fuse.h>
|
||||
# include <Precision.hxx>
|
||||
# include <TopExp_Explorer.hxx>
|
||||
# include <TopoDS.hxx>
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
|
||||
#include "PreCompiled.h"
|
||||
#ifndef _PreComp_
|
||||
# include <BRepAlgoAPI_Cut.hxx>
|
||||
# include <BRepAlgoAPI_Fuse.hxx>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Cut.h>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Fuse.h>
|
||||
# include <BRepBndLib.hxx>
|
||||
# include <BRepBuilderAPI_Sewing.hxx>
|
||||
# include <BRepBuilderAPI_MakeSolid.hxx>
|
||||
@@ -387,7 +387,7 @@ App::DocumentObjectExecReturn *Pipe::execute()
|
||||
|
||||
if (getAddSubType() == FeatureAddSub::Additive) {
|
||||
|
||||
BRepAlgoAPI_Fuse mkFuse(base.getShape(), result);
|
||||
FCBRepAlgoAPI_Fuse mkFuse(base.getShape(), result);
|
||||
if (!mkFuse.IsDone())
|
||||
return new App::DocumentObjectExecReturn(QT_TRANSLATE_NOOP("Exception", "Adding the pipe failed"));
|
||||
// we have to get the solids (fuse sometimes creates compounds)
|
||||
@@ -407,7 +407,7 @@ App::DocumentObjectExecReturn *Pipe::execute()
|
||||
}
|
||||
else if (getAddSubType() == FeatureAddSub::Subtractive) {
|
||||
|
||||
BRepAlgoAPI_Cut mkCut(base.getShape(), result);
|
||||
FCBRepAlgoAPI_Cut mkCut(base.getShape(), result);
|
||||
if (!mkCut.IsDone())
|
||||
return new App::DocumentObjectExecReturn(QT_TRANSLATE_NOOP("Exception", "Subtracting the pipe failed"));
|
||||
// we have to get the solids (fuse sometimes creates compounds)
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
#include "PreCompiled.h"
|
||||
#ifndef _PreComp_
|
||||
# include <BRepAlgoAPI_Cut.hxx>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Cut.h>
|
||||
# include <gp_Dir.hxx>
|
||||
# include <Precision.hxx>
|
||||
# include <TopExp_Explorer.hxx>
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
#include "PreCompiled.h"
|
||||
#ifndef _PreComp_
|
||||
# include <BRepPrim_Cylinder.hxx>
|
||||
# include <BRepAlgoAPI_Cut.hxx>
|
||||
# include <BRepAlgoAPI_Fuse.hxx>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Cut.h>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Fuse.h>
|
||||
# include <BRepBuilderAPI_GTransform.hxx>
|
||||
# include <BRepBuilderAPI_MakeFace.hxx>
|
||||
# include <BRepBuilderAPI_MakePolygon.hxx>
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
#include "PreCompiled.h"
|
||||
#ifndef _PreComp_
|
||||
# include <BRepAlgoAPI_Fuse.hxx>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Fuse.h>
|
||||
# include <BRepPrimAPI_MakeRevol.hxx>
|
||||
# include <BRepFeat_MakeRevol.hxx>
|
||||
# include <gp_Lin.hxx>
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
#ifndef _PreComp_
|
||||
#include <Bnd_Box.hxx>
|
||||
#include <BRep_Builder.hxx>
|
||||
#include <BRepAlgoAPI_Cut.hxx>
|
||||
#include <BRepAlgoAPI_Fuse.hxx>
|
||||
#include <Mod/Part/App/FCBRepAlgoAPI_Cut.h>
|
||||
#include <Mod/Part/App/FCBRepAlgoAPI_Fuse.h>
|
||||
#include <BRepBndLib.hxx>
|
||||
#include <BRepBuilderAPI_Copy.hxx>
|
||||
#include <BRepBuilderAPI_Transform.hxx>
|
||||
|
||||
@@ -635,7 +635,16 @@ class TestTopologicalNamingProblem(unittest.TestCase):
|
||||
# Assert UpToFace element map is correct
|
||||
self.assertEqual(self.countFacesEdgesVertexes(revolution.Shape.ElementReverseMap),
|
||||
(8, 18, 12))
|
||||
self.assertEqual( revolution.Shape.ElementReverseMap["Face8"].count(";"), 7)
|
||||
# Assertions modified/added while reviewing PR#17119 by CalligaroV
|
||||
# Previously the condition counted the number of ";" (element map operations prefix)
|
||||
# If the number of operations changes then the number of ";" will change accordingly
|
||||
#
|
||||
# However, it is more useful to count the number of times an elemement name is
|
||||
# present in the MappedName of an element (a MappedName is definined also using the
|
||||
# element names - "Vertex*", "Edge*", "Face*" - used by an OCCT operation to generate
|
||||
# output elements)
|
||||
self.assertEqual( revolution.Shape.ElementReverseMap["Face8"].count("Face8"), 3)
|
||||
self.assertEqual( revolution.Shape.ElementReverseMap["Face8"].count("Face10"), 3)
|
||||
|
||||
def testPartDesignElementMapLoft(self):
|
||||
# Arrange
|
||||
@@ -767,10 +776,10 @@ class TestTopologicalNamingProblem(unittest.TestCase):
|
||||
self.Doc.recompute()
|
||||
# Assert
|
||||
self.assertEqual(len(body.Shape.childShapes()), 1)
|
||||
self.assertEqual(body.Shape.childShapes()[0].ElementMapSize, 55)
|
||||
self.assertEqual(body.Shape.childShapes()[0].ElementMapSize, 51)
|
||||
self.assertEqual(body.Shape.ElementMapSize, 51)
|
||||
self.assertEqual(sketch.Shape.ElementMapSize, 12)
|
||||
self.assertEqual(pocket.Shape.ElementMapSize, 55)
|
||||
self.assertEqual(pocket.Shape.ElementMapSize, 51)
|
||||
self.assertNotEqual(
|
||||
pocket.Shape.ElementReverseMap["Vertex1"], "Vertex1"
|
||||
) # NewName, not OldName
|
||||
@@ -1856,7 +1865,7 @@ class TestTopologicalNamingProblem(unittest.TestCase):
|
||||
edges = [name for name in reverseMap.keys() if name.startswith("Edge")]
|
||||
vertexes = [name for name in reverseMap.keys() if name.startswith("Vertex")]
|
||||
self.assertEqual(len(body.Shape.childShapes()), 1)
|
||||
self.assertEqual(body.Shape.childShapes()[0].ElementMapSize, 64)
|
||||
self.assertEqual(body.Shape.childShapes()[0].ElementMapSize, 62)
|
||||
self.assertEqual(len(reverseMap), 62)
|
||||
self.assertEqual(len(faces), 12)
|
||||
self.assertEqual(len(edges), 30)
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
// OpenCasCade
|
||||
#include <BRepAdaptor_Curve.hxx>
|
||||
#include <BRepAdaptor_Surface.hxx>
|
||||
#include <BRepAlgoAPI_Section.hxx>
|
||||
#include <Mod/Part/App/FCBRepAlgoAPI_Section.h>
|
||||
#include <BRepBuilderAPI_MakeEdge.hxx>
|
||||
#include <BRepBuilderAPI_MakeFace.hxx>
|
||||
#include <BRepBuilderAPI_MakeVertex.hxx>
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
#include <BRepAdaptor_Curve.hxx>
|
||||
#include <BRepAdaptor_Surface.hxx>
|
||||
#include <BRepAlgoAPI_Section.hxx>
|
||||
#include <Mod/Part/App/FCBRepAlgoAPI_Section.h>
|
||||
#include <BRepBuilderAPI_MakeEdge.hxx>
|
||||
#include <BRepBuilderAPI_MakeFace.hxx>
|
||||
#include <BRepBuilderAPI_MakeVertex.hxx>
|
||||
@@ -7671,7 +7671,7 @@ int SketchObject::addExternal(App::DocumentObject *Obj, const char* SubName, boo
|
||||
continue;
|
||||
if (intersection) {
|
||||
try {
|
||||
BRepAlgoAPI_Section maker(subShape, sketchPlane);
|
||||
FCBRepAlgoAPI_Section maker(subShape, sketchPlane);
|
||||
if (!maker.IsDone() || maker.Shape().IsNull())
|
||||
continue;
|
||||
} catch (Standard_Failure &) {
|
||||
@@ -9025,7 +9025,7 @@ void SketchObject::rebuildExternalGeometry(bool defining, bool addIntersection)
|
||||
if (intersection && (refSubShape.ShapeType() == TopAbs_EDGE
|
||||
|| refSubShape.ShapeType() == TopAbs_FACE))
|
||||
{
|
||||
BRepAlgoAPI_Section maker(refSubShape, sketchPlane);
|
||||
FCBRepAlgoAPI_Section maker(refSubShape, sketchPlane);
|
||||
maker.Approximation(Standard_True);
|
||||
if (!maker.IsDone())
|
||||
FC_THROWM(Base::CADKernelError,"Failed to get intersection");
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
|
||||
#ifndef _PreComp_
|
||||
#include <BRepAdaptor_Curve.hxx>
|
||||
#include <BRepAlgoAPI_Cut.hxx>
|
||||
#include <Mod/Part/App/FCBRepAlgoAPI_Cut.h>
|
||||
#include <BRepBndLib.hxx>
|
||||
#include <BRepBuilderAPI_Copy.hxx>
|
||||
#include <BRepBuilderAPI_MakeFace.hxx>
|
||||
@@ -206,7 +206,7 @@ TopoDS_Shape DrawBrokenView::apply1Break(const App::DocumentObject& breakObj, co
|
||||
moveDir0.Normalize();
|
||||
moveDir0 = DU::closestBasisOriented(moveDir0);
|
||||
auto halfSpace0 = makeHalfSpace(breakPoints.first, moveDir0, breakPoints.second);
|
||||
BRepAlgoAPI_Cut mkCut0(inShape, halfSpace0);
|
||||
FCBRepAlgoAPI_Cut mkCut0(inShape, halfSpace0);
|
||||
if (!mkCut0.IsDone()) {
|
||||
Base::Console().Message("DBV::apply1Break - cut0 failed\n");
|
||||
}
|
||||
@@ -218,7 +218,7 @@ TopoDS_Shape DrawBrokenView::apply1Break(const App::DocumentObject& breakObj, co
|
||||
moveDir1.Normalize();
|
||||
moveDir1 = DU::closestBasisOriented(moveDir1);
|
||||
auto halfSpace1 = makeHalfSpace(breakPoints.second, moveDir1, breakPoints.first);
|
||||
BRepAlgoAPI_Cut mkCut1(inShape, halfSpace1);
|
||||
FCBRepAlgoAPI_Cut mkCut1(inShape, halfSpace1);
|
||||
if (!mkCut1.IsDone()) {
|
||||
Base::Console().Message("DBV::apply1Break - cut1 failed\n");
|
||||
}
|
||||
|
||||
@@ -59,8 +59,8 @@
|
||||
#ifndef _PreComp_
|
||||
#include <BRepAdaptor_Curve.hxx>
|
||||
#include <BRepAdaptor_Surface.hxx>
|
||||
#include <BRepAlgoAPI_Common.hxx>
|
||||
#include <BRepAlgoAPI_Cut.hxx>
|
||||
#include <Mod/Part/App/FCBRepAlgoAPI_Common.h>
|
||||
#include <Mod/Part/App/FCBRepAlgoAPI_Cut.h>
|
||||
#include <BRepAlgo_NormalProjection.hxx>
|
||||
#include <BRepBndLib.hxx>
|
||||
#include <BRepBuilderAPI_Copy.hxx>
|
||||
@@ -1176,7 +1176,7 @@ bool DrawComplexSection::boxesIntersect(TopoDS_Face& face, TopoDS_Shape& shape)
|
||||
TopoDS_Shape DrawComplexSection::shapeShapeIntersect(const TopoDS_Shape& shape0,
|
||||
const TopoDS_Shape& shape1)
|
||||
{
|
||||
BRepAlgoAPI_Common anOp;
|
||||
FCBRepAlgoAPI_Common anOp;
|
||||
anOp.SetFuzzyValue(EWTOLERANCE);
|
||||
TopTools_ListOfShape anArg1, anArg2;
|
||||
anArg1.Append(shape0);
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
#include <Bnd_Box.hxx>
|
||||
#include <BRep_Builder.hxx>
|
||||
#include <BRepAlgoAPI_Common.hxx>
|
||||
#include <Mod/Part/App/FCBRepAlgoAPI_Common.h>
|
||||
#include <BRepBndLib.hxx>
|
||||
#include <BRepBuilderAPI_MakeEdge.hxx>
|
||||
#include <BRepBuilderAPI_MakeFace.hxx>
|
||||
@@ -345,7 +345,7 @@ std::vector<LineSet> DrawGeomHatch::getTrimmedLines(DrawViewPart* source,
|
||||
grid = mkTransTranslate.Shape();
|
||||
|
||||
//Common(Compound, Face)
|
||||
BRepAlgoAPI_Common mkCommon(face, grid);
|
||||
FCBRepAlgoAPI_Common mkCommon(face, grid);
|
||||
if (!mkCommon.IsDone() ||
|
||||
mkCommon.Shape().IsNull()) {
|
||||
return result;
|
||||
|
||||
@@ -29,8 +29,8 @@
|
||||
#include <Bnd_Box.hxx>
|
||||
#include <BRep_Tool.hxx>
|
||||
#include <BRepAdaptor_Curve.hxx>
|
||||
#include <BRepAlgoAPI_Common.hxx>
|
||||
#include <BRepAlgoAPI_Fuse.hxx>
|
||||
#include <Mod/Part/App/FCBRepAlgoAPI_Common.h>
|
||||
#include <Mod/Part/App/FCBRepAlgoAPI_Fuse.h>
|
||||
#include <BRepBndLib.hxx>
|
||||
#include <BRepBuilderAPI_Copy.hxx>
|
||||
#include <BRepBuilderAPI_MakeEdge.hxx>
|
||||
@@ -645,7 +645,7 @@ int DrawProjectSplit::isSubset(const TopoDS_Edge &edge0, const TopoDS_Edge &edge
|
||||
}
|
||||
|
||||
//bboxes of edges intersect
|
||||
BRepAlgoAPI_Common anOp;
|
||||
FCBRepAlgoAPI_Common anOp;
|
||||
anOp.SetFuzzyValue (FUZZYADJUST * EWTOLERANCE);
|
||||
TopTools_ListOfShape anArg1, anArg2;
|
||||
anArg1.Append (edge0);
|
||||
@@ -683,7 +683,7 @@ int DrawProjectSplit::isSubset(const TopoDS_Edge &edge0, const TopoDS_Edge &edge
|
||||
std::vector<TopoDS_Edge> DrawProjectSplit::fuseEdges(const TopoDS_Edge &edge0, const TopoDS_Edge &edge1)
|
||||
{
|
||||
std::vector<TopoDS_Edge> edgeList;
|
||||
BRepAlgoAPI_Fuse anOp;
|
||||
FCBRepAlgoAPI_Fuse anOp;
|
||||
anOp.SetFuzzyValue (FUZZYADJUST * EWTOLERANCE);
|
||||
TopTools_ListOfShape anArg1, anArg2;
|
||||
anArg1.Append (edge0);
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
#include "PreCompiled.h"
|
||||
|
||||
#ifndef _PreComp_
|
||||
#include <BRepAlgoAPI_Common.hxx>
|
||||
#include <Mod/Part/App/FCBRepAlgoAPI_Common.h>
|
||||
#include <BRepBndLib.hxx>
|
||||
#include <BRepBuilderAPI_Copy.hxx>
|
||||
#include <BRepBuilderAPI_MakeFace.hxx>
|
||||
@@ -294,7 +294,7 @@ void DrawViewDetail::makeDetailShape(const TopoDS_Shape& shape3d, DrawViewPart*
|
||||
TopExp_Explorer expl1(copyShape, TopAbs_SOLID);
|
||||
for (; expl1.More(); expl1.Next()) {
|
||||
const TopoDS_Solid& s = TopoDS::Solid(expl1.Current());
|
||||
BRepAlgoAPI_Common mkCommon(s, tool);
|
||||
FCBRepAlgoAPI_Common mkCommon(s, tool);
|
||||
if (!mkCommon.IsDone()) {
|
||||
continue;
|
||||
}
|
||||
@@ -313,7 +313,7 @@ void DrawViewDetail::makeDetailShape(const TopoDS_Shape& shape3d, DrawViewPart*
|
||||
TopExp_Explorer expl2(copyShape, TopAbs_SHELL, TopAbs_SOLID);
|
||||
for (; expl2.More(); expl2.Next()) {
|
||||
const TopoDS_Shell& s = TopoDS::Shell(expl2.Current());
|
||||
BRepAlgoAPI_Common mkCommon(s, tool);
|
||||
FCBRepAlgoAPI_Common mkCommon(s, tool);
|
||||
if (!mkCommon.IsDone()) {
|
||||
continue;
|
||||
}
|
||||
@@ -333,7 +333,7 @@ void DrawViewDetail::makeDetailShape(const TopoDS_Shape& shape3d, DrawViewPart*
|
||||
TopExp_Explorer expl3(copyShape, TopAbs_EDGE, TopAbs_FACE);
|
||||
for (; expl3.More(); expl3.Next()) {
|
||||
const TopoDS_Edge& e = TopoDS::Edge(expl3.Current());
|
||||
BRepAlgoAPI_Common mkCommon(e, tool);
|
||||
FCBRepAlgoAPI_Common mkCommon(e, tool);
|
||||
if (!mkCommon.IsDone()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
|
||||
#ifndef _PreComp_
|
||||
#include <BRepAdaptor_Surface.hxx>
|
||||
#include <BRepAlgoAPI_Cut.hxx>
|
||||
#include <Mod/Part/App/FCBRepAlgoAPI_Cut.h>
|
||||
#include <BRepBndLib.hxx>
|
||||
#include <BRepBuilderAPI_Copy.hxx>
|
||||
#include <BRepBuilderAPI_MakeFace.hxx>
|
||||
@@ -510,7 +510,7 @@ void DrawViewSection::makeSectionCut(const TopoDS_Shape& baseShape)
|
||||
TopExp_Explorer expl(myShape, TopAbs_SOLID);
|
||||
for (; expl.More(); expl.Next()) {
|
||||
const TopoDS_Solid& s = TopoDS::Solid(expl.Current());
|
||||
BRepAlgoAPI_Cut mkCut(s, m_cuttingTool);
|
||||
FCBRepAlgoAPI_Cut mkCut(s, m_cuttingTool);
|
||||
if (!mkCut.IsDone()) {
|
||||
Base::Console().Warning("DVS: Section cut has failed in %s\n", getNameInDocument());
|
||||
continue;
|
||||
@@ -527,7 +527,7 @@ void DrawViewSection::makeSectionCut(const TopoDS_Shape& baseShape)
|
||||
// second cut if requested. Sometimes the first cut includes extra uncut
|
||||
// pieces.
|
||||
if (trimAfterCut()) {
|
||||
BRepAlgoAPI_Cut mkCut2(cutPieces, m_cuttingTool);
|
||||
FCBRepAlgoAPI_Cut mkCut2(cutPieces, m_cuttingTool);
|
||||
if (mkCut2.IsDone()) {
|
||||
m_cutPieces = mkCut2.Shape();
|
||||
if (debugSection()) {
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
# include <Approx_Curve3d.hxx>
|
||||
# include <BRep_Tool.hxx>
|
||||
# include <BRepAdaptor_Curve.hxx>
|
||||
# include <BRepAlgoAPI_Section.hxx>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Section.h>
|
||||
# include <BRepBuilderAPI_MakeEdge.hxx>
|
||||
# include <BRepBuilderAPI_MakeFace.hxx>
|
||||
# include <BRepBuilderAPI_MakeVertex.hxx>
|
||||
@@ -615,7 +615,7 @@ std::vector<Base::Vector3d> BaseGeom::intersection(TechDraw::BaseGeomPtr geom2)
|
||||
return interPoints;
|
||||
}
|
||||
|
||||
BRepAlgoAPI_Section sectionOp(edge1, edge2);
|
||||
FCBRepAlgoAPI_Section sectionOp(edge1, edge2);
|
||||
sectionOp.SetFuzzyValue(FUZZYADJUST*EWTOLERANCE);
|
||||
sectionOp.SetNonDestructive(true);
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
#ifndef _PreComp_
|
||||
# include <sstream>
|
||||
# include <BRep_Builder.hxx>
|
||||
# include <BRepAlgoAPI_Fuse.hxx>
|
||||
# include <Mod/Part/App/FCBRepAlgoAPI_Fuse.h>
|
||||
# include <BRepTools.hxx>
|
||||
# include <TopoDS.hxx>
|
||||
# include <TopoDS_Iterator.hxx>
|
||||
@@ -354,7 +354,7 @@ TopoDS_Shape ShapeExtractor::getShapesFused(const std::vector<App::DocumentObjec
|
||||
it.Next();
|
||||
for (; it.More(); it.Next()) {
|
||||
const TopoDS_Shape& aChild = it.Value();
|
||||
BRepAlgoAPI_Fuse mkFuse(fusedShape, aChild);
|
||||
FCBRepAlgoAPI_Fuse mkFuse(fusedShape, aChild);
|
||||
// Let's check if the fusion has been successful
|
||||
if (!mkFuse.IsDone()) {
|
||||
Base::Console().Error("SE - Fusion failed\n");
|
||||
|
||||
@@ -16,6 +16,7 @@ target_sources(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/FeaturePartCut.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/FeaturePartFuse.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/FeatureRevolution.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/FuzzyBoolean.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/Geometry.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/PartFeature.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/PartFeatures.cpp
|
||||
@@ -31,3 +32,17 @@ target_sources(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/TopoShapeMakeShape.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/WireJoiner.cpp
|
||||
)
|
||||
|
||||
set(PartTestData_Files
|
||||
brepfiles/cylinder1.brep
|
||||
brepfiles/helix1.brep
|
||||
)
|
||||
|
||||
ADD_CUSTOM_TARGET(PartTestData ALL
|
||||
SOURCES ${PartTestData_Files}
|
||||
)
|
||||
|
||||
fc_target_copy_resource(PartTestData
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${CMAKE_BINARY_DIR}/tests
|
||||
${PartTestData_Files})
|
||||
|
||||
@@ -0,0 +1,170 @@
|
||||
// SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "Mod/Part/App/FuzzyHelper.h"
|
||||
#include "Mod/Part/App/FeaturePartImportBrep.h"
|
||||
#include <src/App/InitApplication.h>
|
||||
#include <BRepBuilderAPI_Copy.hxx>
|
||||
#include <BOPAlgo_ArgumentAnalyzer.hxx>
|
||||
#include "PartTestHelpers.h"
|
||||
|
||||
|
||||
class FuzzyBooleanTest: public ::testing::Test, public PartTestHelpers::PartTestHelperClass
|
||||
{
|
||||
protected:
|
||||
static void SetUpTestSuite()
|
||||
{
|
||||
tests::initApplication();
|
||||
}
|
||||
|
||||
void SetUp() override
|
||||
{
|
||||
createTestDoc();
|
||||
std::string testPath = App::Application::getHomePath() + "/tests/brepfiles/";
|
||||
_fuse = dynamic_cast<Part::Fuse*>(_doc->addObject("Part::Fuse"));
|
||||
_cylinder1 = dynamic_cast<Part::ImportBrep*>(_doc->addObject("Part::ImportBrep"));
|
||||
_cylinder1->FileName.setValue(testPath + "cylinder1.brep");
|
||||
_helix1 = dynamic_cast<Part::ImportBrep*>(_doc->addObject("Part::ImportBrep"));
|
||||
_helix1->FileName.setValue(testPath + "helix1.brep");
|
||||
|
||||
// Load
|
||||
_cylinder1->execute();
|
||||
_helix1->execute();
|
||||
|
||||
// Arrange
|
||||
_fuse->Base.setValue(_cylinder1);
|
||||
_fuse->Tool.setValue(_helix1);
|
||||
}
|
||||
|
||||
void TearDown() override
|
||||
{}
|
||||
|
||||
Part::Fuse* _fuse = nullptr; // NOLINT Can't be private in a test framework
|
||||
Part::ImportBrep* _cylinder1 = nullptr; // NOLINT Can't be private in a test framework
|
||||
Part::ImportBrep* _helix1 = nullptr; // NOLINT Can't be private in a test framework
|
||||
};
|
||||
|
||||
TEST_F(FuzzyBooleanTest, testLoadedCorrectly)
|
||||
{
|
||||
|
||||
EXPECT_NEAR(PartTestHelpers::getVolume(_cylinder1->Shape.getValue()), 125.6, 1.0);
|
||||
EXPECT_NEAR(PartTestHelpers::getVolume(_helix1->Shape.getValue()), 33.32, 1.0);
|
||||
}
|
||||
|
||||
TEST_F(FuzzyBooleanTest, testDefaultFuzzy)
|
||||
{
|
||||
|
||||
// Act
|
||||
_fuse->execute();
|
||||
|
||||
// Verify
|
||||
EXPECT_NEAR(PartTestHelpers::getVolume(_fuse->Shape.getValue()),
|
||||
PartTestHelpers::getVolume(_helix1->Shape.getValue())
|
||||
+ PartTestHelpers::getVolume(_cylinder1->Shape.getValue()),
|
||||
0.1);
|
||||
|
||||
// Analyse
|
||||
Part::TopoShape ts = _fuse->Shape.getValue();
|
||||
ASSERT_FALSE(ts.isNull());
|
||||
TopoDS_Shape BOPCopy = BRepBuilderAPI_Copy(ts.getShape()).Shape();
|
||||
BOPAlgo_ArgumentAnalyzer BOPCheck;
|
||||
BOPCheck.SetShape1(BOPCopy);
|
||||
BOPCheck.SelfInterMode() = Standard_True;
|
||||
|
||||
BOPCheck.Perform();
|
||||
// Assert
|
||||
EXPECT_FALSE(BOPCheck.HasFaulty());
|
||||
}
|
||||
|
||||
TEST_F(FuzzyBooleanTest, testGoodFuzzy)
|
||||
{
|
||||
|
||||
// Act
|
||||
double oldFuzzy = Part::FuzzyHelper::getBooleanFuzzy();
|
||||
Part::FuzzyHelper::setBooleanFuzzy(10.0);
|
||||
_fuse->execute();
|
||||
EXPECT_FLOAT_EQ(Part::FuzzyHelper::getBooleanFuzzy(), 10.0);
|
||||
Part::FuzzyHelper::setBooleanFuzzy(oldFuzzy);
|
||||
|
||||
// Verify
|
||||
EXPECT_NEAR(PartTestHelpers::getVolume(_fuse->Shape.getValue()),
|
||||
PartTestHelpers::getVolume(_helix1->Shape.getValue())
|
||||
+ PartTestHelpers::getVolume(_cylinder1->Shape.getValue()),
|
||||
0.1);
|
||||
|
||||
// Analyse
|
||||
Part::TopoShape ts = _fuse->Shape.getValue();
|
||||
ASSERT_FALSE(ts.isNull());
|
||||
TopoDS_Shape BOPCopy = BRepBuilderAPI_Copy(ts.getShape()).Shape();
|
||||
BOPAlgo_ArgumentAnalyzer BOPCheck;
|
||||
BOPCheck.SetShape1(BOPCopy);
|
||||
BOPCheck.SelfInterMode() = Standard_True;
|
||||
|
||||
BOPCheck.Perform();
|
||||
// Assert
|
||||
int result = BOPCheck.HasFaulty();
|
||||
EXPECT_FALSE(result);
|
||||
}
|
||||
|
||||
TEST_F(FuzzyBooleanTest, testFailsTooSmallFuzzy)
|
||||
{
|
||||
|
||||
// Act
|
||||
double oldFuzzy = Part::FuzzyHelper::getBooleanFuzzy();
|
||||
Part::FuzzyHelper::setBooleanFuzzy(0.01);
|
||||
_fuse->execute();
|
||||
EXPECT_FLOAT_EQ(Part::FuzzyHelper::getBooleanFuzzy(), 0.01);
|
||||
Part::FuzzyHelper::setBooleanFuzzy(oldFuzzy);
|
||||
|
||||
// Verify
|
||||
// EXPECT_NEAR(PartTestHelpers::getVolume(_fuse->Shape.getValue()),PartTestHelpers::getVolume(_helix1->Shape.getValue())+PartTestHelpers::getVolume(_cylinder1->Shape.getValue()),0.1);
|
||||
// // fails on OCCT 7.3 - ignore
|
||||
|
||||
// Analyse
|
||||
Part::TopoShape ts = _fuse->Shape.getValue();
|
||||
ASSERT_FALSE(ts.isNull());
|
||||
TopoDS_Shape BOPCopy = BRepBuilderAPI_Copy(ts.getShape()).Shape();
|
||||
BOPAlgo_ArgumentAnalyzer BOPCheck;
|
||||
BOPCheck.SetShape1(BOPCopy);
|
||||
BOPCheck.SelfInterMode() = Standard_True;
|
||||
|
||||
BOPCheck.Perform();
|
||||
// Assert
|
||||
int result = BOPCheck.HasFaulty();
|
||||
EXPECT_TRUE(result);
|
||||
}
|
||||
|
||||
TEST_F(FuzzyBooleanTest, testCompletelyFailsTooBigFuzzy)
|
||||
{
|
||||
|
||||
// Act
|
||||
double oldFuzzy = Part::FuzzyHelper::getBooleanFuzzy();
|
||||
Part::FuzzyHelper::setBooleanFuzzy(1e10);
|
||||
int failed = 0;
|
||||
Part::TopoShape ts;
|
||||
try {
|
||||
_fuse->execute();
|
||||
ts = _fuse->Shape.getValue();
|
||||
if (ts.isNull()) {
|
||||
failed = 1;
|
||||
}
|
||||
else {
|
||||
TopoDS_Shape BOPCopy = BRepBuilderAPI_Copy(ts.getShape()).Shape();
|
||||
BOPAlgo_ArgumentAnalyzer BOPCheck;
|
||||
BOPCheck.SetShape1(BOPCopy);
|
||||
BOPCheck.SelfInterMode() = Standard_True;
|
||||
|
||||
BOPCheck.Perform();
|
||||
// Assert
|
||||
if (BOPCheck.HasFaulty()) {
|
||||
failed = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (...) {
|
||||
failed = 1;
|
||||
}
|
||||
Part::FuzzyHelper::setBooleanFuzzy(oldFuzzy);
|
||||
EXPECT_EQ(failed, 1);
|
||||
}
|
||||
@@ -1444,7 +1444,7 @@ TEST_F(TopoShapeExpansionTest, makeElementBooleanCut)
|
||||
"Edge2",
|
||||
"Edge2;:M;CUT;:H2:7,E",
|
||||
"Edge3",
|
||||
"Edge3;:H2,E",
|
||||
"Edge3;:M;CUT;:H2:7,E",
|
||||
"Edge4",
|
||||
"Edge4;:M;CUT;:H2:7,E",
|
||||
"Edge6;:G(Edge12;K-1;:H2:4,E);CUT;:H1:1b,V",
|
||||
@@ -1467,9 +1467,9 @@ TEST_F(TopoShapeExpansionTest, makeElementBooleanCut)
|
||||
"Vertex1",
|
||||
"Vertex2",
|
||||
"Vertex3",
|
||||
"Vertex3;:H2,V",
|
||||
"Vertex3;:M;CUT;:H2:7,V",
|
||||
"Vertex4",
|
||||
"Vertex4;:H2,V",
|
||||
"Vertex4;:M;CUT;:H2:7,V",
|
||||
"Vertex7",
|
||||
"Vertex8",
|
||||
}));
|
||||
@@ -1550,13 +1550,13 @@ TEST_F(TopoShapeExpansionTest, makeElementBooleanFuse)
|
||||
"Vertex2",
|
||||
"Vertex2;:H2,V",
|
||||
"Vertex3",
|
||||
"Vertex3;:H2,V",
|
||||
"Vertex3;:M;FUS;:H2:7,V",
|
||||
"Vertex4",
|
||||
"Vertex4;:H2,V",
|
||||
"Vertex5",
|
||||
"Vertex4;:M;FUS;:H2:7,V",
|
||||
"Vertex5;:H2,V",
|
||||
"Vertex6",
|
||||
"Vertex5;:M;FUS;:H1:7,V",
|
||||
"Vertex6;:H2,V",
|
||||
"Vertex6;:M;FUS;:H1:7,V",
|
||||
"Vertex7",
|
||||
"Vertex7;:H2,V",
|
||||
"Vertex8",
|
||||
@@ -2021,13 +2021,13 @@ TEST_F(TopoShapeExpansionTest, makeElementFuse)
|
||||
"Vertex2",
|
||||
"Vertex2;:H2,V",
|
||||
"Vertex3",
|
||||
"Vertex3;:H2,V",
|
||||
"Vertex3;:M;FUS;:H2:7,V",
|
||||
"Vertex4",
|
||||
"Vertex4;:H2,V",
|
||||
"Vertex5",
|
||||
"Vertex4;:M;FUS;:H2:7,V",
|
||||
"Vertex5;:H2,V",
|
||||
"Vertex6",
|
||||
"Vertex5;:M;FUS;:H1:7,V",
|
||||
"Vertex6;:H2,V",
|
||||
"Vertex6;:M;FUS;:H1:7,V",
|
||||
"Vertex7",
|
||||
"Vertex7;:H2,V",
|
||||
"Vertex8",
|
||||
@@ -2065,7 +2065,7 @@ TEST_F(TopoShapeExpansionTest, makeElementCut)
|
||||
"Edge2",
|
||||
"Edge2;:M;CUT;:H2:7,E",
|
||||
"Edge3",
|
||||
"Edge3;:H2,E",
|
||||
"Edge3;:M;CUT;:H2:7,E",
|
||||
"Edge4",
|
||||
"Edge4;:M;CUT;:H2:7,E",
|
||||
"Edge6;:G(Edge12;K-1;:H2:4,E);CUT;:H1:1b,V",
|
||||
@@ -2088,9 +2088,9 @@ TEST_F(TopoShapeExpansionTest, makeElementCut)
|
||||
"Vertex1",
|
||||
"Vertex2",
|
||||
"Vertex3",
|
||||
"Vertex3;:H2,V",
|
||||
"Vertex3;:M;CUT;:H2:7,V",
|
||||
"Vertex4",
|
||||
"Vertex4;:H2,V",
|
||||
"Vertex4;:M;CUT;:H2:7,V",
|
||||
"Vertex7",
|
||||
"Vertex8",
|
||||
}));
|
||||
@@ -2546,13 +2546,13 @@ TEST_F(TopoShapeExpansionTest, makeElementTransformWithMap)
|
||||
"Vertex2",
|
||||
"Vertex2;:H2,V",
|
||||
"Vertex3",
|
||||
"Vertex3;:H2,V",
|
||||
"Vertex3;:M;FUS;:H2:7,V",
|
||||
"Vertex4",
|
||||
"Vertex4;:H2,V",
|
||||
"Vertex5",
|
||||
"Vertex4;:M;FUS;:H2:7,V",
|
||||
"Vertex5;:H2,V",
|
||||
"Vertex6",
|
||||
"Vertex5;:M;FUS;:H1:7,V",
|
||||
"Vertex6;:H2,V",
|
||||
"Vertex6;:M;FUS;:H1:7,V",
|
||||
"Vertex7",
|
||||
"Vertex7;:H2,V",
|
||||
"Vertex8",
|
||||
@@ -2655,13 +2655,13 @@ TEST_F(TopoShapeExpansionTest, makeElementGTransformWithMap)
|
||||
"Vertex2",
|
||||
"Vertex2;:H2,V",
|
||||
"Vertex3",
|
||||
"Vertex3;:H2,V",
|
||||
"Vertex3;:M;FUS;:H2:7,V",
|
||||
"Vertex4",
|
||||
"Vertex4;:H2,V",
|
||||
"Vertex5",
|
||||
"Vertex4;:M;FUS;:H2:7,V",
|
||||
"Vertex5;:H2,V",
|
||||
"Vertex6",
|
||||
"Vertex5;:M;FUS;:H1:7,V",
|
||||
"Vertex6;:H2,V",
|
||||
"Vertex6;:M;FUS;:H1:7,V",
|
||||
"Vertex7",
|
||||
"Vertex7;:H2,V",
|
||||
"Vertex8",
|
||||
@@ -3051,7 +3051,7 @@ TEST_F(TopoShapeExpansionTest, traceElement)
|
||||
"Edge2",
|
||||
"Edge2;:M;CUT;:H2:7,E",
|
||||
"Edge3",
|
||||
"Edge3;:H2,E",
|
||||
"Edge3;:M;CUT;:H2:7,E",
|
||||
"Edge4",
|
||||
"Edge4;:M;CUT;:H2:7,E",
|
||||
"Edge6;:G(Edge12;K-1;:H2:4,E);CUT;:H1:1b,V",
|
||||
@@ -3074,9 +3074,9 @@ TEST_F(TopoShapeExpansionTest, traceElement)
|
||||
"Vertex1",
|
||||
"Vertex2",
|
||||
"Vertex3",
|
||||
"Vertex3;:H2,V",
|
||||
"Vertex3;:M;CUT;:H2:7,V",
|
||||
"Vertex4",
|
||||
"Vertex4;:H2,V",
|
||||
"Vertex4;:M;CUT;:H2:7,V",
|
||||
"Vertex7",
|
||||
"Vertex8",
|
||||
}));
|
||||
|
||||
@@ -0,0 +1,137 @@
|
||||
DBRep_DrawableShape
|
||||
|
||||
CASCADE Topology V1, (c) Matra-Datavision
|
||||
Locations 2
|
||||
1
|
||||
1 0 0 0
|
||||
0 1 0 0
|
||||
0 0 1 0
|
||||
2 1 -1 0
|
||||
Curve2ds 6
|
||||
1 0 10 1 0
|
||||
2 0 0 1 0 -0 1 2
|
||||
1 6.2831853071795862 -0 0 1
|
||||
1 0 -0 0 1
|
||||
1 0 0 1 0
|
||||
2 0 0 1 0 -0 1 2
|
||||
Curves 3
|
||||
2 0 0 10 0 0 1 1 0 -0 -0 1 0 2
|
||||
1 2 -4.898425415289509e-16 0 0 0 1
|
||||
2 0 0 0 0 0 1 1 0 -0 -0 1 0 2
|
||||
Polygon3D 0
|
||||
PolygonOnTriangulations 6
|
||||
26 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2
|
||||
p 0.0310985626705653 1 0 0.251327412287184 0.502654824574367 0.753982236861551 1.00530964914873 1.25663706143592 1.5079644737231 1.75929188601029 2.01061929829747 2.26194671058465 2.51327412287184 2.76460153515902 3.0159289474462 3.26725635973339 3.51858377202057 3.76991118430776 4.02123859659494 4.27256600888212 4.52389342116931 4.77522083345649 5.02654824574367 5.27787565803086 5.52920307031804 5.78053048260523 6.03185789489241 6.28318530717959
|
||||
26 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 1
|
||||
p 0.0310985626705653 1 0 0.251327412287184 0.502654824574367 0.753982236861551 1.00530964914873 1.25663706143592 1.5079644737231 1.75929188601029 2.01061929829747 2.26194671058465 2.51327412287184 2.76460153515902 3.0159289474462 3.26725635973339 3.51858377202057 3.76991118430776 4.02123859659494 4.27256600888212 4.52389342116931 4.77522083345649 5.02654824574367 5.27787565803086 5.52920307031804 5.78053048260523 6.03185789489241 6.28318530717959
|
||||
2 27 2
|
||||
p 0.0310985626705653 1 0 10
|
||||
2 28 1
|
||||
p 0.0310985626705653 1 0 10
|
||||
26 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 27
|
||||
p 0.0310985626705653 1 0 0.251327412287184 0.502654824574367 0.753982236861551 1.00530964914873 1.25663706143592 1.5079644737231 1.75929188601029 2.01061929829747 2.26194671058465 2.51327412287184 2.76460153515902 3.0159289474462 3.26725635973339 3.51858377202057 3.76991118430776 4.02123859659494 4.27256600888212 4.52389342116931 4.77522083345649 5.02654824574367 5.27787565803086 5.52920307031804 5.78053048260523 6.03185789489241 6.28318530717959
|
||||
26 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 1
|
||||
p 0.0310985626705653 1 0 0.251327412287184 0.502654824574367 0.753982236861551 1.00530964914873 1.25663706143592 1.5079644737231 1.75929188601029 2.01061929829747 2.26194671058465 2.51327412287184 2.76460153515902 3.0159289474462 3.26725635973339 3.51858377202057 3.76991118430776 4.02123859659494 4.27256600888212 4.52389342116931 4.77522083345649 5.02654824574367 5.27787565803086 5.52920307031804 5.78053048260523 6.03185789489241 6.28318530717959
|
||||
Surfaces 3
|
||||
2 0 0 0 0 0 1 1 0 -0 -0 1 0 2
|
||||
1 0 0 10 0 0 1 1 0 -0 -0 1 0
|
||||
1 0 0 0 0 0 1 1 0 -0 -0 1 0
|
||||
Triangulations 3
|
||||
52 50 1 0.0157705973710445
|
||||
2 -4.89842541528951e-16 10 2 -4.89842541528951e-16 10 1.93716632225726 0.49737977432971 10 1.75261336008773 0.963507348203431 10 1.45793725484282 1.36909421185738 10 1.07165358995799 1.68865585100403 10 0.618033988749894 1.90211303259031 10 0.125581039058625 1.99605345685654 10 -0.374762629171451 1.96457450145738 10 -0.851558583130147 1.80965410493204 10 -1.27484797949738 1.54102648555158 10 -1.6180339887499 1.17557050458494 10 -1.8595529717765 0.736249105369352 10 -1.98422940262896 0.250666467128604 10 -1.98422940262896 -0.250666467128614 10 -1.8595529717765 -0.736249105369362 10 -1.61803398874989 -1.17557050458495 10 -1.27484797949737 -1.54102648555158 10 -0.851558583130138 -1.80965410493204 10 -0.374762629171441 -1.96457450145738 10 0.125581039058636 -1.99605345685654 10 0.618033988749905 -1.9021130325903 10 1.071653589958 -1.68865585100402 10 1.45793725484283 -1.36909421185737 10 1.75261336008773 -0.96350734820342 10 1.93716632225727 -0.497379774329697 10 2 -4.89842541528951e-16 0 2 -4.89842541528951e-16 0 1.93716632225726 0.49737977432971 0 1.75261336008773 0.963507348203431 0 1.45793725484282 1.36909421185738 0 1.07165358995799 1.68865585100403 0 0.618033988749894 1.90211303259031 0 0.125581039058625 1.99605345685654 0 -0.374762629171451 1.96457450145738 0 -0.851558583130147 1.80965410493204 0 -1.27484797949738 1.54102648555158 0 -1.6180339887499 1.17557050458494 0 -1.8595529717765 0.736249105369352 0 -1.98422940262896 0.250666467128604 0 -1.98422940262896 -0.250666467128614 0 -1.8595529717765 -0.736249105369362 0 -1.61803398874989 -1.17557050458495 0 -1.27484797949737 -1.54102648555158 0 -0.851558583130138 -1.80965410493204 0 -0.374762629171441 -1.96457450145738 0 0.125581039058636 -1.99605345685654 0 0.618033988749905 -1.9021130325903 0 1.071653589958 -1.68865585100402 0 1.45793725484283 -1.36909421185737 0 1.75261336008773 -0.96350734820342 0 1.93716632225727 -0.497379774329697 0 0 10 6.28318530717959 10 0.251327412287184 10 0.502654824574367 10 0.753982236861551 10 1.00530964914873 10 1.25663706143592 10 1.5079644737231 10 1.75929188601029 10 2.01061929829747 10 2.26194671058465 10 2.51327412287184 10 2.76460153515902 10 3.0159289474462 10 3.26725635973339 10 3.51858377202057 10 3.76991118430776 10 4.02123859659494 10 4.27256600888212 10 4.52389342116931 10 4.77522083345649 10 5.02654824574367 10 5.27787565803086 10 5.52920307031804 10 5.78053048260523 10 6.03185789489241 10 6.28318530717959 0 0 0 0.251327412287184 0 0.502654824574367 0 0.753982236861551 0 1.00530964914873 0 1.25663706143592 0 1.5079644737231 0 1.75929188601029 0 2.01061929829747 0 2.26194671058465 0 2.51327412287184 0 2.76460153515902 0 3.0159289474462 0 3.26725635973339 0 3.51858377202057 0 3.76991118430776 0 4.02123859659494 0 4.27256600888212 0 4.52389342116931 0 4.77522083345649 0 5.02654824574367 0 5.27787565803086 0 5.52920307031804 0 5.78053048260523 0 6.03185789489241 0 22 21 47 22 47 48 22 48 49 23 22 49 3 28 29 3 1 28 24 23 49 24 49 50 24 50 51 4 29 30 4 3 29 25 24 51 5 30 31 26 51 52 5 4 30 26 25 51 26 52 27 2 26 27 6 31 32 6 32 33 6 5 31 7 6 33 8 33 34 8 34 35 8 7 33 9 8 35 10 35 36 10 9 35 11 36 37 11 10 36 12 37 38 12 11 37 13 38 39 13 12 38 14 13 39 14 39 40 15 14 40 15 40 41 16 15 41 16 41 42 17 16 42 17 42 43 18 17 43 18 43 44 19 18 44 19 44 45 19 45 46 20 19 46 20 46 47 21 20 47
|
||||
26 25 1 2.22044604925031e-16
|
||||
2 -4.89842541528951e-16 10 1.93716632225726 0.49737977432971 10 1.75261336008773 0.963507348203431 10 1.45793725484282 1.36909421185738 10 1.07165358995799 1.68865585100403 10 0.618033988749894 1.90211303259031 10 0.125581039058625 1.99605345685654 10 -0.374762629171451 1.96457450145738 10 -0.851558583130147 1.80965410493204 10 -1.27484797949738 1.54102648555158 10 -1.6180339887499 1.17557050458494 10 -1.8595529717765 0.736249105369352 10 -1.98422940262896 0.250666467128604 10 -1.98422940262896 -0.250666467128614 10 -1.8595529717765 -0.736249105369362 10 -1.61803398874989 -1.17557050458495 10 -1.27484797949737 -1.54102648555158 10 -0.851558583130138 -1.80965410493204 10 -0.374762629171441 -1.96457450145738 10 0.125581039058636 -1.99605345685654 10 0.618033988749905 -1.9021130325903 10 1.071653589958 -1.68865585100402 10 1.45793725484283 -1.36909421185737 10 1.75261336008773 -0.96350734820342 10 1.93716632225727 -0.497379774329697 10 0.0078852986855219 3.33066907387547e-16 10 2 0 1.93716632225726 0.49737977432971 1.75261336008773 0.963507348203431 1.45793725484282 1.36909421185738 1.07165358995799 1.68865585100403 0.618033988749894 1.90211303259031 0.125581039058625 1.99605345685654 -0.374762629171451 1.96457450145738 -0.851558583130147 1.80965410493204 -1.27484797949738 1.54102648555158 -1.6180339887499 1.17557050458494 -1.8595529717765 0.736249105369352 -1.98422940262896 0.250666467128604 -1.98422940262896 -0.250666467128614 -1.8595529717765 -0.736249105369362 -1.61803398874989 -1.17557050458495 -1.27484797949737 -1.54102648555158 -0.851558583130138 -1.80965410493204 -0.374762629171441 -1.96457450145738 0.125581039058636 -1.99605345685654 0.618033988749904 -1.9021130325903 1.071653589958 -1.68865585100402 1.45793725484283 -1.36909421185737 1.75261336008773 -0.96350734820342 1.93716632225727 -0.497379774329697 0.00788529868552179 2.22044604925031e-16 26 1 2 26 2 3 26 3 4 26 4 5 26 5 6 26 6 7 26 7 8 26 8 9 26 9 10 26 10 11 26 11 12 26 12 13 26 13 14 26 14 15 26 15 16 26 16 17 26 17 18 26 18 19 26 19 20 26 20 21 26 21 22 26 22 23 26 23 24 26 24 25 26 25 1
|
||||
26 25 1 2.22044604925031e-16
|
||||
2 -4.89842541528951e-16 0 1.93716632225726 0.49737977432971 0 1.75261336008773 0.963507348203431 0 1.45793725484282 1.36909421185738 0 1.07165358995799 1.68865585100403 0 0.618033988749894 1.90211303259031 0 0.125581039058625 1.99605345685654 0 -0.374762629171451 1.96457450145738 0 -0.851558583130147 1.80965410493204 0 -1.27484797949738 1.54102648555158 0 -1.6180339887499 1.17557050458494 0 -1.8595529717765 0.736249105369352 0 -1.98422940262896 0.250666467128604 0 -1.98422940262896 -0.250666467128614 0 -1.8595529717765 -0.736249105369362 0 -1.61803398874989 -1.17557050458495 0 -1.27484797949737 -1.54102648555158 0 -0.851558583130138 -1.80965410493204 0 -0.374762629171441 -1.96457450145738 0 0.125581039058636 -1.99605345685654 0 0.618033988749905 -1.9021130325903 0 1.071653589958 -1.68865585100402 0 1.45793725484283 -1.36909421185737 0 1.75261336008773 -0.96350734820342 0 1.93716632225727 -0.497379774329697 0 0.0078852986855219 3.33066907387547e-16 0 2 0 1.93716632225726 0.49737977432971 1.75261336008773 0.963507348203431 1.45793725484282 1.36909421185738 1.07165358995799 1.68865585100403 0.618033988749894 1.90211303259031 0.125581039058625 1.99605345685654 -0.374762629171451 1.96457450145738 -0.851558583130147 1.80965410493204 -1.27484797949738 1.54102648555158 -1.6180339887499 1.17557050458494 -1.8595529717765 0.736249105369352 -1.98422940262896 0.250666467128604 -1.98422940262896 -0.250666467128614 -1.8595529717765 -0.736249105369362 -1.61803398874989 -1.17557050458495 -1.27484797949737 -1.54102648555158 -0.851558583130138 -1.80965410493204 -0.374762629171441 -1.96457450145738 0.125581039058636 -1.99605345685654 0.618033988749904 -1.9021130325903 1.071653589958 -1.68865585100402 1.45793725484283 -1.36909421185737 1.75261336008773 -0.96350734820342 1.93716632225727 -0.497379774329697 0.00788529868552179 2.22044604925031e-16 26 1 2 26 2 3 26 3 4 26 4 5 26 5 6 26 6 7 26 7 8 26 8 9 26 9 10 26 10 11 26 11 12 26 12 13 26 13 14 26 14 15 26 15 16 26 16 17 26 17 18 26 18 19 26 19 20 26 20 21 26 21 22 26 22 23 26 23 24 26 24 25 26 25 1
|
||||
|
||||
TShapes 15
|
||||
Ve
|
||||
1e-07
|
||||
2 -4.89842541528951e-16 10
|
||||
0 0
|
||||
|
||||
0101101
|
||||
*
|
||||
Ed
|
||||
1e-07 1 1 0
|
||||
1 1 0 0 6.28318530717959
|
||||
2 1 1 0 0 6.28318530717959
|
||||
2 2 2 0 0 6.28318530717959
|
||||
6 1 1 0
|
||||
6 2 2 0
|
||||
0
|
||||
|
||||
0101100
|
||||
+15 2 -15 2 *
|
||||
Ve
|
||||
1e-07
|
||||
2 -4.89842541528951e-16 0
|
||||
0 0
|
||||
|
||||
0101101
|
||||
*
|
||||
Ed
|
||||
1e-07 1 1 0
|
||||
1 2 0 0 10
|
||||
3 3 4CN 1 0 0 10
|
||||
7 3 4 1 0
|
||||
0
|
||||
|
||||
0101000
|
||||
-15 2 +13 2 *
|
||||
Ed
|
||||
1e-07 1 1 0
|
||||
1 3 0 0 6.28318530717959
|
||||
2 5 1 0 0 6.28318530717959
|
||||
2 6 3 0 0 6.28318530717959
|
||||
6 5 1 0
|
||||
6 6 3 0
|
||||
0
|
||||
|
||||
0101100
|
||||
+13 2 -13 2 *
|
||||
Wi
|
||||
|
||||
0101000
|
||||
-14 0 +12 0 +11 0 -12 0 *
|
||||
Fa
|
||||
0 1e-07 1 0
|
||||
2 1
|
||||
0101000
|
||||
+10 0 *
|
||||
Wi
|
||||
|
||||
0101000
|
||||
+14 0 *
|
||||
Fa
|
||||
0 1e-07 2 0
|
||||
2 2
|
||||
0101000
|
||||
+8 0 *
|
||||
Wi
|
||||
|
||||
0101000
|
||||
-11 0 *
|
||||
Fa
|
||||
0 1e-07 3 0
|
||||
2 3
|
||||
0101000
|
||||
-6 0 *
|
||||
Sh
|
||||
|
||||
0101100
|
||||
+9 0 +7 0 -5 0 *
|
||||
So
|
||||
|
||||
0100100
|
||||
+4 0 *
|
||||
Co
|
||||
|
||||
0100000
|
||||
+3 1 *
|
||||
Co
|
||||
|
||||
1100000
|
||||
+2 0 *
|
||||
|
||||
+1 0
|
||||
@@ -0,0 +1,903 @@
|
||||
DBRep_DrawableShape
|
||||
|
||||
CASCADE Topology V1, (c) Matra-Datavision
|
||||
Locations 1
|
||||
1
|
||||
1 0 0 0
|
||||
0 -2.22044604925031e-16 -1 0
|
||||
0 1 -2.22044604925031e-16 0
|
||||
Curve2ds 60
|
||||
1 0 0 1 0
|
||||
1 0 0 1 0
|
||||
1 0 0 1 0
|
||||
1 0 0 0 1
|
||||
8 0 6.2870356770386975
|
||||
1 1.1180339887492663 0 0 1
|
||||
1 0.99999999999999989 0 0 1
|
||||
8 0 6.2870356770386975
|
||||
1 0 0 0 1
|
||||
1 0 6.2870356770386975 1 0
|
||||
8 0 0.99999999999999989
|
||||
1 0 0 1 0
|
||||
1 0 0 0 1
|
||||
8 0 6.2870356770386975
|
||||
1 1.1180339887492663 0 0 1
|
||||
1 0.99999999999999989 0 0 1
|
||||
8 0 6.2870356770386975
|
||||
1 0 0 0 1
|
||||
1 0 6.2870356770386975 1 0
|
||||
8 0 0.99999999999999989
|
||||
1 0 0 1 0
|
||||
1 0 0 0 1
|
||||
8 0 6.2870356770386975
|
||||
1 1.1180339887492663 0 0 1
|
||||
1 0.99999999999999989 0 0 1
|
||||
8 0 6.2870356770386975
|
||||
1 0 0 0 1
|
||||
1 0 6.2870356770386975 1 0
|
||||
8 0 0.99999999999999989
|
||||
1 0 0 1 0
|
||||
1 0 0 0 1
|
||||
8 0 6.2870356770386975
|
||||
1 1.1180339887492663 0 0 1
|
||||
1 0.99999999999999989 0 0 1
|
||||
8 0 6.2870356770386975
|
||||
1 0 0 0 1
|
||||
1 0 6.2870356770386975 1 0
|
||||
8 0 0.99999999999999989
|
||||
1 0 0 1 0
|
||||
1 0 0 0 1
|
||||
8 0 3.4292921874756512
|
||||
1 1.1180339887492663 0 0 1
|
||||
1 0.99999999999999989 0 0 1
|
||||
8 0 3.4292921874756512
|
||||
1 0 0 0 1
|
||||
1 0 3.4292921874756512 1 0
|
||||
1 1.1180339887505235 0 0 1
|
||||
8 0 6.2870356770386975
|
||||
1 0 0 0 1
|
||||
1 0 6.2870356770386975 1 0
|
||||
8 0 1.1180339887505235
|
||||
1 0 0 1 0
|
||||
1 1.1180339887505235 0 0 1
|
||||
8 0 6.2870356770386975
|
||||
1 0 0 0 1
|
||||
1 0 6.2870356770386975 1 0
|
||||
8 0 1.1180339887505235
|
||||
1 0 0 1 0
|
||||
1 1.1180339887505235 0 0 1
|
||||
8 0 6.2870356770386975
|
||||
1 0 0 0 1
|
||||
1 0 6.2870356770386975 1 0
|
||||
8 0 1.1180339887505235
|
||||
1 0 0 1 0
|
||||
1 1.1180339887505235 0 0 1
|
||||
8 0 6.2870356770386975
|
||||
1 0 0 0 1
|
||||
1 0 6.2870356770386975 1 0
|
||||
8 0 1.1180339887505235
|
||||
1 0 0 1 0
|
||||
1 1.1180339887505235 0 0 1
|
||||
8 0 3.4292921874756512
|
||||
1 0 0 0 1
|
||||
1 0 3.4292921874756512 1 0
|
||||
1 0 6.2870356770386975 1 0
|
||||
8 0 1.1180339887492663
|
||||
1 0 0 1 0
|
||||
1 0 6.2870356770386975 1 0
|
||||
8 0 1.1180339887492663
|
||||
1 0 0 1 0
|
||||
1 0 6.2870356770386975 1 0
|
||||
8 0 1.1180339887492663
|
||||
1 0 0 1 0
|
||||
1 0 6.2870356770386975 1 0
|
||||
8 0 1.1180339887492663
|
||||
1 0 0 1 0
|
||||
1 0 3.4292921874756512 1 0
|
||||
Curves 33
|
||||
7 0 0 1 2 2 2.0000000000000306 9.0938367947046572e-13 1.6684810553702823e-15 2.0000000000000284 1.0000000000009095 1.8067860570396971e-15
|
||||
0 2 0.99999999999999989 2
|
||||
7 0 0 1 2 2 2.0000000000000275 0.99999999999999989 1.2482846049280778e-15 3.0000000000000262 0.49999999999909028 2.64590224776542e-15
|
||||
0 2 1.1180339887505235 2
|
||||
7 0 0 1 2 2 3.0000000000000262 0.49999999999909028 2.64590224776542e-15 2.0000000000000266 -1.1102230246251565e-16 1.735593475076781e-15
|
||||
0 2 1.1180339887492663 2
|
||||
7 0 0 10 11 2 2.0000000000000306 9.0938367947046572e-13 1.6684810553702823e-15 1.999999959939065 0.11000000199007182 -1.2566338554788934 1.1228905917351018 0.21999999529312889 -2.5142965052784554 -0.63337553221942444 0.33000000849324884 -3.074762622374831 -2.6388940263357452 0.43999999335094497 -2.2895691041051509 -3.7012392763888831 0.5500000002214146 -2.6799449770464936e-08 -2.6388942634676984 0.66000000729935382 2.289569143296684 -0.6333752369905884 0.76999999205562586 3.0747626064836964 1.122890401259464 0.88000000523279343 2.5142965081779178 2.0000000280573076 0.98999999860754562 1.2566338556980587 1.9999999889437008 1.1000000005496986 7.9688529331130179e-11
|
||||
0 11 6.2870356770386975 11
|
||||
7 0 0 10 11 2 2.0000000000000284 1.0000000000009095 1.8067860570396971e-15 1.9999999599470493 1.1100000019901159 -1.2566338554796066 1.1228905917164054 1.2199999952962788 -2.5142965052802975 -0.6333755321888157 1.3300000084765569 -3.0747626223748288 -2.6388940263641505 1.4399999933898993 -2.2895691041104191 -3.7012392763868704 1.5500000001715462 -2.6794308105593292e-08 -2.6388942634487753 1.6600000073384424 2.2895691432943206 -0.6333752370187804 1.7699999920387648 3.0747626064869191 1.1228904012785821 1.8800000052360488 2.5142965081790924 2.0000000280516921 1.9899999986075592 1.2566338556987795 1.9999999889459432 2.1000000005496986 7.9688667636131848e-11
|
||||
0 11 6.2870356770386975 11
|
||||
7 0 0 1 2 2 1.9999999889437008 1.1000000005496986 7.9688529331130179e-11 1.9999999889459432 2.1000000005496986 7.9688667636131848e-11
|
||||
0 2 0.99999999999999989 2
|
||||
7 0 0 10 11 2 1.9999999889438393 1.1000000005506081 7.9573322520480816e-11 1.9999999504327597 1.2100000024638651 -1.2566338485000579 1.1228905841713051 1.3199999958902204 -2.5142964936684566 -0.63337552679389553 1.4300000089461606 -3.0747626022633292 -2.6388940137391041 1.5399999939296962 -2.2895690975066207 -3.7012392571699686 1.6500000007173401 -2.1274036754448425e-08 -2.6388942480372157 1.7600000078276066 2.2895691263877964 -0.63337523498080051 1.8699999925830786 3.0747625936187082 1.1228903958652039 1.9800000057520644 2.514296493179764 2.0000000172065762 2.0899999991450695 1.2566338495544689 1.9999999786182334 2.2000000010621084 1.498650320469746e-10
|
||||
0 11 6.2870356770386975 11
|
||||
7 0 0 10 11 2 1.9999999889460875 2.1000000005506076 7.9569716671940351e-11 1.9999999504427557 2.2100000024638762 -1.2566338485020818 1.1228905841539827 2.3199999958947446 -2.5142964936729517 -0.63337552676433961 2.4300000089179838 -3.0747626022660426 -2.6388940137698809 2.5399999939944702 -2.2895690975160075 -3.7012392571715007 2.6500000006299165 -2.1266290062271801e-08 -2.6388942480221624 2.7600000079011782 2.2895691263853917 -0.63337523500900739 2.8699999925487942 3.0747625936265219 1.1228903958853254 2.9800000057580278 2.5142964931831826 2.0000000172031585 3.0899999991450615 1.256633849556545 1.9999999786225262 3.2000000010621079 1.4986675526895234e-10
|
||||
0 11 6.2870356770386975 11
|
||||
7 0 0 1 2 2 1.9999999786182334 2.2000000010621084 1.498650320469746e-10 1.9999999786225262 3.2000000010621079 1.4986675526895234e-10
|
||||
0 2 0.99999999999999989 2
|
||||
7 0 0 10 11 2 1.9999999786181786 2.2000000010621079 1.4993260157095021e-10 1.9999999400738631 2.3100000029808276 -1.2566338420167411 1.1228905772510862 2.4199999964632046 -2.5142964794265734 -0.63337552098851213 2.5300000094244859 -3.0747625870472812 -2.6388940021707605 2.6399999943919257 -2.2895690849360779 -3.7012392363085422 2.7500000014736909 -2.2093992413374548e-08 -2.638894233520348 2.8600000080243344 2.2895691152357105 -0.63337523368614168 2.9699999933701364 3.0747625761742614 1.1228903911008323 3.0800000061624324 2.5142964805065611 2.0000000063123959 3.1899999996821689 1.2566338429759571 1.9999999678044289 3.300000001599074 2.0309046120301625e-10
|
||||
0 11 6.2870356770386975 11
|
||||
7 0 0 10 11 2 1.9999999786224718 3.2000000010621079 1.4993245955643687e-10 1.9999999400858754 3.3100000029809165 -1.2566338420201038 1.1228905772354529 3.4199999964662728 -2.5142964794336784 -0.63337552096141658 3.530000009400982 -3.0747625870539368 -2.6388940022006375 3.6399999944497425 -2.2895690849458434 -3.7012392363187367 3.7500000013920904 -2.2089328588492702e-08 -2.638894233504244 3.8600000080946613 2.2895691152386886 -0.63337523371668869 3.9699999933346248 3.0747625761836828 1.1228903911224484 4.0800000061691435 2.5142964805130732 2.0000000063110868 4.1899999996822723 1.2566338429793282 1.999999967810852 4.3000000015990736 2.0308943101008321e-10
|
||||
0 11 6.2870356770386975 11
|
||||
7 0 0 1 2 2 1.9999999678044289 3.300000001599074 2.0309046120301625e-10 1.999999967810852 4.3000000015990736 2.0308943101008321e-10
|
||||
0 2 0.99999999999999989 2
|
||||
7 0 0 10 11 2 1.9999999678044258 3.3000000015990736 2.0309866472500391e-10 1.9999999279238478 3.4100000035856528 -1.2566338351063444 1.1228905729919101 3.5199999969246787 -2.5142964646674235 -0.63337551712705942 3.6300000099194438 -3.074762572896566 -2.6388939950858141 3.7399999954130898 -2.2895690671737792 -3.701239199025594 3.8500000010453497 -2.8316819999929571e-08 -2.638894240086211 3.9600000097382408 2.289569107254986 -0.63337521336332525 4.0699999930152293 3.0747625569284258 1.1228903762540163 4.1800000071518646 2.5142964672592112 1.9999999975765625 4.2900000001133263 1.2566338359369953 1.9999999567633309 4.4000000021460446 3.4089193414872246e-10
|
||||
0 11 6.2870356770386975 11
|
||||
7 0 0 10 11 2 1.9999999678108487 4.3000000015990727 2.0310001286277759e-10 1.9999999279383043 4.4100000035856688 -1.2566338351111224 1.122890572977371 4.5199999969270834 -2.5142964646772947 -0.63337551710101136 4.6300000099037906 -3.0747625729062196 -2.6388939951173178 4.7399999954404937 -2.2895690671867799 -3.7012391990426692 4.8500000010168538 -2.8311815114534561e-08 -2.6388942400694013 4.9600000097581329 2.28956910726074 -0.63337521339745995 5.0699999930075235 3.0747625569407111 1.1228903762783815 5.1800000071517864 2.5142964672688786 1.999999997577024 5.2900000001133138 1.2566338359416902 1.9999999567719706 5.4000000021460428 3.4087463053968244e-10
|
||||
0 11 6.2870356770386975 11
|
||||
7 0 0 1 2 2 1.9999999567633309 4.4000000021460446 3.4089193414872246e-10 1.9999999567719706 5.4000000021460428 3.4087463053968244e-10
|
||||
0 2 0.99999999999999989 2
|
||||
7 0 0 7 8 2 1.9999999567634459 4.4000000021451351 3.4084246536281171e-10 2.0000002640696679 4.4857142726286385 -0.97919124939730628 1.4406779014824571 4.5714286200977545 -1.9568429588808502 0.32256706838431459 4.65714278042977 -2.5610970658126595 -1.0310446917849259 4.7428572231265349 -2.3664775333082049 -1.9336277920152993 4.8285713826164374 -1.4716907680536384 -2.1948556793096836 4.914285730957423 -0.37606210629261111 -1.9189859268982161 5.0000000010577432 0.5634651072808482
|
||||
0 8 3.4292921874756512 8
|
||||
7 0 0 7 8 2 1.9999999567720863 5.4000000021451333 3.4082825450809651e-10 2.0000002640168799 5.4857142726286572 -0.97919124940054725 1.440677901603262 5.5714286201005256 -1.956842958876841 0.32256706831810533 5.6571427804273915 -2.561097065856611 -1.0310446918474518 5.7428572231258039 -2.3664775332620946 -1.9336277919102527 5.8285713826187129 -1.4716907681020224 -2.1948556793750762 5.9142857309574053 -0.37606210627671594 -1.91898592690228 6.0000000010577423 0.56346510728208499
|
||||
0 8 3.4292921874756512 8
|
||||
7 0 0 1 2 2 -1.9189859268982161 5.0000000010577432 0.5634651072808482 -1.91898592690228 6.0000000010577423 0.56346510728208499
|
||||
0 2 0.99999999999999989 2
|
||||
7 0 0 10 11 2 3.0000000000000262 0.49999999999909028 2.64590224776542e-15 2.9999999599430494 0.61000000198025983 -1.8849523991101589 1.6843358541807412 0.71999999532856152 -3.7714388372926861 -0.95006329236532527 0.83000000838478272 -4.6121543037994446 -3.9583409408894639 0.9399999935088923 -3.4343447840084473 -5.5518591362037464 1.0500000000726892 -2.6801831864986571e-08 -3.9583411779967386 1.1600000073662897 3.4343448232057008 -0.95006299716576159 1.2699999920433398 4.6121542879044508 1.6843356637246436 1.3800000052181578 3.771438840193881 3.000000028054711 1.4899999986117534 1.8849523993284072 2.9999999889448357 1.6000000005460604 7.9366400412257482e-11
|
||||
0 11 6.2870356770386975 11
|
||||
7 0 0 1 2 2 1.9999999889459439 2.1000000005487891 7.9688997313099437e-11 2.9999999889448357 1.6000000005460604 7.9366400412257482e-11
|
||||
0 2 1.1180339887505235 2
|
||||
7 0 0 10 11 2 2.999999988944976 1.6000000005460602 7.9250740617934832e-11 2.9999999504375432 1.7100000024516238 -1.8849523921333624 1.6843358466169605 1.8199999959049489 -3.7714388256798435 -0.95006328694068609 1.9300000089020084 -4.6121542837014822 -3.95834092829466 2.0399999939710258 -3.4343447773886919 -5.5518591169866616 2.1500000006882662 -2.1303298680663866e-08 -3.9583411625671245 2.2600000078083955 3.4343448063231747 -0.95006299515631087 2.3699999926109152 4.6121542750259197 1.6843356583319962 2.4800000057243063 3.7714388252032625 3.0000000172052164 2.5899999991464546 1.8849523931834573 2.9999999786203655 2.7000000010557414 1.4926020001166973e-10
|
||||
0 11 6.2870356770386975 11
|
||||
7 0 0 1 2 2 1.9999999786225262 3.2000000010611984 1.4986436523883961e-10 2.9999999786203655 2.7000000010557414 1.4926020001166973e-10
|
||||
0 2 1.1180339887505235 2
|
||||
7 0 0 10 11 2 2.9999999786203113 2.7000000010557414 1.493250228982142e-10 2.9999999400794013 2.8100000029668268 -1.8849523856500396 1.6843358396979533 2.9199999964709473 -3.7714388114427502 -0.95006328113862848 3.0300000093814292 -4.6121542684796086 -3.9583409167230954 3.1399999944454362 -3.4343447648292291 -5.5518590961329659 3.250000001403254 -2.211391869622052e-08 -3.9583411480468893 3.3600000080552288 3.4343447951676214 -0.95006299386368853 3.469999993355684 4.6121542575846384 1.6843356535689435 3.5800000061467721 3.7714388125311884 3.0000000063121735 3.6899999996808979 1.8849523866053275 2.9999999678076414 3.8000000015899791 2.0226724577899886e-10
|
||||
0 11 6.2870356770386975 11
|
||||
7 0 0 1 2 2 1.9999999678108524 4.3000000015981641 2.0308942781058091e-10 2.9999999678076414 3.8000000015899791 2.0226724577899886e-10
|
||||
0 2 1.1180339887505235 2
|
||||
7 0 0 10 11 2 2.9999999678076419 3.8000000015899786 2.0228197919908545e-10 2.9999999279305172 3.9100000035685993 -1.8849523787403486 1.6843358354390539 4.0199999969387505 -3.7714387966862271 -0.95006327727783102 4.130000009847369 -4.6121542543265557 -3.9583409096400803 4.2399999955134353 -3.4343447470762434 -5.5518590588514121 4.3500000009162774 -2.8324961931502962e-08 -3.9583411546147409 4.4600000098022869 3.4343447871776691 -0.95006297354057856 4.569999992988012 4.612154238347574 1.6843356387230635 4.6800000071346206 3.7714387992820004 2.9999999975774561 4.7900000001106369 1.8849523795677556 2.9999999567676552 4.9000000021351298 3.3978766941952692e-10
|
||||
0 11 6.2870356770386975 11
|
||||
7 0 0 1 2 2 1.9999999567719688 5.4000000021451333 3.4087654078806909e-10 2.9999999567676552 4.9000000021351298 3.3978766941952692e-10
|
||||
0 2 1.1180339887505235 2
|
||||
7 0 0 8 9 2 2.9999999567677649 4.9000000021351298 3.397406800331737e-10 3.0000002256333747 4.9749999888619385 -1.2851913641367954 2.3705073010240469 5.0500000328942178 -2.5704115958869975 1.1136055593857705 5.1249999710601237 -3.4960865104568501 -0.53250205740685397 5.2000000008716958 -3.7036172149772306 -2.0534544967400987 5.2750000334473137 -3.0407322012228404 -2.9986555539519255 5.3499999696162943 -1.7984423363377851 -3.2405588854226228 5.4250000146594397 -0.38793449825195131 -2.8784789005144367 5.5000000010522854 0.84519766412397335
|
||||
0 9 3.4292921874756512 9
|
||||
7 0 0 1 2 2 -1.9189859269022804 6.000000001056832 0.56346510728208465 -2.8784789005144367 5.5000000010522854 0.84519766412397335
|
||||
0 2 1.1180339887505235 2
|
||||
7 0 0 1 2 2 2.9999999889448357 1.6000000005460604 7.9366400412257482e-11 1.9999999889436957 1.1000000005487891 7.9689484621969586e-11
|
||||
0 2 1.1180339887492663 2
|
||||
7 0 0 1 2 2 2.9999999786203655 2.7000000010557414 1.4926020001166973e-10 1.9999999786182339 2.2000000010611989 1.4986414387580778e-10
|
||||
0 2 1.1180339887492663 2
|
||||
7 0 0 1 2 2 2.9999999678076414 3.8000000015899791 2.0226724577899886e-10 1.9999999678044273 3.3000000015981645 2.030895970084515e-10
|
||||
0 2 1.1180339887492663 2
|
||||
7 0 0 1 2 2 2.9999999567676552 4.9000000021351298 3.3978766941952692e-10 1.9999999567633331 4.4000000021451351 3.4089091691064752e-10
|
||||
0 2 1.1180339887492663 2
|
||||
7 0 0 1 2 2 -2.8784789005144367 5.5000000010522854 0.84519766412397335 -1.9189859268982157 5.0000000010568328 0.56346510728084809
|
||||
0 2 1.1180339887492663 2
|
||||
Polygon3D 0
|
||||
PolygonOnTriangulations 0
|
||||
Surfaces 17
|
||||
1 2.3454915028125551 0.49999999999961142 2.2204460492560777e-16 9.2179164606366873e-45 -4.4408920985006262e-16 -1 -2.0756902568627873e-29 1 -4.4408920985006262e-16 1 -2.0756902568627873e-29 0
|
||||
9 0 0 0 0 1 10 2 11 2 2 2.0000000000000306 9.0938367947046572e-13 1.6684810553702823e-15 1.999999959939065 0.11000000199007182 -1.2566338554788934 1.1228905917351018 0.21999999529312889 -2.5142965052784554 -0.63337553221942444 0.33000000849324884 -3.074762622374831 -2.6388940263357452 0.43999999335094497 -2.2895691041051509 -3.7012392763888831 0.5500000002214146 -2.6799449770464936e-08 -2.6388942634676984 0.66000000729935382 2.289569143296684 -0.6333752369905884 0.76999999205562586 3.0747626064836964 1.122890401259464 0.88000000523279343 2.5142965081779178 2.0000000280573076 0.98999999860754562 1.2566338556980587 1.9999999889437008 1.1000000005496986 7.9688529331130179e-11
|
||||
2.0000000000000284 1.0000000000009095 1.8067860570396971e-15 1.9999999599470493 1.1100000019901159 -1.2566338554796066 1.1228905917164054 1.2199999952962788 -2.5142965052802975 -0.6333755321888157 1.3300000084765569 -3.0747626223748288 -2.6388940263641505 1.4399999933898993 -2.2895691041104191 -3.7012392763868704 1.5500000001715462 -2.6794308105593292e-08 -2.6388942634487753 1.6600000073384424 2.2895691432943206 -0.6333752370187804 1.7699999920387648 3.0747626064869191 1.1228904012785821 1.8800000052360488 2.5142965081790924 2.0000000280516921 1.9899999986075592 1.2566338556987795 1.9999999889459432 2.1000000005496986 7.9688667636131848e-11
|
||||
|
||||
0 2
|
||||
0.99999999999999989 2
|
||||
|
||||
0 11
|
||||
6.2870356770386975 11
|
||||
|
||||
9 0 0 0 0 1 10 2 11 2 2 2.0000000000000275 0.99999999999999989 1.2482846049280778e-15 1.9999999599470515 1.1100000019892178 -1.2566338554796033 1.122890591716257 1.2199999952953255 -2.5142965052803392 -0.63337553218827447 1.3300000084757466 -3.0747626223746574 -2.6388940263652154 1.4399999933888332 -2.289569104110813 -3.7012392763855941 1.5500000001708156 -2.6793766316757275e-08 -2.6388942634497043 1.66000000733738 2.2895691432938867 -0.63337523701841136 1.7699999920379506 3.0747626064871429 1.1228904012785161 1.8800000052350989 2.5142965081790125 2.0000000280516912 1.9899999986066599 1.2566338556987984 1.9999999889459439 2.1000000005487891 7.9688997313099437e-11
|
||||
3.0000000000000262 0.49999999999909028 2.64590224776542e-15 2.9999999599430494 0.61000000198025983 -1.8849523991101589 1.6843358541807412 0.71999999532856152 -3.7714388372926861 -0.95006329236532527 0.83000000838478272 -4.6121543037994446 -3.9583409408894639 0.9399999935088923 -3.4343447840084473 -5.5518591362037464 1.0500000000726892 -2.6801831864986571e-08 -3.9583411779967386 1.1600000073662897 3.4343448232057008 -0.95006299716576159 1.2699999920433398 4.6121542879044508 1.6843356637246436 1.3800000052181578 3.771438840193881 3.000000028054711 1.4899999986117534 1.8849523993284072 2.9999999889448357 1.6000000005460604 7.9366400412257482e-11
|
||||
|
||||
0 2
|
||||
1.1180339887505235 2
|
||||
|
||||
0 11
|
||||
6.2870356770386975 11
|
||||
|
||||
9 0 0 0 0 1 10 2 11 2 2 3.0000000000000262 0.49999999999909028 2.64590224776542e-15 2.9999999599430494 0.61000000198025983 -1.8849523991101589 1.6843358541807412 0.71999999532856152 -3.7714388372926861 -0.95006329236532527 0.83000000838478272 -4.6121543037994446 -3.9583409408894639 0.9399999935088923 -3.4343447840084473 -5.5518591362037464 1.0500000000726892 -2.6801831864986571e-08 -3.9583411779967386 1.1600000073662897 3.4343448232057008 -0.95006299716576159 1.2699999920433398 4.6121542879044508 1.6843356637246436 1.3800000052181578 3.771438840193881 3.000000028054711 1.4899999986117534 1.8849523993284072 2.9999999889448357 1.6000000005460604 7.9366400412257482e-11
|
||||
2.0000000000000266 -1.1102230246251565e-16 1.735593475076781e-15 1.9999999599390308 0.11000000198916553 -1.2566338554788903 1.122890591735237 0.2199999952922061 -2.5142965052784754 -0.63337553221974396 0.33000000849237049 -3.0747626223747639 -2.6388940263352585 0.43999999334998541 -2.2895691041053015 -3.7012392763894 0.55000000022056506 -2.6799223284967912e-08 -2.6388942634673 0.66000000729838948 2.2895691432964478 -0.63337523699080889 0.76999999205475389 3.074762606483866 1.1228904012595493 0.88000000523186561 2.5142965081778392 2.0000000280572845 0.98999999860664134 1.2566338556980781 1.9999999889436957 1.1000000005487891 7.9689484621969586e-11
|
||||
|
||||
0 2
|
||||
1.1180339887492663 2
|
||||
|
||||
0 11
|
||||
6.2870356770386975 11
|
||||
|
||||
9 0 0 0 0 1 10 2 11 2 2 1.9999999889438393 1.1000000005506081 7.9573322520480816e-11 1.9999999504327597 1.2100000024638651 -1.2566338485000579 1.1228905841713051 1.3199999958902204 -2.5142964936684566 -0.63337552679389553 1.4300000089461606 -3.0747626022633292 -2.6388940137391041 1.5399999939296962 -2.2895690975066207 -3.7012392571699686 1.6500000007173401 -2.1274036754448425e-08 -2.6388942480372157 1.7600000078276066 2.2895691263877964 -0.63337523498080051 1.8699999925830786 3.0747625936187082 1.1228903958652039 1.9800000057520644 2.514296493179764 2.0000000172065762 2.0899999991450695 1.2566338495544689 1.9999999786182334 2.2000000010621084 1.498650320469746e-10
|
||||
1.9999999889460875 2.1000000005506076 7.9569716671940351e-11 1.9999999504427557 2.2100000024638762 -1.2566338485020818 1.1228905841539827 2.3199999958947446 -2.5142964936729517 -0.63337552676433961 2.4300000089179838 -3.0747626022660426 -2.6388940137698809 2.5399999939944702 -2.2895690975160075 -3.7012392571715007 2.6500000006299165 -2.1266290062271801e-08 -2.6388942480221624 2.7600000079011782 2.2895691263853917 -0.63337523500900739 2.8699999925487942 3.0747625936265219 1.1228903958853254 2.9800000057580278 2.5142964931831826 2.0000000172031585 3.0899999991450615 1.256633849556545 1.9999999786225262 3.2000000010621079 1.4986675526895234e-10
|
||||
|
||||
0 2
|
||||
0.99999999999999989 2
|
||||
|
||||
0 11
|
||||
6.2870356770386975 11
|
||||
|
||||
9 0 0 0 0 1 10 2 11 2 2 2.999999988944976 1.6000000005460602 7.9250740617934832e-11 2.9999999504375432 1.7100000024516238 -1.8849523921333624 1.6843358466169605 1.8199999959049489 -3.7714388256798435 -0.95006328694068609 1.9300000089020084 -4.6121542837014822 -3.95834092829466 2.0399999939710258 -3.4343447773886919 -5.5518591169866616 2.1500000006882662 -2.1303298680663866e-08 -3.9583411625671245 2.2600000078083955 3.4343448063231747 -0.95006299515631087 2.3699999926109152 4.6121542750259197 1.6843356583319962 2.4800000057243063 3.7714388252032625 3.0000000172052164 2.5899999991464546 1.8849523931834573 2.9999999786203655 2.7000000010557414 1.4926020001166973e-10
|
||||
1.9999999889438407 1.1000000005496986 7.957332252773369e-11 1.9999999504327932 1.2100000024629605 -1.2566338485000514 1.1228905841711276 1.319999995889297 -2.5142964936684877 -0.63337552679335152 1.4300000089452689 -3.0747626022632453 -2.6388940137400763 1.5399999939287836 -2.2895690975067469 -3.7012392571688522 1.6500000007164088 -2.1273940831179098e-08 -2.6388942480380755 1.760000007826731 2.2895691263877631 -0.6333752349803482 1.8699999925821442 3.0747625936187144 1.1228903958650478 1.9800000057511637 2.5142964931797618 2.0000000172066046 2.0899999991441587 1.2566338495544667 1.9999999786182339 2.2000000010611989 1.4986414387580778e-10
|
||||
|
||||
0 2
|
||||
1.1180339887492663 2
|
||||
|
||||
0 11
|
||||
6.2870356770386975 11
|
||||
|
||||
9 0 0 0 0 1 10 2 11 2 2 1.9999999889460875 2.1000000005496982 7.957176753392612e-11 1.9999999504427557 2.2100000024630013 -1.2566338485020756 1.1228905841539827 2.3199999958936943 -2.5142964936730134 -0.63337552676433961 2.4300000089174172 -3.0747626022659365 -2.6388940137698809 2.5399999939929776 -2.289569097516214 -3.7012392571715007 2.6500000006297264 -2.126587883566348e-08 -2.6388942480221624 2.760000007899631 2.2895691263849041 -0.63337523500900739 2.8699999925482822 3.0747625936267986 1.1228903958853254 2.9800000057569522 2.5142964931831022 2.0000000172031585 3.089999999144192 1.2566338495565548 1.9999999786225262 3.2000000010611984 1.4986436523883961e-10
|
||||
2.999999988944976 1.6000000005460602 7.9250740617934832e-11 2.9999999504375432 1.7100000024516238 -1.8849523921333624 1.6843358466169605 1.8199999959049489 -3.7714388256798435 -0.95006328694068609 1.9300000089020084 -4.6121542837014822 -3.95834092829466 2.0399999939710258 -3.4343447773886919 -5.5518591169866616 2.1500000006882662 -2.1303298680663866e-08 -3.9583411625671245 2.2600000078083955 3.4343448063231747 -0.95006299515631087 2.3699999926109152 4.6121542750259197 1.6843356583319962 2.4800000057243063 3.7714388252032625 3.0000000172052164 2.5899999991464546 1.8849523931834573 2.9999999786203655 2.7000000010557414 1.4926020001166973e-10
|
||||
|
||||
0 2
|
||||
1.1180339887505235 2
|
||||
|
||||
0 11
|
||||
6.2870356770386975 11
|
||||
|
||||
9 0 0 0 0 1 10 2 11 2 2 1.9999999786181786 2.2000000010621079 1.4993260157095021e-10 1.9999999400738631 2.3100000029808276 -1.2566338420167411 1.1228905772510862 2.4199999964632046 -2.5142964794265734 -0.63337552098851213 2.5300000094244859 -3.0747625870472812 -2.6388940021707605 2.6399999943919257 -2.2895690849360779 -3.7012392363085422 2.7500000014736909 -2.2093992413374548e-08 -2.638894233520348 2.8600000080243344 2.2895691152357105 -0.63337523368614168 2.9699999933701364 3.0747625761742614 1.1228903911008323 3.0800000061624324 2.5142964805065611 2.0000000063123959 3.1899999996821689 1.2566338429759571 1.9999999678044289 3.300000001599074 2.0309046120301625e-10
|
||||
1.9999999786224718 3.2000000010621079 1.4993245955643687e-10 1.9999999400858754 3.3100000029809165 -1.2566338420201038 1.1228905772354529 3.4199999964662728 -2.5142964794336784 -0.63337552096141658 3.530000009400982 -3.0747625870539368 -2.6388940022006375 3.6399999944497425 -2.2895690849458434 -3.7012392363187367 3.7500000013920904 -2.2089328588492702e-08 -2.638894233504244 3.8600000080946613 2.2895691152386886 -0.63337523371668869 3.9699999933346248 3.0747625761836828 1.1228903911224484 4.0800000061691435 2.5142964805130732 2.0000000063110868 4.1899999996822723 1.2566338429793282 1.999999967810852 4.3000000015990736 2.0308943101008321e-10
|
||||
|
||||
0 2
|
||||
0.99999999999999989 2
|
||||
|
||||
0 11
|
||||
6.2870356770386975 11
|
||||
|
||||
9 0 0 0 0 1 10 2 11 2 2 2.9999999786203113 2.7000000010557414 1.493250228982142e-10 2.9999999400794013 2.8100000029668268 -1.8849523856500396 1.6843358396979533 2.9199999964709473 -3.7714388114427502 -0.95006328113862848 3.0300000093814292 -4.6121542684796086 -3.9583409167230954 3.1399999944454362 -3.4343447648292291 -5.5518590961329659 3.250000001403254 -2.211391869622052e-08 -3.9583411480468893 3.3600000080552288 3.4343447951676214 -0.95006299386368853 3.469999993355684 4.6121542575846384 1.6843356535689435 3.5800000061467721 3.7714388125311884 3.0000000063121735 3.6899999996808979 1.8849523866053275 2.9999999678076414 3.8000000015899791 2.0226724577899886e-10
|
||||
1.9999999786181779 2.2000000010611984 1.4993262555480516e-10 1.999999940073848 2.3100000029799634 -1.2566338420167473 1.1228905772511177 2.4199999964621095 -2.5142964794265605 -0.63337552098855121 2.5300000094240174 -3.0747625870473176 -2.6388940021707392 2.6399999943902857 -2.28956908493599 -3.70123923630852 2.7500000014736599 -2.2094124751959083e-08 -2.6388942335204049 2.8600000080226584 2.2895691152358406 -0.6333752336860754 2.9699999933697065 3.074762576174181 1.1228903911007879 3.0800000061613169 2.5142964805065904 2.0000000063124097 3.1899999996813118 1.2566338429759545 1.9999999678044273 3.3000000015981645 2.030895970084515e-10
|
||||
|
||||
0 2
|
||||
1.1180339887492663 2
|
||||
|
||||
0 11
|
||||
6.2870356770386975 11
|
||||
|
||||
9 0 0 0 0 1 10 2 11 2 2 1.9999999786224714 3.2000000010611984 1.4993156817851488e-10 1.9999999400858832 3.3100000029800039 -1.2566338420200993 1.1228905772354258 3.4199999964653824 -2.5142964794336957 -0.63337552096137206 3.5300000094000121 -3.0747625870538924 -2.6388940022006326 3.6399999944489672 -2.2895690849459234 -3.7012392363188105 3.7500000013909731 -2.2089225559796017e-08 -2.6388942335041543 3.8600000080939694 2.2895691152385909 -0.63337523371675097 3.9699999933335639 3.0747625761837516 1.122890391122479 4.0800000061683024 2.5142964805130394 2.0000000063110819 4.189999999681346 1.2566338429793371 1.9999999678108524 4.3000000015981641 2.0308942781058091e-10
|
||||
2.9999999786203113 2.7000000010557414 1.493250228982142e-10 2.9999999400794013 2.8100000029668268 -1.8849523856500396 1.6843358396979533 2.9199999964709473 -3.7714388114427502 -0.95006328113862848 3.0300000093814292 -4.6121542684796086 -3.9583409167230954 3.1399999944454362 -3.4343447648292291 -5.5518590961329659 3.250000001403254 -2.211391869622052e-08 -3.9583411480468893 3.3600000080552288 3.4343447951676214 -0.95006299386368853 3.469999993355684 4.6121542575846384 1.6843356535689435 3.5800000061467721 3.7714388125311884 3.0000000063121735 3.6899999996808979 1.8849523866053275 2.9999999678076414 3.8000000015899791 2.0226724577899886e-10
|
||||
|
||||
0 2
|
||||
1.1180339887505235 2
|
||||
|
||||
0 11
|
||||
6.2870356770386975 11
|
||||
|
||||
9 0 0 0 0 1 10 2 11 2 2 1.9999999678044258 3.3000000015990736 2.0309866472500391e-10 1.9999999279238478 3.4100000035856528 -1.2566338351063444 1.1228905729919101 3.5199999969246787 -2.5142964646674235 -0.63337551712705942 3.6300000099194438 -3.074762572896566 -2.6388939950858141 3.7399999954130898 -2.2895690671737792 -3.701239199025594 3.8500000010453497 -2.8316819999929571e-08 -2.638894240086211 3.9600000097382408 2.289569107254986 -0.63337521336332525 4.0699999930152293 3.0747625569284258 1.1228903762540163 4.1800000071518646 2.5142964672592112 1.9999999975765625 4.2900000001133263 1.2566338359369953 1.9999999567633309 4.4000000021460446 3.4089193414872246e-10
|
||||
1.9999999678108487 4.3000000015990727 2.0310001286277759e-10 1.9999999279383043 4.4100000035856688 -1.2566338351111224 1.122890572977371 4.5199999969270834 -2.5142964646772947 -0.63337551710101136 4.6300000099037906 -3.0747625729062196 -2.6388939951173178 4.7399999954404937 -2.2895690671867799 -3.7012391990426692 4.8500000010168538 -2.8311815114534561e-08 -2.6388942400694013 4.9600000097581329 2.28956910726074 -0.63337521339745995 5.0699999930075235 3.0747625569407111 1.1228903762783815 5.1800000071517864 2.5142964672688786 1.999999997577024 5.2900000001133138 1.2566338359416902 1.9999999567719706 5.4000000021460428 3.4087463053968244e-10
|
||||
|
||||
0 2
|
||||
0.99999999999999989 2
|
||||
|
||||
0 11
|
||||
6.2870356770386975 11
|
||||
|
||||
9 0 0 0 0 1 10 2 11 2 2 2.9999999678076419 3.8000000015899786 2.0228197919908545e-10 2.9999999279305172 3.9100000035685993 -1.8849523787403486 1.6843358354390539 4.0199999969387505 -3.7714387966862271 -0.95006327727783102 4.130000009847369 -4.6121542543265557 -3.9583409096400803 4.2399999955134353 -3.4343447470762434 -5.5518590588514121 4.3500000009162774 -2.8324961931502962e-08 -3.9583411546147409 4.4600000098022869 3.4343447871776691 -0.95006297354057856 4.569999992988012 4.612154238347574 1.6843356387230635 4.6800000071346206 3.7714387992820004 2.9999999975774561 4.7900000001106369 1.8849523795677556 2.9999999567676552 4.9000000021351298 3.3978766941952692e-10
|
||||
1.999999967804428 3.3000000015981641 2.0309853566534866e-10 1.9999999279238589 3.4100000035847855 -1.2566338351063564 1.122890572991863 3.5199999969235889 -2.514296464667352 -0.63337551712694962 3.6300000099189784 -3.0747625728967702 -2.6388939950860215 3.7399999954114338 -2.289569067173399 -3.7012391990253026 3.8500000010453213 -2.8317314715309344e-08 -2.6388942400864956 3.9600000097365959 2.2895691072554576 -0.63337521336314628 4.0699999930147435 3.074762556928099 1.1228903762539559 4.1800000071507961 2.5142964672593644 1.9999999975765703 4.2900000001124514 1.2566338359369555 1.9999999567633331 4.4000000021451351 3.4089091691064752e-10
|
||||
|
||||
0 2
|
||||
1.1180339887492663 2
|
||||
|
||||
0 11
|
||||
6.2870356770386975 11
|
||||
|
||||
9 0 0 0 0 1 10 2 11 2 2 1.9999999678108487 4.3000000015981632 2.0309837039748544e-10 1.9999999279382952 4.4100000035848472 -1.2566338351111233 1.1228905729774059 4.5199999969258062 -2.5142964646773036 -0.6333755171011064 4.6300000099037781 -3.0747625729061858 -2.6388939951171726 4.7399999954380565 -2.2895690671868656 -3.7012391990428237 4.8500000010178805 -2.8311673005987409e-08 -2.6388942400692912 4.9600000097554044 2.2895691072605815 -0.63337521339751135 5.0699999930078441 3.0747625569408297 1.1228903762783933 5.1800000071503085 2.5142964672688248 1.9999999975770228 5.2900000001125544 1.2566338359417017 1.9999999567719688 5.4000000021451333 3.4087654078806909e-10
|
||||
2.9999999678076419 3.8000000015899786 2.0228197919908545e-10 2.9999999279305172 3.9100000035685993 -1.8849523787403486 1.6843358354390539 4.0199999969387505 -3.7714387966862271 -0.95006327727783102 4.130000009847369 -4.6121542543265557 -3.9583409096400803 4.2399999955134353 -3.4343447470762434 -5.5518590588514121 4.3500000009162774 -2.8324961931502962e-08 -3.9583411546147409 4.4600000098022869 3.4343447871776691 -0.95006297354057856 4.569999992988012 4.612154238347574 1.6843356387230635 4.6800000071346206 3.7714387992820004 2.9999999975774561 4.7900000001106369 1.8849523795677556 2.9999999567676552 4.9000000021351298 3.3978766941952692e-10
|
||||
|
||||
0 2
|
||||
1.1180339887505235 2
|
||||
|
||||
0 11
|
||||
6.2870356770386975 11
|
||||
|
||||
9 0 0 0 0 1 7 2 8 2 2 1.9999999567634459 4.4000000021451351 3.4084246536281171e-10 2.0000002640696679 4.4857142726286385 -0.97919124939730628 1.4406779014824571 4.5714286200977545 -1.9568429588808502 0.32256706838431459 4.65714278042977 -2.5610970658126595 -1.0310446917849259 4.7428572231265349 -2.3664775333082049 -1.9336277920152993 4.8285713826164374 -1.4716907680536384 -2.1948556793096836 4.914285730957423 -0.37606210629261111 -1.9189859268982161 5.0000000010577432 0.5634651072808482
|
||||
1.9999999567720863 5.4000000021451333 3.4082825450809651e-10 2.0000002640168799 5.4857142726286572 -0.97919124940054725 1.440677901603262 5.5714286201005256 -1.956842958876841 0.32256706831810533 5.6571427804273915 -2.561097065856611 -1.0310446918474518 5.7428572231258039 -2.3664775332620946 -1.9336277919102527 5.8285713826187129 -1.4716907681020224 -2.1948556793750762 5.9142857309574053 -0.37606210627671594 -1.91898592690228 6.0000000010577423 0.56346510728208499
|
||||
|
||||
0 2
|
||||
0.99999999999999989 2
|
||||
|
||||
0 8
|
||||
3.4292921874756512 8
|
||||
|
||||
9 0 0 0 0 1 8 2 9 2 2 2.9999999567677649 4.9000000021351298 3.397406800331737e-10 3.0000002256333747 4.9749999888619385 -1.2851913641367954 2.3705073010240469 5.0500000328942178 -2.5704115958869975 1.1136055593857705 5.1249999710601237 -3.4960865104568501 -0.53250205740685397 5.2000000008716958 -3.7036172149772306 -2.0534544967400987 5.2750000334473137 -3.0407322012228404 -2.9986555539519255 5.3499999696162943 -1.7984423363377851 -3.2405588854226228 5.4250000146594397 -0.38793449825195131 -2.8784789005144367 5.5000000010522854 0.84519766412397335
|
||||
1.9999999567634457 4.4000000021442256 3.4084202127360186e-10 2.0000002256563998 4.4749999888172907 -0.85679234318003406 1.5803375282327812 4.5500000330297086 -1.7136150504501024 0.74240571526481458 4.6249999709439429 -2.330709715104784 -0.35500472995647414 4.7000000008817722 -2.4690961844122525 -1.3689662699026173 4.7750000335740017 -2.0271404357293186 -1.9991057277353734 4.8499999695008489 -1.1989686215534909 -2.1603719602582432 4.9250000147190747 -0.25862120459594551 -1.9189859268982157 5.0000000010568328 0.56346510728084809
|
||||
|
||||
0 2
|
||||
1.1180339887492663 2
|
||||
|
||||
0 9
|
||||
3.4292921874756512 9
|
||||
|
||||
9 0 0 0 0 1 8 2 9 2 2 1.9999999567720863 5.4000000021442247 3.4082736632967681e-10 2.0000002256112897 5.4749999888172809 -0.856792343182876 1.5803375284244827 5.550000033033113 -1.7136150504645526 0.74240571490299379 5.6249999709394025 -2.3307097150774951 -0.35500472950880069 5.700000000885872 -2.4690961844857102 -1.3689662702680536 5.7750000335703762 -2.0271404356654052 -1.9991057275586339 5.8499999695038181 -1.1989686216024464 -2.1603719603159743 5.9250000147190507 -0.25862120458187643 -1.9189859269022804 6.000000001056832 0.56346510728208465
|
||||
2.9999999567677649 4.9000000021351298 3.397406800331737e-10 3.0000002256333747 4.9749999888619385 -1.2851913641367954 2.3705073010240469 5.0500000328942178 -2.5704115958869975 1.1136055593857705 5.1249999710601237 -3.4960865104568501 -0.53250205740685397 5.2000000008716958 -3.7036172149772306 -2.0534544967400987 5.2750000334473137 -3.0407322012228404 -2.9986555539519255 5.3499999696162943 -1.7984423363377851 -3.2405588854226228 5.4250000146594397 -0.38793449825195131 -2.8784789005144367 5.5000000010522854 0.84519766412397335
|
||||
|
||||
0 2
|
||||
1.1180339887505235 2
|
||||
|
||||
0 9
|
||||
3.4292921874756512 9
|
||||
|
||||
1 -2.2504825962919797 5.5000000010564518 0.66080131173616696 0.28173255684250664 -2.6696418513327818e-14 0.95949297361418118 -4.0819749136223607e-12 1 1.2263993079777387e-12 -0.95949297361418118 -4.2621429146702262e-12 0.2817325568425067
|
||||
Triangulations 0
|
||||
|
||||
TShapes 88
|
||||
Ve
|
||||
4.39810635581078e-05
|
||||
2.00000000000003 -1.11022302462516e-16 1.73559347507678e-15
|
||||
0 0
|
||||
|
||||
0101101
|
||||
*
|
||||
Ve
|
||||
2.94018437871922e-05
|
||||
2.00000000000003 1 1.24828460492808e-15
|
||||
0 0
|
||||
|
||||
0101101
|
||||
*
|
||||
Ed
|
||||
1.00005e-07 1 1 0
|
||||
1 1 0 0 1
|
||||
2 1 2 0 0 1
|
||||
0
|
||||
|
||||
0101000
|
||||
+88 0 -87 0 *
|
||||
Ve
|
||||
4.3981062235277e-05
|
||||
3.00000000000003 0.49999999999909 2.64590224776542e-15
|
||||
0 0
|
||||
|
||||
0101101
|
||||
*
|
||||
Ed
|
||||
1.00005e-07 1 1 0
|
||||
1 2 0 0 1.11803398875052
|
||||
2 2 3 0 0 1.11803398875052
|
||||
0
|
||||
|
||||
0101000
|
||||
+87 0 -85 0 *
|
||||
Ed
|
||||
1.00005e-07 1 1 0
|
||||
1 3 0 0 1.11803398874927
|
||||
2 3 4 0 0 1.11803398874927
|
||||
0
|
||||
|
||||
0101000
|
||||
+85 0 -88 0 *
|
||||
Wi
|
||||
|
||||
0101100
|
||||
+86 0 +84 0 +83 0 *
|
||||
Fa
|
||||
0 1e-07 1 0
|
||||
|
||||
0101000
|
||||
+82 0 *
|
||||
Ve
|
||||
2.94018442477067e-05
|
||||
1.99999998894377 1.10000000055015 7.95973845452051e-11
|
||||
0 0
|
||||
|
||||
0101101
|
||||
*
|
||||
Ed
|
||||
1e-07 1 1 0
|
||||
1 4 0 0 6.2870356770387
|
||||
2 4 2 0 0 6.2870356770387
|
||||
2 5 4 0 0 6.2870356770387
|
||||
0
|
||||
|
||||
0101000
|
||||
+88 0 -80 0 *
|
||||
Ve
|
||||
2.94018442477067e-05
|
||||
1.99999998894602 2.10000000054924 7.95969404559953e-11
|
||||
0 0
|
||||
|
||||
0101101
|
||||
*
|
||||
Ed
|
||||
1e-07 1 1 0
|
||||
1 5 0 0 6.2870356770387
|
||||
2 6 2 0 0 6.2870356770387
|
||||
2 7 3 0 0 6.2870356770387
|
||||
0
|
||||
|
||||
0101000
|
||||
+87 0 -78 0 *
|
||||
Ed
|
||||
1e-07 1 1 0
|
||||
1 6 0 0 1
|
||||
2 8 2 0 0 1
|
||||
2 9 5 0 0 1
|
||||
4 C1 5 0 2 0
|
||||
0
|
||||
|
||||
0101000
|
||||
+80 0 -78 0 *
|
||||
Wi
|
||||
|
||||
0101100
|
||||
-79 0 +86 0 +77 0 -76 0 *
|
||||
Fa
|
||||
0 1e-07 2 0
|
||||
|
||||
0101000
|
||||
+75 0 *
|
||||
Ve
|
||||
2.94018604988986e-05
|
||||
1.99999997861821 2.20000000106211 1.49914425623943e-10
|
||||
0 0
|
||||
|
||||
0101101
|
||||
*
|
||||
Ed
|
||||
1e-07 1 1 0
|
||||
1 7 0 0 6.2870356770387
|
||||
2 10 5 0 0 6.2870356770387
|
||||
2 11 6 0 0 6.2870356770387
|
||||
0
|
||||
|
||||
0101000
|
||||
+80 0 -73 0 *
|
||||
Ve
|
||||
2.94018604988986e-05
|
||||
1.9999999786225 3.2000000010612 1.49913981534733e-10
|
||||
0 0
|
||||
|
||||
0101101
|
||||
*
|
||||
Ed
|
||||
1e-07 1 1 0
|
||||
1 8 0 0 6.2870356770387
|
||||
2 12 5 0 0 6.2870356770387
|
||||
2 13 7 0 0 6.2870356770387
|
||||
0
|
||||
|
||||
0101000
|
||||
+78 0 -71 0 *
|
||||
Ed
|
||||
1e-07 1 1 0
|
||||
1 9 0 0 1
|
||||
2 14 5 0 0 1
|
||||
2 15 8 0 0 1
|
||||
4 C1 8 0 5 0
|
||||
0
|
||||
|
||||
0101000
|
||||
+73 0 -71 0 *
|
||||
Wi
|
||||
|
||||
0101100
|
||||
-72 0 +76 0 +70 0 -69 0 *
|
||||
Fa
|
||||
0 1e-07 5 0
|
||||
|
||||
0101000
|
||||
+68 0 *
|
||||
Ve
|
||||
2.94018662885789e-05
|
||||
1.99999996780443 3.30000000159907 2.03096284540616e-10
|
||||
0 0
|
||||
|
||||
0101101
|
||||
*
|
||||
Ed
|
||||
1e-07 1 1 0
|
||||
1 10 0 0 6.2870356770387
|
||||
2 16 8 0 0 6.2870356770387
|
||||
2 17 9 0 0 6.2870356770387
|
||||
0
|
||||
|
||||
0101000
|
||||
+73 0 -66 0 *
|
||||
Ve
|
||||
2.94018662885789e-05
|
||||
1.99999996781085 4.30000000159816 2.03095840451406e-10
|
||||
0 0
|
||||
|
||||
0101101
|
||||
*
|
||||
Ed
|
||||
1e-07 1 1 0
|
||||
1 11 0 0 6.2870356770387
|
||||
2 18 8 0 0 6.2870356770387
|
||||
2 19 10 0 0 6.2870356770387
|
||||
0
|
||||
|
||||
0101000
|
||||
+71 0 -64 0 *
|
||||
Ed
|
||||
1e-07 1 1 0
|
||||
1 12 0 0 1
|
||||
2 20 8 0 0 1
|
||||
2 21 11 0 0 1
|
||||
4 C1 11 0 8 0
|
||||
0
|
||||
|
||||
0101000
|
||||
+66 0 -64 0 *
|
||||
Wi
|
||||
|
||||
0101100
|
||||
-65 0 +69 0 +63 0 -62 0 *
|
||||
Fa
|
||||
0 1e-07 8 0
|
||||
|
||||
0101000
|
||||
+61 0 *
|
||||
Ve
|
||||
2.94018603423369e-05
|
||||
1.99999995676339 4.40000000214559 3.4086781206032e-10
|
||||
0 0
|
||||
|
||||
0101101
|
||||
*
|
||||
Ed
|
||||
1e-07 1 1 0
|
||||
1 13 0 0 6.2870356770387
|
||||
2 22 11 0 0 6.2870356770387
|
||||
2 23 12 0 0 6.2870356770387
|
||||
0
|
||||
|
||||
0101000
|
||||
+66 0 -59 0 *
|
||||
Ve
|
||||
2.94018603423493e-05
|
||||
1.99999995677203 5.40000000214468 3.40853379161e-10
|
||||
0 0
|
||||
|
||||
0101101
|
||||
*
|
||||
Ed
|
||||
1e-07 1 1 0
|
||||
1 14 0 0 6.2870356770387
|
||||
2 24 11 0 0 6.2870356770387
|
||||
2 25 13 0 0 6.2870356770387
|
||||
0
|
||||
|
||||
0101000
|
||||
+64 0 -57 0 *
|
||||
Ed
|
||||
1e-07 1 1 0
|
||||
1 15 0 0 1
|
||||
2 26 11 0 0 1
|
||||
2 27 14 0 0 1
|
||||
4 G1 14 0 11 0
|
||||
0
|
||||
|
||||
0101000
|
||||
+59 0 -57 0 *
|
||||
Wi
|
||||
|
||||
0101100
|
||||
-58 0 +62 0 +56 0 -55 0 *
|
||||
Fa
|
||||
0 1e-07 11 0
|
||||
|
||||
0101000
|
||||
+54 0 *
|
||||
Ve
|
||||
7.75115104411493e-05
|
||||
-1.91898592689822 5.00000000105683 0.563465107280848
|
||||
0 0
|
||||
|
||||
0101101
|
||||
*
|
||||
Ed
|
||||
0.00014709836519379 1 1 0
|
||||
1 16 0 0 3.42929218747565
|
||||
2 28 14 0 0 3.42929218747565
|
||||
2 29 15 0 0 3.42929218747565
|
||||
0
|
||||
|
||||
0101000
|
||||
+59 0 -52 0 *
|
||||
Ve
|
||||
7.75115113493296e-05
|
||||
-1.91898592690228 6.00000000105683 0.563465107282085
|
||||
0 0
|
||||
|
||||
0101101
|
||||
*
|
||||
Ed
|
||||
0.000147098365210656 1 1 0
|
||||
1 17 0 0 3.42929218747565
|
||||
2 30 14 0 0 3.42929218747565
|
||||
2 31 16 0 0 3.42929218747565
|
||||
0
|
||||
|
||||
0101000
|
||||
+57 0 -50 0 *
|
||||
Ed
|
||||
1.00005e-07 1 1 0
|
||||
1 18 0 0 1
|
||||
2 32 14 0 0 1
|
||||
0
|
||||
|
||||
0101000
|
||||
+52 0 -50 0 *
|
||||
Wi
|
||||
|
||||
0101100
|
||||
-51 0 +55 0 +49 0 -48 0 *
|
||||
Fa
|
||||
0 1e-07 14 0
|
||||
|
||||
0101000
|
||||
+47 0 *
|
||||
Ve
|
||||
4.39810618145432e-05
|
||||
2.99999998894491 1.60000000054606 7.92760860018786e-11
|
||||
0 0
|
||||
|
||||
0101101
|
||||
*
|
||||
Ed
|
||||
1e-07 1 1 0
|
||||
1 19 0 0 6.2870356770387
|
||||
2 33 3 0 0 6.2870356770387
|
||||
2 34 4 0 0 6.2870356770387
|
||||
0
|
||||
|
||||
0101000
|
||||
+85 0 -45 0 *
|
||||
Ed
|
||||
1e-07 1 1 0
|
||||
1 20 0 0 1.11803398875052
|
||||
2 35 3 0 0 1.11803398875052
|
||||
2 36 7 0 0 1.11803398875052
|
||||
4 C1 7 0 3 0
|
||||
0
|
||||
|
||||
0101000
|
||||
+78 0 -45 0 *
|
||||
Wi
|
||||
|
||||
0101100
|
||||
-77 0 +84 0 +44 0 -43 0 *
|
||||
Fa
|
||||
0 1e-07 3 0
|
||||
|
||||
0101000
|
||||
+42 0 *
|
||||
Ve
|
||||
4.39810783756164e-05
|
||||
2.99999997862034 2.70000000105574 1.49308687941708e-10
|
||||
0 0
|
||||
|
||||
0101101
|
||||
*
|
||||
Ed
|
||||
1e-07 1 1 0
|
||||
1 21 0 0 6.2870356770387
|
||||
2 37 7 0 0 6.2870356770387
|
||||
2 38 6 0 0 6.2870356770387
|
||||
0
|
||||
|
||||
0101000
|
||||
+45 0 -40 0 *
|
||||
Ed
|
||||
1e-07 1 1 0
|
||||
1 22 0 0 1.11803398875052
|
||||
2 39 7 0 0 1.11803398875052
|
||||
2 40 10 0 0 1.11803398875052
|
||||
4 C1 10 0 7 0
|
||||
0
|
||||
|
||||
0101000
|
||||
+71 0 -40 0 *
|
||||
Wi
|
||||
|
||||
0101100
|
||||
-70 0 +43 0 +39 0 -38 0 *
|
||||
Fa
|
||||
0 1e-07 7 0
|
||||
|
||||
0101000
|
||||
+37 0 *
|
||||
Ve
|
||||
4.39810841886954e-05
|
||||
2.99999996780764 3.80000000158998 2.02276051770023e-10
|
||||
0 0
|
||||
|
||||
0101101
|
||||
*
|
||||
Ed
|
||||
1e-07 1 1 0
|
||||
1 23 0 0 6.2870356770387
|
||||
2 41 10 0 0 6.2870356770387
|
||||
2 42 9 0 0 6.2870356770387
|
||||
0
|
||||
|
||||
0101000
|
||||
+40 0 -35 0 *
|
||||
Ed
|
||||
1e-07 1 1 0
|
||||
1 24 0 0 1.11803398875052
|
||||
2 43 10 0 0 1.11803398875052
|
||||
2 44 13 0 0 1.11803398875052
|
||||
4 C1 13 0 10 0
|
||||
0
|
||||
|
||||
0101000
|
||||
+64 0 -35 0 *
|
||||
Wi
|
||||
|
||||
0101100
|
||||
-63 0 +38 0 +34 0 -33 0 *
|
||||
Fa
|
||||
0 1e-07 10 0
|
||||
|
||||
0101000
|
||||
+32 0 *
|
||||
Ve
|
||||
4.39810778551053e-05
|
||||
2.99999995676771 4.90000000213513 3.39765582641472e-10
|
||||
0 0
|
||||
|
||||
0101101
|
||||
*
|
||||
Ed
|
||||
1e-07 1 1 0
|
||||
1 25 0 0 6.2870356770387
|
||||
2 45 13 0 0 6.2870356770387
|
||||
2 46 12 0 0 6.2870356770387
|
||||
0
|
||||
|
||||
0101000
|
||||
+35 0 -30 0 *
|
||||
Ed
|
||||
1e-07 1 1 0
|
||||
1 26 0 0 1.11803398875052
|
||||
2 47 13 0 0 1.11803398875052
|
||||
2 48 16 0 0 1.11803398875052
|
||||
4 G1 16 0 13 0
|
||||
0
|
||||
|
||||
0101000
|
||||
+57 0 -30 0 *
|
||||
Wi
|
||||
|
||||
0101100
|
||||
-56 0 +33 0 +29 0 -28 0 *
|
||||
Fa
|
||||
0 1e-07 13 0
|
||||
|
||||
0101000
|
||||
+27 0 *
|
||||
Ve
|
||||
1.0602117875223e-05
|
||||
-2.87847890051444 5.50000000105229 0.845197664123973
|
||||
0 0
|
||||
|
||||
0101101
|
||||
*
|
||||
Ed
|
||||
1e-07 1 1 0
|
||||
1 27 0 0 3.42929218747565
|
||||
2 49 16 0 0 3.42929218747565
|
||||
2 50 15 0 0 3.42929218747565
|
||||
0
|
||||
|
||||
0101000
|
||||
+30 0 -25 0 *
|
||||
Ed
|
||||
1.00005e-07 1 1 0
|
||||
1 28 0 0 1.11803398875052
|
||||
2 51 16 0 0 1.11803398875052
|
||||
0
|
||||
|
||||
0101000
|
||||
+50 0 -25 0 *
|
||||
Wi
|
||||
|
||||
0101100
|
||||
-49 0 +28 0 +24 0 -23 0 *
|
||||
Fa
|
||||
0 1e-07 16 0
|
||||
|
||||
0101000
|
||||
+22 0 *
|
||||
Ed
|
||||
1e-07 1 1 0
|
||||
1 29 0 0 1.11803398874927
|
||||
2 52 4 0 0 1.11803398874927
|
||||
2 53 6 0 0 1.11803398874927
|
||||
4 C1 6 0 4 0
|
||||
0
|
||||
|
||||
0101000
|
||||
+45 0 -80 0 *
|
||||
Wi
|
||||
|
||||
0101100
|
||||
-44 0 +83 0 +79 0 -20 0 *
|
||||
Fa
|
||||
0 1e-07 4 0
|
||||
|
||||
0101000
|
||||
+19 0 *
|
||||
Ed
|
||||
1e-07 1 1 0
|
||||
1 30 0 0 1.11803398874927
|
||||
2 54 6 0 0 1.11803398874927
|
||||
2 55 9 0 0 1.11803398874927
|
||||
4 C1 9 0 6 0
|
||||
0
|
||||
|
||||
0101000
|
||||
+40 0 -73 0 *
|
||||
Wi
|
||||
|
||||
0101100
|
||||
-39 0 +20 0 +72 0 -17 0 *
|
||||
Fa
|
||||
0 1e-07 6 0
|
||||
|
||||
0101000
|
||||
+16 0 *
|
||||
Ed
|
||||
1e-07 1 1 0
|
||||
1 31 0 0 1.11803398874927
|
||||
2 56 9 0 0 1.11803398874927
|
||||
2 57 12 0 0 1.11803398874927
|
||||
4 C1 12 0 9 0
|
||||
0
|
||||
|
||||
0101000
|
||||
+35 0 -66 0 *
|
||||
Wi
|
||||
|
||||
0101100
|
||||
-34 0 +17 0 +65 0 -14 0 *
|
||||
Fa
|
||||
0 1e-07 9 0
|
||||
|
||||
0101000
|
||||
+13 0 *
|
||||
Ed
|
||||
1e-07 1 1 0
|
||||
1 32 0 0 1.11803398874927
|
||||
2 58 12 0 0 1.11803398874927
|
||||
2 59 15 0 0 1.11803398874927
|
||||
4 G1 15 0 12 0
|
||||
0
|
||||
|
||||
0101000
|
||||
+30 0 -59 0 *
|
||||
Wi
|
||||
|
||||
0101100
|
||||
-29 0 +14 0 +58 0 -11 0 *
|
||||
Fa
|
||||
0 1e-07 12 0
|
||||
|
||||
0101000
|
||||
+10 0 *
|
||||
Ed
|
||||
1.00005e-07 1 1 0
|
||||
1 33 0 0 1.11803398874927
|
||||
2 60 15 0 0 1.11803398874927
|
||||
0
|
||||
|
||||
0101000
|
||||
+25 0 -52 0 *
|
||||
Wi
|
||||
|
||||
0101100
|
||||
-24 0 +11 0 +51 0 -8 0 *
|
||||
Fa
|
||||
0 1e-07 15 0
|
||||
|
||||
0101000
|
||||
+7 0 *
|
||||
Wi
|
||||
|
||||
0101100
|
||||
+48 0 +23 0 +8 0 *
|
||||
Fa
|
||||
0 1e-07 17 0
|
||||
|
||||
0101000
|
||||
+5 0 *
|
||||
Sh
|
||||
|
||||
0101100
|
||||
-81 0 +74 0 +67 0 +60 0 +53 0 +46 0 +41 0 +36 0 +31 0 +26 0
|
||||
+21 0 +18 0 +15 0 +12 0 +9 0 +6 0 +4 0 *
|
||||
So
|
||||
|
||||
0100000
|
||||
+3 0 *
|
||||
Co
|
||||
|
||||
1100000
|
||||
+2 1 *
|
||||
|
||||
+1 0
|
||||
Reference in New Issue
Block a user