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

Re: gEDA-user: PCB: Pin shapes



Hi

> There's been an example of elongated pads in the newlib for 19 months. It's
> in newlib/tests/14DIP_oval_pad.
> It adds SMD pads to the top and bottom of the board coincident with the
> pins. Pcb is happy to handle that.

I stumbled across this file when I experimented with Stephen Meiers example.
This is exactly what I was looking for. Thanks to anybody who
helped me with this.

However I encountered another problem when printing my design. If I
create a pcb for manual drilling I normally set the drill size to a very
small value. I then print the layout including the holes. So the drillholes
appear empty and thus the copper gets etched away. This helps me aligning
the drill bit.

The actual problem is that PCB does print the pins first an then the pads.
This means that in Postscript output the pinholes are covered. I did
rearange the order of printing in print.c. This seems to solve the
problem for me, but I don't know whether this breaks something else.

Anyway, here is the rearangement hack as patch against the 2004/09/03 snapshot.

Detlef
--- pcb-20040903/src/print.c.orig	2004-08-30 04:52:04.000000000 +0200
+++ pcb-20040903/src/print.c	2004-10-16 14:31:37.000000000 +0200
@@ -507,6 +507,30 @@
   /* now print the pins/pads and vias */
   if (manageFile)
     SetPrintColor (PCB->PinColor);
+
+  if (group == component)
+    {
+      if (GlobalOutlineFlag)
+	FPrintOutline ();
+      ALLPAD_LOOP (PCB->Data);
+      {
+	if (!TEST_FLAG (ONSOLDERFLAG, pad))
+	  Device->Pad (pad, 0);
+      }
+      ENDALL_LOOP;
+    }
+  else if (group == solder)
+    {
+      if (GlobalOutlineFlag)
+	FPrintOutline ();
+      ALLPAD_LOOP (PCB->Data);
+      {
+	if (TEST_FLAG (ONSOLDERFLAG, pad))
+	  Device->Pad (pad, 0);
+      }
+      ENDALL_LOOP;
+    }
+
   ALLPIN_LOOP (PCB->Data);
   {
     if (!TEST_FLAG (HOLEFLAG, pin))
@@ -549,28 +573,7 @@
       }
   }
   END_LOOP;
-  if (group == component)
-    {
-      if (GlobalOutlineFlag)
-	FPrintOutline ();
-      ALLPAD_LOOP (PCB->Data);
-      {
-	if (!TEST_FLAG (ONSOLDERFLAG, pad))
-	  Device->Pad (pad, 0);
-      }
-      ENDALL_LOOP;
-    }
-  else if (group == solder)
-    {
-      if (GlobalOutlineFlag)
-	FPrintOutline ();
-      ALLPAD_LOOP (PCB->Data);
-      {
-	if (TEST_FLAG (ONSOLDERFLAG, pad))
-	  Device->Pad (pad, 0);
-      }
-      ENDALL_LOOP;
-    }
+
 
   /* print drill-helper if requested */
   if (GlobalDrillHelperFlag && Device->DrillHelper)