File indexing completed on 2026-04-09 07:48:48
0001
0002
0003 import os, sys, logging, argparse, numpy as np
0004 log = logging.getLogger(__name__)
0005 from opticks.ana.key import keydir
0006 from opticks.ana.prim import Solid
0007
0008 class GParts(object):
0009 """
0010 Opticks executables run with option --savegparts Opticks::isSaveGPartsEnabled()
0011 """
0012 def __init__(self, kd, basedir="$TMP/GParts"):
0013 basedir = os.path.expandvars(basedir)
0014
0015 if not os.path.isdir(basedir):
0016 log.fatal("missing directory %s " % basedir)
0017 log.fatal("create using --savegparts option with any Opticks executable that invokes GGeo::deferredCreateGParts" )
0018 sys.exit(1)
0019 pass
0020
0021
0022 ii = sorted(list(map(int,os.listdir(basedir))))
0023 dirs = list(map(lambda i:os.path.join(basedir, str(i)), ii))
0024
0025 solids = []
0026 for d in dirs:
0027 log.debug(d)
0028 solid = Solid(d, kd)
0029 solids.append(solid)
0030 pass
0031
0032 self.dirs = dirs
0033 self.solids = solids
0034 pass
0035 def __getitem__(self, i):
0036 return self.solids[i]
0037
0038 def __repr__(self):
0039 return "\n".join(list(map(repr,self.solids)))
0040
0041
0042
0043 def parse_args(doc, **kwa):
0044 np.set_printoptions(suppress=True, precision=3, linewidth=200)
0045 parser = argparse.ArgumentParser(doc)
0046 parser.add_argument( "ridx", nargs="*", type=int, help="GParts index to dump.")
0047 parser.add_argument( "--level", default="info", help="logging level" )
0048 args = parser.parse_args()
0049 fmt = '[%(asctime)s] p%(process)s {%(pathname)s:%(lineno)d} %(levelname)s - %(message)s'
0050 logging.basicConfig(level=getattr(logging,args.level.upper()), format=fmt)
0051 return args
0052
0053
0054
0055
0056 if __name__ == '__main__':
0057 args = parse_args(__doc__)
0058
0059 kd = keydir(os.environ["OPTICKS_KEY"])
0060 gp = GParts(kd)
0061
0062
0063 if len(args.ridx) > 0:
0064 for ridx in args.ridx:
0065 print(gp[ridx])
0066 pass
0067 else:
0068 print(gp)
0069 pass
0070
0071
0072
0073
0074