def main(instantiate_gui=True): """Simple test case.""" from enthought.tvtk.tools import ivtk v = ivtk.viewer(browser=False, instantiate_gui=instantiate_gui) cs = tvtk.ConeSource() m = tvtk.PolyDataMapper(input=cs.output) a = tvtk.Actor(mapper=m) v.scene.add_actor(a) v.scene.reset_zoom() b = PipelineBrowser(v.scene) b.show() return v, b, a
def visual_test(jpos, jfreedom, loads, elements, E, r, p, max_stress=3e+8): displacements, strains, stresses, mass, status, times = analyse_truss(jpos, jfreedom, loads, elements, E, r, p) jpos_d = jpos + displacements*100 print status print times print 'displacements: ', displacements print 'strains: ', strains print 'stresses: ', stresses #strains_abs = N.abs(strains) from enthought.tvtk.api import tvtk from enthought.tvtk.tools import ivtk from enthought.pyface.api import GUI v = ivtk.viewer(False, False) v.scene.z_plus_view() pd = tvtk.PolyData() pts = jpos[elements].reshape((-1,2)) pd.points = N.column_stack((pts[:,0], pts[:,1], N.zeros(len(pts)))) pd.lines = N.r_[:len(elements)*2].reshape((-1,2)) pd.cell_data.scalars = -strains pd.point_data.scalars = N.column_stack((r, r)).ravel() #tubes = tvtk.TubeFilter(input=pd, radius=N.sqrt(element_A.max() / N.pi), number_of_sides=16) tubes = tvtk.TubeFilter(input=pd, number_of_sides=16, vary_radius='vary_radius_by_absolute_scalar', capping=True) #tubes = tvtk.RibbonFilter(input=pd, use_default_normal=True, vary_width=True) b = tvtk.Actor(mapper=tvtk.PolyDataMapper(input=tubes.output, scalar_range=(-N.abs(strains).max(), N.abs(strains).max()), scalar_mode='use_cell_data')) b.mapper.lookup_table.hue_range = (0, 0.66) v.scene.add_actor(b) pd1 = tvtk.PolyData() pd1.points = N.column_stack((jpos_d[:,0], jpos_d[:,1], N.zeros(len(jpos)))) pd1.lines = elements tubes1 = tvtk.TubeFilter(input=pd1, radius=0.01, number_of_sides=16) a = tvtk.Actor(mapper=tvtk.PolyDataMapper(input=tubes1.output)) a.property.opacity = 0.3 v.scene.add_actor(a) print "strain: ", strains.min(), strains.max() v.scene.reset_zoom() GUI().start_event_loop()
def figure(outline=True, browser=True): """Simple helper function that returns a usable figure. Parameters ---------- - outline : `bool` (default: True) If True, create an outline bounding box along with an axes marker for the scene. - browser : `bool` (default, True) If True, creates an IVTK scene with an embedded PipelineBrowser. If False, does not create it. """ v = ivtk.viewer(browser) f = Figure(v.scene) if outline: o = Outline() f.add(o) v.scene.reset_zoom() return f