修改 Paraview 属性面板上的默认属性 (5.7.0)

Modify Default properties on Paraview Properties Panel (5.7.0)

我尝试使用自定义插件修改 Paraview 中 属性 的默认值。 当我在我的管道中添加一个 Dicom 文件时,默认表示在 属性 面板中设置为“Outline”,但我希望它是“Volume”。 目标是与 Paraview

中的现有属性进行交互

我 git 克隆了 paraview 存储库,我使用 CMake 获取 .sln 文件并使用 Visual Studio 编译它。我对 Paraview 本身提供的示例插件做同样的事情(比如工具栏或 属性 小部件以了解它是如何工作的),现在一切正常。 但是当我尝试将数据表示设置为 "volume" 时,没有任何效果(没有结果,它仍然是统一的。)

我尝试过的(来自我的插件):

pqApplicationCore* applicationCore = pqApplicationCore::instance();
pqObjectBuilder* objectBuilder = applicationCore->getObjectBuilder();
pqServerManagerModel* serverManagerModel =  applicationCore->getServerManagerModel();

if (serverManagerModel->getNumberOfItems<pqServer*>() == 1)
  {
    // Getting the first (and only) server
    pqServer* server = serverManagerModel->getItemAtIndex<pqServer*>(0);

    //Creating a reader for dicom files
    pqPipelineSource* pipelineSource =
      objectBuilder->createReader("sources", "DICOMReader", { file }, server);

    // Getting the first view
    pqView* v = serverManagerModel->getItemAtIndex<pqView*>(0);

    // Setting the data representation to Volume, at least, i try to set it.
    pqDataRepresentation* data = objectBuilder->createDataRepresentation(
      pipelineSource->getOutputPorts().at(0), v, "UniformGridRepresentation");

    // SOLUTION 
    vtkSMPVRepresentationProxy::SetScalarColoring(data->getProxy(), "DICOMImage", vtkDataObject::POINT);
    pqSMAdaptor::setEnumerationProperty(data->getProxy()->GetProperty("Representation"), "Volume");

    // wrong
    data->setProperty("VolumeRendering", "volume");

    data->setVisible(true);
}

CMakeList.txt

set(interfaces)
set(sources
  MyToolBar.cxx
  MyToolBar.h
  MyToolBarActions.cxx
  MyToolBarActions.h)

paraview_plugin_add_action_group(…….)

paraview_plugin_add_toolbar(…..)

paraview_add_plugin(pluginName 
  VERSION "1.0"
  UI_INTERFACES ${interfaces}
  SOURCES ${sources})

target_link_libraries(cmakePluginName PRIVATE ParaView::ServerManagerRendering)

我希望 "Representation" 字段在 "Volume" 上,但仍在 "Outline" 我还尝试将 "UniformGridRepresentation" 更改为其他内容,除了奇怪的事情和崩溃之外没有任何结果。

有什么想法吗?

您使用的 setProperty 关注 Qt 属性(此 class 继承自 QObject)而不是 ParaView Proxy 属性。

您应将此行替换为以下内容:

编辑:添加 SetScalarColoring 部分

vtkSMPVRepresentationProxy::SetScalarColoring(data->getProxy(), <ArrayName>, vtkDataObject::POINT);
pqSMAdaptor::setEnumerationProperty(data->getProxy()->GetProperty("Representation"), "Volume");

<ArrayName> 是您要用于着色的数据。如果未指定,将使用唯一的 Solid Color,但它不可用于体积渲染。

vtkDataObject::POINT 也可以是 vtkDataObject::CELL 如果 <ArrayName> 关联到单元格而不是点。