コード例 #1
0
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)
コード例 #2
0
                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=[]
コード例 #3
0
ファイル: pfinish_tst_1.py プロジェクト: zougloub/opencamlib
     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()
コード例 #4
0
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
コード例 #5
0
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()
コード例 #6
0
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()
コード例 #7
0
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)
コード例 #8
0
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)
コード例 #9
0
            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))
コード例 #10
0
ファイル: bug20100329.py プロジェクト: zachGummow/opencamlib
                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]
コード例 #11
0
ファイル: oellipse0_tst.py プロジェクト: sveitser/opencamlib
    
    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))
コード例 #12
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()