Ejemplo n.º 1
0
def display_sphere(model_polydata_name, id):
    '''
    Display a sphere at the given point. 
    '''
    model_polydata = sv.repository.export_to_vtk(model_polydata_name)
    points = model_polydata.GetPoints()
    pt = [0.0, 0.0, 0.0]
    points.GetPoint(id, pt)
    sphere = vtk.vtkSphereSource()
    sphere.SetCenter(pt[0], pt[1], pt[2])
    sphere.SetRadius(0.05)
    sphere.Update()
    sphere_name = "sphere" + str(id)
    sv.repository.import_vtk_polydata(sphere.GetOutput(), sphere_name)
    sphere_actor = sv_vis.pRepos(renderer, sphere_name)[1]
    sphere_actor.GetProperty().SetColor(1, 1, 1)
    sv_vis.polyDisplayWireframe(renderer, sphere_name)
Ejemplo n.º 2
0
renderer, render_window = vis.initRen('demo')

surf_name = "shapeSnakeDiaSmooth"
surf_file_name = surf_name + ".vtp"

## Create a solid model from polydata.
#
sv.solid.set_kernel('PolyData')
solid = sv.solid.SolidModel()

# Read surface polydata.
solid.read_native(surf_name, surf_file_name)

## Display surface.
surf_pd = surf_name + "_pd"
solid.get_polydata(surf_pd, 1.0)
vis.pRepos(renderer, surf_pd)
vis.polyDisplayWireframe(renderer, surf_pd)

## Cap the surface.
capped_surf_name = surf_name + "_capped"
surf_pd += 'b'
num_filled = sv.vmtk_utils.cap_with_ids(surf_pd, capped_surf_name, 0, 0)
print("Number of holes filled: {0}".format(num_filled))
vis.pRepos(renderer, capped_surf_name)

vis.interact(renderer, sys.maxsize)



# Create new path object.
path2_name = 'path2'
path2 = Path.pyPath()
path2.NewObject(path2_name)

# Give it some points.
path2.AddPoint([0.0, 100.0, 0.0])
path2.AddPoint([0.0, 100.0, 10.0])
path2.AddPoint([0.0, 100.0, 20.0])
path2.AddPoint([1.0, 100.0, 30.0])
path2.AddPoint([0.0, 100.0, 40.0])
path2.AddPoint([0.0, 100.0, 50.0])
path2.AddPoint([0.0, 100.0, 60.0])
# Generate the path from the added control points.
path2.CreatePath()

# Create solids from the paths.
path1_solid_name = create_solid_from_path(path1_name, 5.0)
path2_solid_name = create_solid_from_path(path2_name, 5.0)

# Render this all to a viewer.
window_name = 'contour_to_lofted_model.py'
ren, renwin = vis.initRen(window_name)
actor1 = vis.pRepos(ren, path1_solid_name)
actor2 = vis.pRepos(ren, path2_solid_name)
# Set the renderer to draw the solids as a wireframe.
vis.polyDisplayWireframe(ren, path1_solid_name)
vis.polyDisplayWireframe(ren, path2_solid_name)

vis.interact(ren, 15000)
Ejemplo n.º 4
0
cleaned_name = merged_solid_name_pd + "_cleaned"
Geom.Clean(merged_solid_name_pd, cleaned_name)

# Sometimes errors out with: "current kernel is not valid (6)" ?
print("\n[geom_stats_demo] Geom.All_union()")
inter_t = True
destination_name = merged_solid_name_pd + "_merged_again"
result = Geom.All_union([path1_surface_name, path2_surface_name], inter_t,
                        destination_name)

print("\n[geom_stats_demo] Geom.Intersect()")
intersected_solid_name = "intersected_solid"
Geom.Intersect(merged_solid_name_pd, cube_name_pd, intersected_solid_name)
window_name = "INTERSECTED Model"
ren1, renwin1 = vis.initRen(window_name)
actor1 = vis.pRepos(ren1, intersected_solid_name)
# Set the renderer to draw the solids as a wireframe.
vis.polyDisplayWireframe(ren1, intersected_solid_name)

print("\n[geom_stats_demo] Geom.Subtract()")
subtracted_solid_name = "subtracted_solid"
Geom.Subtract(merged_solid_name_pd, cube_name_pd, subtracted_solid_name)
window_name = "SUBTRACTED Model"
ren2, renwin2 = vis.initRen(window_name)
actor2 = vis.pRepos(ren2, subtracted_solid_name)
# Set the renderer to draw the solids as a wireframe.
vis.polyDisplayWireframe(ren2, subtracted_solid_name)

vis.interact(ren1, 15000)
vis.interact(ren2, 15000)
Ejemplo n.º 5
0
print(verts)
lines = meshed_solid_pd.GetLines()
print("[mesh_stats_demo] .GetLines(): (length: " + str(lines.GetSize()) + ")")
print(lines)
polys = meshed_solid_pd.GetPolys()
print("[mesh_stats_demo] .GetPolys(): (length: " + str(polys.GetSize()) + ")")
print(polys)
strips = meshed_solid_pd.GetStrips()
print("[mesh_stats_demo] .GetStrips(): (length: " + str(strips.GetSize()) + ")")
print(strips)
print("[mesh_stats_demo] .GetCellType(cellId: 1): " + str(meshed_solid_pd.GetCellType(1)))
bounds = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
meshed_solid_pd.GetCellBounds(1, bounds)
print("[mesh_stats_demo] .GetCellBounds(cellId: 1): " + str(bounds))

# Render this all to a viewer.
window_name = "RAW Model"
ren1, renwin1 = vis.initRen(window_name)
actor1 = vis.pRepos(ren1, merged_solid_name)
# Set the renderer to draw the solids as a wireframe.
vis.polyDisplayWireframe(ren1, merged_solid_name)

# Render this all to a viewer.
window_name = "MESHED Model"
ren2, renwin2 = vis.initRen(window_name)
actor2 = vis.pRepos(ren2, meshed_solid_pd_name)
# Set the renderer to draw the solids as a wireframe.
vis.polyDisplayWireframe(ren2, meshed_solid_pd_name)

vis.interact(ren1, 15000)
vis.interact(ren2, 15000)
Ejemplo n.º 6
0
b = Solid.pySolidModel()
b.Cylinder('cyl2', 2, 2.0, ctr, axis)
b.GetPolyData('cyl2_pd',0.5)

ctr = [0.5, -0.5, -0.5] 
ctr = [0.481476,-0.0680931,-1]
ctr = [-0.414211,-0.753699,1] 
c = Solid.pySolidModel()
c.Sphere('sphere1', 0.1, ctr)
c.GetPolyData('sphere1_pd',0.5)
c.WriteNative("sphere")

ren, renwin = vis.initRen('demo')
act = vis.pRepos(ren,'cyl1_pd')
vis.polyDisplayWireframe(ren, 'cyl1_pd')

act2 = vis.pRepos(ren,'cyl2_pd')
vis.polyDisplayWireframe(ren, 'cyl2_pd')

act3 = vis.pRepos(ren,'sphere1_pd')[1]
act3.GetProperty().SetColor(0.0, 1.0, 0.0)


wall = Solid.pySolidModel()
wall.Subtract('wall', 'cyl2', 'cyl1')
#wall.Subtract('wall', 'cyl1', 'cyl2')
#wall.Subtract('cyl1', 'cyl2', 'wall')
wall.GetPolyData('wall_pd', 0.5)
wall_act = vis.pRepos(ren,'wall_pd')
Ejemplo n.º 7
0
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
# OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

from sv import *
import sv_vis as vis

#displat a box and a cylinder in a render window
Solid.SetKernel('PolyData')
ctr = [0, 0, 0]
axis = [0, 0, 1]
a = Solid.pySolidModel()
a.Cylinder('cyl', 1, 5, ctr, axis)
a.GetPolyData('poly', 0.5)

b = Solid.pySolidModel()
b.Box3d('box', [5, 0.5, 0.5], [0, 0, 0])
b.GetPolyData('poly2', 0.5)

ren, renwin = vis.initRen('demo')
act = vis.pRepos(ren, 'poly')
act2 = vis.pRepos(ren, 'poly2')
vis.polyDisplayWireframe(ren, 'poly2')

vis.interact(ren, 150)
Ejemplo n.º 8
0
print("\n[geom_stats_demo] Geom.All_union()")
inter_t = True
destination_name = merged_solid_name_pd + "_merged_again"
#result = Geom.All_union([path1_cap_surface_name, path2_cap_surface_name], inter_t, destination_name)
#print(">>> result " + str(result))

intersected_solid_name = "intersect"
#Geom.Intersect(path1_surface_name, path2_surface_name, intersected_solid_name)
#Geom.Intersect(path1_cap_surface_name, path2_cap_surface_name, intersected_solid_name)

# Render this all to a viewer.
window_name = 'contour_to_lofted_model.py'
ren, renwin = vis.initRen(window_name)

actor1 = vis.pRepos(ren, path1_cap_surface_name)
#actor1 = vis.pRepos(ren, path1_surface_name)

actor2 = vis.pRepos(ren, path2_cap_surface_name)
#actor2 = vis.pRepos(ren, path2_surface_name)

#actor3 = vis.pRepos(ren, destination_name)
actor3 = vis.pRepos(ren, merged_solid_name_pd)
#actor3 = vis.pRepos(ren, intersected_solid_name)

# Set the renderer to draw the solids as a wireframe.
vis.polyDisplayWireframe(ren, path1_cap_surface_name)
vis.polyDisplayWireframe(ren, path2_cap_surface_name)

vis.interact(ren, 15000)