예제 #1
0
void mitk::SimulationReader::GenerateData()
{
  Simulation::Pointer simulation = static_cast<mitk::Simulation*>(this->GetOutput());
  sofa::simulation::Simulation::SPtr sofaSimulation = simulation->GetSimulation();

  ISimulationService* simulationService = GetSimulationService();
  Simulation::Pointer currentSimulation = simulationService->GetSimulation();

  simulationService->SetSimulation(simulation);

  std::string path = sofa::helper::system::SetDirectory::GetParentDir(m_FileName.c_str());
  sofa::helper::system::DataRepository.addFirstPath(path);

  sofa::simulation::Node::SPtr rootNode = sofa::core::objectmodel::SPtr_dynamic_cast<sofa::simulation::Node>(sofaSimulation->load(m_FileName.c_str()));

  if (!rootNode)
  {
    sofa::helper::system::DataRepository.removePath(path);
    mitkThrow() << "Could not load '" << m_FileName << "'!";
  }

  simulation->SetRootNode(rootNode);

  sofaSimulation->init(rootNode.get());
  sofaSimulation->reset(rootNode.get());
  simulation->UpdateOutputInformation();

  sofa::helper::system::DataRepository.removePath(path);

  simulationService->SetSimulation(currentSimulation);
}
mitk::vtkSimulationPolyDataMapper3D::vtkSimulationPolyDataMapper3D()
  : m_SimulationService(GetSimulationService())
{
}