// Copyright (c) 1999-2014 OPEN CASCADE SAS // // This file is part of Open CASCADE Technology software library. // // This library is free software; you can redistribute it and/or modify it under // the terms of the GNU Lesser General Public License version 2.1 as published // by the Free Software Foundation, with special exception defined in the file // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT // distribution for complete text of the license and disclaimer of any warranty. // // Alternatively, this file may be used under the terms of Open CASCADE // commercial license or contractual agreement. #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // ####################################################################### // ## ## // ## ## // ## FUNCTIONS ## // ## ## // ## ## // ####################################################################### //======================================================================= //function : xinit //======================================================================= static IFSelect_ReturnStatus XSControl_xinit(const Handle(IFSelect_SessionPilot)& pilot) { Standard_Integer argc = pilot->NbWords(); const Standard_CString arg1 = pilot->Arg(1); // **** xinit **** if (argc > 1) return (XSControl::Session(pilot)->SelectNorm(arg1) ? IFSelect_RetDone : IFSelect_RetFail); Handle(Message_Messenger) sout = Message::DefaultMessenger(); sout<<"Selected Norm:"<SelectedNorm()<NbWords(); const Standard_CString arg1 = pilot->Arg(1); // **** xnorm **** Handle(XSControl_WorkSession) WS = XSControl::Session(pilot); Handle(XSControl_Controller) control = WS->NormAdaptor(); Handle(Message_Messenger) sout = Message::DefaultMessenger(); if (argc == 1) sout<<"Current Norm. xnorm newnorm to change"<Name(Standard_False)<Name(Standard_True)<SetController(control); sout<<"new norm : "<Name()<NewModel().IsNull()) return IFSelect_RetDone; Handle(Message_Messenger) sout = Message::DefaultMessenger(); sout<<"No new Model produced"<Word(0).Value(2) == 'w'); const Handle(Transfer_FinderProcess) &FP = XSControl::Session(pilot)->TransferWriter()->FinderProcess(); const Handle(Transfer_TransientProcess) &TP = XSControl::Session(pilot)->TransferReader()->TransientProcess(); Handle(Message_Messenger) sout = Message::DefaultMessenger(); if (modew) { if(!FP.IsNull()) FP->Clear(); else sout<<"No Transfer Write"<Clear(); else sout<<"No Transfer Read"<NbWords(); const Standard_CString arg1 = pilot->Arg(1); //const Standard_CString arg2 = pilot->Arg(2); const Handle(Transfer_TransientProcess) &TP = XSControl::Session(pilot)->TransferReader()->TransientProcess(); Handle(Message_Messenger) sout = Message::DefaultMessenger(); if (TP.IsNull()) { sout<<"No Transfer Read"< 1) { char a2 = arg1[1]; if (a2 == '\0') a2 = '!'; switch (arg1[0]) { case 'g' : mod1 = 0; break; case 'c' : mod1 = 4; mod2 = 4; break; case 'C' : mod1 = 4; mod2 = 2; break; case 'f' : mod1 = 5; mod2 = 4; break; case 'F' : mod1 = 5; mod2 = 2; break; case '*' : mod1 = 2; break; case '?' : mod1 = 3; break; default : mod1 = 1; if (argc > 2) mod1 = 2; a2 = arg1[0]; break; } if (mod1 < 1 || mod1 > 3) a2 = '!'; switch (a2) { case 'n' : mod2 = 0; break; case 's' : mod2 = 1; break; case 'b' : mod2 = 2; break; case 't' : mod2 = 3; break; case 'r' : mod2 = 4; break; case 'l' : mod2 = 5; break; case 'L' : mod2 = 6; break; case '!' : break; case '?' : mod1 = -1; break; default : mod1 = -2; break; } } // A present help eventuel if (mod1 < -1) sout<<"Unknown Mode"<Model() != pilot->Session()->Model()) sout<<"Model differs from the session"; Handle(TColStd_HSequenceOfTransient) list = IFSelect_Functions::GiveList(pilot->Session(),pilot->CommandPart(2)); XSControl_TransferReader::PrintStatsOnList (TP,list,mod1,mod2); // TP->PrintStats (1,sout); } else sout<<"TransferRead : not defined"<NbWords(); const Standard_CString arg1 = pilot->Arg(1); const Handle(Transfer_TransientProcess) &TP = XSControl::Session(pilot)->TransferReader()->TransientProcess(); // **** tpent **** Handle(Message_Messenger) sout = Message::DefaultMessenger(); if (TP.IsNull()) { sout<<"No Transfer Read"<Model(); if (model.IsNull()) return IFSelect_RetFail; if (argc < 2) { sout<<"Give ENTITY NUMBER (IN MODEL TransferProcess)"< model->NbEntities()) { sout<<"Number not in [1 - "<NbEntities()<<"]"<Value(num); Standard_Integer index = TP->MapIndex (ent); if (index == 0) sout<<"Entity "<PrintTransferStatus (index,Standard_False,sout); return IFSelect_RetVoid; } //======================================================================= //function : tpitem //======================================================================= static IFSelect_ReturnStatus XSControl_tpitem(const Handle(IFSelect_SessionPilot)& pilot) { Standard_Integer argc = pilot->NbWords(); const Standard_CString arg1 = pilot->Arg(1); // **** tpitem/tproot/twitem/twroot **** Handle(Message_Messenger) sout = Message::DefaultMessenger(); if (argc < 2) { sout<<"Give ITEM NUMBER (in TransferProcess)"<Word(0).Value(3) == 'r') num = -num; Standard_Boolean modew = Standard_False; if (pilot->Word(0).Value(2) == 'w') modew = Standard_True; Handle(Transfer_Binder) binder; Handle(Transfer_Finder) finder; Handle(Standard_Transient) ent; if (!XSControl::Session(pilot)->PrintTransferStatus(num,modew,sout)) sout<<" - Num="<NbWords(); const Standard_CString arg1 = pilot->Arg(1); const Handle(Transfer_TransientProcess) &TP = XSControl::Session(pilot)->TransferReader()->TransientProcess(); // **** trecord : TransferReader **** Standard_Boolean tous = (argc == 1); Standard_Integer num = -1; const Handle(Interface_InterfaceModel) &mdl = XSControl::Session(pilot)->Model(); const Handle(XSControl_TransferReader) &TR = XSControl::Session(pilot)->TransferReader(); Handle(Standard_Transient) ent; Handle(Message_Messenger) sout = Message::DefaultMessenger(); if (mdl.IsNull() || TR.IsNull() || TP.IsNull()) { sout<<" init not done"<NbRoots(); sout<<" Recording "<Root(i); if (TR->RecordResult (ent)) sout<<" Root n0."< mdl->NbEntities()) sout<<"incorrect number:"<RecordResult(mdl->Value(num))) sout<<" Entity n0."<NbWords(); const Standard_CString arg1 = pilot->Arg(1); Handle(Message_Messenger) sout = Message::DefaultMessenger(); // **** trstat : TransferReader **** const Handle(XSControl_TransferReader) &TR = XSControl::Session(pilot)->TransferReader(); if (TR.IsNull()) { sout<<" init not done"<Model(); if (mdl.IsNull()) { sout<<" No model"<FileName()<PrintStats(10,0); } else { // stats unitaires Standard_Integer num = atoi(arg1); if (num < 1 || num > mdl->NbEntities()) { sout<<" incorrect number:"<Value(num); if (!TR->IsRecorded(ent)) { sout<<" Entity "<FinalResult(ent); Handle(TColStd_HSequenceOfTransient) list = TR->CheckedList(ent); Standard_Integer i, nb = list->Length(); if (nb > 0) sout<<" Entities implied by Check/Result :"<Print(list->Value(i),sout); } sout<CheckList(Standard_False); pilot->Session()->PrintCheckList(chl,Standard_False,IFSelect_EntitiesByItem); } return IFSelect_RetVoid; } //======================================================================= //function : trbegin //======================================================================= static IFSelect_ReturnStatus XSControl_trbegin(const Handle(IFSelect_SessionPilot)& pilot) { // **** trbegin : TransferReader **** Handle(XSControl_TransferReader) TR = XSControl::Session(pilot)->TransferReader(); Standard_Boolean init = TR.IsNull(); if (pilot->NbWords() > 1) { if (pilot->Arg(1)[0] == 'i') init = Standard_True; } if (init) { XSControl::Session(pilot)->InitTransferReader (0); TR = XSControl::Session(pilot)->TransferReader(); if (TR.IsNull()) { Handle(Message_Messenger) sout = Message::DefaultMessenger(); sout<<" init not done or failed"<BeginTransfer(); return IFSelect_RetDone; } //======================================================================= //function : tread //======================================================================= static IFSelect_ReturnStatus XSControl_tread(const Handle(IFSelect_SessionPilot)& pilot) { Standard_Integer argc = pilot->NbWords(); //const Standard_CString arg1 = pilot->Arg(1); // **** tread : TransferReader **** Handle(Message_Messenger) sout = Message::DefaultMessenger(); const Handle(XSControl_TransferReader) &TR = XSControl::Session(pilot)->TransferReader(); if (TR.IsNull()) { sout<<" init not done"<Model(); if (mdl.IsNull()) { sout<<" No model"<Session()->NamedItem("xst-model-roots")); Handle(Standard_Transient) sel = pilot->Session()->NamedItem("xst-model-roots"); if (sel.IsNull()) { sout<<"Select Roots absent"<Session()->GiveList(sel); sout<<" Transferring all roots i.e. : "<TransferList(list)<Session(),pilot->CommandPart(1)); sout<<" Transfer of "<Length()<<" entities"<TransferList(list); sout<<" Gives "< TProcess **** const Handle(XSControl_TransferReader) &TR = XSControl::Session(pilot)->TransferReader(); Handle(Message_Messenger) sout = Message::DefaultMessenger(); if (TR.IsNull()) sout<<" No TransferReader"<TransientProcess().IsNull()) sout<<" Transfer Reader without Process"< TReader **** XSControl::Session(pilot)->InitTransferReader (3); return IFSelect_RetDone; } //======================================================================= //function : twmode //======================================================================= static IFSelect_ReturnStatus XSControl_twmode(const Handle(IFSelect_SessionPilot)& pilot) { Standard_Integer argc = pilot->NbWords(); const Standard_CString arg1 = pilot->Arg(1); // **** twmode **** Handle(XSControl_TransferWriter) TW = XSControl::Session(pilot)->TransferWriter(); Handle(XSControl_Controller) control = XSControl::Session(pilot)->NormAdaptor(); Standard_Integer modemin,modemax; Handle(Message_Messenger) sout = Message::DefaultMessenger(); if (control->ModeWriteBounds (modemin,modemax)) { sout<<"Write Mode : allowed values "<ModeWriteHelp (modd)< "<SetTransferMode(mod); if (!control->IsModeWrite (mod)) sout<<"Warning : this new value is not supported"<NbWords(); //const Standard_CString arg1 = pilot->Arg(1); //const Standard_CString arg2 = pilot->Arg(2); const Handle(Transfer_FinderProcess) &FP = XSControl::Session(pilot)->TransferWriter()->FinderProcess(); // **** twstat **** // Pour Write Handle(Message_Messenger) sout = Message::DefaultMessenger(); if (!FP.IsNull()) { sout<<"TransferWrite:"; // XSControl_TransferWriter::PrintStatsProcess (FP,mod1,mod2); FP->PrintStats (1,sout); } else sout<<"TransferWrite: not defined"<RecordItem(new XSControl_SelectForTransfer(XSControl::Session(pilot)->TransferReader())); } static int THE_XSControl_Functions_initactor = 0; //======================================================================= //function : Init //purpose : //======================================================================= void XSControl_Functions::Init () { if (THE_XSControl_Functions_initactor) { return; } THE_XSControl_Functions_initactor = 1; IFSelect_Act::SetGroup("DE: General"); IFSelect_Act::AddFunc ("xinit","[norm:string to change norme] reinitialises according to the norm",XSControl_xinit); IFSelect_Act::AddFunc ("xnorm","displays current norm +norm : changes it",XSControl_xnorm); IFSelect_Act::AddFunc ("newmodel","produces a new empty model, for the session",XSControl_newmodel); IFSelect_Act::AddFunc ("tpclear","Clears TransferProcess (READ)",XSControl_tpclear); IFSelect_Act::AddFunc ("twclear","Clears TransferProcess (WRITE)",XSControl_tpclear); IFSelect_Act::AddFunc ("tpstat","Statistics on TransferProcess (READ)",XSControl_tpstat); IFSelect_Act::AddFunc ("tpent","[num:integer] Statistics on an entity of the model (READ)",XSControl_tpent); IFSelect_Act::AddFunc ("tpitem","[num:integer] Statistics on ITEM of transfer (READ)" ,XSControl_tpitem); IFSelect_Act::AddFunc ("tproot","[num:integer] Statistics on a ROOT of transfert (READ)" ,XSControl_tpitem); IFSelect_Act::AddFunc ("twitem","[num:integer] Statistics on an ITEM of transfer (WRITE)" ,XSControl_tpitem); IFSelect_Act::AddFunc ("twroot","[num:integer] Statistics on a ROOT of transfer (WRITE)",XSControl_tpitem); IFSelect_Act::AddFunc ("trecord","record : all root results; or num : for entity n0.num",XSControl_trecord); IFSelect_Act::AddFunc ("trstat","general statistics; or num : stats on entity n0 num",XSControl_trstat); IFSelect_Act::AddFunc ("trbegin","begin-transfer-reader [init]",XSControl_trbegin); IFSelect_Act::AddFunc ("tread","transfers all roots, or num|sel|sel num : entity list, by transfer-reader",XSControl_tread); IFSelect_Act::AddFunc ("trtp","feeds commands tp... with results from tr...",XSControl_trtp); IFSelect_Act::AddFunc ("tptr","feeds tr... from tp... (may be incomplete)",XSControl_tptr); IFSelect_Act::AddFunc ("twmode","displays mode transfer write, + num changes it",XSControl_twmode); IFSelect_Act::AddFunc ("twstat","Statistics on TransferProcess (WRITE)",XSControl_twstat); IFSelect_Act::AddFSet ("selecttransfer","selection (recognize from transfer actor)",XSControl_settransfert); }