27 _aabbIndex(std::numeric_limits<unsigned>::max()),
32 auto const& mesh_vec(
_project.getMeshObjects());
34 const std::size_t nMeshes(mesh_vec.size());
35 for (std::size_t i = 0; i < nMeshes; ++i)
37 std::string name = mesh_vec[i]->getName();
38 this->meshNameComboBox->addItem(QString::fromStdString(name));
44 QMetaObject::invokeMethod(
this,
"close", Qt::QueuedConnection);
52 if (this->newMeshNameEdit->text().size() == 0)
58 bool anything_checked(
false);
61 _project.getMesh(this->meshNameComboBox->currentText().toStdString());
63 if (this->elementTypeCheckBox->isChecked())
65 QList<QListWidgetItem*> items =
66 this->elementTypeListWidget->selectedItems();
67 for (
auto& item : items)
72 anything_checked =
true;
74 if (this->scalarArrayCheckBox->isChecked())
76 std::string
const array_name =
77 this->scalarArrayComboBox->currentText().toStdString();
80 bool outside = this->outsideButton->isChecked();
83 min_val = this->outsideScalarMinEdit->text().toDouble();
84 max_val = this->outsideScalarMaxEdit->text().toDouble();
88 min_val = this->insideScalarMinEdit->text().toDouble();
89 max_val = this->insideScalarMaxEdit->text().toDouble();
92 std::size_t n_marked_elements(0);
96 array_name, min_val, max_val, outside);
100 int const lbound =
static_cast<int>(min_val);
101 int const rbound =
static_cast<int>(max_val);
103 array_name, lbound, rbound, outside);
106 if (n_marked_elements > 0)
108 anything_checked =
true;
111 if (this->boundingBoxCheckBox->isChecked())
113 std::vector<MeshLib::Node*>
const& nodes(
115 .getMesh(this->meshNameComboBox->currentText().toStdString())
123 (
aabb_edits[0]) ? this->xMinEdit->text().toDouble() : (minAABB[0]);
125 (
aabb_edits[1]) ? this->xMaxEdit->text().toDouble() : (maxAABB[0]);
127 (
aabb_edits[2]) ? this->yMinEdit->text().toDouble() : (minAABB[1]);
129 (
aabb_edits[3]) ? this->yMaxEdit->text().toDouble() : (maxAABB[1]);
131 (
aabb_edits[4]) ? this->zMinEdit->text().toDouble() : (minAABB[2]);
133 (
aabb_edits[5]) ? this->zMaxEdit->text().toDouble() : (maxAABB[2]);
134 std::vector<Eigen::Vector3d, Eigen::aligned_allocator<Eigen::Vector3d>>
135 extent{minAABB, maxAABB};
136 const GeoLib::AABB updated_aabb(extent.begin(), extent.end());
138 this->invertBoundingBoxCheckBox->isChecked());
139 anything_checked =
true;
142 if (this->zeroVolumeCheckBox->isChecked())
145 anything_checked =
true;
148 if (anything_checked)
152 this->newMeshNameEdit->text().toStdString());
162 "The current selection removes NO mesh elements.");
173 this->done(QDialog::Accepted);
199 this->scalarArrayComboBox->setEnabled(enable);
200 this->outsideButton->setEnabled(enable);
201 this->insideButton->setEnabled(enable);
202 this->outsideScalarMinEdit->setEnabled(enable &&
203 this->outsideButton->isChecked());
204 this->outsideScalarMaxEdit->setEnabled(enable &&
205 this->outsideButton->isChecked());
206 this->insideScalarMinEdit->setEnabled(enable &&
207 this->insideButton->isChecked());
208 this->insideScalarMaxEdit->setEnabled(enable &&
209 this->insideButton->isChecked());
227 this->invertBoundingBoxCheckBox->setEnabled(is_checked);
228 this->xMinEdit->setEnabled(is_checked);
229 this->xMaxEdit->setEnabled(is_checked);
230 this->yMinEdit->setEnabled(is_checked);
231 this->yMaxEdit->setEnabled(is_checked);
232 this->zMinEdit->setEnabled(is_checked);
233 this->zMaxEdit->setEnabled(is_checked);
238 std::vector<MeshLib::Node*>
const& nodes(
240 .getMesh(this->meshNameComboBox->currentText().toStdString())
245 this->xMinEdit->setText(QString::number(minAABB[0],
'f'));
246 this->xMaxEdit->setText(QString::number(maxAABB[0],
'f'));
247 this->yMinEdit->setText(QString::number(minAABB[1],
'f'));
248 this->yMaxEdit->setText(QString::number(maxAABB[1],
'f'));
249 this->zMinEdit->setText(QString::number(minAABB[2],
'f'));
250 this->zMaxEdit->setText(QString::number(maxAABB[2],
'f'));
256 bool const is_checked)
258 if (is_checked ==
true)
260 this->xOutsideLabel->setText(
"X between");
261 this->yOutsideLabel->setText(
"Y between");
262 this->zOutsideLabel->setText(
"Z between");
266 this->xOutsideLabel->setText(
"X outside of");
267 this->yOutsideLabel->setText(
"Y outside of");
268 this->zOutsideLabel->setText(
"Z outside of");
302 this->
_currentIndex = this->meshNameComboBox->currentIndex();
303 this->newMeshNameEdit->setText(this->meshNameComboBox->currentText() +
305 this->elementTypeListWidget->clearSelection();
306 this->scalarArrayComboBox->clear();
307 this->outsideScalarMinEdit->setText(
"");
308 this->outsideScalarMaxEdit->setText(
"");
309 this->insideScalarMinEdit->setText(
"");
310 this->insideScalarMaxEdit->setText(
"");
348 auto min = std::min_element(vec.
cbegin(), vec.
cend());
349 auto max = std::max_element(vec.
cbegin(), vec.
cend());
350 this->outsideScalarMinEdit->setText(QString::number(*min));
351 this->outsideScalarMaxEdit->setText(QString::number(*max));
352 this->insideScalarMinEdit->setText(QString::number(*min));
353 this->insideScalarMaxEdit->setText(QString::number(*max));