[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: gEDA-user: Just another minor pcb bug
> If Auto enforce DRC clearance is on, lines (traces) starting from a
> pad always snap to one of the pad endpoints.
This appears to be completely intentional, although I don't know the
reason behind it.
if (TEST_FLAG (AUTODRCFLAG, PCB) && Settings.Mode == LINE_MODE)
{
printf("1 %d %d\n", Crosshair.X, Crosshair.Y);
type = SearchScreen (Crosshair.X, Crosshair.Y,
PIN_TYPE | PAD_TYPE | VIA_TYPE, &ptr1, &ptr2,
&ptr3);
printf("2 %d %d\n", Crosshair.X, Crosshair.Y);
LookupConnection (Crosshair.X, Crosshair.Y, True, TO_PCB (1),
FOUNDFLAG);
printf("3 %d %d\n", Crosshair.X, Crosshair.Y);
}
if (type == PIN_TYPE || type == VIA_TYPE)
{
Crosshair.AttachedLine.Point1.X =
Crosshair.AttachedLine.Point2.X = ((PinTypePtr) ptr2)->X;
Crosshair.AttachedLine.Point1.Y =
Crosshair.AttachedLine.Point2.Y = ((PinTypePtr) ptr2)->Y;
}
else if (type == PAD_TYPE)
{
PadTypePtr pad = (PadTypePtr) ptr2;
float d1, d2;
d1 = SQUARE (Crosshair.X - pad->Point1.X) +
SQUARE (Crosshair.Y - pad->Point1.Y);
d2 = SQUARE (Crosshair.X - pad->Point2.X) +
SQUARE (Crosshair.Y - pad->Point2.Y);
if (d2 < d1)
{
Crosshair.AttachedLine.Point1 =
Crosshair.AttachedLine.Point2 = pad->Point2;
}
else
{
Crosshair.AttachedLine.Point1 =
Crosshair.AttachedLine.Point2 = pad->Point1;
}
}
else
{
Crosshair.AttachedLine.Point1.X =
Crosshair.AttachedLine.Point2.X = Crosshair.X;
Crosshair.AttachedLine.Point1.Y =
Crosshair.AttachedLine.Point2.Y = Crosshair.Y;
}
_______________________________________________
geda-user mailing list
geda-user@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user