[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

gEDA-user: pstoedit patch for the pcb driver



Someone mentioned that the output produced by the pstoedit pcb driver had the board size set to a size which was too big and also I noticed that the silk is sometimes off the board anyway. Attached is a diff against pstoedit-3.41 that sizes the board based on the postscript bounding box and it also offsets the silk so the silk starts at 0,0 and fills the board.

Mark, if you're listening and agree with this, would you care to submit it back to the pstoedit maintainer?

-Dan
--- drvpcb2.cpp.orig	2009-02-16 17:44:37.000000000 -0500
+++ drvpcb2.cpp	2009-02-16 18:11:10.000000000 -0500
@@ -30,4 +30,6 @@
 
 
+#define PCB_SILK_W 1000
+const float SCALE = (100000.0f/72.0f);
 
 drvPCB2::derivedConstructor(drvPCB2):
@@ -36,7 +38,4 @@
 {
 // driver specific initializations
-  outf << "PCB[\"\" 600000 500000]\n\n";
-  outf << "Grid[2000.00000000 0 0 0]\n\n";
-  outf << "Layer(10 \"silk\")\n(\n";
 }
 
@@ -55,6 +54,21 @@
 {
   //	outf << "#Neue Seite\n";
+  BBox mybox;
+  long int width_p01_mil, height_p01_mil;
+
+  mybox = getCurrentBBox();
+  
+  x_offset = -mybox.ll.x_ + 0.5*PCB_SILK_W/SCALE ;
+  y_offset = mybox.ur.y_ + 0.5*PCB_SILK_W/SCALE;
+
+  width_p01_mil  = (long int) ((mybox.ur.x_  - mybox.ll.x_) * SCALE + PCB_SILK_W);
+  height_p01_mil = (long int) ((mybox.ur.y_  - mybox.ll.y_) * SCALE + PCB_SILK_W);
+  
+
+  outf << "PCB[\"\" " << width_p01_mil << " " << height_p01_mil << "]\n\n";
+  outf << "Grid[2000.00000000 0 0 0]\n\n";
+  outf << "Layer(10 \"silk\")\n(\n";
+
 }
-const float SCALE = (100000.0f/72.0f);
 
 void drvPCB2::show_path()
@@ -67,8 +81,9 @@
 		const Point & p = pathElement(n).getPoint(0);
 		outf << "Line[";
-		outf << (int)(p1.x_*SCALE) << " " 
-                     << (int)(500000-p1.y_*SCALE) << " " 
-                     << (int)(p.x_*SCALE) << " " 
-                     << (int)(500000-p.y_*SCALE) << " 1000 2000 0x00000020]\n";
+		outf << (int)( (x_offset + p1.x_)*SCALE + 0.5) << " " 
+                     << (int)((y_offset - p1.y_)*SCALE + 0.5) << " " 
+                     << (int)((x_offset + p.x_)*SCALE + 0.5) << " " 
+                     << (int)((y_offset - p.y_)*SCALE + 0.5) << " " 
+		     << PCB_SILK_W << " 2000 0x00000020]\n";
 	}
 }

_______________________________________________
geda-user mailing list
geda-user@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user