// File: DDataStd_BasicCommands.cxx // Created: Wed Jul 30 16:19:35 1997 // Author: Denis PASCAL // #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 // LES ATTRIBUTES #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 #ifdef OptJr #define ROUNDMEM(len) (((len)+3)&~0x3) #else #define ROUNDMEM(len) (len) #endif //======================================================================= //function : DDataStd_SetInteger //purpose : SetInteger (DF, entry, value) //======================================================================= static Standard_Integer DDataStd_SetInteger (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if (nb == 4) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label L; DDF::AddLabel(DF, arg[2], L); TDataStd_Integer::Set(L,atoi(arg[3])); return 0; } di << "DDataStd_SetInteger : Error" << "\n"; return 1; } //======================================================================= //function : DDataStd_SetReal //purpose : SetReal (DF, entry, value) //======================================================================= static Standard_Integer DDataStd_SetReal (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if (nb == 4) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label L; DDF::AddLabel(DF, arg[2], L); TDataStd_Real::Set(L,atof(arg[3])); return 0; } di << "DDataStd_SetReal : Error" << "\n"; return 1; } //======================================================================= //function : DDataStd_SetReference //purpose : SetReference (DF, entry, reference) //======================================================================= static Standard_Integer DDataStd_SetReference (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if (nb == 4) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label L; DDF::AddLabel(DF, arg[2], L); TDF_Label LREF; if (!DDF::FindLabel(DF,arg[3],LREF)) return 1; TDF_Reference::Set(L,LREF); return 0; } di << "DDataStd_SetReference : Error" << "\n"; return 1; } //======================================================================= //function : DDataStd_SetComment //purpose : SetComment (DF, entry, Comment) //======================================================================= static Standard_Integer DDataStd_SetComment (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if (nb == 4) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label L; DDF::AddLabel(DF, arg[2], L); TDataStd_Comment::Set(L,arg[3]); return 0; } di << "DDataStd_SetComment : Error" << "\n"; return 1; } //======================================================================= //function : DDataStd_GetInteger //purpose : GetReal (DF, entry, [drawname]) //======================================================================= static Standard_Integer DDataStd_GetInteger (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if (nb == 3 || nb == 4) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; Handle(TDataStd_Integer) A; if (!DDF::Find(DF,arg[2],TDataStd_Integer::GetID(),A)) return 1; if (nb == 4) Draw::Set(arg[3],A->Get()); else Draw::Set(arg[2],A->Get()); di << A->Get(); return 0; } di << "DDataStd_GetInteger : Error" << "\n"; return 1; } //======================================================================= //function : DDataStd_GetReal //purpose : GetReal (DF, entry, [drawname]) //======================================================================= static Standard_Integer DDataStd_GetReal (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if (nb == 3 || nb == 4) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; Handle(TDataStd_Real) A; if (!DDF::Find(DF,arg[2],TDataStd_Real::GetID(),A)) return 1; if (nb == 4) Draw::Set(arg[3],A->Get()); else Draw::Set(arg[2],A->Get()); di << A->Get(); return 0; } di << "DDataStd_GetReal : Error" << "\n"; return 1; } //======================================================================= //function : DDataStd_GetReference //purpose : GetShape (DF, entry) //======================================================================= static Standard_Integer DDataStd_GetReference (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if (nb == 3) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; Handle(TDF_Reference) REF; if (!DDF::Find(DF,arg[2],TDF_Reference::GetID(),REF)) return 1; TCollection_AsciiString entry; TDF_Tool::Entry(REF->Get(),entry); di << entry.ToCString(); return 0; } di << "DDataStd_GetReference : Error" << "\n"; return 1; } //======================================================================= //function : DDataStd_GetComment //purpose : GetShape (DF, entry) //======================================================================= static Standard_Integer DDataStd_GetComment (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if (nb == 3) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; Handle(TDataStd_Comment) A; if (!DDF::Find(DF,arg[2],TDataStd_Comment::GetID(),A)) return 1; TCollection_AsciiString s(A->Get(),'?'); di << s.ToCString(); return 0; } di << "DDataStd_GetComment : Error" << "\n"; return 1; } //======================================================================= //function : //purpose : Self (document,label) //======================================================================= static Standard_Integer DDataStd_Self (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { TCollection_AsciiString s; if (nb == 3) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label L; if (!DDF::FindLabel(DF,arg[2],L)) return 1; // TDataStd::MakeSelfContained(L,removed); // if (removed.IsEmpty()) cout << "noone attriburte removed" << endl; // for (TDF_ListIteratorOfAttributeList it(removed);it.More();it.Next()) { // TDF_Tool::Entry(it.Value()->Label(),s); cout << s << " "; // cout << endl; // } return 0; } di << "Self : Error" << "\n"; return 0; } //======================================================================= //function : SetUObject (DF, entry, ObjectID) //======================================================================= // static Standard_Integer DDataStd_SetUObject (Draw_Interpretor&, // Standard_Integer nb, // const char** arg) // { // if( nb == 4 ) { // Handle(TDF_Data) DF; // if (!DDF::GetDF(arg[1],DF)) return 1; // TDF_Label label; // DDF::AddLabel(DF, arg[2], label); // Standard_GUID guid(arg[3]); //"00000000-0000-0000-1111-000000000000"); // TDataStd_UObject::Set(label, guid); // return 0; // } // cout << "Wrong arguments" << endl; // return 1; // } //======================================================================= //function : SetUAttribute (DF, entry, LocalID) //======================================================================= static Standard_Integer DDataStd_SetUAttribute (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if( nb == 4 ) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label label; DDF::AddLabel(DF, arg[2], label); Standard_GUID guid(arg[3]); //"00000000-0000-0000-2222-000000000000"); TDataStd_UAttribute::Set(label, guid); return 0; } di << "Wrong arguments" << "\n"; return 1; } //======================================================================= //function : GetUAttribute (DF, entry, LoaclID) //======================================================================= static Standard_Integer DDataStd_GetUAttribute (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if( nb == 4 ) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label label; if( !DDF::FindLabel(DF, arg[2], label) ) { di << "No label for entry" << "\n"; return 1; } Standard_GUID guid(arg[3]); //"00000000-0000-0000-2222-000000000000"); Handle(TDataStd_UAttribute) UA; if( !label.FindAttribute(guid, UA) ) { di << "No UAttribute Attribute on label" << "\n"; } else { // UA->ID().ShallowDump(cout); // cout << endl; char *aStrGUID = new char[37]; UA->ID().ToCString(aStrGUID); di << aStrGUID; } return 0; } di << "Wrong arguments" << "\n"; return 1; } //======================================================================= //function : CheckUObject (DF, entry, ObjectID) //======================================================================= // static Standard_Integer DDataStd_CheckUObject (Draw_Interpretor&, // Standard_Integer nb, // const char** arg) // { // if( nb == 4 ) { // Handle(TDF_Data) DF; // if (!DDF::GetDF(arg[1],DF)) return 1; // TDF_Label label; // if( !DDF::FindLabel(DF, arg[2], label) ) { // cout << "No label for entry" << endl; // return 1; // } // Handle(TDataStd_Object) O; // Handle(TDataStd_UObject) UO; // Standard_GUID guidUO(arg[3]); // if( !label.FindAttribute( TDataStd_Object::GetID(), O) ) { // cout << "No Object Attribute on label" << endl; // } // else { // cout << "UObject is found with ObjectID = "; // O->Find(label, guidUO, UO); // UO->ObjectID().ShallowDump(cout); // cout << endl; // } // return 0; // } // cout << "Wrong arguments" << endl; // return 1; // } //======================================================================= //function : SetIntArray (DF, entry , isDelta, From, To, elmt1, elmt2, ... //======================================================================= static Standard_Integer DDataStd_SetIntArray (Draw_Interpretor& di, Standard_Integer, const char** arg) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label label; DDF::AddLabel(DF, arg[2], label); Standard_Integer isDelta = atoi(arg[3]); Standard_Integer From = atoi(arg[4]), To = atoi( arg[5] ), j; di << "Array of Standard_Integer with bounds from = " << From << " to = " << To << "\n"; Handle(TDataStd_IntegerArray) A = TDataStd_IntegerArray::Set(label, From, To, isDelta); j = 6; for(Standard_Integer i = From; i<=To; i++) { A->SetValue(i, atoi(arg[j]) ); j++; } return 0; } //======================================================================= //function : GetIntArray (DF, entry ) //======================================================================= static Standard_Integer DDataStd_GetIntArray (Draw_Interpretor& di, Standard_Integer, const char** arg) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label label; if( !DDF::FindLabel(DF, arg[2], label) ) { di << "No label for entry" << "\n"; return 1; } Handle(TDataStd_IntegerArray) A; if ( !label.FindAttribute(TDataStd_IntegerArray::GetID(), A) ) { di << "There is no TDataStd_IntegerArray under label" << "\n"; return 1; } for(Standard_Integer i = A->Lower(); i<=A->Upper(); i++){ //cout << A->Value(i) << endl; di << A->Value(i); if(iUpper()) di<<" "; } di<<"\n"; return 0; } // //======================================================================= //function : ChangeIntArray (DF, entry, indx, val ) //======================================================================= static Standard_Integer DDataStd_ChangeIntArray (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if( nb == 5 ) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label label; if( !DDF::FindLabel(DF, arg[2], label) ) { di << "No label for entry" << "\n"; return 1; } Handle(TDataStd_IntegerArray) A; if ( !label.FindAttribute(TDataStd_IntegerArray::GetID(), A) ) { di << "There is no TDataStd_IntegerArray at label" << "\n"; return 1; } Standard_Integer indx = atoi(arg[3]); Standard_Integer val = atoi(arg[4]); Standard_Integer low = A->Lower(), up = A->Upper(); if(low <= indx && indx <= up) A->SetValue(indx, val); else { Handle(TColStd_HArray1OfInteger) Arr = A->Array(); Handle(TColStd_HArray1OfInteger) arr; Standard_Integer i; if(indx > up) { up = indx; arr = new TColStd_HArray1OfInteger(low, up); for(i=low; i<= Arr->Upper(); i++) arr->SetValue(i, Arr->Value(i)); for(i=Arr->Upper()+1; i<= up; i++) { if(i == up) arr->SetValue(i, val); else arr->SetValue(i, 0); } } else if(indx < up) {//clip array : indx to be negative up = abs(indx); arr = new TColStd_HArray1OfInteger(low, up); for(i=low; i< up; i++) arr->SetValue(i, Arr->Value(i)); arr->SetValue(up, val); } A->ChangeArray(arr); } return 0; } di << "DDataStd_ChangeIntArray: Error" << "\n"; return 0; } //======================================================================= //function : SetIntArrayT (DF, entry , isDelta, From, To) - for testing // : huge arrays //======================================================================= static Standard_Integer DDataStd_SetIntArrayTest (Draw_Interpretor& di, Standard_Integer, const char** arg) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label label; DDF::AddLabel(DF, arg[2], label); Standard_Integer isDelta = atoi(arg[3]); Standard_Integer From = atoi(arg[4]), To = atoi( arg[5] ), j; di << "Array of Standard_Integer with bounds from = " << From << " to = " << To << "\n"; Handle(TDataStd_IntegerArray) A = TDataStd_IntegerArray::Set(label, From, To, isDelta); j = 6; Standard_Integer k = 100; for(Standard_Integer i = From; i<=To; i++) { A->SetValue(i, ++k); j++; } return 0; } //======================================================================= //function : SetRealArray (DF, entry , isDelta, From, To, elmt1, elmt2, ... //======================================================================= static Standard_Integer DDataStd_SetRealArray (Draw_Interpretor& di, Standard_Integer, const char** arg) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label label; DDF::AddLabel(DF, arg[2], label); Standard_Integer isDelta = atoi(arg[3]); Standard_Integer From = atoi(arg[4]), To = atoi( arg[5] ), j; di << " Array of Standard_Real with bounds from = " << From << " to = " << To << "\n"; Handle(TDataStd_RealArray) A = TDataStd_RealArray::Set(label, From, To, isDelta); j = 6; for(Standard_Integer i = From; i<=To; i++) { A->SetValue(i, atof(arg[j]) ); j++; } return 0; } //======================================================================= //function : GetRealArray (DF, entry ) //======================================================================= static Standard_Integer DDataStd_GetRealArray (Draw_Interpretor& di, Standard_Integer, const char** arg) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label label; if( !DDF::FindLabel(DF, arg[2], label) ) { di << "No label for entry" << "\n"; return 1; } Handle(TDataStd_RealArray) A; if ( !label.FindAttribute(TDataStd_RealArray::GetID(), A) ) { di << "There is no TDataStd_RealArray under label" << "\n"; return 1; } for(Standard_Integer i = A->Lower(); i<=A->Upper(); i++){ //cout << A->Value(i) << endl; di << A->Value(i); if(iUpper()) di<<" "; } di<<"\n"; return 0; } // //======================================================================= //function : ChangeRealArray (DF, entry, indx, val ) //======================================================================= static Standard_Integer DDataStd_ChangeRealArray (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if( nb == 5 ) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label label; if( !DDF::FindLabel(DF, arg[2], label) ) { di << "No label for entry" << "\n"; return 1; } Handle(TDataStd_RealArray) A; if ( !label.FindAttribute(TDataStd_RealArray::GetID(), A) ) { di << "There is no TDataStd_RealArray at label" << "\n"; return 1; } Standard_Integer indx = atoi(arg[3]); Standard_Real val = atof(arg[4]); Standard_Integer low = A->Lower(), up = A->Upper(); if(low <= indx && indx <= up) A->SetValue(indx, val); else { Handle(TColStd_HArray1OfReal) Arr = A->Array(); Handle(TColStd_HArray1OfReal) arr; Standard_Integer i; if(indx > up) { up = indx; arr = new TColStd_HArray1OfReal(low, up); for(i=low; i<= Arr->Upper(); i++) arr->SetValue(i, Arr->Value(i)); for(i=Arr->Upper()+1; i<= up; i++) { if(i == up) arr->SetValue(i, val); else arr->SetValue(i, 0); } } else if(indx < up) {//clip array : indx to be negative up = abs(indx); arr = new TColStd_HArray1OfReal(low, up); for(i=low; i< up; i++) arr->SetValue(i, Arr->Value(i)); arr->SetValue(up, val); } A->ChangeArray(arr); } return 0; } di << "DDataStd_ChangeRealArray: Error" << "\n"; return 0; } //======================================================================= //function : SetVariable (DF, entry, isConstant[0/1], units) //======================================================================= static Standard_Integer DDataStd_SetVariable (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if (nb == 5) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label label; DDF::AddLabel(DF, arg[2], label); Handle(TDataStd_Variable) aV = TDataStd_Variable::Set(label); const char* aUnits = arg[4]; aV->Unit(Standard_CString(aUnits)); aV->Constant(Standard_Boolean(atoi(arg[3]))); return 0; } di << "Wrong arguments" << "\n"; return 1; } //======================================================================= //function : GetVariable (DF, entry, [isConstant], [units]) //======================================================================= static Standard_Integer DDataStd_GetVariable (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if (nb == 5) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label label; DDF::AddLabel(DF, arg[2], label); Handle(TDataStd_Variable) aV; if (!label.FindAttribute(TDataStd_Variable::GetID(), aV)) { di << "TDataStd_Variable: no such attribute" << "\n"; } Draw::Set(arg[3],TCollection_AsciiString(Standard_Integer(aV->IsConstant())).ToCString()); Draw::Set(arg[4],aV->Unit().ToCString()); return 0; } di << "Wrong arguments" << "\n"; return 1; } #include #include //======================================================================= //function : SetRelation (DF, entry, expression, var1[, var2, ...]) //======================================================================= static Standard_Integer DDataStd_SetRelation (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if (nb >= 5) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label label; DDF::AddLabel(DF, arg[2], label); Standard_CString expr (arg[3]); Handle(TDataStd_Relation) aR = TDataStd_Relation::Set(label); aR->SetRelation(expr); Handle(TDataStd_Variable) aV; for (Standard_Integer i = 4; i < nb; i++) { if (!DDF::FindLabel(DF, arg[i], label)) { di << "No label for entry" << arg[i] << "\n"; return 1; } if (!label.FindAttribute(TDataStd_Variable::GetID(), aV)) { di << "No TDataStd_Variable Attribute on label" << "\n"; return 1; } aR->GetVariables().Append(aV); } return 0; } di << "Usage: SetRelation (DF, entry, expression, var1[, var2, ...])" << "\n"; return 1; } //======================================================================= //function : DumpRelation (DF, entry) //======================================================================= static Standard_Integer DDataStd_DumpRelation (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if (nb == 3) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label label; if (!DDF::FindLabel(DF, arg[2], label)) { di << "No label for entry " << arg[2] << "\n"; return 1; } Handle(TDataStd_Relation) aR; if (!label.FindAttribute(TDataStd_Relation::GetID(), aR)) { di << "No TDataStd_Relation Attribute on label " << arg[2] << "\n"; return 1; } di << "Relation: expression = \"" << aR->GetRelation() << "\" variables list = ("; Handle(TDF_Attribute) aV; TCollection_AsciiString anEntry; TDF_ListIteratorOfAttributeList it; for (it.Initialize(aR->GetVariables()); it.More(); it.Next()) { aV = it.Value(); if (!aV.IsNull()) { label = aV->Label(); TDF_Tool::Entry(label, anEntry); di << anEntry.ToCString() << " "; } } di << ")"; return 0; } di << "Usage: DumpRelation (DF, entry)" << "\n"; return 1; } #include //======================================================================= //function : SetFunction (DF, entry, guid, failure) //======================================================================= static Standard_Integer DDataStd_SetFunction (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if (nb == 5) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label label; DDF::AddLabel(DF, arg[2], label); Standard_GUID guid (arg[3]); Handle(TFunction_Function) aF = TFunction_Function::Set(label, guid); int fail = atoi(arg[4]); aF->SetFailure(fail); return 0; } di << "Wrong arguments" << "\n"; return 1; } //======================================================================= //function : GetFunction (DF, entry, guid(out), failure(out)) //======================================================================= static Standard_Integer DDataStd_GetFunction (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if (nb == 5) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label label; if (!DDF::FindLabel(DF, arg[2], label)) { di << "No label for entry" << "\n"; return 1; } Handle(TFunction_Function) aF; if (!label.FindAttribute(TFunction_Function::GetID(), aF)) { di << "No TFunction_Function Attribute on label" << "\n"; } else { char *aStrGUID = new char[37]; aF->GetDriverGUID().ToCString(aStrGUID); Draw::Set(arg[3],aStrGUID); Draw::Set(arg[4],TCollection_AsciiString(aF->GetFailure()).ToCString()); } return 0; } di << "Wrong arguments" << "\n"; return 1; } //======================================================================= //function : SetExtStringArray (DF, entry , isDelta, From, To, elmt1, elmt2, ... //======================================================================= static Standard_Integer DDataStd_SetExtStringArray (Draw_Interpretor& di, Standard_Integer, const char** arg) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label label; DDF::AddLabel(DF, arg[2], label); Standard_Integer isDelta = atoi(arg[3]); Standard_Integer From = atoi(arg[4]), To = atoi( arg[5] ), j; di << "Array of ExtString with bounds from = " << From << " to = " << To << "\n"; Handle(TDataStd_ExtStringArray) A = TDataStd_ExtStringArray::Set(label, From, To, isDelta); j = 6; for(Standard_Integer i = From; i<=To; i++) { A->SetValue(i, arg[j] ); j++; } return 0; } //======================================================================= //function : GetExtStringArray (DF, entry ) //======================================================================= static Standard_Integer DDataStd_GetExtStringArray (Draw_Interpretor& di, Standard_Integer, const char** arg) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label label; if( !DDF::FindLabel(DF, arg[2], label) ) { di << "No label for entry" << "\n"; return 1; } Handle(TDataStd_ExtStringArray) A; if ( !label.FindAttribute(TDataStd_ExtStringArray::GetID(), A) ) { di << "There is no TDataStd_ExtStringArray under label" << "\n"; return 1; } TCollection_ExtendedString anExtendedString; TCollection_AsciiString anAsciiString; for(Standard_Integer i = A->Lower(); i<=A->Upper(); i++){ anExtendedString = A->Value(i); anAsciiString = TCollection_AsciiString (A->Value(i),'?'); //cout << anAsciiString.ToCString() << endl; di << anAsciiString.ToCString(); if(iUpper()) di<<" "; } di<<"\n"; return 0; } //======================================================================= //function : ChangeExtStrArray (DF, entry, indx, val ) //======================================================================= static Standard_Integer DDataStd_ChangeExtStrArray (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if( nb == 5 ) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label label; if( !DDF::FindLabel(DF, arg[2], label) ) { di << "No label for entry" << "\n"; return 1; } Handle(TDataStd_ExtStringArray) A; if ( !label.FindAttribute(TDataStd_ExtStringArray::GetID(), A) ) { di << "There is no TDataStd_ExtStringArray at label" << "\n"; return 1; } Standard_Integer indx = atoi(arg[3]); TCollection_ExtendedString val(arg[4]); Standard_Integer low = A->Lower(), up = A->Upper(); if(low <= indx && indx <= up) A->SetValue(indx, val);//TColStd_HArray1OfExtendedString else { Handle(TColStd_HArray1OfExtendedString) Arr = A->Array(); Handle(TColStd_HArray1OfExtendedString) arr; Standard_Integer i; if(indx > up) { up = indx; arr = new TColStd_HArray1OfExtendedString(low, up); for(i=low; i<= Arr->Upper(); i++) arr->SetValue(i, Arr->Value(i)); for(i=Arr->Upper()+1; i<= up; i++) { if(i == up) arr->SetValue(i, val); else arr->SetValue(i, 0); } } else if(indx < up) {//clip array : indx to be negative up = abs(indx); arr = new TColStd_HArray1OfExtendedString(low, up); for(i=low; i< up; i++) arr->SetValue(i, Arr->Value(i)); arr->SetValue(up, val); } A->ChangeArray(arr); } return 0; } di << "DDataStd_ChangeExtStringArray: Error" << "\n"; return 0; } //======================================================================= //function : DDataStd_KeepUTF //purpose : SetUTFName (DF, fatherEntry, fileName) //======================================================================= static Standard_Integer DDataStd_KeepUTF (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if (nb == 4) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label L; DDF::AddLabel(DF, arg[2], L); Standard_CString aFileName(arg[3]); #ifdef WNT ifstream anIS (aFileName, ios::in | ios::binary); #else ifstream anIS (aFileName); #endif if (!anIS) { // Can not open file cout << "Error: can't open file " << aFileName < concatenated // : in one, converted to UTF8 and kept in the file //======================================================================= static Standard_Integer DDataStd_GetUTFtoFile (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if (nb == 4) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label L; if (!DDF::FindLabel(DF,arg[2],L)) return 1; TCollection_ExtendedString aES; Standard_Boolean aF = Standard_False; TDF_ChildIterator anIt(L); for(;anIt.More();anIt.Next()) { const TDF_Label& aLab = anIt.Value(); if(!aLab.IsNull()) { Handle(TDataStd_Name) anAtt; if(aLab.FindAttribute(TDataStd_Name::GetID(), anAtt)) { if(anAtt->Get().Length()) { if (aF) aES +='\n'; aES +=anAtt->Get(); aF = Standard_True; } } } } if(!aES.Length()) { cout << "Data is not found in the Document" < 6) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label label; DDF::AddLabel(DF, arg[2], label); Standard_Integer isDelta = atoi(arg[3]); Standard_Integer From = atoi(arg[4]), To = atoi( arg[5] ), j; di << "Array of Standard_Integer with bounds from = " << From << " to = " << To << "\n"; Handle(TDataStd_ByteArray) A = TDataStd_ByteArray::Set(label, From, To, isDelta); j = 6; for(Standard_Integer i = From; i<=To; i++) { Standard_Integer ival = atoi(arg[j]); if(ival > 255) { cout << "Bad value = " << ival<< endl; return 1; } A->SetValue(i, (Standard_Byte)(unsigned)ival); j++; } return 0; } di << "DDataStd_SetByteArray: Error" << "\n"; return 1; } //======================================================================= //function : GetByteArray (DF, entry ) //======================================================================= static Standard_Integer DDataStd_GetByteArray (Draw_Interpretor& di, Standard_Integer, const char** arg) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label label; if( !DDF::FindLabel(DF, arg[2], label) ) { di << "No label for entry" << "\n"; return 1; } Handle(TDataStd_ByteArray) A; if ( !label.FindAttribute(TDataStd_ByteArray::GetID(), A) ) { di << "There is no TDataStd_ByteArray at label" << "\n"; return 1; } for(Standard_Integer i = A->Lower(); i<=A->Upper(); i++){ //cout << A->Value(i) << endl; di << A->Value(i); if(iUpper()) di<<" "; } di<<"\n"; return 0; } //======================================================================= //function : ChangeByteArray (DF, entry, indx, val ) //======================================================================= static Standard_Integer DDataStd_ChangeByteArray (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if( nb == 5 ) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label label; if( !DDF::FindLabel(DF, arg[2], label) ) { di << "No label for entry" << "\n"; return 1; } Handle(TDataStd_ByteArray) A; if ( !label.FindAttribute(TDataStd_ByteArray::GetID(), A) ) { di << "There is no TDataStd_ByteArray at label" << "\n"; return 1; } Standard_Integer indx = atoi(arg[3]); Standard_Integer ival = atoi(arg[4]); if (ival > 255 || ival < 0) { di << "DDataStd_ChangeByteArray: Bad value = " <Lower(), up = A->Upper(); if(low <= indx && indx <= up) A->SetValue(indx, (Standard_Byte)(unsigned)ival); else { Handle(TColStd_HArray1OfByte) Arr = A->InternalArray(); Handle(TColStd_HArray1OfByte) arr; Standard_Integer i; if(indx > up) { up = indx; arr = new TColStd_HArray1OfByte(low, up); for(i=low; i<= Arr->Upper(); i++) arr->SetValue(i, Arr->Value(i)); for(i=Arr->Upper()+1; i<= up; i++) { if(i == up) arr->SetValue(i, (Standard_Byte)(unsigned)ival); else arr->SetValue(i, 0); } } else if(indx < up) {//clip array : indx to be negative up = abs(indx); arr = new TColStd_HArray1OfByte(low, up); for(i=low; i< up; i++) arr->SetValue(i, Arr->Value(i)); arr->SetValue(up, (Standard_Byte)(unsigned)ival); } A->ChangeArray(arr); } return 0; } di << "DDataStd_ChangeByteArray: Error" << "\n"; return 1; } //======================================================================= //function : SetIntPackedMap (DF, entry, isDelta, key1, key2, ... //======================================================================= static Standard_Integer DDataStd_SetIntPackedMap (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if (nb > 4) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label aLabel; DDF::AddLabel(DF, arg[2], aLabel); Standard_Integer isDelta = atoi(arg[3]); Standard_Integer aNum = nb - 4; Handle(TDataStd_IntPackedMap) anAtt; if(!aLabel.FindAttribute(TDataStd_IntPackedMap::GetID(), anAtt)) anAtt = TDataStd_IntPackedMap::Set(aLabel, isDelta); if(anAtt.IsNull()) { di << "IntPackedMap attribute is not found or not set" << "\n"; return 1;} Standard_Integer j = 4; TColStd_PackedMapOfInteger aMap; for(Standard_Integer i = 1; i<=aNum; i++) { aMap.Add (atoi(arg[j])); j++; } const Handle(TColStd_HPackedMapOfInteger) aHMap = new TColStd_HPackedMapOfInteger(aMap); anAtt->ChangeMap(aHMap); cout << "Map extent = " << anAtt->Extent()<GetMap(); TColStd_MapIteratorOfPackedMapOfInteger itr(aMap); for (Standard_Integer j = 1; itr.More(); itr.Next(),j++){ Standard_Integer aKey(itr.Key()); cout << "Key ("<< j <<")"<<" = " << aKey << endl;; } return 0; } di << "DDataStd_GetIntPackedMap : Error" << "\n"; return 1; } //======================================================================= //function : ChangeIntPackedMap_Add (DF, entry, Key1, Key2,... ) //======================================================================= static Standard_Integer DDataStd_ChangeIntPackedMap_Add (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if( nb >= 4 ) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label label; if( !DDF::FindLabel(DF, arg[2], label) ) { di << "No label for entry" << "\n"; return 1; } Handle(TDataStd_IntPackedMap) A; if ( !label.FindAttribute(TDataStd_IntPackedMap::GetID(), A) ) { di << "There is no TDataStd_IntPackedMap at label" << "\n"; return 1; } Standard_Integer i, aNum = nb - 3; Handle(TColStd_HPackedMapOfInteger) aHMap = A->GetHMap(); Handle(TColStd_HPackedMapOfInteger) ahMap = new TColStd_HPackedMapOfInteger(); if(!aHMap.IsNull()) { ahMap->ChangeMap().Assign(aHMap->Map()); for(i=1; i<=aNum;i++) { Standard_Integer val = atoi(arg[i+2]); if(!ahMap->Map().Contains(val)) ahMap->ChangeMap().Add(val); } A->ChangeMap(ahMap); } return 0; } di << "DDataStd_ChangeIntPackedMap_Add: Error" << "\n"; return 0; } //======================================================================= //function : ChangeIntPackedMap_Rem (DF, entry, Key1, Key2,... ) //======================================================================= static Standard_Integer DDataStd_ChangeIntPackedMap_Rem (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if( nb >= 4 ) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label label; if( !DDF::FindLabel(DF, arg[2], label) ) { di << "No label for entry" << "\n"; return 1; } Handle(TDataStd_IntPackedMap) A; if ( !label.FindAttribute(TDataStd_IntPackedMap::GetID(), A) ) { di << "There is no TDataStd_IntPackedMap at label" << "\n"; return 1; } Standard_Integer i, aNum = nb - 3; Handle(TColStd_HPackedMapOfInteger) aHMap = A->GetHMap(); Handle(TColStd_HPackedMapOfInteger) ahMap = new TColStd_HPackedMapOfInteger(); if(!aHMap.IsNull()) { ahMap->ChangeMap().Assign(aHMap->Map()); for(i=1; i<=aNum;i++) { Standard_Integer val = atoi(arg[i+2]); if(ahMap->Map().Contains(val)) ahMap->ChangeMap().Remove(val); } A->ChangeMap(ahMap); } return 0; } di << "DDataStd_ChangeIntPackedMap_Rem: Error" << "\n"; return 0; } //======================================================================= //function : ChangeIntPackedMap_AddRem (DF, entry, Key1, Key2,... ) // : if Keyi exist in map - remove it, if no - add //======================================================================= static Standard_Integer DDataStd_ChangeIntPackedMap_AddRem (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if( nb >= 4 ) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label label; if( !DDF::FindLabel(DF, arg[2], label) ) { di << "No label for entry" << "\n"; return 1; } Handle(TDataStd_IntPackedMap) A; if ( !label.FindAttribute(TDataStd_IntPackedMap::GetID(), A) ) { di << "There is no TDataStd_IntPackedMap at label" << "\n"; return 1; } Standard_Integer i, aNum = nb - 3; Handle(TColStd_HPackedMapOfInteger) aHMap = A->GetHMap(); Handle(TColStd_HPackedMapOfInteger) ahMap = new TColStd_HPackedMapOfInteger(); if(!aHMap.IsNull()) { ahMap->ChangeMap().Assign(aHMap->Map()); for(i=1; i<=aNum;i++) { Standard_Integer val = atoi(arg[i+2]); if(!ahMap->Map().Contains(val)) ahMap->ChangeMap().Add(val); else ahMap->ChangeMap().Remove(val); } A->ChangeMap(ahMap); } return 0; } di << "DDataStd_ChangeIntPackedMap_AddRem: Error" << "\n"; return 0; } //======================================================================= //function : SetIntPHugeMap (DF, entry, isDelta Num) //======================================================================= static Standard_Integer DDataStd_SetIntPHugeMap (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if (nb > 4) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label aLabel; DDF::AddLabel(DF, arg[2], aLabel); Standard_Integer isDelta = atoi(arg[3]); Standard_Integer aNum = atoi(arg[4]); Handle(TDataStd_IntPackedMap) anAtt; if(!aLabel.FindAttribute(TDataStd_IntPackedMap::GetID(), anAtt)) anAtt = TDataStd_IntPackedMap::Set(aLabel, isDelta); if(anAtt.IsNull()) { di << "IntPackedMap attribute is not found or not set" << "\n"; return 1;} TColStd_PackedMapOfInteger aMap; for(Standard_Integer i = 1; i<=aNum; i++) { aMap.Add (i); } const Handle(TColStd_HPackedMapOfInteger) aHMap = new TColStd_HPackedMapOfInteger(aMap); anAtt->ChangeMap(aHMap); cout << "Map extent = " << anAtt->Extent()<SetInteger(key, aVal); j +=1; } return 0; } di << "DDataStd_SetNDataIntegers2 : Error" << "\n"; return 1; } //================ //======================================================================= //function : SetNDataIntArrays2 (DF, entry , key, NumOfArElem ) //======================================================================= static Standard_Integer DDataStd_SetNDataIntAr2 (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if (nb == 5) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label aLabel; DDF::AddLabel(DF, arg[2], aLabel); Standard_Integer j; TCollection_ExtendedString aKey(arg[3]); Standard_Integer aNum = atoi(arg[4]); if (aNum <= 0) return 1; Handle(TDataStd_NamedData) anAtt; if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt)) anAtt = TDataStd_NamedData::Set(aLabel); if(anAtt.IsNull()) { cout<< "NamedData attribute is not found or not set" << endl; return 1;} j = 15; Handle(TColStd_HArray1OfInteger) anArr = new TColStd_HArray1OfInteger(1, aNum); for(Standard_Integer i = 1; i<=aNum; i++) { Standard_Integer aVal = j++; anArr->SetValue(i, aVal); j++; } anAtt->SetArrayOfIntegers(aKey, anArr); return 0; } di << "DDataStd_SetNDataIntArrays2 : Error" << "\n"; return 1; } //======================================================================= //function : SetAsciiString(DF, entry , String) //======================================================================= static Standard_Integer DDataStd_SetAsciiString (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if (nb ==4) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label aLabel; DDF::AddLabel(DF, arg[2], aLabel); TCollection_AsciiString aString(arg[3]); Handle(TDataStd_AsciiString) anAtt; if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt)) anAtt = TDataStd_AsciiString::Set(aLabel, aString); if(anAtt.IsNull()) { di << "AsciiString attribute is not found or not set" << "\n"; return 1;} // anAtt->Set(aString); cout << "String = " << anAtt->Get().ToCString() << " is kept in DF" << endl; return 0; } di << "DDataStd_SetAsciiString : Error" << "\n"; return 1; } // //======================================================================= //function : GetAsciiString(DF, entry ) //======================================================================= static Standard_Integer DDataStd_GetAsciiString (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if (nb ==3) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label aLabel; DDF::AddLabel(DF, arg[2], aLabel); Handle(TDataStd_AsciiString) anAtt; if(!aLabel.FindAttribute(TDataStd_AsciiString::GetID(), anAtt)) { cout << "AsciiString attribute is not found or not set" << endl; return 1; } cout << "String = " <Get().ToCString() << endl; return 0; } di << "DDataStd_GetAsciiString : Error" << "\n"; return 1; } //======================================================================= //function : SetNDataIntegers (DF, entry , Num, key1, val1, ... //======================================================================= static Standard_Integer DDataStd_SetNDataIntegers (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if (nb >=6) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label aLabel; DDF::AddLabel(DF, arg[2], aLabel); // // TCollection_ExtendedString aString("123456789 0_abcde"); // Standard_Integer aPos = aString.Search(" "); // cout << "From Start = " <SetInteger(aKey, aVal); j +=2; } return 0; } di << "DDataStd_SetNDataIntegers : Error" << "\n"; return 1; } //======================================================================= //function : GetNDIntegers(DF, entry ) //======================================================================= static Standard_Integer DDataStd_GetNDIntegers (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if (nb == 3) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label aLabel; if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1; Handle(TDataStd_NamedData) anAtt; if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt)) { cout << "NamedData attribute is not found or not set" << endl; return 1;} cout <=4) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label aLabel; if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1; Handle(TDataStd_NamedData) anAtt; if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt)) { cout << "NamedData attribute is not found or not set" << endl; return 1;} cout <=6) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label aLabel; DDF::AddLabel(DF, arg[2], aLabel); Standard_Integer aNumP = atoi(arg[3]), j; Handle(TDataStd_NamedData) anAtt; if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt)) anAtt = TDataStd_NamedData::Set(aLabel); if(anAtt.IsNull()) { cout << "NamedData attribute is not found or not set" << endl;; return 1;} j = 4; for(Standard_Integer i = 1; i<=aNumP; i++) { TCollection_ExtendedString aKey(arg[j]); Standard_Real aVal = atof(arg[j+1]); anAtt->SetReal(aKey, aVal); j +=2; } return 0; } di << "DDataStd_SetNDataReals : Error" << "\n"; return 1; } //======================================================================= //function : GetNDReals(DF, entry ) //======================================================================= static Standard_Integer DDataStd_GetNDReals (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if (nb == 3) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label aLabel; if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1; cout <GetRealsContainer(); TDataStd_DataMapIteratorOfDataMapOfStringReal itr(aMap); for (; itr.More(); itr.Next()){ TCollection_ExtendedString aKey(itr.Key()); TCollection_AsciiString aStr(aKey,'?'); Standard_Real aValue = itr.Value(); cout << "Key = " << aStr.ToCString() << " Value = " <=4) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label aLabel; if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1; Handle(TDataStd_NamedData) anAtt; if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt)) { cout << "NamedData attribute is not found or not set" << endl; return 1;} cout <=6) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label aLabel; DDF::AddLabel(DF, arg[2], aLabel); Standard_Integer aNumP = atoi(arg[3]), j; Handle(TDataStd_NamedData) anAtt; if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt)) anAtt = TDataStd_NamedData::Set(aLabel); if(anAtt.IsNull()) { di << "NamedData attribute is not found or not set" << "\n"; return 1;} j = 4; for(Standard_Integer i = 1; i<=aNumP; i++) { TCollection_ExtendedString aKey(arg[j]); TCollection_ExtendedString aVal(arg[j+1]); anAtt->SetString(aKey, aVal); j +=2; } return 0; } di << "DDataStd_SetNDataStrings : Error" << "\n"; return 1; } //======================================================================= //function : GetNDStrings(DF, entry ) //======================================================================= static Standard_Integer DDataStd_GetNDStrings (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if (nb == 3) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label aLabel; if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1; Handle(TDataStd_NamedData) anAtt; if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt)) { cout << "NamedData attribute is not found or not set" << endl; return 1;} cout <=4) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label aLabel; if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1; Handle(TDataStd_NamedData) anAtt; if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt)) { di << "NamedData attribute is not found or not set" << "\n"; return 1;} cout <=6) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label aLabel; DDF::AddLabel(DF, arg[2], aLabel); Standard_Integer aNumP = atoi(arg[3]), j; Handle(TDataStd_NamedData) anAtt; if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt)) anAtt = TDataStd_NamedData::Set(aLabel); if(anAtt.IsNull()) { cout << "NamedData attribute is not found or not set" << endl; return 1;} j = 4; for(Standard_Integer i = 1; i<=aNumP; i++) { TCollection_ExtendedString aKey(arg[j]); Standard_Byte aVal = (Standard_Byte)atoi(arg[j+1]); anAtt->SetByte(aKey, aVal); j +=2; } return 0; } di << "DDataStd_SetNDataBytes : Error" << "\n"; return 1; } //======================================================================= //function : GetNDBytes(DF, entry ) //======================================================================= static Standard_Integer DDataStd_GetNDBytes (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if (nb == 3) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label aLabel; if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1; Handle(TDataStd_NamedData) anAtt; if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt)) { cout << "NamedData attribute is not found or not set" << endl; return 1;} cout <=4) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label aLabel; if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1; Handle(TDataStd_NamedData) anAtt; if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt)) { cout << "NamedData attribute is not found or not set" << endl; return 1;} cout <=6) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label aLabel; DDF::AddLabel(DF, arg[2], aLabel); Standard_Integer j; TCollection_ExtendedString aKey(arg[3]); Standard_Integer aNum = atoi(arg[4]); if (aNum <= 0) return 1; Handle(TDataStd_NamedData) anAtt; if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt)) anAtt = TDataStd_NamedData::Set(aLabel); if(anAtt.IsNull()) { cout<< "NamedData attribute is not found or not set" << endl; return 1;} j = 5; Handle(TColStd_HArray1OfInteger) anArr = new TColStd_HArray1OfInteger(1, aNum); for(Standard_Integer i = 1; i<=aNum; i++) { Standard_Integer aVal = atoi(arg[j]); anArr->SetValue(i, aVal); j++; } anAtt->SetArrayOfIntegers(aKey, anArr); return 0; } di << "DDataStd_SetNDataIntArrays : Error" << "\n"; return 1; } //======================================================================= //function : GetNDIntArrays(DF, entry ) //======================================================================= static Standard_Integer DDataStd_GetNDIntArrays (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if (nb == 3) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label aLabel; if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1; Handle(TDataStd_NamedData) anAtt; if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt)) { cout << "NamedData attribute is not found or not set" << endl; return 1;} cout <=4) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label aLabel; if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1; Handle(TDataStd_NamedData) anAtt; if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt)) { cout << "NamedData attribute is not found or not set" << endl; return 1;} cout <=6) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label aLabel; DDF::AddLabel(DF, arg[2], aLabel); Standard_Integer j; TCollection_ExtendedString aKey(arg[3]); Standard_Integer aNum = atoi(arg[4]); if (aNum <= 0) return 1; Handle(TDataStd_NamedData) anAtt; if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt)) anAtt = TDataStd_NamedData::Set(aLabel); if(anAtt.IsNull()) { cout << "NamedData attribute is not found or not set" << endl; return 1;} j = 5; Handle(TColStd_HArray1OfReal) anArr = new TColStd_HArray1OfReal(1, aNum); for(Standard_Integer i = 1; i<=aNum; i++) { Standard_Real aVal = atof(arg[j]); anArr->SetValue(i, aVal); j++; } anAtt->SetArrayOfReals(aKey, anArr); return 0; } di << "DDataStd_SetNDataRealArrays : Error" << "\n"; return 1; } //======================================================================= //function : GetNDRealArrays(DF, entry ) //======================================================================= static Standard_Integer DDataStd_GetNDRealArrays (Draw_Interpretor& di, Standard_Integer nb, const char** arg) { if (nb == 3) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label aLabel; if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1; Handle(TDataStd_NamedData) anAtt; if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt)) { cout << "NamedData attribute is not found or not set" << endl; return 1;} cout <=4) { Handle(TDF_Data) DF; if (!DDF::GetDF(arg[1],DF)) return 1; TDF_Label aLabel; if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1; Handle(TDataStd_NamedData) anAtt; if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt)) { di << "NamedData attribute is not found or not set" << "\n"; return 1;} cout <