paraview打开文件操作 pqLoadDataReaction::loadData()

目录

打开文件操作

QList pqLoadDataReaction::loadData()*>

readerFactory->GetSupportedFileTypes(server->session())

Internals->Prototypes

 bool CanCreatePrototype(vtkSMSession* session)

 void FillInformation(vtkSMSession* session)

pqPipelineSource* pqLoadDataReaction::LoadFile

loadFile第十行:addDataFilesToRecentResources函数


pqPipelineSource : public pqProxy

打开文件操作

打开文件操作actionFileOpen()流程图

图:打开文件操作流程图

打开文件操作流程图中比较核心的工作是pqLoadDataReaction::loadData(),下面是pqLoadDataReaction::loadData()流程图

图:pqLoadDataReaction_loadData流程图

QList<pqPipelineSource*> pqLoadDataReaction::loadData()

QList<pqPipelineSource*> pqLoadDataReaction::loadData()
{
  pqServer* server = pqActiveObjects::instance().activeServer();
  vtkSMReaderFactory* readerFactory = vtkSMProxyManager::GetProxyManager()->GetReaderFactory();
  QString filters = readerFactory->GetSupportedFileTypes(server->session());
  // insert "All Files(*)" as the second item after supported files.
  int insertIndex = filters.indexOf(";;");
  if (insertIndex >= 0)
  {
    filters.insert(insertIndex, ";;All Files (*)");
  }
  else
  {
    assert(filters.isEmpty());
    filters = "All Files (*)";
  }

  pqFileDialog fileDialog(
    server, pqCoreUtilities::mainWidget(), tr("Open File:"), QString(), filters);
  fileDialog.setObjectName("FileOpenDialog");
  fileDialog.setFileMode(pqFileDialog::ExistingFilesAndDirectories);
  QList<pqPipelineSource*> sources;
  if (fileDialog.exec() == QDialog::Accepted)
  {
    QList<QStringList> files = fileDialog.getAllSelectedFiles();
    pqPipelineSource* source = pqLoadDataReaction::loadData(files);
    if (source)
    {
      sources << source;
    }
  }
  return sources;
}

readerFactory->GetSupportedFileTypes(server->session())

const char* vtkSMReaderFactory::GetSupportedFileTypes(vtkSMSession* session)
const char* vtkSMReaderFactory::GetSupportedFileTypes(vtkSMSession* session)
{
  std::ostringstream all_types;
  all_types << "Supported Files (";

  auto case_insensitive_comp = [](const std::string& s1, const std::string& s2) {
    return vtksys::SystemTools::Strucmp(s1.c_str(), s2.c_str()) < 0;
  };
  std::set<std::string, decltype(case_insensitive_comp)> sorted_types(case_insensitive_comp);

  for (auto& proto : this->Internals->Prototypes)
  {
    if (proto.second.CanCreatePrototype(session))
    {
      proto.second.FillInformation(session);
      for (auto& hint : proto.second.FileEntryHints)
      {
        std::string ext_list;
        if (!hint.Extensions.empty())
        {
          ext_list = ::vtkJoin(hint.Extensions, "*.", " ");
        }

        if (!hint.FilenameRegExs.empty())
        {
          std::string ext_join = ::vtkJoin(hint.FilenamePatterns, "", " ");
          if (!ext_list.empty())
          {
            ext_list += " ";
            ext_list += ext_join;
          }
          else
          {
            ext_list = ext_join;
          }
        }
        if (!ext_list.empty())
        {
          std::ostringstream stream;
          stream << hint.Description << " (" << ext_list << ")";
          sorted_types.insert(stream.str());
          all_types << ext_list << " ";
        }
      }
    }
  }
  all_types << ")";

  for (const auto& types : sorted_types)
  {
    all_types << ";;" << types;
  }
  this->Internals->SupportedFileTypes = all_types.str();
  return this->Internals->SupportedFileTypes.c_str();
}

Internals->Prototypes

设置prototypes,vtkSMProxyManager();

 bool CanCreatePrototype(vtkSMSession* session)

Returns true is a prototype proxy can be created on the given connection.

 void FillInformation(vtkSMSession* session)

图 pqServerConfiguration

pqPipelineSource* pqLoadDataReaction::LoadFile

pqPipelineSource* pqLoadDataReaction::LoadFile(
  const QStringList& files, pqServer* server, const QPair<QString, QString>& readerInfo)
{
  pqObjectBuilder* builder = pqApplicationCore::instance()->getObjectBuilder();
  pqPipelineSource* reader =
    builder->createReader(readerInfo.second, readerInfo.first, files, server);

  if (reader)
  {
    pqStandardRecentlyUsedResourceLoaderImplementation::addDataFilesToRecentResources(
      server, files, reader->getProxy()->GetXMLGroup(), reader->getProxy()->GetXMLName());
  }
  return reader;
}

 

pqServerResource::pqServerResource()

显示资源

loadFile第十行:addDataFilesToRecentResources函数
 

bool pqStandardRecentlyUsedResourceLoaderImplementation::addDataFilesToRecentResources(
  pqServer* server, const QStringList& files, const QString& smgroup, const QString& smname)
pqStandardRecentlyUsedResourceLoaderImplementation::addDataFilesToRecentResources(
      server, files, reader->getProxy()->GetXMLGroup(), reader->getProxy()->GetXMLName());

 pqApplicationCore::settings(),加载qt设置

参数files表示文件名(包含路径的全名),下面是参数files的数据流程:

QStringList:字符串列表

图:addDataFilesToRecentResources参数files_数据流程图 

void pqServerResource::addData(const QString& key, const QString& value)
{
  this->Implementation->ExtraData[key] = value;
}

进一步分析ExtraData数据流程:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
ParaView是一种开源的可视化软件,用于分析和可视化大规模科学数据集。它支持多种数据格式,包括文本文件(如.txt文件)。 要在ParaView打开.txt文件,可以按照以下步骤进行操作: 1. 打开ParaView软件。通常,在启动ParaView后会出现一个初始界面。 2. 在初始界面的左上角,可以看到一个“Open”(打开)的按钮。点击该按钮。 3. 弹出的对话框中,选择要打开的.txt文件所在的文件夹。您可以通过浏览文件夹选择正确的.txt文件。 4. 选择要打开的.txt文件后,点击对话框中的“OK”按钮。 5. ParaView会自动解析.txt文件,并根据文件中的内容生成对应的数据集。 6. 一旦数据集加载完毕,您可以在ParaView的主窗口中看到该数据集的视图。 7. 您可以使用ParaView提供的各种可视化选项(如颜色映射、切片、等值面等)对数据集进行分析和可视化。 需要注意的是,ParaView对于.txt文件的解析依赖于文件的内容和格式。如果.txt文件不符合ParaView支持的数据格式,或者文件中的数据无法正确解析,可能会导致加载失败或显示异常。在这种情况下,您可以尝试使用其他文件格式(如.vtk、.csv等)或修改.txt文件的格式,以使其符合ParaView的要求。 总之,ParaView是一个功能强大且灵活的可视化软件,可以帮助科学家和工程师分析和可视化各种科学数据集,包括.txt文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

haimianjie2012

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值