Index: export_openscad.c =================================================================== --- export_openscad.c (revision 14409) +++ export_openscad.c (revision 14410) @@ -46,6 +46,7 @@ #include "misc_util.h" #include "plugins.h" #include "safe_fs.h" +#include "obj_pstk_inlines.h" #include "hid.h" #include "hid_nogui.h" Index: scad_draw.c =================================================================== --- scad_draw.c (revision 14409) +++ scad_draw.c (revision 14410) @@ -114,6 +114,17 @@ pcb_fprintf(f, " cylinder(r=%mm, h=4, center=true, $fn=30);\n", pin->DrillingHole/2); } +static void scad_draw_pstk(const pcb_pstk_t *ps) +{ + pcb_pstk_proto_t *proto = pcb_pstk_get_proto(ps); + +#warning padstack TODO: this ignores bbvias + if (proto->hdia > 0) { + pcb_fprintf(f, " translate([%mm,%mm,0])\n", TRX_(ps->x), TRY_(ps->y)); + pcb_fprintf(f, " cylinder(r=%mm, h=4, center=true, $fn=30);\n", proto->hdia/2); + } +} + static void scad_draw_drills(void) { pcb_rtree_it_t it; @@ -125,6 +136,10 @@ scad_draw_drill((pcb_pin_t *)obj); pcb_r_end(&it); + for(obj = pcb_r_first(PCB->Data->padstack_tree, &it); obj != NULL; obj = pcb_r_next(&it)) + scad_draw_pstk((pcb_pstk_t *)obj); + pcb_r_end(&it); + PCB_PIN_ALL_LOOP(PCB->Data); { scad_draw_drill(pin); } PCB_ENDALL_LOOP;