[Paraview] Assigning string labels to datasets?

OSHIMA Takuya oshima at eng.niigata-u.ac.jp
Fri Mar 7 05:29:51 EST 2008


Hi,

As I play with the new composite dataset structures, I came to think
it would indeed be nice if ParaView3 can handle datasets with string
labels ("Porous Material," "Air," ... , rather than "DataSet 0,"
"DataSet 1," ...). I mean, for example, VTK/IO/vtkEnsight6Reader.cxx
has a fragment of code to assign its output a string label.

  vtkCharArray* nmArray = vtkCharArray::New();
  nmArray->SetName("Name");
  size_t len = strlen(name);
  nmArray->SetNumberOfTuples(static_cast<vtkIdType>(len)+1);
  char* copy = nmArray->GetPointer(0);
  memcpy(copy, name, len);
  copy[len] = '\0';
  output->GetFieldData()->AddArray(nmArray);
  nmArray->Delete();

I can do the same thing to each member dataset in a MultiBlockDataSet,
but it doesn't seem there's a way to display the labels in
ParaView. However if I rewrite the code a bit for Information tab of
Object Inspector (of the CVS head)

--- Qt/Components/pqProxyInformationWidget.cxx.orig	2008-02-20 08:56:03.000000000 +0900
+++ Qt/Components/pqProxyInformationWidget.cxx	2008-03-07 18:40:06.000000000 +0900
@@ -387,7 +387,8 @@
 {
   QTreeWidgetItem* node = 0;
 
-  QString label = info? info->GetPrettyDataTypeString() : "NA";
+  QString label = info?
+    (parentItem? info->GetName() : info->GetPrettyDataTypeString()): "NA";
   if (parentItem)
     {
     node = new QTreeWidgetItem(parentItem, QStringList(label));

or the one for Properties tab of the Extract Block filter,

--- Qt/Components/pqSignalAdaptorCompositeTreeWidget.cxx.orig	2008-03-01 10:59:23.000000000 +0900
+++ Qt/Components/pqSignalAdaptorCompositeTreeWidget.cxx	2008-03-07 18:12:23.000000000 +0900
@@ -395,7 +395,15 @@
   for (unsigned int cc=0; cc < cinfo->GetNumberOfChildren(); cc++)
     {
     vtkPVDataInformation* childInfo = cinfo->GetDataInformation(cc);
-    QString childLabel = QString("DataSet %1").arg(cc);
+    QString childLabel;
+    if(childInfo)
+      {
+      childLabel = QString("DataSet %1  %2").arg(cc).arg(childInfo->GetName());
+      }
+    else
+      {
+      childLabel = QString("DataSet %1").arg(cc);
+      }
     bool is_leaf = true;
     if (childInfo && childInfo->GetCompositeDataInformation()->GetDataIsComposite())
       {

I can see the string labels in addition to dataset numbers. Searching
the list archives of ParaView and VTK I found several similar
discussions held in the past. The modifications above are just
concepts, not ment to be applied to the real source, but would things
like this be an option?

Takuya


More information about the ParaView mailing list