def drawNode2(myscreen, node): if node.type == cam.OCType.BLACK: return # don't draw intermediate nodes if node.type == cam.OCType.GREY: return # don't draw intermediate nodes p = [] for n in xrange(1, 9): p1 = node.nodePoint(n) p.append(p1) lines = [] for n in xrange(0, 8): lines.append(camvtk.Point(center=(p[n].x, p[n].y, p[n].z))) if node.type == cam.OCType.WHITE: color = nodeColor(node) if node.type == cam.OCType.GREY: color = camvtk.white if node.type == cam.OCType.BLACK: color = camvtk.grey for li in lines: li.SetColor(color) if node.type == cam.OCType.BLACK: li.SetOpacity(0.1) if node.type == cam.OCType.GREY: li.SetOpacity(0.2) myscreen.addActor(li)
myscreen.addActor( camvtk.Line(p1=(previous.x,previous.y,previous.z+zofz),p2=(p.x,p.y,p.z+zofz),color=loopColor) ) previous=p n=n+1 zofz = zofz +0.00 print "rendered loop ",nloop, " with ", len(lop), " points at zofz=",zofz if len(lop)==2: for p in lop: print p myscreen.addActor( camvtk.Sphere(center=(p.x,p.y,p.z+zofz),radius=0.0005, color=camvtk.pink ) ) nloop = nloop+1 if __name__ == "__main__": print ocl.version() myscreen = camvtk.VTKScreen() a = ocl.Point(0,1,0.3) myscreen.addActor(camvtk.Point(center=(a.x,a.y,a.z), color=(1,0,1))) b = ocl.Point(1,0.5,0.3) myscreen.addActor(camvtk.Point(center=(b.x,b.y,b.z), color=(1,0,1))) c = ocl.Point(-0.1,0.3,0.0) myscreen.addActor(camvtk.Point(center=(c.x,c.y,c.z), color=(1,0,1))) myscreen.addActor( camvtk.Line(p1=(a.x,a.y,a.z),p2=(c.x,c.y,c.z)) ) myscreen.addActor( camvtk.Line(p1=(c.x,c.y,c.z),p2=(b.x,b.y,b.z)) ) myscreen.addActor( camvtk.Line(p1=(a.x,a.y,a.z),p2=(b.x,b.y,b.z)) ) t = ocl.Triangle(b,c,a) s = ocl.STLSurf() s.addTriangle(t) # a one-triangle STLSurf zheights=[-0.3, -0.2, -0.1, -0.05, 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.26, 0.27, 0.28, 0.29 ] # the z-coordinates for the waterlines zheights=[-0.8, -0.7, -0.6, -0.5, -0.4, -0.3, -0.2, -0.1, -0.05, 0.0, 0.05, 0.1, 0.15, 0.2, 0.28 ] zheights=[ -0.35, -0.3, -0.25, -0.2, -0.15, -0.1, -0.05, 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.28] zheights=[]
elif cc.type == cam.CCType.VERTEX: nv+=1 col = (0,1,0) elif cc.type == cam.CCType.EDGE: ne+=1 col = (1,0,0) elif cc.type == cam.CCType.NONE: #print "type=NONE!" nn+=1 col = (1,1,1) #if cl.isInside(t): # col = (0, 1, 0) #else: # col = (1, 0, 0) myscreen.addActor( camvtk.Point(center=(cl.x,cl.y,cl.z) , color=col) ) myscreen.addActor( camvtk.Point(center=(cl2.x,cl2.y,cl2.z+0.2) , color=(0.6,0.2,0.9)) ) #myscreen.addActor( camvtk.Point(center=(cc.x,cc.y,cc.z), color=col) ) #print cc.type print "none=",nn," vertex=",nv, " edge=",ne, " facet=",nf, " sum=", nn+nv+ne+nf print len(clpoints), " cl points evaluated" myscreen.camera.SetPosition(3, 23, 15) myscreen.camera.SetFocalPoint(5, 5, 0) myscreen.render() w2if = vtk.vtkWindowToImageFilter() w2if.SetInput(myscreen.renWin) lwr = vtk.vtkPNGWriter() lwr.SetInput( w2if.GetOutput() ) w2if.Modified()
def drawScreen(a,b,c,filename,write_flag): print ocl.revision() myscreen = camvtk.VTKScreen() z_hi = a.z if b.z > z_hi: z_hi = b.z if c.z > z_hi: z_hi = c.z z_lo = a.z if b.z < z_lo: z_lo = b.z if c.z < z_lo: z_lo = c.z #z_hi = 0.3 # this is the shallow case #ztri = 0.8 # this produces the steep case where we hit the circular rim #z_lo = 0.1 #a = ocl.Point(0,1,ztri) #b = ocl.Point(1,0.5,ztri) #c = ocl.Point(0.2,0.2,ztri_lo) myscreen.addActor(camvtk.Point(center=(a.x,a.y,a.z), color=(1,0,1))) myscreen.addActor(camvtk.Point(center=(b.x,b.y,b.z), color=(1,0,1))) myscreen.addActor(camvtk.Point(center=(c.x,c.y,c.z), color=(1,0,1))) myscreen.addActor( camvtk.Line(p1=(a.x,a.y,a.z),p2=(c.x,c.y,c.z)) ) myscreen.addActor( camvtk.Line(p1=(c.x,c.y,c.z),p2=(b.x,b.y,b.z)) ) myscreen.addActor( camvtk.Line(p1=(a.x,a.y,a.z),p2=(b.x,b.y,b.z)) ) t = ocl.Triangle(b,c,a) angle = math.pi/5 diameter=0.3 length=5 #cutter = ocl.BallCutter(diameter, length) #cutter = ocl.CylCutter(diameter, length) #cutter = ocl.BullCutter(diameter, diameter/4, length) cutter = ocl.ConeCutter(diameter, angle, length) #cutter = cutter.offsetCutter( 0.1 ) print "cutter= ", cutter print "length=", cutter.getLength() print "fiber..." range=2 Nmax = 100 yvals = [float(n-float(Nmax)/2)/Nmax*range for n in xrange(0,Nmax+1)] xvals = [float(n-float(Nmax)/2)/Nmax*range for n in xrange(0,Nmax+1)] zmin = z_lo - 0.3 zmax = z_hi zNmax = 20 dz = (zmax-zmin)/(zNmax-1) zvals=[] for n in xrange(0,zNmax): zvals.append(zmin+n*dz) for zh in zvals: yfiber(cutter,yvals,t,zh,myscreen) xfiber(cutter,xvals,t,zh,myscreen) print "done." myscreen.camera.SetPosition(-2, -1, 3) myscreen.camera.SetFocalPoint(1.0, 0.0, -0.5) camvtk.drawArrows(myscreen,center=(-0.5,-0.5,-0.5)) camvtk.drawOCLtext(myscreen) myscreen.render() w2if = vtk.vtkWindowToImageFilter() w2if.SetInput(myscreen.renWin) lwr = vtk.vtkPNGWriter() lwr.SetInput( w2if.GetOutput() ) w2if.Modified() lwr.SetFileName(filename) if write_flag: lwr.Write() print "wrote ",filename
def main(ycoord=1.2, filename="test", theta=60, fi=45): myscreen = camvtk.VTKScreen() focal = cam.Point(2.17, 1, 0) r = 14 theta = (float(theta) / 360) * 2 * math.pi campos = cam.Point(r * math.sin(theta) * math.cos(fi), r * math.sin(theta) * math.sin(fi), r * math.cos(theta)) myscreen.camera.SetPosition(campos.x, campos.y, campos.z) myscreen.camera.SetFocalPoint(focal.x, focal.y, focal.z) #ycoord = 1.1 # the two points that define the edge a = cam.Point(3, ycoord, 2.999999) b = cam.Point(-1, ycoord, 3) myscreen.addActor(camvtk.Point(center=(a.x, a.y, a.z), color=(1, 0, 1))) myscreen.addActor(camvtk.Point(center=(b.x, b.y, b.z), color=(1, 0, 1))) #c=cam.Point(0,0,0.3) myscreen.addActor(camvtk.Line(p1=(a.x, a.y, a.z), p2=(b.x, b.y, b.z))) #t = cam.Triangle(a,b,c) cutter_length = 2 cutter = cam.BullCutter(1, 0.2, cutter_length) print cutter xar = camvtk.Arrow(color=camvtk.red, rotXYZ=(0, 0, 0)) myscreen.addActor(xar) yar = camvtk.Arrow(color=camvtk.green, rotXYZ=(0, 0, 90)) myscreen.addActor(yar) zar = camvtk.Arrow(color=camvtk.blue, rotXYZ=(0, -90, 0)) myscreen.addActor(zar) cl = cam.Point(2.1748, 1, 0) radius1 = 1 radius2 = 0.25 #tor.SetWireframe() #myscreen.addActor(tor) cyl = camvtk.Cylinder(center=(cl.x, cl.y, cl.z), radius=radius1, height=2, color=(0, 1, 1), rotXYZ=(90, 0, 0), resolution=50) #myscreen.addActor(cyl) cl_line = camvtk.Line(p1=(cl.x, cl.y, -100), p2=(cl.x, cl.y, +100), color=camvtk.red) myscreen.addActor(cl_line) cl_tube = camvtk.Tube(p1=(cl.x, cl.y, -100), p2=(cl.x, cl.y, +100), radius=radius1, color=camvtk.green) cl_tube.SetOpacity(0.1) myscreen.addActor(cl_tube) a_inf = a + (-100 * (b - a)) b_inf = a + (+100 * (b - a)) tube = camvtk.Tube(p1=(a_inf.x, a_inf.y, a_inf.z), p2=(b_inf.x, b_inf.y, b_inf.z), radius=0.05 * radius2, color=camvtk.red) tube.SetOpacity(0.3) myscreen.addActor(tube) # cylindrical-cutter circle at z=0 plane #cir= camvtk.Circle(radius=radius1, center=(cl.x,cl.y,cl.z), color=camvtk.yellow) #myscreen.addActor(cir) #clp = camvtk.Point(center=(cl.x,cl.y,cl.z)) #myscreen.addActor(clp) # short axis of ellipse = radius2 # long axis of ellipse = radius2/sin(theta) # where theta is the slope of the line dx = b.x - a.x dz = b.z - a.z #print "dx=", dx #print "dz=", dz theta = math.atan(dz / dx) ## dx==0 is special case!! (i.e. vertical lines) print "theta=", theta a_axis = abs(radius2 / math.sin(theta)) print "a=", a_axis # ellipse #a=2 b_axis = radius2 print "b= ", b_axis # slice the tube with a plane at z=0 and find the ellipse center # line is from Point a to b: # a + t*(b-a) # find t so that z-component is zero: # a.z + t( b.z -a.z) = 0 # t= a.z / (b.z - a.z) # so point tparam = -a.z / (b.z - a.z) # NOTE horizontal lines are a special case!! ellcenter = a + tparam * (b - a) print "ellcenter (z=0?) =", ellcenter # center of the # ecen_tmp=cam.Point(ellcenter,a.y,0) #drawellipse(myscreen, ellcenter, a_axis, b_axis) oe = cam.Ellipse(ellcenter, a_axis, b_axis, radius1) #oe2 = cam.Ellipse(ellcenter, a_axis, b_axis, 0.05) # to locate text on the outside of the ellipse nmax = 20 #delta=0.05 #td = 1 t = camvtk.Text() t.SetPos((myscreen.width - 450, myscreen.height - 30)) t.SetText("OpenCAMLib " + datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")) myscreen.addActor(t) t2 = camvtk.Text() ytext = "Y: %3.3f" % (ycoord) t2.SetText(ytext) t2.SetPos((50, myscreen.height - 150)) myscreen.addActor(t2) #w2if = vtk.vtkWindowToImageFilter() #w2if.SetInput(myscreen.renWin) #lwr = vtk.vtkPNGWriter() #lwr.SetInput( w2if.GetOutput() ) epos = cam.Epos() epos.setS(0, 1) #p5 = oe.ePoint(epos5) #pt = oe2.oePoint(epos5) #print "before= ", epos5.s, " , ", epos5.t # RUN THE SOLVER! nsteps = cam.Ellipse.solver(oe, cl) print "solver done. back to python:" print "1st (s,t) solution=", oe.epos1 print "2st (s,t) solution=", oe.epos2 elc1 = calcEcenter(oe, a, b, cl, 1) elc2 = calcEcenter(oe, a, b, cl, 2) print "elc1=", elc1 print "elc2=", elc2 #exit() #elc2 = elc2 #epos = oe.epos2 fe1 = cam.Ellipse(elc1, a_axis, b_axis, radius1) fe2 = cam.Ellipse(elc2, a_axis, b_axis, radius1) # draw ellipse-centers myscreen.addActor( camvtk.Sphere(center=(elc1.x, elc1.y, elc1.z), radius=0.01, color=camvtk.lgreen)) myscreen.addActor( camvtk.Sphere(center=(elc2.x, elc2.y, elc2.z), radius=0.01, color=camvtk.pink)) # cc-points on the ellipse ccp1 = fe1.ePoint(oe.epos1) ccp2 = fe2.ePoint(oe.epos2) myscreen.addActor( camvtk.Sphere(center=(ccp1.x, ccp1.y, ccp1.z), radius=0.01, color=camvtk.lgreen)) myscreen.addActor( camvtk.Sphere(center=(ccp2.x, ccp2.y, ccp2.z), radius=0.01, color=camvtk.pink)) cl1 = fe1.oePoint(oe.epos1) cl2 = fe2.oePoint(oe.epos2) # circles myscreen.addActor( camvtk.Circle(radius=radius1, center=(cl1.x, cl1.y, cl1.z), color=camvtk.green)) myscreen.addActor( camvtk.Circle(radius=radius1, center=(cl2.x, cl2.y, cl2.z), color=camvtk.pink)) # torus tor = camvtk.Toroid(r1=radius1, r2=radius2, center=(cl1.x, cl1.y, cl1.z), rotXYZ=(0, 0, 0), color=camvtk.green) tor.SetOpacity(0.4) myscreen.addActor(tor) tor = camvtk.Toroid(r1=radius1, r2=radius2, center=(cl2.x, cl2.y, cl2.z), rotXYZ=(0, 0, 0), color=camvtk.pink) tor.SetOpacity(0.4) myscreen.addActor(tor) # line: ellipse-center to cc-point myscreen.addActor( camvtk.Line(p1=(elc1.x, elc1.y, elc1.z), p2=(ccp1.x, ccp1.y, ccp1.z), color=camvtk.cyan)) myscreen.addActor( camvtk.Line(p1=(elc2.x, elc2.y, elc2.z), p2=(ccp2.x, ccp2.y, ccp2.z), color=camvtk.cyan)) # line: cc-point to cl-point myscreen.addActor( camvtk.Line(p1=(cl1.x, cl1.y, cl1.z), p2=(ccp1.x, ccp1.y, ccp1.z), color=camvtk.yellow)) myscreen.addActor( camvtk.Line(p1=(cl2.x, cl2.y, cl2.z), p2=(ccp2.x, ccp2.y, ccp2.z), color=camvtk.yellow)) # true cl #clt = cc1. #fclpoint = camvtk.Sphere(center=(fclp.x,fclp.y,fclp.z), radius=0.01, color=camvtk.blue) #myscreen.addActor(fclpoint) # line from ellipse center to fcc # the offset normal #myscreen.addActor(camvtk.Line( p1=(fclp.x,fclp.y,fclp.z),p2=(fccp.x,fccp.y,fccp.z), color=camvtk.yellow )) drawellipse(myscreen, elc1, a_axis, b_axis) drawellipse(myscreen, elc2, a_axis, b_axis) #convtext = "%i" % (nsteps) #print (pt.x, pt.y, pt.z) #center=(pt.x, pt.y, pt.z) #tst = camvtk.Text3D( color=(1,1,1), center=(pt.x, pt.y, 0) , #text=convtext, scale=0.02) #tst.SetCamera(myscreen.camera) #myscreen.addActor(tst) #colmax=11 #colmin=4 #nsteps = nsteps - colmin #colmax = colmax - colmin #convcolor=( float(nsteps*nsteps)/(colmax), float((colmax-nsteps))/colmax, 0 ) #esphere = camvtk.Sphere(center=(p5.x,p5.y,0), radius=0.01, color=convcolor) #cce = oe.ePoint(epos) #cle = oe.oePoint(epos) #end_sphere = camvtk.Sphere(center=(cce.x,cce.y,0), radius=0.01, color=camvtk.green) #cl_sphere = camvtk.Sphere(center=(cle.x,cle.y,0), radius=0.01, color=camvtk.pink) #cl_sphere.SetOpacity(0.4) #clcir= camvtk.Circle(radius=radius1, center=(cle.x,cle.y,cle.z), color=camvtk.pink) #myscreen.addActor(clcir) #myscreen.addActor(esphere) #myscreen.addActor(end_sphere) #myscreen.addActor(cl_sphere) #myscreen.render() print "done." myscreen.render() lwr.SetFileName(filename) #raw_input("Press Enter to terminate") time.sleep(0.5) #lwr.Write() myscreen.iren.Start()
def main(ycoord=0.970, filename="test"): myscreen = camvtk.VTKScreen() myscreen.camera.SetPosition(2, 5, 5) myscreen.camera.SetFocalPoint(1.38, 1, 0) #ycoord = 1.1 a = cam.Point(3, ycoord, -2) b = cam.Point(-1, ycoord, 3) myscreen.addActor(camvtk.Point(center=(a.x, a.y, a.z), color=(1, 0, 1))) myscreen.addActor(camvtk.Point(center=(b.x, b.y, b.z), color=(1, 0, 1))) #c=cam.Point(0,0,0.3) myscreen.addActor(camvtk.Line(p1=(a.x, a.y, a.z), p2=(b.x, b.y, b.z))) #t = cam.Triangle(a,b,c) cutter = cam.BullCutter(1, 0.2, 20) print(cutter) xar = camvtk.Arrow(color=camvtk.red, rotXYZ=(0, 0, 0)) myscreen.addActor(xar) yar = camvtk.Arrow(color=camvtk.green, rotXYZ=(0, 0, 90)) myscreen.addActor(yar) zar = camvtk.Arrow(color=camvtk.blue, rotXYZ=(0, -90, 0)) myscreen.addActor(zar) cl = cam.Point(2.1748, 1, 0) radius1 = 1 radius2 = 0.25 tor = camvtk.Toroid(r1=radius1, r2=radius2, center=(cl.x, cl.y, cl.z), rotXYZ=(0, 0, 0)) #tor.SetWireframe() #myscreen.addActor(tor) cyl = camvtk.Cylinder(center=(cl.x, cl.y, cl.z), radius=radius1, height=2, color=(0, 1, 1), rotXYZ=(90, 0, 0), resolution=50) #myscreen.addActor(cyl) cl_line = camvtk.Line(p1=(cl.x, cl.y, -100), p2=(cl.x, cl.y, +100), color=camvtk.red) myscreen.addActor(cl_line) tube = camvtk.Tube(p1=(a.x, a.y, a.z), p2=(b.x, b.y, b.z), color=(1, 1, 0)) tube.SetOpacity(0.2) myscreen.addActor(tube) # cylindrical-cutter circle at z=0 plane #cir= camvtk.Circle(radius=radius1, center=(cl.x,cl.y,cl.z), color=camvtk.yellow) #myscreen.addActor(cir) #clp = camvtk.Point(center=(cl.x,cl.y,cl.z)) #myscreen.addActor(clp) # short axis of ellipse = radius2 # long axis of ellipse = radius2/sin(theta) # where theta is the slope of the line dx = b.x - a.x dz = b.z - a.z #print "dx=", dx #print "dz=", dz theta = math.atan(dz / dx) ## dx==0 is special case!! (i.e. vertical lines) print("theta=", theta) a_axis = abs(radius2 / math.sin(theta)) print("a=", a_axis) # ellipse #a=2 b_axis = radius2 print("b= ", b_axis) # slice the tube with a plane at z=0 and find the ellipse center # line is from Point a to b: # a + t*(b-a) # find t so that z-component is zero: # a.z + t( b.z -a.z) = 0 # t= a.z / (b.z - a.z) # so point tparam = -a.z / (b.z - a.z) # NOTE horizontal lines are a special case!! ellcenter = a + tparam * (b - a) print("ellcenter (z=0?) =", ellcenter) # center of the # ecen_tmp=cam.Point(ellcenter,a.y,0) #drawellipse(myscreen, ellcenter, a_axis, b_axis) oe = cam.Ellipse(ellcenter, a_axis, b_axis, radius1) #oe2 = cam.Ellipse(ellcenter, a_axis, b_axis, 0.05) # to locate text on the outside of the ellipse nmax = 20 #delta=0.05 #td = 1 t = camvtk.Text() t.SetPos((myscreen.width - 450, myscreen.height - 30)) myscreen.addActor(t) t2 = camvtk.Text() ytext = "Y: %3.3f" % (ycoord) t2.SetText(ytext) t2.SetPos((50, myscreen.height - 150)) myscreen.addActor(t2) #w2if = vtk.vtkWindowToImageFilter() #w2if.SetInput(myscreen.renWin) #lwr = vtk.vtkPNGWriter() #lwr.SetInput( w2if.GetOutput() ) epos = cam.Epos() epos.setS(0, 1) #epos1.setS(0,1) t.SetText("OpenCAMLib 10.03-beta, " + datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")) #p5 = oe.ePoint(epos5) #pt = oe2.oePoint(epos5) #print "before= ", epos5.s, " , ", epos5.t nsteps = cam.Ellipse.solver(oe, cl) epos = oe.epos1 cce = oe.ePoint(epos) cle = oe.oePoint(epos) #epos2 = cam.Epos() #epos.s = epos.s #epos.t = epos.t #print nsteps print("solution1 at: ", epos.s, " , ", epos.t) #print "solution2 at: ", epos2.s , " , ", epos2.t print(" cl =", cl) print(" cle=", cle) xoffset = cl.x - cle.x print("xoffset= ", xoffset) # we slide xoffset along the x-axis from ellcenter # to find the correct z-plane # line is: a + t*(b-a) # find t so that x-component is ellcenter.x + xoffset # a.x + t(b.x-a.x) = ellcenter.x + xoffset # t= (ellcenter.x + xoffset - a.x) / (b.x - a.x) tparam2 = (ellcenter.x + xoffset - a.x) / (b.x - a.x) slide = tparam2 * (b - a) print("sliding z-delta: ", slide.z) elc2 = a + tparam2 * (b - a) print("ellcenter2=", elc2) #convlist.append(nsteps) fe = cam.Ellipse(elc2, a_axis, b_axis, radius1) fecen = camvtk.Sphere(center=(elc2.x, elc2.y, elc2.z), radius=0.01, color=camvtk.pink) myscreen.addActor(fecen) fccp = fe.ePoint(epos) fclp = fe.oePoint(epos) print("solver cl=", fclp, " == ", cl, " ??") fcir = camvtk.Circle(radius=radius1, center=(cl.x, cl.y, elc2.z), color=camvtk.yellow) myscreen.addActor(fcir) fccpoint = camvtk.Sphere(center=(fccp.x, fccp.y, fccp.z), radius=0.01, color=camvtk.green) myscreen.addActor(fccpoint) fclpoint = camvtk.Sphere(center=(fclp.x, fclp.y, fclp.z), radius=0.01, color=camvtk.blue) myscreen.addActor(fclpoint) # line from ellipse center to fcc myscreen.addActor( camvtk.Line(p1=(elc2.x, elc2.y, elc2.z), p2=(fccp.x, fccp.y, fccp.z), color=camvtk.cyan)) # the offset normal myscreen.addActor( camvtk.Line(p1=(fclp.x, fclp.y, fclp.z), p2=(fccp.x, fccp.y, fccp.z), color=camvtk.yellow)) drawellipse(myscreen, elc2, a_axis, b_axis) #convtext = "%i" % (nsteps) #print (pt.x, pt.y, pt.z) #center=(pt.x, pt.y, pt.z) #tst = camvtk.Text3D( color=(1,1,1), center=(pt.x, pt.y, 0) , #text=convtext, scale=0.02) #tst.SetCamera(myscreen.camera) #myscreen.addActor(tst) colmax = 11 colmin = 4 nsteps = nsteps - colmin colmax = colmax - colmin convcolor = (float(nsteps * nsteps) / (colmax), float( (colmax - nsteps)) / colmax, 0) #esphere = camvtk.Sphere(center=(p5.x,p5.y,0), radius=0.01, color=convcolor) end_sphere = camvtk.Sphere(center=(cce.x, cce.y, 0), radius=0.01, color=camvtk.green) cl_sphere = camvtk.Sphere(center=(cle.x, cle.y, 0), radius=0.01, color=camvtk.pink) cl_sphere.SetOpacity(0.4) clcir = camvtk.Circle(radius=radius1, center=(cle.x, cle.y, cle.z), color=camvtk.pink) myscreen.addActor(clcir) #myscreen.addActor(esphere) myscreen.addActor(end_sphere) myscreen.addActor(cl_sphere) #myscreen.render() print("done.") myscreen.render() lwr.SetFileName(filename) #lwr.Write() #raw_input("Press Enter to terminate") #time.sleep(0.5) myscreen.iren.Start()
def drawScreen(a, b, c, filename, write_flag): print(ocl.version()) myscreen = camvtk.VTKScreen() #a = ocl.Point(0,1,0.3) myscreen.addActor(camvtk.Point(center=(a.x, a.y, a.z), color=(1, 0, 1))) #b = ocl.Point(1,0.5,0.3) myscreen.addActor(camvtk.Point(center=(b.x, b.y, b.z), color=(1, 0, 1))) #c = ocl.Point(-0.1,0.3,0.0) myscreen.addActor(camvtk.Point(center=(c.x, c.y, c.z), color=(1, 0, 1))) myscreen.addActor(camvtk.Line(p1=(a.x, a.y, a.z), p2=(c.x, c.y, c.z))) myscreen.addActor(camvtk.Line(p1=(c.x, c.y, c.z), p2=(b.x, b.y, b.z))) myscreen.addActor(camvtk.Line(p1=(a.x, a.y, a.z), p2=(b.x, b.y, b.z))) t = ocl.Triangle(b, c, a) s = ocl.STLSurf() s.addTriangle(t) # a one-triangle STLSurf zheights = [ -0.3, -0.2, -0.1, -0.05, 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.26, 0.27, 0.28, 0.29 ] # the z-coordinates for the waterlines zheights = [ -0.8, -0.7, -0.6, -0.5, -0.4, -0.3, -0.2, -0.1, -0.05, 0.0, 0.05, 0.1, 0.15, 0.2, 0.28 ] zheights = [ -0.35, -0.3, -0.25, -0.2, -0.15, -0.1, -0.05, 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.28 ] zheights = [] Nmax = 20 zmin = -0.5 zmax = -0.05 dz = (zmax - zmin) / float(Nmax - 1) z = zmin for n in range(Nmax): zheights.append(z) z = z + dz zheights = [] zheights.append(-0.25) #zheights=[ -0.35, -0.25, -0.15, -0.05, 0.05, 0.15, 0.25] #zheights=[ 0.1] length = 10 diam = 0.6 cutter1 = ocl.CylCutter(diam, length) cutter2 = ocl.BallCutter(diam, length) cutter3 = ocl.BullCutter(diam, diam / 5, length) cutter4 = ocl.ConeCutter(diam, math.pi / 5, length) for zh in zheights: #loops = calcWaterline(zh, cutter1, s) #drawLoops(myscreen, loops[0], camvtk.yellow) #loops = calcWaterline(zh, cutter2, s) #drawLoops(myscreen, loops[0], camvtk.green) #loops = calcWaterline(zh, cutter3, s) #drawLoops(myscreen, loops[0], camvtk.yellow) loops = calcWaterline(zh, cutter4, s) drawLoops(myscreen, loops[0], camvtk.pink) #for f in loops[1]: # drawFiber(myscreen, f, camvtk.red) #for f in loops[2]: # drawFiber(myscreen, f, camvtk.lblue) print("done.") myscreen.camera.SetPosition(1, -1, 3) myscreen.camera.SetFocalPoint(0.5, 0.5, 0) camvtk.drawArrows(myscreen, center=(-0.5, -0.5, -0.5)) camvtk.drawOCLtext(myscreen) myscreen.render() """ w2if = vtk.vtkWindowToImageFilter() w2if.SetInput(myscreen.renWin) lwr = vtk.vtkPNGWriter() lwr.SetInput( w2if.GetOutput() ) w2if.Modified() lwr.SetFileName(filename) if write_flag: lwr.Write() print("wrote ",filename) """ time.sleep(1)
import ocl import pyocl import camvtk import time import vtk import datetime import math if __name__ == "__main__": print ocl.version() myscreen = camvtk.VTKScreen() a = ocl.Point(1, 0, 0) myscreen.addActor(camvtk.Point(center=(1, 0, 0), color=(1, 0, 1))) b = ocl.Point(0, 1, 0) myscreen.addActor(camvtk.Point(center=(0, 1, 0), color=(1, 0, 1))) c = ocl.Point(0, 0, 0.3) myscreen.addActor(camvtk.Point(center=(0, 0, 0.3), color=(1, 0, 1))) myscreen.addActor(camvtk.Line(p1=(1, 0, 0), p2=(0, 0, 0.3))) myscreen.addActor(camvtk.Line(p1=(0, 0, 0.3), p2=(0, 1, 0))) myscreen.addActor(camvtk.Line(p1=(1, 0, 0), p2=(0, 1, 0))) t = ocl.Triangle(a, b, c) s = ocl.STLSurf() s.addTriangle(t) diameter = 0.5234 corneradius = 0.1 angle = math.pi / 4 length = 5 cutter = ocl.CylCutter(diameter, length) #cutter = ocl.BallCutter(diameter, length)
if self.s > 0: self.sett(newt, 1) else: self.sett(newt, 0) if __name__ == "__main__": myscreen = camvtk.VTKScreen() myscreen.camera.SetPosition(5, 3, 2) myscreen.camera.SetFocalPoint(1.38, 1, 0) a = cam.Point(3, 2, -2) b = cam.Point(-1, 2, 3) myscreen.addActor(camvtk.Point(center=(a.x, a.y, a.z), color=(1, 0, 1))) myscreen.addActor(camvtk.Point(center=(b.x, b.y, b.z), color=(1, 0, 1))) #c=cam.Point(0,0,0.3) myscreen.addActor(camvtk.Line(p1=(a.x, a.y, a.z), p2=(b.x, b.y, b.z))) #t = cam.Triangle(a,b,c) cutter_length = 2 cutter = cam.BullCutter(1, 0.2, cutter_length) print cutter xar = camvtk.Arrow(color=red, rotXYZ=(0, 0, 0)) myscreen.addActor(xar) yar = camvtk.Arrow(color=green, rotXYZ=(0, 0, 90)) myscreen.addActor(yar) zar = camvtk.Arrow(color=blue, rotXYZ=(0, -90, 0))
print("t=", t.str()) tripoints = t.getPoints() #for pt in tripoints: # print(pt.x, " , ", pt.y, " , ", pt.z) break myscreen.removeActor(stl2) #time.sleep(0.01) #cutter.dropCutterSTL(p, cc, s) clpoints.append(p) ccpoints.append(cc) print("drop-cutter done") for (cl, cc) in zip(clpoints, ccpoints): myscreen.addActor( camvtk.Point(center=(cl.x, cl.y, cl.z), color=camvtk.ccColor(cc))) #myscreen.addActor( camvtk.Point(center=(cc.x,cc.y,cc.z) , color=camvtk.yellow ) ) print("adding point", cl.str()) trilist = pf.getTrianglesUnderCutter(p, cutter) stl2 = camvtk.STLSurf(filename=None, triangleList=trilist, color=camvtk.red) stl2.SetSurface() #myscreen.addActor(stl2) trilist = [] myscreen.render() time.sleep(0.1) #myscreen.removeActor(stl2) #p = plist[2]
def teval(self, s, side): ssq = s*s tsq = 1 - ssq if side == 1: return 1 * math.sqrt(tsq) else: return -1* math.sqrt(tsq) if __name__ == "__main__": myscreen = camvtk.VTKScreen() a=cam.Point(3,2,-2) b=cam.Point(-1,2,3) myscreen.addActor(camvtk.Point(center=(a.x,a.y,a.z), color=(1,0,1))); myscreen.addActor(camvtk.Point(center=(b.x,b.y,b.z), color=(1,0,1))); #c=cam.Point(0,0,0.3) myscreen.addActor( camvtk.Line(p1=(a.x,a.y,a.z),p2=(b.x,b.y,b.z)) ) #t = cam.Triangle(a,b,c) cutter = cam.BullCutter(1,0.2) print cutter.str() xar = camvtk.Arrow(color=red, rotXYZ=(0,0,0)) myscreen.addActor(xar) yar = camvtk.Arrow(color=green, rotXYZ=(0,0,90)) myscreen.addActor(yar) zar = camvtk.Arrow(color=blue, rotXYZ=(0,-90,0))
endcondition=1 if n>125: endcondition=1 n=n+1 return n if __name__ == "__main__": myscreen = camvtk.VTKScreen() myscreen.camera.SetPosition(5, 3, 2) myscreen.camera.SetFocalPoint(1.38,1, 0) a=cam.Point(3,2,-2) b=cam.Point(-1,2,3) myscreen.addActor(camvtk.Point(center=(a.x,a.y,a.z), color=(1,0,1))); myscreen.addActor(camvtk.Point(center=(b.x,b.y,b.z), color=(1,0,1))); #c=cam.Point(0,0,0.3) myscreen.addActor( camvtk.Line(p1=(a.x,a.y,a.z),p2=(b.x,b.y,b.z)) ) #t = cam.Triangle(a,b,c) cutter = cam.BullCutter(1,0.2) print cutter.str() xar = camvtk.Arrow(color=red, rotXYZ=(0,0,0)) #xar.SetFlat() myscreen.addActor(xar) yar = camvtk.Arrow(color=green, rotXYZ=(0,0,90)) #yar.SetGouraud()