ParaView-2

对于paraview的编译就不再多说,直接cmake 有个别注意的地方,网上这方面的资料很多这里不做熬述。打开源码,发现有很多文件和文件夹,代码量很大。

从例子中得pqPipelineApp看起,main函数中得的

pqApplicationCore

这是paraview的关键类,

/// This class is the crux of the ParaView application. It creates

/// and manages various managers which are necessary for the ParaView-based

/// client to work with the ServerManager.

/// For clients based of the pqCore library,

/// simply instantiate this pqApplicationCore after QApplication initialization

/// and then create your main window etc. like a standard Qt application. You can then

/// use the facilities provided by pqCore such as the pqObjectBuilder,

/// pqUndoStack etc. in your application. After that point.

在QApplication初始化后初始化,然后就可以创建mainwindow

 

然后到MainPipeineWindow,构造函数中,首先要做的是初始化Paraview,这个很重要,首先声明并初始化pqApplictionCore,

然后就是pqObjectBuilder

/// pqObjectBuilder is loosely based on the \c Builder design pattern.

/// It is used to create as well as destroy complex objects such as

/// views, displays, sources etc. Since most of the public API is

/// virtual, it is possible for custom applications to subclass

/// pqObjectBuilder to provide their own implementation for creation/

/// destroying these objects. The application layer accesses the

/// ObjectBuilder through the pqApplicationCore singleton.

/// NOTE: pqObjectBuilder replaces the previously supported

/// pqPipelineBuilder. Unlink, pqPipelineBuilder, this class

/// no longer deals with undo/redo stack. The application layer

/// components that use the ObjectBuilder are supposed to bother

/// about the undo stack i.e. call begin/end on the undo stack

/// before/after calling creation/destruction method on the ObjectBuilder.

它是基于C的设计模式,它的作用是创建或者销毁views displays sources 等。因为大部分的公共API是虚函数。对于自定义应用程序可以生成子类,从而实现自定义的执行。应用程序通过pqApplication访问pqObejectBuilder。

pqInterfaceTracker

/// pqInterfaceTracker is used by ParaView components to locate

 

/// interface-implementations. These implementations can be either those loaded

/// from plugins or registered explicitly using addInterface/removeInterface API.

/// In previous versions of ParaView, this role was performed by the

/// pqPluginManager class itself.

pqInterfaceTracker以组件调用,接口的实现可用插件或者显示的添加接口/移除接口 API 以前版本都是有pqPluginManager类实现

一下的代码就很简单了

// Set Filter selector

设置Filter/Annotation list

// Set Pipeline Widget

设置管道窗口

// Create server only after a pipeline browser get created...

只能在管线浏览器被创建以后,然后创建服务器

// Init and layout the UI

初始化或创建UI

  // Create a complex pipeline with different annotations

void MainPipelineWindow::createPipelineWithAnnotation(pqServer* server)

{

  pqApplicationCore* core = pqApplicationCore::instance();

  pqObjectBuilder* ob = core->getObjectBuilder();

 

  // create source and elevation filter

  pqPipelineSource* wavelet;

  pqPipelineSource* cone;

  pqPipelineSource* clip1;

  pqPipelineSource* clip2;

  pqPipelineSource* append;

  pqPipelineSource* groupDS;

 

  wavelet = ob->createSource("sources", "RTAnalyticSource", server);

  vtkSMSourceProxy::SafeDownCast(wavelet->getProxy())->UpdatePipeline();

 

  clip1 = ob->createFilter("filters", "Clip", wavelet);

  vtkSMSourceProxy::SafeDownCast(clip1->getProxy())->UpdatePipeline();

 

  clip2 = ob->createFilter("filters", "Clip", clip1);

  vtkSMSourceProxy::SafeDownCast(clip2->getProxy())->UpdatePipeline();

 

  cone = ob->createSource("sources", "ConeSource", server);

  vtkSMSourceProxy::SafeDownCast(cone->getProxy())->UpdatePipeline();

 

  append = ob->createFilter("filters", "Append", clip2);

  vtkSMPropertyHelper(append->getProxy(), "Input").Add(cone->getProxy(), 0);

  vtkSMSourceProxy::SafeDownCast(append->getProxy())->UpdatePipeline();

 

  groupDS = ob->createFilter("filters", "GroupDataSets", clip2);

  vtkSMPropertyHelper(groupDS->getProxy(), "Input").Add(cone->getProxy(), 0);

  vtkSMSourceProxy::SafeDownCast(groupDS->getProxy())->UpdatePipeline();

 

  // Setup annotations:

  wavelet->getProxy()->SetAnnotation(this->FilterNames.at(1).toAscii().data(), "-");

  clip1->getProxy()->SetAnnotation(this->FilterNames.at(1).toAscii().data(), "-");

  clip2->getProxy()->SetAnnotation(this->FilterNames.at(1).toAscii().data(), "-");

 

  append->getProxy()->SetAnnotation(this->FilterNames.at(2).toAscii().data(), "-");

  groupDS->getProxy()->SetAnnotation(this->FilterNames.at(2).toAscii().data(), "-");

 

  wavelet->getProxy()->SetAnnotation(this->FilterNames.at(3).toAscii().data(), "-");

  clip1->getProxy()->SetAnnotation(this->FilterNames.at(3).toAscii().data(), "-");

  clip2->getProxy()->SetAnnotation(this->FilterNames.at(3).toAscii().data(), "-");

  append->getProxy()->SetAnnotation(this->FilterNames.at(3).toAscii().data(), "-");

 

  wavelet->getProxy()->SetAnnotation(this->FilterNames.at(4).toAscii().data(), "-");

  cone->getProxy()->SetAnnotation(this->FilterNames.at(4).toAscii().data(), "-");

 

  // Tooltip

  wavelet->getProxy()->SetAnnotation("tooltip", "1+3+4");

  clip1->getProxy()->SetAnnotation("tooltip", "1+3");

  clip2->getProxy()->SetAnnotation("tooltip", "1+3");

  cone->getProxy()->SetAnnotation("tooltip", "4");

  append->getProxy()->SetAnnotation("tooltip", "2+3");

  groupDS->getProxy()->SetAnnotation("tooltip", "2");

}

通过这个例子,大致了解paraview的思想,主要有pqApplicationCore(核心)pqObjectBuilder(对象 view sources 等删除创建)、pqInterfaceTracker(插件以及接口。。。)…

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
nvidia-smi是一个用于在Python中以编程方式获取NVIDIA GPU状态的Python模块[gputil。它可以帮助用户获取GPU的详细信息,如使用率、温度、显存使用情况等。可用于监控和管理GPU资源。 Paraview是一个用于可视化和分析科学数据的开源软件。它支持多种数据格式,并且可以与nvidia-smi一起使用来显示和分析GPU相关的数据。通过nvidia-smi和Paraview的结合,用户可以在可视化界面上直观地查看GPU的使用情况和性能数据,以支持科学计算和数据分析的任务。 需要注意的是,Paraview本身并不依赖于nvidia-smi,但可以通过与nvidia-smi的集成来提供更全面和准确的GPU信息。同时,Paraview还提供了其他功能,如数据可视化、交互式数据分析等,可以帮助用户更好地理解和分析科学数据。123 #### 引用[.reference_title] - *1* [机器人操作系统、自动驾驶等研发工具整理](https://blog.csdn.net/u013013023/article/details/111245441)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *2* *3* [Coding and Paper Letter(六十四)](https://blog.csdn.net/ESA_DSQ/article/details/89405178)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值