DependenciesSolvingResult ComponentInstaller::tryToInstall(const QStringList &componentNames) { deleteComponents(); // Add existed componens to resolve componens for install IComponentDependenciesPtr dependencies(createDependencies()); for (IComponent *comp : m_existedComponents) dependencies->addComponent(comp); QList<IComponent *> discoveredComponents = discoverComponents(); // Select components to install from the all discovered components QList<IComponent *> toInstall; for (IComponent *comp : discoveredComponents) { dependencies->addComponent(comp); if (componentNames.contains(comp->name())) toInstall.push_back(comp); } // Find all parents for components to install DependenciesSolvingResult result = dependencies->completeListWithChildren(toInstall); if (!result.orphans().isEmpty()) { qDeleteAll(toInstall); return result; } // Return only components that have to be installed for (IComponent *comp : result.ordered()) { if (toInstall.contains(comp)) continue; if (discoveredComponents.contains(comp)) toInstall.push_back(comp); } // Delete unused components for (IComponent *comp : discoveredComponents) { if (!toInstall.contains(comp)) delete comp; } m_componentsToInstall = toInstall; return DependenciesSolvingResult(m_componentsToInstall); }
std::list< CgalTrian> erGeometryExtractTrianglesWithMesh( InputSegmentIterator debut, InputSegmentIterator fin,double mesh_angle=0.125,double mesh_size=4.) { CgalDT cgadt ; for( InputSegmentIterator icg=debut;icg!=fin;icg++) { cgadt.insert_constraint(icg->source(),icg->target()); }; CGAL::refine_Delaunay_mesh_2(cgadt, Criteria(mesh_angle,mesh_size)); CgalDT::Finite_edges_iterator bed,nif; // std::cout << "Nbre de noeuds:" << cgadt.number_of_vertices() << std::endl; // int i; // std::cin >> i; bed=cgadt.finite_edges_begin(); nif=cgadt.finite_edges_end(); CDT cdt; for(;bed!=nif;bed++) { CDT::Vertex_handle va = cdt.insert(bed->first->vertex(cgadt.cw(bed->second))->point()); CDT::Vertex_handle vb = cdt.insert(bed->first->vertex(cgadt.ccw(bed->second))->point()); if(cgadt.is_constrained(*bed)) { cdt.insert_constraint(va,vb); } } initializeID(cdt); discoverComponents(cdt); std::list<CgalTrian> triangs; CDT::All_faces_iterator deb=cdt.all_faces_begin(); for(;deb!=cdt.all_faces_end();deb++) { if(deb->is_in_domain()) { CgalTrian tri=cdt.triangle(deb); triangs.push_back(tri); } }; return triangs; };
std::list< CgalTrian> erGeometryExtractTriangles( InputSegmentIterator debut, InputSegmentIterator fin) { CDT cdt ; for( InputSegmentIterator icg=debut;icg!=fin;icg++) { cdt.insert_constraint(icg->source(),icg->target()); }; initializeID(cdt); discoverComponents(cdt); std::list<CgalTrian> triangs; CDT::All_faces_iterator deb=cdt.all_faces_begin(); for(;deb!=cdt.all_faces_end();deb++) { if(deb->is_in_domain()) { CgalTrian tri=cdt.triangle(deb); triangs.push_back(tri); } }; return triangs; };