Python Tutorials | (back to the list of tutorials) |
add_library('igeo') size(480, 360, IG.GL) IG.open("surface9.3dm") surfaces = IG.surfaces() surfA = surfaces[0] surfB = surfaces[1] unum = 10 vnum = 10 uinc = 1.0/unum vinc = 1.0/vnum for i in range(unum) : for j in range(vnum) : ptA = surfA.pt( i*uinc, j*vinc ) ptB = surfB.pt( i*uinc, j*vinc ) ICurve(ptA, ptB).clr(1.0,0,0)
Then multiple points on each surface are sampled in the for-loop body and used to build more connections.
add_library('igeo') size(480, 360, IG.GL) IG.open("surface9.3dm") surfaces = IG.surfaces() surfA = surfaces[0] surfB = surfaces[1] unum = 10 vnum = 10 uinc = 1.0/unum vinc = 1.0/vnum for i in range(unum) : for j in range(vnum) : ptA11 = surfA.pt( i*uinc, j*vinc ) ptA21 = surfA.pt( (i + 1)*uinc, j*vinc ) ptA12 = surfA.pt( i*uinc, (j + 1)*vinc) ptA22 = surfA.pt( (i + 1)*uinc, (j + 1)*vinc ) ptB11 = surfB.pt( i*uinc, j*vinc ) ptB21 = surfB.pt( (i + 1)*uinc, j*vinc ) ptB12 = surfB.pt( i*uinc, (j + 1)*vinc) ptB22 = surfB.pt( (i + 1)*uinc, (j + 1)*vinc ) ICurve(ptA11, ptB11).clr(1.,0,0) ICurve(ptA11, ptB22).clr(0,0,0.5) ICurve(ptA12, ptB12).clr(1.0,0,1.0) ICurve(ptA12, ptB21).clr(0.5,0,0.5) ICurve(ptA21, ptB11).clr(0) surfA.del() surfB.del()
Then those lines are piped with cylinders and triangular panels are added on the both sides.
add_library('igeo') size(480, 360, IG.GL) IG.open("surface9.3dm") surfaces = IG.surfaces() surfA = surfaces[0] surfB = surfaces[1] unum = 10 vnum = 10 uinc = 1.0/unum vinc = 1.0/vnum for i in range(unum) : for j in range(vnum) : ptA11 = surfA.pt( i*uinc, j*vinc ) ptA21 = surfA.pt( (i + 1)*uinc, j*vinc ) ptA12 = surfA.pt( i*uinc, (j + 1)*vinc) ptA22 = surfA.pt( (i + 1)*uinc, (j + 1)*vinc ) ptB11 = surfB.pt( i*uinc, j*vinc ) ptB21 = surfB.pt( (i + 1)*uinc, j*vinc ) ptB12 = surfB.pt( i*uinc, (j + 1)*vinc) ptB22 = surfB.pt( (i + 1)*uinc, (j + 1)*vinc ) # triangular panels ISurface(ptA11,ptA21,ptA22).clr(i*uinc,j*vinc,0,0.5) ISurface(ptA22,ptA12,ptA11).clr(i*uinc,j*vinc,0,0.5) ISurface(ptB11,ptB21,ptB12).clr(0,i*uinc,j*vinc,0.5) ISurface(ptB21,ptB22,ptB12).clr(0,i*uinc,j*vinc,0.5) # frame of panels (square-piping with degree 1, closed) size = 0.2 IG.squarePipe([ptA11,ptA21,ptA22],1,True,size).clr(.2) IG.squarePipe([ptA22,ptA12,ptA11],1,True,size).clr(0.2) IG.squarePipe([ptB11,ptB21,ptB12],1,True,size).clr(0.2) IG.squarePipe([ptB21,ptB22,ptB12],1,True,size).clr(0.2) # pipe between two surfaces radius = 0.1 ICylinder(ptA11, ptB11, radius).clr(1.,0,0) ICylinder(ptA11, ptB22, radius).clr(0,0,0.5) ICylinder(ptA12, ptB12, radius).clr(1.0,0,1.0) ICylinder(ptA12, ptB21, radius).clr(0.5,0,0.5) ICylinder(ptA21, ptB11, radius).clr(0) surfA.del() surfB.del()