#!/usr/local/bin/perl use CGI; $q = new CGI; $studname = "Hari"; $naid = "123456-7"; if ($q -> param('submit') eq "Submit") { record_data(); save_data(); to_vrml(); create_form_two(); } elsif ($q -> param('submit') eq "View_VRML") { show_vrml(); } else { create_form(); } sub create_form { print $q -> header; print $q -> start_html; print $q -> start_multipart_form; print $q -> h1('
Blocks Assignment Submission Form
'); print "


"; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print "
"; print "Student Name : "; print $q -> textfield('studname'); print "
"; print "Comment: "; print $q -> textfield('comment'); print "
"; print "File : "; print $q -> filefield(-name => 'assignment', -default => 'null', -size => 20, -maxlength => 80); print "
"; print "

"; print $q -> reset; print $q -> submit(-name => 'submit', -value => "Submit"); print $q -> endform; print $q -> end_html; } sub record_data { $studname = $q -> param('studname'); $comment = $q -> param('comment'); $file = $q->param('assignment'); $ENV{'PATH'} = '/bin:/usr/bin'; $path = $ENV{'PATH'}; $tmpfile = $q->tmpFileName($file); $date = `date`; chop $date; } sub save_data { open(IN, ">typescript"); while($line = <$file>) { $line =~ s/\r\n/\n/; print IN "$line"; } close (IN); } sub create_form_two { print $q->header(-type => 'text/html'); print $q->start_html; print $q->start_form; print $q->h3('Your assignment has been submitted successfully'); print "

"; print "You can view the VRML world by clicking on the submit button now"; print "VRML WORLD"; print "
"; print $q->reset; print $q->submit(-name => 'submit', -value => 'View_VRML'); print $q->endform; print $q->end_html; } sub show_vrml { print $q -> header(-type => 'x-world/x-vrml'); open(IN, ") { print "$_"; } close(IN); } sub to_vrml { open(IN, "temp") || die "Cannot open file Junk"; $step = 1; while($line = ) { if ($line =~ /\bNIL\D\bNIL/) { $flag = 1; } if ($line =~ /\bshow-stack/) { $step++; print OUT "\n --- STEP $step --- \n\n"; $flag = 0; } if ($line =~ /\>\s\(\bput-[a-z]+\s\'[a-z]\s\'[a-z]\)/) { print OUT $line; } if ($flag eq 0) { print OUT $line; } } close(IN); close(OUT); #---------------------------------------------------- #--------------------------------------------------- open(IN, "junk.wrl") || die "cannot open file junk.wrl"; print OUT "#VRML V2.0 utf8\n\n"; print OUT "\n\n"; print OUT "Background {\n"; print OUT "groundAngle [ 0.9, 1.5, 1.57 ]\n"; print OUT "groundColor [\n"; print OUT "0 0.2 0.5,\n"; print OUT "0 0.2 0.5,\n"; print OUT "0 0.2 0.5,\n"; print OUT "0 0.2 0.60\n"; print OUT "]\n"; print OUT "skyAngle [ 0.9, 1.5, 1.57 ]\n"; print OUT "skyColor [\n"; print OUT "0.21 0.18 0.66,\n"; print OUT "0.2 0.44 0.65,\n"; print OUT "0.51 0.81 0.65,\n"; print OUT "0.77 0.8 0.82\n"; print OUT "]\n"; print OUT "}\n\n"; print OUT "DEF Entry Viewpoint {\n"; print OUT "position -15 4 -10\n"; print OUT "description \"Entry View\"\n "; print OUT "}\n\n"; print OUT "DEF Overview Viewpoint {\n"; print OUT "position 0 25 30\n"; print OUT "description \"OverView\"\n "; print OUT "}\n\n"; print OUT "Transform {\n"; print OUT "translation -22 2 -20\n"; print OUT "children [\n"; print OUT "\tShape {\n"; print OUT "\t\tappearance Appearance{\n"; print OUT "\t\t\tmaterial Material{\n"; print OUT "\t\t\t\tdiffuseColor 1 0 0\n"; print OUT "\t\t\t}\n"; print OUT "\t\t}\n"; print OUT "\t\tgeometry Text {\n"; print OUT "\tstring \[\"Name : $studname\" \]\n"; print OUT "\t\tfontStyle FontStyle {\n"; print OUT "\t\t\tsize 0.5\n"; print OUT "\t\t}\n"; print OUT "\t} #geometry\n"; print OUT "\t} #shape\n"; print OUT "]\n"; print OUT "}\n\n"; print OUT "Transform {\n"; print OUT "translation -22 1.5 -20\n"; print OUT "children [\n"; print OUT "\tShape {\n"; print OUT "\t\tappearance Appearance{\n"; print OUT "\t\t\tmaterial Material{\n"; print OUT "\t\t\t\tdiffuseColor 1 0 0\n"; print OUT "\t\t\t}\n"; print OUT "\t\t}\n"; print OUT "\t\tgeometry Text {\n"; print OUT "\tstring \[\"Comment : $comment\" \]\n"; print OUT "\t\tfontStyle FontStyle {\n"; print OUT "\t\t\tsize 0.5\n"; print OUT "\t\t}\n"; print OUT "\t} #geometry\n"; print OUT "\t} #shape\n"; print OUT "]\n"; print OUT "}\n\n"; print OUT "Transform {\n"; print OUT "translation -22 1 -20\n"; print OUT "children [\n"; print OUT "\tShape {\n"; print OUT "\t\tappearance Appearance{\n"; print OUT "\t\t\tmaterial Material{\n"; print OUT "\t\t\t\tdiffuseColor 1 0 0\n"; print OUT "\t\t\t}\n"; print OUT "\t\t}\n"; print OUT "\t\tgeometry Text {\n"; print OUT "\tstring \[\"Date : $date\" \]\n"; print OUT "\t\tfontStyle FontStyle {\n"; print OUT "\t\t\tsize 0.5\n"; print OUT "\t\t}\n"; print OUT "\t} #geometry\n"; print OUT "\t} #shape\n"; print OUT "]\n"; print OUT "}\n\n"; print OUT "Transform {\n"; print OUT "translation -3 25 20\n"; print OUT "children [\n"; print OUT "\tShape {\n"; print OUT "\t\tappearance Appearance{\n"; print OUT "\t\t\tmaterial Material{\n"; print OUT "\t\t\t\tdiffuseColor 1 0 0\n"; print OUT "\t\t\t}\n"; print OUT "\t\t}\n"; print OUT "\t\tgeometry Text {\n"; print OUT "\tstring \[\"OverView\" \]\n"; print OUT "\t} #geometry\n"; print OUT "\t} #shape\n"; print OUT "]\n"; print OUT "}\n\n"; $step++; $decrement = 0; $step = 0; $obj = ""; $string = "Initial State"; while () { $line = $_; $pattern = $line; if ($pattern = /\>\s(\(\bput-[a-z]+\s\'([a-z])\s\'([a-z])\))\n/) { $source = $2; $target = $3; $string = $1; } if ($pattern = /^(TABLE)\s\n/) { $obj = $1; $flag = 0; } if ($pattern = /^([A-Z])\s\n/) { $obj = lc($1); $flag = 1; } if ($pattern = /\bSTEP\b\D*(\d+)/) { $value3 = $decrement - 30; $strpos = $value3 - 15; print OUT "Transform {\n"; print OUT "translation 7 -3 $strpos\n"; print OUT "children [\n"; print OUT "\tShape {\n"; print OUT "\t\tappearance Appearance{\n"; print OUT "\t\t\tmaterial Material{\n"; print OUT "\t\t\t\tdiffuseColor 1 0 0\n"; print OUT "\t\t\t}\n"; print OUT "\t\t}\n"; print OUT "\t\tgeometry Text {\n"; print OUT "\tstring \[\"Step $step \: $string\" \]\n"; print OUT "\t} #geometry\n"; print OUT "\t} #shape\n"; print OUT "]\n"; print OUT "}\n\n"; #For Touch Sensor print OUT "\n"; print OUT "DEF Step$step Viewpoint {\n"; print OUT "position 3 3 $value3\n"; print OUT "description \"Step $step\"\n "; print OUT "}\n"; $step++; print OUT "\n# This is Step $1\n"; { $decrement = $decrement - 50; } } if ($pattern = /\bCOLOR/) { if ($pattern = /\bRED/) { $color = "1 0 0"; } if ($pattern = /\bGREEN/) { $color = "0 1 0"; } if ($pattern = /\bBLUE/) { $color = "0 0 1"; } else { $color = "1 0 1"; } } if ($pattern = /^[TABLE]/) { $color = "0 0 0"; } if ($pattern = /\bSIZE/){ print OUT "\nDEF Object$obj Transform {\n"; if ($pattern = /\bPOSITION\b\D*(\d+) (\d+) (\d+)\b\D*/) { $varX = $1; $varY = $3; $varZ = $decrement + $2; $handX = $varX; $handY = $varY; $handZ = $varZ; $newY = $varY + 2; if (($obj =~ m/$source/i) && ($flag == 1)) { print OUT "\n"; $puthand = 1; } if ($flag == 1) { print OUT "translation $varX $varY $varZ\n"; } else { print OUT "translation $varX -1.5 $varZ\n"; } } print OUT "\tchildren [\n"; if (($pattern = /\bBRICK/) || ($pattern = /\bTABLE/)) { $object = "Box"; } if ($pattern = /\bPYRAMID/) { $object = "Cone"; } if ($pattern = /\bSPHERE/) { $object = "Sphere"; } print OUT "\t\tShape {geometry $object "; if (($object eq "Cone") && ($pattern = /\bSIZE\b\D*(\d+)\b\D*/)) { { $output = $1} print OUT " { }\n"; } if (($object eq "Box") && ($pattern = /\bSIZE\b\D*(\d+) (\d+) (\d+)\b\D*/)) { { $output = "$1 $2 $3"} if ($puthand == 1) { $height = $2; } print OUT " { size $output }\n"; } if (($object eq "Sphere") && ($pattern = /\bSIZE\b\D*(\d+)\b\D*/)) { { $output = $1} print OUT " { }\n"; } print OUT "\t\t\tappearance Appearance {\n"; print OUT "\t\t\t texture ImageTexture {url \"$obj.JPG\"}\n"; print OUT "\t\t\t material Material { emissiveColor $color }\n"; print OUT "\t\t\t}\n"; print OUT "\t\t}\n"; print OUT "\t]\n"; print OUT "}\n"; if ($puthand == 1) { $puthand = 0; print OUT "# $obj\n"; $handY = $handY + $height; print OUT "Transform {\n"; print OUT "translation $handX $handY $handZ\n"; print OUT "children [\n"; print OUT "Shape {geometry Box { size 2 2 2 }\n"; print OUT "appearance Appearance {\n"; print OUT "texture ImageTexture {url \"hando.jpg\"}\n"; print OUT "material Material { emissiveColor 0 0 1 }\n"; print OUT "}\n"; print OUT "}\n"; print OUT "]\n"; print OUT "}\n\n"; } } } close(IN); close(OUT); }