Python Tutorials | (back to the list of tutorials) |
Rectangular Panelization![]()
![]()
![]()
![]()
add_library('igeo')
size( 480, 360, IG.GL )
#IG.open("surface1.3dm") #input geometry from 3dm file
IG.open("surface1.obj") #input geometry from OBJ file
surfs = IG.surfaces()
for surf in surfs :
unum = 8
vnum = 8
uinc = 1.0/unum
vinc = 1.0/vnum
for i in range(unum) :
for j in range(vnum) :
pt11 = surf.pt( i*uinc, j*vinc )
pt21 = surf.pt( (i+1)*uinc, j*vinc )
pt12 = surf.pt( i*uinc, (j+1)*vinc )
pt22 = surf.pt( (i+1)*uinc, (j+1)*vinc )
ISurface(pt11, pt21, pt22, pt12).clr(i*uinc,j*vinc,0)
surf.del()
Triangulation![]()
![]()
![]()
![]()
add_library('igeo')
size( 480, 360, IG.GL )
#IG.open("surface1.3dm") #input geometry from 3dm file
IG.open("surface1.obj") #input geometry from OBJ file
surfs = IG.surfaces()
for surf in surfs :
unum = 8
vnum = 8
uinc = 1.0/unum
vinc = 1.0/vnum
for i in range(unum) :
for j in range(vnum) :
pt11 = surf.pt( i*uinc, j*vinc )
pt21 = surf.pt( (i+1)*uinc, j*vinc )
pt12 = surf.pt( i*uinc, (j+1)*vinc )
pt22 = surf.pt( (i+1)*uinc, (j+1)*vinc )
ISurface(pt11, pt21, pt22).clr(i*uinc,0,j*vinc)
ISurface(pt22, pt12, pt11).clr(1-i*uinc)
surf.del()
You can alternate the diagonal line by changing the sequence of points to create triangular surfaces.
![]()
![]()
![]()
![]()
add_library('igeo')
size( 480, 360, IG.GL )
#IG.open("surface1.3dm") #input geometry from 3dm file
IG.open("surface1.obj") #input geometry from OBJ file
surfs = IG.surfaces()
for surf in surfs :
unum = 8
vnum = 8
uinc = 1.0/unum
vinc = 1.0/vnum
for i in range(unum) :
for j in range(vnum) :
pt11 = surf.pt( i*uinc, j*vinc )
pt21 = surf.pt( (i+1)*uinc, j*vinc )
pt12 = surf.pt( i*uinc, (j+1)*vinc )
pt22 = surf.pt( (i+1)*uinc, (j+1)*vinc )
ISurface(pt11, pt21, pt12).clr(0,i*uinc,j*vinc)
ISurface(pt12, pt21, pt22).clr(1-i*uinc)
surf.del()
Diagrid Triangulation
![]()
![]()
![]()
![]()
add_library('igeo')
size( 480, 360, IG.GL )
#IG.open("surface1.3dm") #input geometry from 3dm file
IG.open("surface1.obj") #input geometry from OBJ file
surfs = IG.surfaces()
for surf in surfs :
unum = 8
vnum = 8
uinc = 1.0/unum
vinc = 1.0/vnum
for i in range(unum) :
for j in range(vnum) :
if (i+j)%2 == 0 :
pt1 = surf.pt( i*uinc, j*vinc )
pt2 = surf.pt( (i+1)*uinc, (j-1)*vinc )
pt3 = surf.pt( (i+1)*uinc, (j+1)*vinc )
ISurface(pt1, pt2, pt3).clr(0,i*uinc,j*vinc)
else :
pt1 = surf.pt( (i+1)*uinc, j*vinc )
pt2 = surf.pt( i*uinc, (j+1)*vinc )
pt3 = surf.pt( i*uinc, (j-1)*vinc )
ISurface(pt1, pt2, pt3).clr(1-i*uinc)
surf.del()
To have clear edge and corner condition to fill the original rectangular area of the input surface, you use if conditions to create filling geometries at the corners and the edges.
![]()
![]()
![]()
![]()
add_library('igeo')
size( 480, 360, IG.GL )
#IG.open("surface1.3dm") #input geometry from 3dm file
IG.open("surface1.obj") #input geometry from OBJ file
surfs = IG.surfaces()
for surf in surfs :
unum = 8
vnum = 8
uinc = 1.0/unum
vinc = 1.0/vnum
for i in range(unum) :
for j in range(vnum) :
if (i+j)%2 == 0 :
pt1 = surf.pt( i*uinc, j*vinc )
if j > 0 :
pt2 = surf.pt( (i+1)*uinc, (j-1)*vinc )
else :
pt2 = surf.pt( (i+1)*uinc, j*vinc )
if j < vnum-1 :
pt3 = surf.pt( (i+1)*uinc, (j+1)*vinc )
else :
pt3 = surf.pt( (i+1)*uinc, j*vinc )
ISurface(pt1, pt2, pt3).clr(1,i*uinc,j*vinc)
else :
pt1 = surf.pt( (i+1)*uinc, j*vinc )
if j < vnum-1 :
pt2 = surf.pt( i*uinc, (j+1)*vinc )
else :
pt2 = surf.pt( i*uinc, j*vinc )
if j > 0 :
pt3 = surf.pt( i*uinc, (j-1)*vinc )
else :
pt3 = surf.pt( i*uinc, j*vinc )
ISurface(pt1, pt2, pt3).clr(1-i*uinc)
surf.del()
Diamond Panelization![]()
![]()
![]()
![]()
add_library('igeo')
size( 480, 360, IG.GL )
#IG.open("surface1.3dm") #input geometry from 3dm file
IG.open("surface1.obj") #input geometry from OBJ file
surfs = IG.surfaces()
for surf in surfs :
unum = 10
vnum = 10
uinc = 1.0/unum
vinc = 1.0/vnum
for i in range(unum+1) :
for j in range(vnum) :
if (i+j)%2 == 0 :
pt1 = surf.pt( (i-1)*uinc, j*vinc )
pt2 = surf.pt( i*uinc, (j-1)*vinc )
pt3 = surf.pt( (i+1)*uinc, j*vinc )
pt4 = surf.pt( i*uinc, (j+1)*vinc )
ISurface(pt1, pt2, pt3, pt4).clr(.5,i*uinc,j*vinc)
surf.del()
To have rectangular corners and edges, you use if conditions to create filling triangular surfaces.
![]()
![]()
![]()
![]()
add_library('igeo')
size( 480, 360, IG.GL )
#IG.open("surface1.3dm") #input geometry from 3dm file
IG.open("surface1.obj") #input geometry from OBJ file
surfs = IG.surfaces()
for surf in surfs :
unum = 10
vnum = 10
uinc = 1.0/unum
vinc = 1.0/vnum
for i in range(unum+1) :
for j in range(vnum) :
if (i+j)%2 == 0 :
if i > 0 :
pt1 = surf.pt( (i-1)*uinc, j*vinc )
else :
pt1 = surf.pt( i*uinc, j*vinc )
if i < unum :
pt3 = surf.pt( (i+1)*uinc, j*vinc )
else :
pt3 = surf.pt( i*uinc, j*vinc )
if j > 0 :
pt2 = surf.pt( i*uinc, (j-1)*vinc )
else :
pt2 = surf.pt( i*uinc, j*vinc )
if j< vnum-1 :
pt4 = surf.pt( i*uinc, (j+1)*vinc )
else :
pt4 = surf.pt( i*uinc, j*vinc )
ISurface(pt1, pt2, pt3, pt4).clr(i*uinc,j*vinc,.5)
surf.del()
HOME
FOR PROCESSING
DOWNLOAD
DOCUMENTS
TUTORIALS (Java /
Python)
GALLERY
SOURCE CODE(GitHub)
PRIVACY POLICY
ABOUT/CONTACT