Merge pull request #19142 from hyarion/refactor/add-template-addobject
Add new addObject<T>() function
This commit is contained in:
@@ -303,8 +303,7 @@ private:
|
||||
pcDoc = App::GetApplication().newDocument();
|
||||
}
|
||||
MeshPy* pMesh = static_cast<MeshPy*>(pcObj);
|
||||
Mesh::Feature* pcFeature =
|
||||
static_cast<Mesh::Feature*>(pcDoc->addObject("Mesh::Feature", name));
|
||||
Mesh::Feature* pcFeature = pcDoc->addObject<Mesh::Feature>(name);
|
||||
Mesh::MeshObject* mo = pMesh->getMeshObjectPtr();
|
||||
if (!mo) {
|
||||
throw Py::Exception(PyExc_ReferenceError, "object doesn't reference a valid mesh");
|
||||
|
||||
@@ -119,8 +119,7 @@ void Importer::createMeshFromSegments(const std::string& name,
|
||||
|
||||
Feature* Importer::createMesh(const std::string& name, MeshObject& mesh)
|
||||
{
|
||||
Mesh::Feature* pcFeature =
|
||||
static_cast<Mesh::Feature*>(document->addObject("Mesh::Feature", name.c_str()));
|
||||
Mesh::Feature* pcFeature = document->addObject<Mesh::Feature>(name.c_str());
|
||||
pcFeature->Label.setValue(name);
|
||||
pcFeature->Mesh.swapMesh(mesh);
|
||||
return pcFeature;
|
||||
|
||||
@@ -503,8 +503,7 @@ void CmdMeshFromGeometry::activated(int)
|
||||
}
|
||||
|
||||
// create a mesh feature and assign the mesh
|
||||
Mesh::Feature* mf =
|
||||
static_cast<Mesh::Feature*>(doc->addObject("Mesh::Feature", "Mesh"));
|
||||
Mesh::Feature* mf = doc->addObject<Mesh::Feature>("Mesh");
|
||||
mf->Mesh.setValue(mesh.getKernel());
|
||||
}
|
||||
}
|
||||
@@ -1703,8 +1702,7 @@ void CmdMeshMerge::activated(int)
|
||||
}
|
||||
|
||||
openCommand(QT_TRANSLATE_NOOP("Command", "Mesh merge"));
|
||||
Mesh::Feature* pcFeature =
|
||||
static_cast<Mesh::Feature*>(pcDoc->addObject("Mesh::Feature", "Mesh"));
|
||||
Mesh::Feature* pcFeature = pcDoc->addObject<Mesh::Feature>("Mesh");
|
||||
Mesh::MeshObject* newMesh = pcFeature->Mesh.startEditing();
|
||||
std::vector<App::DocumentObject*> objs =
|
||||
Gui::Selection().getObjectsOfType(Mesh::Feature::getClassTypeId());
|
||||
@@ -1759,8 +1757,7 @@ void CmdMeshSplitComponents::activated(int)
|
||||
std::unique_ptr<MeshObject> kernel(mesh.meshFromSegment(comp));
|
||||
kernel->setTransform(mesh.getTransform());
|
||||
|
||||
Mesh::Feature* feature =
|
||||
static_cast<Mesh::Feature*>(pcDoc->addObject("Mesh::Feature", "Component"));
|
||||
Mesh::Feature* feature = pcDoc->addObject<Mesh::Feature>("Component");
|
||||
feature->Mesh.setValuePtr(kernel.release());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -120,8 +120,7 @@ void Segmentation::accept()
|
||||
|
||||
std::string internalname = "Segments_";
|
||||
internalname += myMesh->getNameInDocument();
|
||||
App::DocumentObjectGroup* group = static_cast<App::DocumentObjectGroup*>(
|
||||
document->addObject("App::DocumentObjectGroup", internalname.c_str()));
|
||||
auto* group = document->addObject<App::DocumentObjectGroup>(internalname.c_str());
|
||||
std::string labelname = "Segments ";
|
||||
labelname += myMesh->Label.getValue();
|
||||
group->Label.setValue(labelname);
|
||||
@@ -129,8 +128,7 @@ void Segmentation::accept()
|
||||
const std::vector<MeshCore::MeshSegment>& data = it->GetSegments();
|
||||
for (const auto& jt : data) {
|
||||
Mesh::MeshObject* segment = mesh->meshFromSegment(jt);
|
||||
Mesh::Feature* feaSegm =
|
||||
static_cast<Mesh::Feature*>(group->addObject("Mesh::Feature", "Segment"));
|
||||
auto* feaSegm = group->addObject<Mesh::Feature>("Segment");
|
||||
Mesh::MeshObject* feaMesh = feaSegm->Mesh.startEditing();
|
||||
feaMesh->swap(*segment);
|
||||
feaSegm->Mesh.finishEditing();
|
||||
|
||||
@@ -505,8 +505,7 @@ void SegmentationBestFit::accept()
|
||||
|
||||
std::string internalname = "Segments_";
|
||||
internalname += myMesh->getNameInDocument();
|
||||
App::DocumentObjectGroup* group = static_cast<App::DocumentObjectGroup*>(
|
||||
document->addObject("App::DocumentObjectGroup", internalname.c_str()));
|
||||
auto* group = document->addObject<App::DocumentObjectGroup>(internalname.c_str());
|
||||
std::string labelname = "Segments ";
|
||||
labelname += myMesh->Label.getValue();
|
||||
group->Label.setValue(labelname);
|
||||
@@ -514,8 +513,7 @@ void SegmentationBestFit::accept()
|
||||
const std::vector<MeshCore::MeshSegment>& data = it->GetSegments();
|
||||
for (const auto& jt : data) {
|
||||
Mesh::MeshObject* segment = mesh->meshFromSegment(jt);
|
||||
Mesh::Feature* feaSegm =
|
||||
static_cast<Mesh::Feature*>(group->addObject("Mesh::Feature", "Segment"));
|
||||
auto* feaSegm = group->addObject<Mesh::Feature>("Segment");
|
||||
Mesh::MeshObject* feaMesh = feaSegm->Mesh.startEditing();
|
||||
feaMesh->swap(*segment);
|
||||
feaSegm->Mesh.finishEditing();
|
||||
|
||||
@@ -975,7 +975,7 @@ public:
|
||||
Gui::Document* gui = mesh->getDocument();
|
||||
App::Document* doc = gui->getDocument();
|
||||
|
||||
auto cpy = static_cast<Mesh::Feature*>(doc->addObject("Mesh::Feature"));
|
||||
auto cpy = doc->addObject<Mesh::Feature>();
|
||||
auto org = mesh->getObject<Mesh::Feature>();
|
||||
cpy->Label.setValue(org->Label.getValue());
|
||||
cpy->Mesh.setValue(org->Mesh.getValue());
|
||||
@@ -1630,7 +1630,7 @@ void ViewProviderMesh::splitMesh(const MeshCore::MeshKernel& toolMesh,
|
||||
removeFacets(indices);
|
||||
auto doc = App::GetApplication().getActiveDocument();
|
||||
const char* name = pcObject->getNameInDocument();
|
||||
auto splitMesh = dynamic_cast<Mesh::Feature*>(doc->addObject("Mesh::Feature", name));
|
||||
auto splitMesh = doc->addObject<Mesh::Feature>(name);
|
||||
// Note: deletes also kernel
|
||||
splitMesh->Mesh.setValuePtr(kernel);
|
||||
getObject()->purgeTouched();
|
||||
|
||||
@@ -480,12 +480,10 @@ public:
|
||||
}
|
||||
}
|
||||
if (!group) {
|
||||
group = dynamic_cast<App::DocumentObjectGroup*>(
|
||||
doc->addObject("App::DocumentObjectGroup", internalname.c_str()));
|
||||
group = doc->addObject<App::DocumentObjectGroup>(internalname.c_str());
|
||||
}
|
||||
|
||||
auto anno = dynamic_cast<App::AnnotationLabel*>(
|
||||
group->addObject("App::AnnotationLabel", internalname.c_str()));
|
||||
auto anno = group->addObject<App::AnnotationLabel>(internalname.c_str());
|
||||
QStringList lines = s.split(QLatin1String("\n"));
|
||||
std::vector<std::string> text;
|
||||
for (const auto& line : lines) {
|
||||
|
||||
Reference in New Issue
Block a user