Source code for nglview.shape

from .utils.py_utils import _update_url

SHAPE_EXAMPLES = {
    'mesh':
    """
# add_mesh(position, color, index, normal, name)
>>> shape.add_mesh(
        [ 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1 ],
        [ 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0 ]
)
""",
    'sphere':
    """
# add_sphere(position, color, radius, name)
>>> shape.add_sphere([0, 0, 9], [1, 0, 0], 1.5)
""",
    'ellipsoid':
    """
# add_ellipsoid(position, color, radius, majorAxis, minorAxis, name)
>>> shape.add_ellipsoid([ 6, 0, 0], [ 1, 0, 0 ], 1.5, [ 3, 0, 0 ], [ 0, 2, 0 ])
""",
    'cylinder':
    """
# add_cylinder(position1, position2, color, radius, name)
>>> shape.add_cylinder( [ 0, 2, 7 ], [ 0, 0, 9 ], [ 1, 1, 0 ], 0.5 )
""",
    'cone':
    """
# add_cone(position1, position2, color, radius, name) 
>>> shape.add_cone( [ 0, 2, 7 ], [ 0, 3, 3 ], [ 1, 1, 0 ], 1.5 )
""",
    'arrow':
    """
# add_arrow(position1, position2, color, radius, name)
>>> shape.add_arrow( [ 0, 2, 7 ], [ 0, 0, 9 ], [ 1, 1, 0 ], 0.5 )
""",
    'label':
    """
# add_text(position, color, size, text)
>>> shape.add_text( [ 10, -2, 4 ], [ 0.2, 0.5, 0.8 ], 0.5, "Hello" )
""",
    'text':
    """
# add_text(position, color, size, text)
>>> shape.add_text( [ 10, -2, 4 ], [ 0.2, 0.5, 0.8 ], 0.5, "Hello" )
""",
    'tetrahedron':
    """
# add_tetrahedron
>>> shape.add_tetrahedron([ 27, 0, 1 ], [ 0, 1, 0 ], 2, [ 0, 1, 1 ], [ 1, 0, 1 ])
""",
    'octahedron':
    """
# add_octahedron
>>> shape.add_octahedron([ 8, 5, 14 ], [ 0, 1, 0 ], 2, [ 0, 1, 1 ], [ 1, 0, 1 ])
""",
    'torus':
    """
# add_torus
>>> shape.add_torus([ 16, 5, 14 ], [ 0, 1, 0 ], 2, [ 0, 1, 1 ], [ 1, 0, 1 ])
"""
}


[docs]class Shape: """TODO: doc Parameters ---------- view : nglview.NGLWidget Notes ----- Unstable feature Examples -------- >>> import nglview as nv >>> view = nv.NGLWidget() >>> view >>> shape = nv.Shape(view=view) >>> # TODO: add example >>> shape.add_sphere(...) """ def __init__(self, view): self.view = view self._make_func(SHAPE_EXAMPLES.keys()) def _make_func(self, names): from types import MethodType def make_func(name): def func(self, *args): args_with_name = [ name, ] + list(args) return self.add(*args_with_name) func.__doc__ = SHAPE_EXAMPLES[name] return func for name in names: func_name = 'add_' + name func = make_func(name) setattr(self, func_name, MethodType(func, self))
[docs] @_update_url def add(self, *args): """ Examples -------- >>> view.shape.add('text', [0, 4, -1], [0.2, 0.5, 0.8], 2.5, 'Meow') See also -------- {ngl_url} """ return self.view._add_shape([ args, ])
[docs] def add_buffer(self, name, **kwargs): """ Examples -------- >>> view.shape.add_buffer("cone", ... position1=[0, 0, 0], ... position2=[1, 1, 1], ... color=[1, 0, 0], ... color2=[0, 1, 0], ... radius= [1]) """ self.view._remote_call("addBuffer", target="Widget", args=[name], kwargs=kwargs, fire_embed=True)