Index: work/alien_formats/altium/pcbdoc_bin.c =================================================================== --- work/alien_formats/altium/pcbdoc_bin.c (revision 35463) +++ work/alien_formats/altium/pcbdoc_bin.c (revision 35464) @@ -231,3 +231,31 @@ } } + +int pcbdoc_bin_parse_fills6(rnd_hidlib_t *hidlib, altium_tree_t *tree, ucdf_file_t *fp, altium_buf_t *tmp) +{ + for(;;) { + unsigned char *d; + int rectype; + long len; + + len = read_rec_tlb(fp, tmp, &rectype); + if (len <= 0) + return len; + if (rectype != 6) { + rnd_message(RND_MSG_ERROR, "Fills6 record with wrong type; expected 6, got %d\n", rectype); + continue; + } + if (len < 46) { + rnd_message(RND_MSG_ERROR, "Fills6 record too short; expected 46, got %ld\n", len); + continue; + } + + d = tmp->data; + + printf("fill: layer=%d ko=%d net=%ld comp=%ld u=%d\n", d[0], d[1], load_int(d+3, 2), load_int(d+7, 2), d[45]); + printf(" x1=%.2f y1=%.2f x2=%.2f y2=%.2f rot=%.3f dir2=%.3f\n", bmil(d+13), bmil(d+17), bmil(d+21), bmil(d+25), load_dbl(d+29), load_dbl(d+38)); + + } +} + Index: work/alien_formats/altium/test.c =================================================================== --- work/alien_formats/altium/test.c (revision 35463) +++ work/alien_formats/altium/test.c (revision 35464) @@ -3,7 +3,7 @@ #include "pcbdoc_ascii.h" #include "pcbdoc_bin.h" -int pcbdoc_bin_parse_texts6(rnd_hidlib_t *hidlib, altium_tree_t *tree, ucdf_file_t *fp, altium_buf_t *tmp); +int pcbdoc_bin_parse_fills6(rnd_hidlib_t *hidlib, altium_tree_t *tree, ucdf_file_t *fp, altium_buf_t *tmp); int main(int argc, char *argv[]) { @@ -20,7 +20,7 @@ exit(1); } - res = pcbdoc_bin_parse_texts6(&hidlib, &tree, f, &tmp); + res = pcbdoc_bin_parse_fills6(&hidlib, &tree, f, &tmp); printf("res=%d @ %ld\n", res, ftell(f));