From 3b0a161bd3062c907825a78dbd4c158546fcac06 Mon Sep 17 00:00:00 2001 From: TigerKat Date: Sat, 13 Jul 2019 15:03:00 +0930 Subject: [PATCH] Added geo_edit.py as a simple command line tool for modifying .geo files. --- geo.py | 2 +- geo_edit.py | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++ stl_dump.py | 2 ++ 3 files changed, 61 insertions(+), 1 deletion(-) create mode 100755 geo_edit.py diff --git a/geo.py b/geo.py index 2b4c851..d5d741e 100755 --- a/geo.py +++ b/geo.py @@ -1,4 +1,4 @@ -#! /bin/python3 +#! /usr/bin/python3 import struct import zlib diff --git a/geo_edit.py b/geo_edit.py new file mode 100755 index 0000000..7e0c40b --- /dev/null +++ b/geo_edit.py @@ -0,0 +1,58 @@ +#! /usr/bin/python3 + +import sys +import re +from geo import Geo + + + + +if len(sys.argv) < 4: + print("Usage:") + print(" %s [ ...]" % (sys.argv[0], )) + print("Operations:") + print(" del_model Delete models with the name matching regular expression.") + print(" geo_name Rename the name of the .geo .") + exit() + +fn_in = sys.argv[1] +fn_out = sys.argv[2] +if fn_in == fn_out: + print("Input and output filenames are identical. Refusing to run, to avoid accidental lose.") + +print("Reading '%s'..." % (fn_in, )) +fh_in = open(fn_in, "rb") +geo = Geo() +geo.loadFromFile(fh_in) +fh_in.close() +print("Done.") + +arg_i = 3 +while arg_i < len(sys.argv): + operation = sys.argv[arg_i] + arg_i += 1 + if operation == "del_model": + reg_exp_str = sys.argv[arg_i] + arg_i += 1 + reg_exp = re.compile(reg_exp_str) + for i in range(len(geo.models) - 1, -1, -1): + name = geo.models[i].name.decode("utf-8") + if reg_exp.search(name) is not None: + print("Remove: %s" % (name, )) + del geo.models[i] + else: + print("Keep : %s" % (name, )) + elif operation == "geo_name": + name = sys.argv[arg_i] + arg_i += 1 + print("Rename GEO from '%s' to '%s'" % (geo.header_modelheader_name.decode("utf-8"), name)) + geo.header_modelheader_name = bytes(name, "utf-8") + else: + print("Unknown operation: '%s'" % (operation, )) + exit() + +print("Writing '%s'..." % (fn_out, )) +fh_out = open(fn_out, "wb") +geo.saveToFile(fh_out) +fh_out.close() +print("Done.") diff --git a/stl_dump.py b/stl_dump.py index 784aeb7..c63d9cc 100755 --- a/stl_dump.py +++ b/stl_dump.py @@ -1,3 +1,5 @@ +#! /usr/bin/python3 + import struct import geo import sys