gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 04:08:30 26 4
gpt4 key购买 nike

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

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

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

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 属性(此类继承自 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>与单元相关联,而不是与点相关联。

关于c++ - 修改 Paraview 属性面板上的默认属性 (5.7.0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58288594/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com