1#!/usr/local/bin/python3.8
2from gi.repository import v_sim
3import cProfile
4
5render = v_sim.uiMainClass_getDefaultRendering()
6data = render.getVisuData()
7
8def prox(data, (x0, y0, z0), c, rad):
9  (u, v, w) = data.convertXYZToReduced(c)
10  for dx in range(-1, 2):
11    for dy in range(-1, 2):
12      for dz in range(-1, 2):
13        (x, y, z) = data.convertReducedToXYZ((u + dx, v + dy, w + dz))
14	dist2 = (x - x0)**2 + (y - y0)**2 + (z - z0)**2
15	if dist2 <= (rad) ** 2:
16	  return True
17  return False
18
19def isolate(RAD, NODE):
20  coord0 = data.getNodeCoordinates(data.getNodeFromNumber(NODE))
21  dataIter = data.iterNew()
22  data.iterStart(dataIter)
23  while (dataIter.node is not None):
24    if prox(data, coord0, data.getNodeCoordinates(dataIter.node), RAD):
25      print "Node ",dataIter.node.number," is visible"
26      dataIter.node.setVisibility(True)
27    else:
28      print "Node ",dataIter.node.number," is hidden"
29      dataIter.node.setVisibility(False)
30    data.iterNext(dataIter)
31  data.createAllNodes()
32
33
34##RAD = input('Choose a radius: ')
35##NODE = input('Choose a node id: ')
36RAD = 5.
37NODE = 21
38print "All nodes further than ",RAD," from node ",NODE," will be hidden."
39cProfile.run('isolate(RAD, NODE)')
40v_sim.object_redraw(None)
41
42#----------------------DUMP----------------------#
43outFilename = "diffOut.png"
44print '\n\t---DUMP dans du resultat dans %s---\n' % outFilename
45
46##outFilename = "diffOut.ascii"
47
48dumps = v_sim.dump_getAllModules()
49for dump in dumps:
50  if dump.fileType.match(outFilename):
51    render.dump(dump, outFilename, 450, 450, None, None)
52