修改 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>
关联到单元格而不是点。
我尝试使用自定义插件修改 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>
关联到单元格而不是点。