// 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 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include static int initActivator = 0; IGESSelect_Activator::IGESSelect_Activator () { if (initActivator) return; initActivator = 1; // Add ( 0,"load"); // Add ( 0,"loadiges"); // homonyme SetForGroup ("XSTEP-IGES"); Add ( 5,"listviews"); Add ( 6,"listdrawings"); Add ( 7,"listsviews"); AddSet (10,"igestype"); AddSet (11,"bypassgroup"); AddSet (12,"igesname"); AddSet (13,"igesvisible"); AddSet (14,"igeslevel"); AddSet (21,"igesfromdrawing"); AddSet (22,"igesfromview"); AddSet (23,"igesdrawingfrom"); AddSet (24,"igesviewfrom"); AddSet (31,"igesdispdrawing"); AddSet (32,"igesdispview"); AddSet (40,"floatformat"); AddSet (41,"setglobalparam"); AddSet (42,"setversion5"); AddSet (43,"updatecreationdate"); AddSet (44,"updatelastchange"); AddSet (45,"updatefilename"); AddSet (50,"autocorrect"); AddSet (51,"computestatus"); AddSet (52,"rebuildgroups"); AddSet (53,"rebuilddrawings"); AddSet (54,"addgroup"); AddSet (60,"splinetobspline"); Add (70,"setuseflag"); } IFSelect_ReturnStatus IGESSelect_Activator::Do (const Standard_Integer number, const Handle(IFSelect_SessionPilot)& pilot) { Standard_Integer argc = pilot->NbWords(); const Standard_CString arg1 = pilot->Word(1).ToCString(); const Standard_CString arg2 = pilot->Word(2).ToCString(); // const Standard_CString arg3 = pilot->Word(3).ToCString(); Handle(IFSelect_WorkSession) WS = pilot->Session(); switch (number) { case 5 : // **** ListViews (sans tri complementaire) case 6 : // **** ListDrawings case 7 : { // **** ListS(ingle)Views Standard_Integer listmode = 0; if (argc == 2 && arg1[0] == '?') argc = -1; if (argc < 2) { cout<<"Ajouter un argument pour avoir :\n"<< " l : liste resumee"<< " c : liste complete par item (mais pas pour remaining)\n"<< " r : idem + liste complete remaining\n"<< " sur tout le modele. Ajouter nom selection pour lister sur une partie"<= 0 ? IFSelect_RetError : IFSelect_RetVoid); } if (arg1[0] == 'l') { listmode = 0; cout<<"Liste resumee"; } else if (arg1[0] == 'c') { listmode = 1; cout<<"Liste complete par item (pas pour Remaining)"<SetModel(GetCasted(IGESData_IGESModel,WS->Model())); if (argc == 2) vs->AddModel(WS->Model()); else { // on demande une selection DeclareAndCast(IFSelect_Selection,sel,WS->NamedItem(arg2)); if (sel.IsNull()) { cout<<"Pas une selection : "<AddList (WS->SelectionResult(sel)); } Standard_Boolean listdr = (number > 5); if (number == 6) vs->SortDrawings(WS->Graph()); if (number == 7) vs->SortSingleViews(Standard_True); Handle(IFSelect_PacketList) sets = vs->Sets(listdr); Standard_Integer nb = vs->NbSets(listdr); cout<<" -- ViewSorter for"; if (number == 5) cout<<" Views & Drawings"; if (number == 6) cout<<" Drawings only (complete)"; if (number == 7) cout<<" Single Views & Drawing Frames"; cout<<", on "<NbEntities()<<" ent.s, give "<Model()->Number(vs->SetItem(i,listdr))<<" List:"; cout<NbEntities(i)<<" ent.s:"<Entities(i); WS->ListEntities (iter,0); } cout <<" -- Remaining Entities (not yet sorted) :" <NbDuplicated(0,Standard_False)<Duplicated(0,Standard_False); WS->ListEntities(iter,0); return IFSelect_RetVoid; } case 10 : { // **** IGESType (form Type/Form) if (argc < 2) { cout<<"Donner le n0 de type desire, + en option la forme\n" <<" Si pas de forme, prend toutes les formes du type demande"< 2)); return pilot->RecordItem (sel); } case 11 : { // **** IGES BypassGroup return pilot->RecordItem (new IGESSelect_SelectBypassGroup); } case 12 : { // **** IGES Name if (argc < 2) { cout<<"Donner un Nom de TextParam pour IGESName"<SetName (GetCasted(TCollection_HAsciiString,WS->NamedItem(arg1)) ); return pilot->RecordItem (sel); } case 13 : { // **** IGES VisibleStatus return pilot->RecordItem (new IGESSelect_SelectVisibleStatus); } case 14 : { // **** IGES LevelNumber if (argc < 2) { cout<<"Donner nom IntParam pour Level"<NamedItem(arg1)); if (lev.IsNull()) { cout<SetLevelNumber(lev); return pilot->RecordItem (sel); } case 21 : { // **** IGES FromDrawing return pilot->RecordItem (new IGESSelect_SelectFromDrawing); } case 22 : { // **** IGES FromSingleView return pilot->RecordItem (new IGESSelect_SelectFromSingleView); } case 23 : { // **** IGES FromDrawing return pilot->RecordItem (new IGESSelect_SelectDrawingFrom); } case 24 : { // **** IGES FromDrawing return pilot->RecordItem (new IGESSelect_SelectSingleViewFrom); } case 31 : { // **** IGES DispatchPerDrawing return pilot->RecordItem (new IGESSelect_DispPerDrawing); } case 32 : { // **** IGES DispatchPerSingleView return pilot->RecordItem (new IGESSelect_DispPerSingleView); } case 40 : { // **** FloatFormat char prem = ' '; if (argc < 2) prem = '?'; else if (argc == 5) { cout<<"floatformat tout court donne les formes admises"<= 48 && prem <= 57) digits = atoi(arg1); else { cout<<"floatformat digits, digits=nb de chiffres signifiants, ou\n" << "floatformat NZ %mainformat [%rangeformat [Rmin Rmax]]\n" <<" NZ : N ou n pour Non-zero-suppress, Z ou z pour zero-suppress\n" <<" %mainformat : format principal type printf, ex,: %E\n" <<" + optionnel : format secondaire (flottants autour de 1.) :\n" <<" %rangeformat Rmin Rmax : format type printf entre Rmin et Rmax\n" <<" %rangeformat tout seul : format type printf entre 0.1 et 1000.\n" < 4) { Rmin = Atof(pilot->Word(4).ToCString()); Rmax = Atof(pilot->Word(5).ToCString()); if (Rmin <= 0 || Rmax <= 0) { cout<<"intervalle : donner reels > 0"<SetDefault(digits); else { fm->SetZeroSuppress(zerosup); fm->SetFormat (arg2); if (argc == 4) fm->SetFormatForRange(pilot->Word(3).ToCString()); else if (argc >= 6) fm->SetFormatForRange(pilot->Word(3).ToCString(),Rmin,Rmax); else fm->SetFormatForRange(""); } return pilot->RecordItem(fm); } case 41 : { // **** SetGlobalParameter if (argc < 3) { cout<<"Donner entier=n0 param a changer + nom TextParam pour la valeur"<NamedItem(arg2)); if (val.IsNull()) { cout<<"Pas un nom de TextParam:"<SetValue(val); return pilot->RecordItem (mod); } case 42 : { // **** Set IGES Version 5.1 return pilot->RecordItem (new IGESSelect_SetVersion5); } case 43 : { // **** Update Creation Date return pilot->RecordItem (new IGESSelect_UpdateCreationDate); } case 44 : { // **** Update Last Change Date return pilot->RecordItem (new IGESSelect_UpdateLastChange); } case 45 : { // **** Update File Name return pilot->RecordItem (new IGESSelect_UpdateFileName); } case 50 : { // **** AutoCorrect return pilot->RecordItem (new IGESSelect_AutoCorrect); } case 51 : { // **** Compute Status return pilot->RecordItem (new IGESSelect_ComputeStatus); } case 52 : { // **** Rebuild Groups return pilot->RecordItem (new IGESSelect_RebuildGroups); } case 53 : { // **** Rebuild Drawings return pilot->RecordItem (new IGESSelect_RebuildDrawings); } case 54 : { // **** Add Group return pilot->RecordItem (new IGESSelect_AddGroup); } case 60 : { // **** Spline To BSpline if (argc < 2) { cout<<"Pour SplineToBSpline, donner mode :\n"<< " n pour normal, t pour tryC2"<RecordItem(conv); } case 70 : { // **** SetUseFlag Standard_Integer usefl = atoi (arg1); if (argc > 2) { Handle(TColStd_HSequenceOfTransient) list = WS->GiveList(pilot->CommandPart(2)); Standard_Integer i, nb = list->Length(); for (i = 1; i <= nb; i ++) { DeclareAndCast(IGESData_IGESEntity,ent,list->Value(i)); if (!ent.IsNull()) ent->InitStatus (ent->BlankStatus(),ent->SubordinateStatus(),usefl,ent->HierarchyStatus()); } } else { Standard_Integer i, nb = WS->NbStartingEntities(); for (i = 1; i <= nb; i ++) { DeclareAndCast(IGESData_IGESEntity,ent,WS->StartingEntity(i)); if (!ent.IsNull()) ent->InitStatus (ent->BlankStatus(),ent->SubordinateStatus(),usefl,ent->HierarchyStatus()); } } return IFSelect_RetDone; } default : break; } return IFSelect_RetVoid; } Standard_CString IGESSelect_Activator::Help (const Standard_Integer number) const { switch (number) { case 5 : return "Liste Vues (tous types). Nom selection sinon tout modele"; case 6 : return "Liste Drawings. Nom selection sinon tout modele"; case 7 : return "Liste Vues SIMPLES. Nom selection sinon tout modele"; case 10 : return "type:integer [form:integer] : cree Select IGESType"; case 11 : return "cree Select Bypass Group"; case 12 : return "name:TextParam : cree Select Name (Name/Label)"; case 13 : return "cree Select Visible Status (Blank Status = 0 sinon 1)"; case 14 : return "level:IntParam : cree Select LevelNumber"; case 21 : return "cree Select From Drawing"; case 22 : return "cree Select From Single View"; case 23 : return "cree Select Drawing From, drawing(s) pour une liste d entites"; case 24 : return "cree Select View From, views pour une liste d entites"; case 31 : return "cree Dispatch Per Drawing"; case 32 : return "cree Dispatch Per SingleView"; case 40 : return "options... : cree FloatFormat ... floatformat tout court->help"; case 41 : return "numpar:integer value:TextParam : cree Set Global Param"; case 42 : return "cree Set Version -> 5.1"; case 43 : return "cree Update Creation Date"; case 44 : return "cree Update Last Change Date"; case 45 : return "cree Update File Name (dynamic)"; case 50 : return "cree AutoCorrect"; case 51 : return "cree Compute Status (in D.E.)"; case 52 : return "cree Rebuild Groups"; case 53 : return "cree Rebuild Drawings"; case 54 : return "cree AddGroup"; case 60 : return "cree SplineToBSpline Conversion"; case 70 : return "useflag givelist : Set Use Flag to value"; default : break; } return "??"; }