Пример #1
0
def main():
    """
    Entry point for readdxf.py.
    """
    args = process_arguments()
    for f in ut.xpand(args.files):
        print('Filename: {}'.format(f))
        try:
            data = dx.parse(f)
            if args.verbose:
                for d in data:
                    pprint.pprint(d)
            entities = dx.entities(data)
        except Exception as ex:
            logging.info('skipping file {}: {}'.format(f, ex))
            continue
        if not args.all:
            numbered = dx.numberedlayers(entities)
            bylayer = {nm: dx.fromlayer(entities, nm) for nm in numbered}
            entities = []
            for layerent in bylayer.values():
                entities += layerent
        num = len(entities)
        if num == 0:
            logging.warning('no entities found!')
            continue
        print('Contains: {} entities'.format(num))
        if args.verbose:
            for e in entities:
                pprint.pprint(e)
        layers = dx.layernames(entities)
        for layer in layers:
            print('Layer: "{}"'.format(layer))
            for e in dx.fromlayer(entities, layer):
                printent(e, args.verbose)
Пример #2
0
def main():
    """
    Entry point for readdxf.py.
    """
    args = process_arguments()
    for f in ut.xpand(args.files):
        print('Filename: {}'.format(f))
        try:
            data = dx.parse(f)
            if args.verbose:
                for d in data:
                    pprint.pprint(d)
            entities = dx.entities(data)
        except Exception as ex:
            logging.info('skipping file {}: {}'.format(f, ex))
            continue
        if not args.all:
            numbered = dx.numberedlayers(entities)
            bylayer = {nm: dx.fromlayer(entities, nm) for nm in numbered}
            entities = []
            for layerent in bylayer.values():
                entities += layerent
        num = len(entities)
        if num == 0:
            logging.warning('no entities found!')
            continue
        print('Contains: {} entities'.format(num))
        if args.verbose:
            for e in entities:
                pprint.pprint(e)
        layers = dx.layernames(entities)
        for layer in layers:
            print('Layer: "{}"'.format(layer))
            for e in dx.fromlayer(entities, layer):
                printent(e, args.verbose)
Пример #3
0
def test_entities():
    global ents
    ents = dxf.entities(data)
    start = ((0, 'LINE'), (5, '359'), (330, '475'), (100, 'AcDbEntity'),
             (8, 'deel 1'), (100, 'AcDbLine'), (10, '999.9999999999984'),
             (20, '100.0'), (30, '0.0'), (11, '1100.0'), (21, '100.0'),
             (31, '0.0'))
    end = ((0, 'LINE'), (5, '37A'), (330, '475'), (100, 'AcDbEntity'),
           (8, 'deel 1'), (100, 'AcDbLine'), (10, '999.9999999999982'),
           (20, '575.0'), (30, '0.0'), (11, '999.9999999999982'),
           (21, '600.0'), (31, '0.0'))
    assert len(ents) == 16
    assert ents[0] == start
    assert ents[-1] == end
Пример #4
0
def test_entities():
    global ents
    ents = dxf.entities(data)
    start = (
        (0, 'LINE'), (5, '359'), (330, '475'), (100, 'AcDbEntity'), (8, 'deel 1'),
        (100, 'AcDbLine'), (10, '999.9999999999984'), (20, '100.0'), (30, '0.0'), (11, '1100.0'),
        (21, '100.0'), (31, '0.0')
    )
    end = (
        (0, 'LINE'), (5, '37A'), (330, '475'), (100, 'AcDbEntity'), (8, 'deel 1'),
        (100, 'AcDbLine'), (10, '999.9999999999982'), (20, '575.0'), (30, '0.0'),
        (11, '999.9999999999982'), (21, '600.0'), (31, '0.0')
    )
    assert len(ents) == 16
    assert ents[0] == start
    assert ents[-1] == end
Пример #5
0
def main():
    """
    Entry point for dxf2nc.py.
    """
    args = process_arguments()
    sorters = {'xy': utils.bbxykey, 'yx': utils.bbyxkey, 'dist': utils.distkey}
    sortkey = sorters[args.sort]
    lines.epsilon = args.dist
    for f in utils.xpand(args.files):
        logging.info('Starting file "{}"'.format(f))
        try:
            ofn = utils.outname(f, extension='.nc')
            data = dx.parse(f)
            entities = dx.entities(data)
        except ValueError as ex:
            logging.info(str(ex))
            fns = "error during processing. Skipping file '{}'."
            logging.error(fns.format(f))
            continue
        except IOError as ex:
            logging.info(str(ex))
            logging.error("i/o error in file '{}'. Skipping it.".format(f))
            continue
        layers = dx.numberedlayers(entities)
        entities = [e for e in entities if dx.bycode(e, 8) in layers]
        num = len(entities)
        if num == 0:
            logging.info("no entities found! Skipping file '{}'.".format(f))
            continue
        logging.info('{} entities found.'.format(num))
        out = gerbernc.Writer(ofn)
        for layername in layers:
            out.newpiece()
            thislayer = dx.fromlayer(entities, layername)
            ls = '{} entities found in layer "{}".'
            logging.info(ls.format(len(thislayer), layername))
            segments = lines.mksegments(thislayer)
            fs = '{} segments in layer "{}"'
            logging.info(fs.format(len(segments), layername))
            if args.contours:
                cut_contours(segments, out, layername, sortkey)
            else:
                segments.sort(key=sortkey)
                cut_segments(segments, out)
        out.write()
Пример #6
0
def main():
    """
    Entry point for dxf2nc.py.
    """
    args = process_arguments()
    sorters = {'xy': utils.bbxykey, 'yx': utils.bbyxkey, 'dist': utils.distkey}
    sortkey = sorters[args.sort]
    lines.epsilon = args.dist
    for f in utils.xpand(args.files):
        logging.info('Starting file "{}"'.format(f))
        try:
            ofn = utils.outname(f, extension='.nc')
            data = dx.parse(f)
            entities = dx.entities(data)
        except ValueError as ex:
            logging.info(str(ex))
            fns = "error during processing. Skipping file '{}'."
            logging.error(fns.format(f))
            continue
        except IOError as ex:
            logging.info(str(ex))
            logging.error("i/o error in file '{}'. Skipping it.".format(f))
            continue
        layers = dx.numberedlayers(entities)
        entities = [e for e in entities if dx.bycode(e, 8) in layers]
        num = len(entities)
        if num == 0:
            logging.info("no entities found! Skipping file '{}'.".format(f))
            continue
        logging.info('{} entities found.'.format(num))
        out = gerbernc.Writer(ofn)
        for layername in layers:
            out.newpiece()
            thislayer = dx.fromlayer(entities, layername)
            ls = '{} entities found in layer "{}".'
            logging.info(ls.format(len(thislayer), layername))
            segments = lines.mksegments(thislayer)
            fs = '{} segments in layer "{}"'
            logging.info(fs.format(len(segments), layername))
            if args.contours:
                cut_contours(segments, out, layername, sortkey)
            else:
                segments.sort(key=sortkey)
                cut_segments(segments, out)
        out.write()
Пример #7
0
def main():
    """
    Entry point for dxfgerber.py.
    """
    args = process_arguments()
    sorters = {'xy': utils.bbxykey, 'yx': utils.bbyxkey, 'dist': utils.distkey}
    sortkey = sorters[args.sort]
    lines.epsilon = args.dist
    for f in utils.xpand(args.files):
        logging.info('starting file "{}"'.format(f))
        try:
            ofn = utils.outname(f, extension='.dxf', addenum='_mod')
            data = dx.parse(f)
            entities = dx.entities(data)
        except ValueError as ex:
            logging.info(str(ex))
            fns = "error during processing. Skipping file '{}'."
            logging.error(fns.format(f))
            continue
        except IOError as ex:
            logging.info(str(ex))
            logging.error("i/o error in file '{}'. Skipping it.".format(f))
            continue
        layers = dx.numberedlayers(entities)
        entities = [e for e in entities if dx.bycode(e, 8) in layers]
        num = len(entities)
        if num == 0:
            logging.info("no entities found! Skipping file '{}'.".format(f))
            continue
        logging.info('{} entities found.'.format(num))
        with open(ofn, 'w') as out:
            out.write(dxfheader)
            for layername in layers:
                thislayer = dx.fromlayer(entities, layername)
                ls = '{} entities found in layer "{}".'
                logging.info(ls.format(num, layername))
                segments = lines.mksegments(thislayer)
                fs = '{} segments in layer "{}"'
                logging.info(fs.format(len(segments), layername))
                write_allseg(segments, out, layername, sortkey)
            out.write(dxffooter)
Пример #8
0
def main():
    """
    Entry point for dxfgerber.py.
    """
    args = process_arguments()
    sorters = {'xy': utils.bbxykey, 'yx': utils.bbyxkey, 'dist': utils.distkey}
    sortkey = sorters[args.sort]
    lines.epsilon = args.dist
    for f in utils.xpand(args.files):
        logging.info('starting file "{}"'.format(f))
        try:
            ofn = utils.outname(f, extension='.dxf', addenum='_mod')
            data = dx.parse(f)
            entities = dx.entities(data)
        except ValueError as ex:
            logging.info(str(ex))
            fns = "error during processing. Skipping file '{}'."
            logging.error(fns.format(f))
            continue
        except IOError as ex:
            logging.info(str(ex))
            logging.error("i/o error in file '{}'. Skipping it.".format(f))
            continue
        layers = dx.numberedlayers(entities)
        entities = [e for e in entities if dx.bycode(e, 8) in layers]
        num = len(entities)
        if num == 0:
            logging.info("no entities found! Skipping file '{}'.".format(f))
            continue
        logging.info('{} entities found.'.format(num))
        with open(ofn, 'w') as out:
            out.write(dxfheader)
            for layername in layers:
                thislayer = dx.fromlayer(entities, layername)
                ls = '{} entities found in layer "{}".'
                logging.info(ls.format(num, layername))
                segments = lines.mksegments(thislayer)
                fs = '{} segments in layer "{}"'
                logging.info(fs.format(len(segments), layername))
                write_allseg(segments, out, layername, sortkey)
            out.write(dxffooter)
Пример #9
0
def main():
    """
    Entry point for dxf2pdf.py.
    """
    args = process_arguments()
    for f in utils.xpand(args.files):
        logging.info('starting file "{}"'.format(f))
        try:
            ofn = utils.outname(f, extension='.pdf', addenum='_dxf')
            data = dxf.parse(f)
            entities = dxf.entities(data)
        except ValueError as ex:
            logging.info(str(ex))
            fns = "cannot construct output filename. Skipping file '{}'."
            logging.error(fns.format(f))
            continue
        except IOError as ex:
            logging.info(str(ex))
            logging.error("cannot open the file '{}'. Skipping it.".format(f))
            continue
        output(f, ofn, entities, args)
Пример #10
0
def main():
    """
    Entry point for dxf2pdf.py.
    """
    args = process_arguments()
    for f in utils.xpand(args.files):
        logging.info('starting file "{}"'.format(f))
        try:
            ofn = utils.outname(f, extension='.pdf', addenum='_dxf')
            data = dxf.parse(f)
            entities = dxf.entities(data)
        except ValueError as ex:
            logging.info(str(ex))
            fns = "cannot construct output filename. Skipping file '{}'."
            logging.error(fns.format(f))
            continue
        except IOError as ex:
            logging.info(str(ex))
            logging.error("cannot open the file '{}'. Skipping it.".format(f))
            continue
        output(f, ofn, entities, args)