+ issue #0002578: Duplicate objects copied and exported
This commit is contained in:
@@ -606,12 +606,13 @@ void Application::exportTo(const char* FileName, const char* DocName, const char
|
||||
}
|
||||
|
||||
std::stringstream str;
|
||||
std::set<App::DocumentObject*> unique_objs;
|
||||
std::set<App::DocumentObject*> unique_objs;
|
||||
str << "__objs__=[]" << std::endl;
|
||||
for (std::vector<App::DocumentObject*>::iterator it = sel.begin(); it != sel.end(); ++it) {
|
||||
if (unique_objs.insert(*it).second)
|
||||
str << "__objs__.append(FreeCAD.getDocument(\"" << DocName << "\").getObject(\""
|
||||
<< (*it)->getNameInDocument() << "\"))" << std::endl;
|
||||
if (unique_objs.insert(*it).second) {
|
||||
str << "__objs__.append(FreeCAD.getDocument(\"" << DocName << "\").getObject(\""
|
||||
<< (*it)->getNameInDocument() << "\"))" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
str << "import " << Module << std::endl;
|
||||
|
||||
@@ -928,10 +928,12 @@ StdCmdDuplicateSelection::StdCmdDuplicateSelection()
|
||||
void StdCmdDuplicateSelection::activated(int iMsg)
|
||||
{
|
||||
std::vector<SelectionSingleton::SelObj> sel = Selection().getCompleteSelection();
|
||||
std::set<App::DocumentObject*> unique_objs;
|
||||
std::map< App::Document*, std::vector<App::DocumentObject*> > objs;
|
||||
for (std::vector<SelectionSingleton::SelObj>::iterator it = sel.begin(); it != sel.end(); ++it) {
|
||||
if (it->pObject && it->pObject->getDocument()) {
|
||||
objs[it->pObject->getDocument()].push_back(it->pObject);
|
||||
if (unique_objs.insert(it->pObject).second)
|
||||
objs[it->pObject->getDocument()].push_back(it->pObject);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1318,12 +1318,12 @@ void MainWindow::dragEnterEvent (QDragEnterEvent * e)
|
||||
QMimeData * MainWindow::createMimeDataFromSelection () const
|
||||
{
|
||||
std::vector<SelectionSingleton::SelObj> selobj = Selection().getCompleteSelection();
|
||||
std::set<App::DocumentObject*> unique_objs;
|
||||
std::set<App::DocumentObject*> unique_objs;
|
||||
std::map< App::Document*, std::vector<App::DocumentObject*> > objs;
|
||||
for (std::vector<SelectionSingleton::SelObj>::iterator it = selobj.begin(); it != selobj.end(); ++it) {
|
||||
if (it->pObject && it->pObject->getDocument()) {
|
||||
if (unique_objs.insert(it->pObject).second)
|
||||
objs[it->pObject->getDocument()].push_back(it->pObject);
|
||||
if (unique_objs.insert(it->pObject).second)
|
||||
objs[it->pObject->getDocument()].push_back(it->pObject);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user