int main( int argc, char **argv ) {
    // connection
    SodaClient sc( QHostAddress::Any, 8890 );
    if ( not sc.connected() ) return 1;

    qDebug() << "argv : " << argv;
    //id du model à traiter
    quint64 model_id = atoi(argv[1]);
    //qDebug() << "model_id : " << model_id;
    // type d'item observé
    sc.reg_type( "UnvReaderItem2D" );
    sc.reg_type( "UnvReaderItem3D" );
    sc.reg_type( "Scult2DItem" );
    sc.reg_type( "Scult3DItem" );
    sc.reg_type( "Scills3DItem" );
    sc.reg_type( "CorrelationItem" );
    sc.reg_type( "MesherItem" );
    sc.reg_type( "GmshItem" );
    sc.reg_type( "File" );
    sc.reg_type( "Img" );
    sc.reg_type( "ServerAssistedVisualization" );
    sc.reg_type( "AcquisitionItem" );
    
    //chargement du model
    MP mp = sc.load_ptr(model_id);
    
    // lancement de la bonne commade
    std::stringstream str_model_id;
    str_model_id << model_id;
    std::string temp_str = str_model_id.str();
    std::string commande;
    
   
    if(mp.type() == "CorrelationItem" or mp.type() == "MesherItem" or mp.type() == "File" or mp.type() == "Img" or mp.type() == "ServerAssistedVisualization" ){
        commande = "../../CorreliPlugin/Analytics/src/compilations/src_main_cpp.exe " + temp_str ;
        std::system(commande.c_str());        
    }
    else if(mp.type() == "GmshItem" ){
        commande = "../../GmshPlugin/Analytics/src/compilations/src_main_cpp.exe " + temp_str ;
        std::system(commande.c_str());
    }
    
    sleep(1);
    mp[ "_computation_mode" ] = false;
    mp[ "_computation_state" ] = false;
    mp[ "_processing_state" ] = false;
    mp.flush();
    SodaClient::Event event = sc.event();
}
Ejemplo n.º 2
0
void Launcher::launch(SodaClient::Event event){
    if(event.event_num == 1){  //evennement issu du timer
        MP input = mp_list[0];

        MP child_24 = input["children[2]"]["children[0].children"];
        MP node_22 = input["children[0]"]["children[1]"];
        QString name_0 = input["name"];

        if(name_0 == "+"){
            child_24 << node_22;
            name_0 = "Noeud 0";
            input["name"] = name_0;
        }
        else if(name_0 == "-"){
            child_24.clear();
            name_0 = "Noeud 0";
            input["name"] = name_0;
            input["children[2]"]["children[0].children"] = child_24;
        }

        qDebug() << child_24;


//        MP nom = input["children[0]"]["children[1]"]["children[0].children"];
//        QString _nom = nom;
//        _nom = "testotest";
//        nom = _nom;


        input.flush();
    }

    if(event.event_num != 1){  //evennement issu d'une modification de l'objet sur le serveur
        MP input = mp_list[0];
    }
};
bool ScillsResultUpdater::run( MP mp ) {
    // add_message( mp, ET_Info, "Test info msg" );
    int nb_parts_ = mp[ "nb_parts" ];
    qDebug() << nb_parts_;
    double id_model = mp[ "id_model" ];
    if ( id_model == -1 ) {
        add_message( mp, ET_Error, "Model is not available" );
        //return false;
    }

    double id_calcul = mp[ "id_calcul" ];
    if ( id_calcul <= -2 ) {
        add_message( mp, ET_Error, "Data are not available" );
    } else if( id_calcul == -1 and nb_parts_ == 0) {
        add_message( mp, ET_Info, "You choose to visualize the base mesh" );
//           using namespace Metil;
//           using namespace LMT;


        // version 1------------------------------------------------------------------
        Sc2String str_id_model;
        str_id_model << id_model;
        Sc2String str_id_calcul;
        str_id_calcul << id_calcul;

        GeometryUser        geometry_user;                                    /// structure de stockage des informations du fichier HDF5
        geometry_user.initialisation(str_id_model, str_id_calcul);
        geometry_user.read_hdf5(false,true,"test");                           /// true si on lit les info micro, true si on lit toutes les infos

        MP opc = mp[ "_children[ 0 ]" ];            // output Part collection
        MP oic = mp[ "_children[ 1 ]" ];            // output Interface collection
        MP oec = mp[ "_children[ 2 ]" ];            // output Edge collection
        //qDebug() << oec[ "_edge_profile" ];

        int nb_parts = 0;
        int nb_interfaces = 0;
        int nb_edges = 0;
        int dimention;
        if(geometry_user.group_elements[0].pattern_id == 0 or geometry_user.group_elements[0].pattern_id == 1) {
            dimention = 2;
        } else {
            dimention = 3;
        }

        for (int i_group=0; i_group<geometry_user.group_elements.size(); i_group++) {
            MP part_profile = oic[ "_part_profile" ];
            MP part = MP::new_obj( "ScillsPartItem" );
            new_scills_obg(part, part_profile, geometry_user.group_elements[i_group].id, "Part");

            //création du sous maillage de part ------
            part[ "_mesh" ] = MP::new_obj( "Mesh" );
            MP om = part[ "_mesh" ];
            new_mesh(om);
            part[ "visualization" ] = om[ "visualization" ];
            part[ "id" ] = geometry_user.group_elements[i_group].id;

            if(dimention == 2) {
                //liste des points du maillage------------
                new_list_points_mesh_2D(om, geometry_user.group_elements[i_group]);

                //liste des éléments du maillage----------
                new_list_elements_mesh_2D(om, geometry_user.group_elements[i_group]);

            } else if(dimention == 3) {
                new_mesh_part_3D(om, geometry_user, i_group);
            }
            nb_parts += 1;
            opc[ "_children" ] << part;
        }

        for (int i_group=0; i_group<geometry_user.group_interfaces.size(); i_group++) {
            if(geometry_user.group_interfaces[i_group].type == 2) {
                //création de l'interface-------------------------
                MP interface_profile = oic[ "_interface_profile" ];
                MP interface = MP::new_obj( "ScillsInterfaceItem" );
                new_scills_obg(interface, interface_profile, geometry_user.group_interfaces[i_group].id, "Interface");

                //création du sous maillage de interface ------
                interface[ "_mesh" ] = MP::new_obj( "Mesh" );
                MP om = interface[ "_mesh" ];
                new_mesh(om);
                interface[ "visualization" ] = om[ "visualization" ];
                interface[ "id" ] = geometry_user.group_interfaces[i_group].id;

                if(dimention == 2) {
                    //liste des points du maillage------------
                    new_list_points_mesh_2D(om, geometry_user.group_interfaces[i_group]);

                    //liste des éléments du maillage----------
                    new_list_elements_mesh_2D(om, geometry_user.group_interfaces[i_group]);

                } else if(dimention == 3) {
                    //liste des points du maillage------------
                    new_list_points_mesh_3D(om, geometry_user.group_interfaces[i_group]);

                    //liste des éléments du maillage----------
                    new_list_elements_mesh_3D(om, geometry_user.group_interfaces[i_group]);
                }

                //ajout de l'interface à l'assemblage------------
                nb_interfaces += 1;
                oic[ "_children" ] << interface;
            } else if(geometry_user.group_interfaces[i_group].type == 0) {
                //création du edge-------------------------
                MP edge_profile = oec[ "_edge_profile" ];
                MP edge = MP::new_obj( "ScillsEdgeItem" );
                new_scills_obg(edge, edge_profile, geometry_user.group_interfaces[i_group].id, "Edge");

                //création du sous maillage de edge ------
                edge[ "_mesh" ] = MP::new_obj( "Mesh" );
                MP om = edge[ "_mesh" ];
                new_mesh(om);
                edge[ "visualization" ] = om[ "visualization" ];
                edge[ "id" ] = geometry_user.group_interfaces[i_group].id;

                if(dimention == 2) {
                    //liste des points du maillage------------
                    new_list_points_mesh_2D(om, geometry_user.group_interfaces[i_group]);

                    //liste des éléments du maillage----------
                    new_list_elements_mesh_2D(om, geometry_user.group_interfaces[i_group]);

                } else if(dimention == 3) {
                    //liste des points du maillage------------
                    new_list_points_mesh_3D(om, geometry_user.group_interfaces[i_group]);

                    //liste des éléments du maillage----------
                    new_list_elements_mesh_3D(om, geometry_user.group_interfaces[i_group]);
                }

                //ajout du edge à l'assemblage------------
                nb_edges += 1;
                oec[ "_children" ] << edge;
            }
        }

        mp[ "nb_parts" ] = nb_parts;
        mp[ "nb_interfaces" ] = nb_interfaces;
        mp[ "nb_edges" ] = nb_edges;

        mp.flush();
    } else {
        add_message( mp, ET_Info, "You choose to visualize a result" );
    }
    add_message( mp, ET_Info, "ScillsResult just finish" );

}