Пример #1
0
Файл: report.c Проект: veox/pcb
static int
ReportDrills (int argc, char **argv, Coord x, Coord y)
{
  DrillInfoType *AllDrills;
  Cardinal n;
  char *stringlist, *thestring;
  int total_drills = 0;
  size_t size_left;

  AllDrills = GetDrillInfo (PCB->Data);

  for (n = 0; n < AllDrills->DrillN; n++)
    {
      total_drills += AllDrills->Drill[n].PinCount;
      total_drills += AllDrills->Drill[n].ViaCount;
    }

  size_left = 512L + AllDrills->DrillN * 64L;
  stringlist = (char *)malloc (size_left);

  /* Use tabs for formatting since can't count on a fixed font anymore.
     |  And even that probably isn't going to work in all cases.
   */
  sprintf (stringlist,
	   _("There are %d different drill sizes used in this layout, %d holes total\n\n"
	   "Drill Diam. (%s)\t# of Pins\t# of Vias\t# of Elements\t# Unplated\n"),
	   AllDrills->DrillN, total_drills, Settings.grid_unit->suffix);

  thestring = stringlist;
  while (size_left > 0 && *thestring != '\0')
    {
      thestring++;
      size_left--;
    }

  for (n = 0; n < AllDrills->DrillN; n++)
    {
      pcb_snprintf (thestring, size_left,
	       "%10m*\t\t%d\t\t%d\t\t%d\t\t%d\n",
	       Settings.grid_unit->suffix,
	       AllDrills->Drill[n].DrillSize,
	       AllDrills->Drill[n].PinCount, AllDrills->Drill[n].ViaCount,
	       AllDrills->Drill[n].ElementN,
	       AllDrills->Drill[n].UnplatedCount);
      while (size_left > 0 && *thestring != '\0')
	{
	  thestring++;
	  size_left--;
	}
    }
  FreeDrillInfo (AllDrills);
  /* create dialog box */
  gui->report_dialog (_("Drill Report"), stringlist);

  free (stringlist);
  return 0;
}
Пример #2
0
static int
ReportDrills (int argc, char **argv, int x, int y)
{
  DrillInfoTypePtr AllDrills;
  Cardinal n;
  char *stringlist, *thestring;
  int total_drills = 0;
  int prec = Settings.grid_units_mm? 4: 2;

  AllDrills = GetDrillInfo (PCB->Data);
  RoundDrillInfo (AllDrills, 100);

  for (n = 0; n < AllDrills->DrillN; n++)
    {
      total_drills += AllDrills->Drill[n].PinCount;
      total_drills += AllDrills->Drill[n].ViaCount;
      total_drills += AllDrills->Drill[n].UnplatedCount;
    }

  stringlist = (char *)malloc (512L + AllDrills->DrillN * 64L);

  /* Use tabs for formatting since can't count on a fixed font anymore.
     |  And even that probably isn't going to work in all cases.
   */
  sprintf (stringlist,
	   "There are %d different drill sizes used in this layout, %d holes total\n\n"
	   "Drill Diam. (%s)\t# of Pins\t# of Vias\t# of Elements\t# Unplated\n",
	   AllDrills->DrillN, total_drills,
	   Settings.grid_units_mm? "mm": "mils");
  thestring = stringlist;
  while (*thestring != '\0')
    thestring++;
  for (n = 0; n < AllDrills->DrillN; n++)
    {
      sprintf (thestring,
	       "\t%.*f\t\t%d\t\t%d\t\t%d\t\t%d\n",
	       prec, units (AllDrills->Drill[n].DrillSize),
	       AllDrills->Drill[n].PinCount, AllDrills->Drill[n].ViaCount,
	       AllDrills->Drill[n].ElementN,
	       AllDrills->Drill[n].UnplatedCount);
      while (*thestring != '\0')
	thestring++;
    }
  FreeDrillInfo (AllDrills);
  /* create dialog box */
  gui->report_dialog ("Drill Report", stringlist);

  free (stringlist);
  return 0;
}