#!/usr/bin/perl use Math::Complex; use Math::Trig; #### #### All Code by Steve Michel #### $UPI = 1016; #### 1016 plt units per inch $VSspeed = "VS1;"; $StartOld = "temp"; #$DestOld = "temp"; $DestOld = "0,0;"; $dxfFile = $ARGV[0]; my @split_dxfFile = split(/\\/, $dxfFile); my $dxfFileName = $split_dxfFile[$#split_dxfFile]; my @split_dxfFile2 = split(/\./, $dxfFile); my $dxfFileRoot = $split_dxfFile2[0]; my $path = join("\\", @split_dxfFile[0 .. ($#split_dxfFile-1)]); print ("opening file... " . $path . "\\" . $dxfFileName . "\n" ); print ("writing file... " . $dxfFileRoot . "_PLT.plt\n\n\n" ); print ("more " . $dxfFileRoot . "_PLT.plt\n" ); open (FILEHANDLE, $dxfFile); while () { push(@lines,$_) } #print join("\n", @lines); $listNum = @lines; #print ($listNum); open (FILE, ">" . $dxfFileRoot . "_PLT.plt"); print FILE ("IN;\n"); print FILE ($VSspeed . "\n"); print FILE ("SP1;\n"); #print FILE ("PU0,0;\n"); for ($Loop = 0; $Loop <= $listNum; $Loop++){ chomp ($lines[$Loop]); } for ($Loop = 0; $Loop <= $listNum; $Loop++){ $TEMP = $lines[$Loop]; if ($TEMP eq "LINE"){ $Xs = $lines[$Loop + 6]/.025400 ; $Ys = $lines[$Loop + 8]/.025400 ; $Zs = $lines[$Loop + 10]/.025400 ; $Xs = int($Xs * $UPI); $Ys = int($Ys * $UPI); $Zs = int($Zs * $UPI); $Xd = $lines[$Loop + 12]/.025400 ; $Yd = $lines[$Loop + 14]/.025400 ; $Zd = $lines[$Loop + 16]/.025400 ; $Xd = int($Xd * $UPI); $Yd = int($Yd * $UPI); $Zd = int($Zd * $UPI); $Start = $Xs . "," . $Ys . ";"; $Dest = $Xd . "," . $Yd . ";"; if ($Start ne $DestOld){ $Start1 = $Xs . "," . $Ys . ";"; print FILE ("PU" . $DestOld . "\n"); print FILE ("PU" . $Start1 . "\n"); print FILE ("PD" . $Start1 . "\n"); print FILE ("PD" . $Dest . "\n"); } if ($Start eq $DestOld){ $Start1 = $Xs . "," . $Ys . ";"; print FILE ("PD" . $Dest . "\n"); } $StartOld = $Start; $DestOld = $Dest; } } print FILE ("PU;PU;SP0;\n"); close FILE; __END__ :endofperl