std::string cInterfChantierNameManipulateur::NamePackWithAutoSym ( const std::string & aKey, const std::string & aName1, const std::string & aName2, bool aSVP ) { std::string aN12_SsDir = Assoc1To2(aKey,aName1,aName2,true); std::string aN12 = mDir+aN12_SsDir; if (! ELISE_fp::exist_file(aN12)) { std::string aN21 =mDir+ Assoc1To2(aKey,aName2,aName1,true); if (! ELISE_fp::exist_file(aN21)) { if (aSVP) return aN12_SsDir; std::cout << "For K=" << aKey << " N1=" << aName1 << " N2=" << aName2 << "\n"; std::cout << aN12 << "\n"; std::cout << aN21 << "\n"; ELISE_ASSERT(false,"Ni fichier homoloque ni symetrique n'existe"); } ElPackHomologue aPack = ElPackHomologue::FromFile(aN21); aPack.SelfSwap(); aPack.StdPutInFile(aN12); } return aN12_SsDir; }
bool cPackObsLiaison::InitPack ( ElPackHomologue & aPack, const std::string& aNN1, const std::string& aNN2 ) { std::string aN1 = mAppli.PoseFromName(aNN1)->Name(); std::string aN2 = mAppli.PoseFromName(aNN2)->Name(); if (mIsMult) { if (DicBoolFind(mDicoMul,aN1) && mDicoMul[aN1]->InitPack(aPack,aN2)) { return false; } if (DicBoolFind(mDicoMul,aN2) && mDicoMul[aN2]->InitPack(aPack,aN1)) { aPack.SelfSwap(); return true; } } else { cObservLiaison_1Cple * aO2 = mDicObs[aN1][aN2]; if (aO2) { aPack = aO2->Pack(); return false; } aO2 = mDicObs[aN2][aN1]; if (aO2) { aPack = aO2->Pack(); aPack.SelfSwap(); return true; } } std::cout << " For : " << mId << " " << aN1 << " " << aN2 << "\n"; std::cout << " Mult " << mIsMult << "\n"; ELISE_ASSERT(false,"Cannot find liaison"); return false; }
void cAppliApero::ExportMesuresFromCarteProf ( const cExportMesuresFromCarteProf & anEM, const cCartes2Export & aC, cElNuage3DMaille * aNuage, const ElPackHomologue & aPackH, cPoseCam * aPose2Compl, const std::string & aNameCarte ) { if (aNameCarte == aPose2Compl->Name()) return; if ( (! anEM.KeyAssocLiaisons12().IsInit()) && (! anEM.KeyAssocLiaisons21().IsInit()) ) { return; } cPoseCam * aPoseCarte = PoseFromName(aNameCarte); const CamStenope * aCSC = aPoseCarte->CurCam(); Pt2di aSzIm = aCSC->Sz(); ElPackHomologue aNewPack; for ( ElPackHomologue::const_iterator itH=aPackH.begin(); itH!=aPackH.end(); itH++ ) { Pt2dr aI1 = aNuage->Plani2Index(itH->P1()); if (aNuage->IndexHasContenuForInterpol(aI1)) { Pt3dr aPTer = aNuage->PtOfIndexInterpol(aI1); Pt2dr aP1 = aCSC->R3toF2(aPTer); if ((aP1.x>0) && (aP1.y>0) && (aP1.x<aSzIm.x) && (aP1.y<aSzIm.y)) { aNewPack.Cple_Add(ElCplePtsHomologues(aP1,itH->P2())); } } } if (anEM.KeyAssocLiaisons12().IsInit()) { std::string aName = mDC + mICNM->Assoc1To2 ( anEM.KeyAssocLiaisons12().Val(), aNameCarte, aPose2Compl->Name(), true ); if (anEM.LiaisonModeAdd().Val()) aNewPack.StdAddInFile(aName); else aNewPack.StdPutInFile(aName); } if (anEM.KeyAssocLiaisons21().IsInit()) { std::string aName = mDC + mICNM->Assoc1To2 ( anEM.KeyAssocLiaisons21().Val(), aPose2Compl->Name(), aNameCarte, true ); aNewPack.SelfSwap(); if (anEM.LiaisonModeAdd().Val()) aNewPack.StdAddInFile(aName); else aNewPack.StdPutInFile(aName); } }