From c810c6847f7c260a924839279cf1bd1a17aaf47e Mon Sep 17 00:00:00 2001 From: Oliver Gloth Date: Thu, 23 Aug 2012 12:41:00 +0200 Subject: [PATCH] added possibility to choose the reduction rate (vtkDecimate) --- src/libengrid/brlcadreader.cpp | 1 + src/libengrid/createcadtesselation.cpp | 3 +- src/libengrid/createcadtesselation.h | 2 + src/libengrid/guibrlcadimportdialogue.cpp | 5 +- src/libengrid/guibrlcadimportdialogue.h | 1 + src/libengrid/guibrlcadimportdialogue.ui | 99 +++++++++++++++++++------------ 6 files changed, 72 insertions(+), 39 deletions(-) diff --git a/src/libengrid/brlcadreader.cpp b/src/libengrid/brlcadreader.cpp index 3079e9a..c902a11 100644 --- a/src/libengrid/brlcadreader.cpp +++ b/src/libengrid/brlcadreader.cpp @@ -296,6 +296,7 @@ void BrlcadReader::operate() brlcad_tess.setSmoothingIterations(dlg.smoothingIterations()); brlcad_tess.setSmallestFeatureSize(dlg.smallestFeatureSize()); brlcad_tess.setSmallestResolution(dlg.smallestResolution()); + brlcad_tess.setTargetReduction(dlg.reduction()); brlcad_tess(); } BrlCadProjection *brl_proj = new BrlCadProjection(getFileName(), dlg.selectedObject()); diff --git a/src/libengrid/createcadtesselation.cpp b/src/libengrid/createcadtesselation.cpp index 35edc88..ab272d2 100644 --- a/src/libengrid/createcadtesselation.cpp +++ b/src/libengrid/createcadtesselation.cpp @@ -37,6 +37,7 @@ CreateCadTesselation::CreateCadTesselation() m_PreservationType = 0; m_SmallestFeatureSize = 1e99; m_SmallestResolution = 0; + m_TargetReduction = 0; } void CreateCadTesselation::scan(bool create_grid, int interlaces) @@ -267,7 +268,7 @@ void CreateCadTesselation::scan(bool create_grid, int interlaces) tri->SetInput(contour->GetOutput()); EG_VTKSP(vtkDecimatePro, decimate); decimate->PreserveTopologyOn(); - decimate->SetTargetReduction(1.0); + decimate->SetTargetReduction(m_TargetReduction); decimate->SetFeatureAngle(GeometryTools::deg2rad(45)); decimate->SetInput(tri->GetOutput()); decimate->Update(); diff --git a/src/libengrid/createcadtesselation.h b/src/libengrid/createcadtesselation.h index 4880cdc..7cc5707 100644 --- a/src/libengrid/createcadtesselation.h +++ b/src/libengrid/createcadtesselation.h @@ -46,6 +46,7 @@ protected: // attributes int m_PreservationType; double m_SmallestFeatureSize; double m_SmallestResolution; + double m_TargetReduction; protected: // methods @@ -74,6 +75,7 @@ public: // methods bool preserveFluid() { return m_PreservationType == 2; } void setSmallestFeatureSize(double sfs) { m_SmallestFeatureSize = sfs; } void setSmallestResolution(double h) { m_SmallestResolution = h; } + void setTargetReduction(double tr) { m_TargetReduction = tr; } }; diff --git a/src/libengrid/guibrlcadimportdialogue.cpp b/src/libengrid/guibrlcadimportdialogue.cpp index 86bb553..6696e90 100644 --- a/src/libengrid/guibrlcadimportdialogue.cpp +++ b/src/libengrid/guibrlcadimportdialogue.cpp @@ -118,4 +118,7 @@ QString GuiBrlCadImportDialogue::stlFileName() return m_StlFileName; } - +double GuiBrlCadImportDialogue::reduction() +{ + return 0.01*double(ui->horizontalSliderReduction->value()); +} diff --git a/src/libengrid/guibrlcadimportdialogue.h b/src/libengrid/guibrlcadimportdialogue.h index 3e9fd7d..8cad8f1 100644 --- a/src/libengrid/guibrlcadimportdialogue.h +++ b/src/libengrid/guibrlcadimportdialogue.h @@ -46,6 +46,7 @@ public: double scanMemory(); double smallestFeatureSize(); double smallestResolution(); + double reduction(); int smoothingIterations(); int preservationType(); QString stlFileName(); diff --git a/src/libengrid/guibrlcadimportdialogue.ui b/src/libengrid/guibrlcadimportdialogue.ui index ea3d4f5..84c67c6 100644 --- a/src/libengrid/guibrlcadimportdialogue.ui +++ b/src/libengrid/guibrlcadimportdialogue.ui @@ -14,20 +14,13 @@ Dialog - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - + + - 1e99 + use available STL file + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter @@ -47,20 +40,27 @@ - - + + + + false + + + + + - - + + - maximal scan memory [Gb] + smallest resolution Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - + smoothing @@ -153,55 +153,80 @@ - - - - false - + + - + 0 - - + + + + + - use available STL file + maximal scan memory [Gb] Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + - smallest resolution + 1e99 - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 100 + + + 100 + + + Qt::Horizontal - - + + - 0 + triangle reduction + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - listWidget doubleSpinBoxMemory + lineEditMinResolution lineEditSmallestFeature checkBoxSTL + horizontalSliderReduction spinBoxSmoothing radioButtonNoPreservation radioButtonSolidPreservation radioButtonFluidPreservation buttonBox + listWidget -- 2.11.4.GIT