vtkMolecule - 删除原子

问题描述 投票:-1回答:1

我正在研究从头开始构建分子的程序。我的意图是使用vtkMolecule。然而,虽然通过AppendAtom方法很容易将Atom添加到分子中,但似乎没有去除功能。

这是我的代码:

int main(int, char *[]) {
  vtkSmartPointer<vtkMolecule> molecule =
    vtkSmartPointer<vtkMolecule>::New();   
  molecule->AppendAtom(12, 0.0, 0.0, 0.0);
  molecule->AppendAtom(12, 1.0, 1.0, 1.0);
  molecule->AppendAtom(12, 2.0, 2.0, 2.0);

  molecule->AppendBond(molecule->GetAtom(0), molecule->GetAtom(1), 1);
  molecule->AppendBond(molecule->GetAtom(1), molecule->GetAtom(2), 1);

  //hypothetical code, I want something like this - remove atom by id:
  molecule->RemoveAtom(2)

  vtkSmartPointer<vtkMoleculeMapper> moleculeMapper =
    vtkSmartPointer<vtkMoleculeMapper>::New();
  moleculeMapper->SetInputData(molecule);
  //...rendering etc.
}

vtkMolecule Class Reference

我正在考虑一些vtkGraph方法,如vtkGraph::RemoveVertexInternal,但它(可能由于某种原因)受到保护,因此不适用于儿童班的孩子。

我的问题是:

除了用专门的方法创建vtkMolecule的子类以外,有没有简单的方法从分子中删除原子?

先感谢您。

c++ vtk molecule
1个回答
0
投票

你是对的,没有简单的方法可以做到这一点。

受保护意味着它可以从子类中使用,但不能从外部使用,这就是为什么需要创建一个调用RemoveAtom(id)的新公共方法,如RemoveVertexInternal(id)。您应该子类化vtkMolecule或只是修补它。

建议你补丁并向上游贡献:https://gitlab.kitware.com/vtk/vtk/merge_requests

© www.soinside.com 2019 - 2024. All rights reserved.