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)
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)
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)
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)
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')
# 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)
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)