home processing download documents tutorial python tutorial gallery source about
 Tutorials (back to the list of tutorials)

Panelization Examples

     Panelization Example1

The following is an example of panelization of a surface. It creates diagrid structure, triangulated glazing panels and diagonal fin skins. Here is a sample input file.

surface2.3dm

import processing.opengl.*;
import igeo.*;

size(480,360,IG.GL);

IG.open("surface2.3dm");
ISurface[] surfaces = IG.surfaces();
ISurface surf = surfaces[0];

ILayer layer1 = IG.layer("glazing");
ILayer layer2 = IG.layer("structure");
ILayer layer3 = IG.layer("facade");

int unum = 20, vnum = 30;
double uinc = 1.0/unum, vinc = 1.0/vnum;
for(int i=0; i < unum; i++){
  for(int j=0; j < vnum; j++){
    if( (i+j)%2 == 0 ){
      // glazing panels
      IVec gpt1 = surf.pt( i*uinc, j*vinc );
      IVec gpt2 = surf.pt( (i+1)*uinc, (j-1)*vinc );
      IVec gpt3 = surf.pt( (i+1)*uinc, (j+1)*vinc );
      IVec gpt4 = surf.pt( i*uinc, (j+2)*vinc );
      new ISurface(gpt1,gpt2,gpt3).clr(0,1-.1*i,1-.05*i,.3).layer(layer1);
      new ISurface(gpt3,gpt4,gpt1).clr(.5,1-.1*i,1-.05*i,.3).layer(layer1);

      // diagrid structure
      IVec spt1 = surf.pt( i*uinc, j*vinc, 0.5 );
      IVec spt2 = surf.pt( (i+1)*uinc, (j-1)*vinc, 0.5 );
      IVec spt3 = surf.pt( (i+1)*uinc, (j+1)*vinc, 0.5 );
      new ICylinder(spt1, spt2, 0.2).clr(0.3).layer(layer2);
      new ICylinder(spt1, spt3, 0.2).clr(0.3).layer(layer2);
    }
    // fin skin
    IVec fpt1 = surf.pt( i*uinc, j*vinc );
    IVec fpt2 = surf.pt( (i+1)*uinc, (j+2)*vinc );
    IVec fpt3 = surf.pt( i*uinc, j*vinc, -3.0 );
    IVec fpt4 = surf.pt( (i+1)*uinc, (j+2)*vinc, -3.0 );
    fpt3.rot(fpt1, fpt2.dif(fpt1), i*uinc*PI/2);
    fpt4.rot(fpt1, fpt2.dif(fpt1), i*uinc*PI/2);

    new ISurface(fpt1, fpt2, fpt4, fpt3).layer(layer3);
  }
}
surf.del();

//IG.save("surface2out.3dm"); // saving here or type control+s


(back to the list of tutorials)

HOME
FOR PROCESSING
DOWNLOAD
DOCUMENTS
TUTORIALS (Java / Python)
GALLERY
SOURCE CODE(GitHub)
PRIVACY POLICY
ABOUT/CONTACT