+//=======================================================================
+//function : GetRefArrayValue (DF, entry, index)
+//=======================================================================
+static Standard_Integer DDataStd_GetRefArrayValue (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_ReferenceArray) A;
+ if ( !label.FindAttribute(TDataStd_ReferenceArray::GetID(), A) ) {
+ di << "There is no TDataStd_ReferenceArray under label" << "\n";
+ return 1;
+ }
+
+ Standard_Integer index = Draw::Atoi(arg[3]);
+ if (index < A->Lower() || index > A->Upper()) {
+ di << "Index is out of range" << "\n";
+ return 1;
+ } else {
+ const TDF_Label& value = A->Value(index);
+ TCollection_AsciiString entry;
+ TDF_Tool::Entry(value, entry);
+ di << entry.ToCString() << "\n";
+ }
+
+ return 0;
+}
+