Beispiel #1
0
def dep(usdfile, level=1):
    id = '-' * (level)

    # print('UsdUtilsExtractExternalReferences'.center(40, '-'))
    print(id, usdfile)
    sublayers, references, payloads = UsdUtils.ExtractExternalReferences(
        usdfile)

    if sublayers:
        print(id, 'SUBLAYERS')
        for sublayer in sublayers:
            # print(id, sublayer)
            refpath = os.path.normpath(
                os.path.join(os.path.dirname(usdfile), sublayer))
            dep(refpath, level=level + 1)

    if references:
        print(id, 'REFERENCES')
        for reference in references:
            # print(id, reference)
            refpath = os.path.normpath(
                os.path.join(os.path.dirname(usdfile), reference))
            dep(refpath, level=level + 1)

    if payloads:
        print(id, 'PAYLOADS')
        for payload in payloads:
            # print(id, payload)
            refpath = os.path.normpath(
                os.path.join(os.path.dirname(usdfile), payload))
            dep(refpath, level=level + 1)
        with open(path, *args, **kwargs) as fp:
            yield fp


def presult(ostr, fileName, refType, refs):
    if refs:
        for i, r in enumerate(refs):
            print('{} {}[{:03d}]: {}'.format(fileName, refType, i + 1, r),
                  file=ostr)
    else:
        print('{} no {}'.format(fileName, refType), file=ostr)


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('infile')
    parser.add_argument('outfile', default='-')
    args = parser.parse_args()

    if not os.path.exists(args.infile):
        print('Error: cannot access file {}'.format(args.infile),
              file=sys.stderr)
        sys.exit(1)

    sublayers, references, payloads = \
        UsdUtils.ExtractExternalReferences(args.infile)
    with stream(args.outfile, 'w') as ofp:
        presult(ofp, args.infile, 'sublayers', sublayers)
        presult(ofp, args.infile, 'references', references)
        presult(ofp, args.infile, 'payloads', payloads)