File: create_sphere_python.py

package info (click to toggle)
camitk 6.0.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 389,496 kB
  • sloc: cpp: 103,476; sh: 2,448; python: 1,618; xml: 984; makefile: 128; perl: 84; sed: 20
file content (32 lines) | stat: -rw-r--r-- 1,155 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# This is a CamiTK python action
#
# Create a sphere in python VTK and transform it to a MeshComponent in CamiTK

import camitk
# import vtk
import vtkmodules.all as vtk
from vtk.util import numpy_support

def init(self:camitk.Action):
    camitk.info("CamiTK version: " + camitk.__version__)

def process(self:camitk.Action):
    sphere = vtk.vtkSphereSource()
    sphere.SetRadius(self.getParameterValue("Radius"))
    sphere.SetThetaResolution(self.getParameterValue("Theta Resolution"))
    sphere.SetPhiResolution(self.getParameterValue("Phi Resolution"))
    sphere.Update()

    polydata = sphere.GetOutput()

    points = numpy_support.vtk_to_numpy(polydata.GetPoints().GetData())
    polys = numpy_support.vtk_to_numpy(polydata.GetPolys().GetData()).reshape(-1, 4) # (n_triangles, 4)
    print("points",points)
    print("polys", polys)
    # Each row = [3, p0, p1, p2] -> meaning "triangle with 3 points"
    # Here no cell type, only count + point ids

    msh = camitk.newMeshComponentFromNumpy("Sphere " + str(self.getParameterValue("Radius")), points, polys)
    camitk.refresh()
    # or similar to C++ self.refreshApplication() 
    return