void TSC_value::streamin_withtype(QBinTagReader &reader) { QString datatypename; reader.read_shortstring(datatypename); TSC_datatype *dtpe=GetTSCenv().G_datatype(datatypename); if (dtpe==NULL) throw QError(TFormatString(_text("Unrecognised data type ^1"),datatypename)); createtype(dtpe); streamin(reader); }
QString TransformsGui::getCurrentChainConf() { // this->setEnabled(false); TransformChain list = getCurrentTransformChain(); QString ret; QXmlStreamWriter streamin(&ret); transformFactory->saveConfToXML(list, &streamin); // this->setEnabled(true); return ret; }
int main(int argc,char ** argv) { TApplication application("app",&argc,argv); Signals::SignalSet signals("Meine Signale"); Signals::Signal a(3.125); Signals::Signal b(3.125); a.SetSignalLength(200); b.SetSignalLength(200); a.CreateHeaviside(100,-1,1); b.CreateHeaviside(150,-2,2); unsigned int index=signals.SetSignal(-1,"signal",a); signals.SetSignal(index,"b",b); Tools::ASCIIOutStream streamout("test.sig"); streamout<<signals; Tools::ASCIIInStream streamin("test.sig"); Signals::SignalSet sigtest("Test"); streamin>>sigtest; Signals::Signal& ra=sigtest.GetSignal(0,"signal"); Signals::Signal& rb=sigtest.GetSignal(0,"b"); TCanvas * canvas1=new TCanvas; a.Graph()->Draw("AL*"); canvas1->Update(); TCanvas * canvas2=new TCanvas; b.Graph()->Draw("AL*"); canvas2->Update(); application.Run(kTRUE); return 0; }
MovimientosFromFile::MovimientosFromFile(string filename): AlgDesplazamientoMallaTriangulos(){ N = 11; sizes = new int[N]; nodes = new int*[N]; values = new float**[N]; ifstream in(filename.c_str()); char line[MAXLINE]; int nodo; float x,y,z; int count = 0; while(true){ in.getline(line,MAXLINE); string str(line); if(str.find("ANIMATION UNITS LIST") != string::npos){ in.getline(line, MAXLINE); break; } if(in.fail()){ in.close(); return; } } while(true){ in.getline(line,MAXLINE); string str(line); if (in.fail()) break; if(str.find("#") == 0){ in.getline(line,MAXLINE); if(line[0] == '#' || line[1] == '#'){ break; } stringstream streamin(line); int size; streamin >> size; sizes[count] = size; nodes[count] = new int[size]; values[count] = new float*[size]; for(int i = 0; i< size; ++i){ values[count][i] = new float[3]; in.getline(line,MAXLINE); string number(line); stringstream streamin(line); streamin >> nodo; streamin >> x; streamin >> y; streamin >> z; nodes[count][i] = nodo; values[count][i][0] = x; values[count][i][1] = y; values[count][i][2] = z; } count++; } }
Malla* GeneraFromComsol_1::aplicar() { int n_triangulos = 0, n_cuadrilateros = 0; // cantidad de caras de tres y cuatro lados ifstream in(archivo.c_str()); char line[MAXLINE]; in.getline(line,MAXLINE); string cx,cy,cz; float x,y,z; int num_puntos, num_caras; num_puntos=0; Nodos *nodos = new Nodos(); Nodo *nodo; while(true) { in.getline(line,MAXLINE); stringstream streamin(line); if (line[0]=='%') break; streamin >> x; streamin >> y; streamin >> z; nodo = new Nodo(Punto(x,y,z)); nodos->addNodo(nodo); num_puntos++; } map<pair<int,int>,int> ind_arcos; map<pair<int,int>,int>::iterator iter1; map<pair<int,int>,int>::iterator iter2; vector<int> indice_puntos; vector<int> indice_arcos; Arcos *arcos = new Arcos(); Caras *caras = new Caras(); Cara *c; int indice; int indices[4], n_lados; num_caras=0; while(true) { indices[3]=-1; in.getline(line,MAXLINE); if (in.fail() || line[0]=='%') break; stringstream streamin(line); for(int i=0; i<4; i++) streamin >> indices[i]; if(indices[3] == -1) { n_triangulos++; n_lados = 3; } else { n_cuadrilateros++; n_lados = 4; } //Nota: Por bug en los archivos de entrada, debo invertir el orden para que las normales queden bien. //for(int i=n_lados-1; i>=0; i--) // por el bug for(int i=0; i<n_lados; i++) // así debiera ser indice_puntos.push_back(indices[i]-1); for(int j=0; j<n_lados; j++) { int ind1 = indice_puntos[j]; int ind2 = indice_puntos[int(fmod(j+1,n_lados))]; pair<int,int> pr1(ind1,ind2); pair<int,int> pr2(ind2,ind1); iter1 = ind_arcos.find(pr1); iter2 = ind_arcos.find(pr2); if(iter1 != ind_arcos.end()) indice_arcos.push_back(iter1->second); else if(iter2 != ind_arcos.end()) indice_arcos.push_back(iter2->second); else { indice = arcos->addArco(new Arco(ind1,ind2)); indice_arcos.push_back(indice); ind_arcos.insert(make_pair(pr1,indice)); nodos->addArcoNodo(ind1,indice); nodos->addArcoNodo(ind2,indice); } } if(n_lados == 3) c = new Triangulo(indice_puntos,indice_arcos); else if(n_lados == 4) c = new Cuadrilatero(indice_puntos,indice_arcos); else c = new Cara(indice_puntos,indice_arcos); int ind_cara = caras->addCara(c); num_caras++; for(int j=0; j<n_lados; j++) { arcos->setCaraArco(indice_arcos[j],ind_cara); nodos->addCaraNodo(indice_puntos[j],ind_cara); } indice_puntos.clear(); indice_arcos.clear(); } Malla *malla = 0; if(n_cuadrilateros == 0) malla = new MallaTriangulos(nodos,arcos,caras); else if(n_triangulos == 0) malla = new MallaCuadrilateros(nodos,arcos,caras); else malla = new Malla(nodos,arcos,caras); malla->setConcentracionTodos(1.0); malla->setConcentracionMax(1.0); malla->setConcentracionMin(0.0); malla->setNormales(); in.close(); //Chequeamos consistencia topologica. int V=malla->getNumNodos(); int E=malla->getNumArcos(); int F=malla->getNumCaras(); cout << "Numero de nodos=" << V << endl; cout << "Numero de arcos=" << E << endl; cout << "Numero de caras=" << F << endl; if (V-E+F==2 || V-E+F==0) cout << "La malla es consistente. Cumple la formula de Euler: V-E+F=2" << endl; else cout << "Atencion, la malla no es consistente. No cumple la formula de Euler: V-E+F=" << V-E+F << " y deberia ser V-E+F=2" << endl; assert(malla->checkMalla(true) >= 0); cout << endl; return malla; }