mirror of
https://github.com/Alex38Lyon/Synthese-PSM_LARRA.git
synced 2026-06-01 13:59:13 +00:00
pyCreateTh
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
2025-06-16 10:43:06,687 - INFO - ********************************************************************************************************************************************
|
||||
2025-06-16 10:43:06,687 - INFO - * Conversion Th, Dat, Mak files to Therion files and folders
|
||||
2025-06-16 10:43:06,687 - INFO - * Script pyCreateTh by : alexandre.pont@yahoo.fr
|
||||
2025-06-16 10:43:06,687 - INFO - * Version : 2025.06.16
|
||||
2025-06-16 10:43:06,687 - INFO - * Input file :
|
||||
2025-06-16 10:43:06,688 - INFO - * Output file : ~\.
|
||||
2025-06-16 10:43:06,688 - INFO - * Log file : ~\..\pyCreateTh.log
|
||||
2025-06-16 10:43:06,688 - INFO - *
|
||||
2025-06-16 10:43:06,688 - INFO - *
|
||||
2025-06-16 10:43:06,689 - INFO - *
|
||||
2025-06-16 10:43:06,692 - INFO - ********************************************************************************************************************************************
|
||||
2025-06-16 10:43:06,694 - ERROR - !!! file not yet supported
|
||||
2025-06-16 10:43:06,694 - ERROR - !!! There were 1 errors during 3.66 secondes, check the log file ~\..\pyCreateTh.log
|
||||
2025-06-16 15:49:29,787 - INFO - ********************************************************************************************************************************************
|
||||
2025-06-16 15:49:29,788 - INFO - * Conversion Th, Dat, Mak files to Therion files and folders
|
||||
2025-06-16 15:49:29,789 - INFO - * Script pyCreateTh by : alexandre.pont@yahoo.fr
|
||||
2025-06-16 15:49:29,789 - INFO - * Version : 2025.06.16
|
||||
2025-06-16 15:49:29,789 - INFO - * Input file :
|
||||
2025-06-16 15:49:29,789 - INFO - * Output file : ~\.
|
||||
2025-06-16 15:49:29,789 - INFO - * Log file : ~\..\pyCreateTh.log
|
||||
2025-06-16 15:49:29,790 - INFO - *
|
||||
2025-06-16 15:49:29,790 - INFO - *
|
||||
2025-06-16 15:49:29,790 - INFO - *
|
||||
2025-06-16 15:49:29,790 - INFO - ********************************************************************************************************************************************
|
||||
2025-06-16 15:49:29,791 - ERROR - !!! file not yet supported
|
||||
2025-06-16 15:49:29,792 - ERROR - !!! There were 1 errors during 8.04 secondes, check the log file ~\..\pyCreateTh.log
|
||||
2025-06-16 16:18:18,921 - INFO - ********************************************************************************************************************************************
|
||||
2025-06-16 16:18:18,922 - INFO - * Conversion Th, Dat, Mak files to Therion files and folders
|
||||
2025-06-16 16:18:18,922 - INFO - * Script pyCreateTh by : alexandre.pont@yahoo.fr
|
||||
2025-06-16 16:18:18,922 - INFO - * Version : 2025.06.16
|
||||
2025-06-16 16:18:18,923 - INFO - * Input file :
|
||||
2025-06-16 16:18:18,923 - INFO - * Output file : ~\.
|
||||
2025-06-16 16:18:18,923 - INFO - * Log file : ~\..\pyCreateTh.log
|
||||
2025-06-16 16:18:18,923 - INFO - *
|
||||
2025-06-16 16:18:18,924 - INFO - *
|
||||
2025-06-16 16:18:18,924 - INFO - *
|
||||
2025-06-16 16:18:18,924 - INFO - ********************************************************************************************************************************************
|
||||
2025-06-16 16:18:18,925 - ERROR - !!! file not yet supported
|
||||
2025-06-16 16:18:18,926 - ERROR - !!! There were 1 errors during 2.39 secondes, check the log file ~\..\pyCreateTh.log
|
||||
2025-06-16 19:05:25,443 - INFO - ********************************************************************************************************************************************
|
||||
2025-06-16 19:05:25,445 - INFO - * Conversion Th, Dat, Mak files to Therion files and folders
|
||||
2025-06-16 19:05:25,445 - INFO - * Script pyCreateTh by : alexandre.pont@yahoo.fr
|
||||
2025-06-16 19:05:25,445 - INFO - * Version : 2025.06.16
|
||||
2025-06-16 19:05:25,445 - INFO - * Input file :
|
||||
2025-06-16 19:05:25,446 - INFO - * Output file : ~\.
|
||||
2025-06-16 19:05:25,446 - INFO - * Log file : ~\..\pyCreateTh.log
|
||||
2025-06-16 19:05:25,446 - INFO - *
|
||||
2025-06-16 19:05:25,446 - INFO - *
|
||||
2025-06-16 19:05:25,446 - INFO - *
|
||||
2025-06-16 19:05:25,447 - INFO - ********************************************************************************************************************************************
|
||||
2025-06-16 19:05:25,448 - ERROR - !!! file not yet supported
|
||||
2025-06-16 19:05:25,448 - ERROR - !!! There were 1 errors during 13.29 secondes, check the log file ~\..\pyCreateTh.log
|
||||
Binary file not shown.
@@ -32,6 +32,40 @@ class Colors:
|
||||
BOLD = '\033[1m'
|
||||
UNDERLINE = '\033[4m'
|
||||
|
||||
|
||||
#################################################################################################
|
||||
def safe_relpath(path):
|
||||
"""
|
||||
Renvoie un chemin relatif si possible, sinon un chemin partiel à partir du dossier de référence.
|
||||
"""
|
||||
|
||||
abs_path = os.path.abspath(path)
|
||||
ref_path = os.path.abspath(os.getcwd())
|
||||
|
||||
try:
|
||||
valeur = "~\\" + os.path.relpath(path, ref_path)
|
||||
return valeur
|
||||
|
||||
except ValueError:
|
||||
max_depth = 7
|
||||
|
||||
# Disques différents, afficher le chemin relatif partiel depuis la racine commune
|
||||
path_parts = abs_path.split(os.sep)
|
||||
ref_parts = ref_path.split(os.sep)
|
||||
while path_parts and ref_parts and path_parts[0] == ref_parts[0]:
|
||||
path_parts.pop(0)
|
||||
ref_parts.pop(0)
|
||||
result = os.path.join(*path_parts) if path_parts else os.path.basename(path)
|
||||
|
||||
# Si max_depth est défini, tronque le chemin
|
||||
if max_depth is not None:
|
||||
parts = result.split(os.sep)
|
||||
if len(parts) > max_depth:
|
||||
result = os.path.join("~\\" , *parts[-max_depth:])
|
||||
|
||||
return result
|
||||
|
||||
|
||||
#################################################################################################
|
||||
def compile_template(template, template_args, **kwargs):
|
||||
global error_count
|
||||
@@ -61,8 +95,9 @@ def compile_template(template, template_args, **kwargs):
|
||||
except Exception as e:
|
||||
log.error(f"Therion template compilation error: {Colors.ENDC}{e}")
|
||||
error_count += 1
|
||||
|
||||
|
||||
|
||||
#################################################################################################
|
||||
def compile_template2(template, template_args, **kwargs):
|
||||
global error_count
|
||||
|
||||
@@ -128,7 +163,7 @@ def compile_template2(template, template_args, **kwargs):
|
||||
except Exception as cleanup_err:
|
||||
log.warning(f"Could not delete temp directory: {Colors.ENDC}{cleanup_err}")
|
||||
|
||||
|
||||
|
||||
#################################################################################################
|
||||
def compile_file(filename, **kwargs):
|
||||
global error_count
|
||||
@@ -147,7 +182,7 @@ def compile_file(filename, **kwargs):
|
||||
bufsize=1 # ligne par ligne
|
||||
)
|
||||
|
||||
log.info(f"Start therion compilation file : {Colors.ENDC}~\\{os.path.relpath(filename)}")
|
||||
log.info(f"Start therion compilation file : {Colors.ENDC}{safe_relpath(filename)}")
|
||||
# Lecture en temps réel
|
||||
for line in process.stdout:
|
||||
line = line.rstrip()
|
||||
@@ -167,15 +202,14 @@ def compile_file(filename, **kwargs):
|
||||
log.error(f"Error during Therion compilation, stderr : \n{Colors.ENDC}{process.stderr.decode()}")
|
||||
error_count += 1
|
||||
|
||||
log.info(f"Therion file : {Colors.ENDC}~\\{os.path.relpath(filename)}{Colors.GREEN} succeeded")
|
||||
log.info(f"Therion file : {Colors.ENDC}{safe_relpath(filename)}{Colors.GREEN} succeeded")
|
||||
|
||||
except Exception as e:
|
||||
log.error(f"Therion file {Colors.ENDC}~\\{os.path.relpath(filename, os.path.expanduser('~'))}{Colors.ERROR} compilation error: {Colors.ENDC}{e}")
|
||||
log.error(f"Therion file {Colors.ENDC}{safe_relpath(filename, os.path.expanduser('~'))}{Colors.ERROR} compilation error: {Colors.ENDC}{e}")
|
||||
error_count += 1
|
||||
|
||||
|
||||
|
||||
|
||||
#################################################################################################
|
||||
def compile_file2(filename, **kwargs):
|
||||
global error_count
|
||||
|
||||
@@ -232,14 +266,13 @@ def compile_file2(filename, **kwargs):
|
||||
error_count += 1
|
||||
|
||||
else:
|
||||
log.info(f"Therion file : {Colors.ENDC}~\\{os.path.relpath(filename)}{Colors.GREEN} compilation succeeded")
|
||||
log.info(f"Therion file : {Colors.ENDC}{safe_relpath(filename)}{Colors.GREEN} compilation succeeded")
|
||||
|
||||
except Exception as e:
|
||||
log.error(f"Therion file {Colors.ENDC}~\\{os.path.relpath(filename)}{Colors.ERROR} compilation error: {Colors.ENDC}{e}")
|
||||
log.error(f"Therion file {Colors.ENDC}{safe_relpath(filename)}{Colors.ERROR} compilation error: {Colors.ENDC}{e}")
|
||||
error_count += 1
|
||||
|
||||
|
||||
|
||||
#################################################################################################
|
||||
def compile_file_th(filepath, **kwargs):
|
||||
template = """source {filepath}
|
||||
|
||||
@@ -35,7 +35,8 @@ encoding utf-8
|
||||
source {fileName}-tot.th
|
||||
|
||||
## Add config file
|
||||
input config.thc
|
||||
input {configPath}config.thc
|
||||
|
||||
|
||||
###############################################################################################
|
||||
## 2-LAYOUT
|
||||
|
||||
@@ -0,0 +1,513 @@
|
||||
Fulford Cave
|
||||
SURVEY NAME: A
|
||||
SURVEY DATE: 6 29 1987 COMMENT:Entrance Passage
|
||||
SURVEY TEAM:
|
||||
, , , ,
|
||||
DECLINATION: 11.18 FORMAT: DDDDUDLRLADN CORRECTIONS: 0.00 0.00 0.00
|
||||
|
||||
FROM TO LENGTH BEARING INC LEFT UP DOWN RIGHT FLAGS COMMENTS
|
||||
|
||||
A1 A2 21.75 63.50 -28.00 2.60 2.60 2.60 2.60
|
||||
A2 A3 23.75 15.50 -17.00 8.00 0.00 2.10 2.70
|
||||
A3 A4 13.35 303.00 -13.50 11.80 3.00 6.00 9.20
|
||||
A4 A5 14.00 51.00 -14.00 -9999.00 6.00 4.20 -9999.00
|
||||
A5 A6 32.90 105.50 -8.00 8.00 6.60 5.00 -9999.00
|
||||
A6 A7 21.10 123.00 22.00 4.00 22.00 4.90 0.00
|
||||
A6 A8 32.85 76.00 11.00 4.00 22.00 4.90 0.00
|
||||
A8 A9 19.20 16.00 4.00 6.00 12.00 0.00 2.50
|
||||
A9 A10 23.75 276.50 -33.50 3.00 6.00 4.50 0.00
|
||||
A10 A11 9.25 3.50 -16.00 5.80 3.90 0.50 -9999.00
|
||||
A11 A12 16.60 20.00 -8.00 1.40 0.00 3.90 3.80
|
||||
A12 A13 30.80 13.00 0.00 5.00 0.00 4.70 3.30
|
||||
|
||||
Fulford Cave
|
||||
SURVEY NAME: A+
|
||||
SURVEY DATE: 6 20 1987 COMMENT:Big Meander Area
|
||||
SURVEY TEAM:
|
||||
Steve Reames,Stan Allison, , ,
|
||||
DECLINATION: 11.18 FORMAT: DDDDUDLRLADN CORRECTIONS: 0.00 0.00 0.00
|
||||
|
||||
FROM TO LENGTH BEARING INC LEFT UP DOWN RIGHT FLAGS COMMENTS
|
||||
|
||||
A13 A14 18.20 8.50 6.00 6.90 6.00 2.00 4.00
|
||||
A14 A15 17.70 333.00 7.00 0.60 3.00 4.30 3.40
|
||||
A15 A16 20.50 7.50 -5.00 -9999.00 4.00 2.20 1.00
|
||||
A13 A17 27.20 303.00 -17.00 6.90 6.00 2.00 4.00
|
||||
A17 A18 14.80 272.00 -31.00 3.00 6.00 4.00 4.20
|
||||
A18 A19 12.30 346.00 -13.00 2.20 0.90 1.30 -9999.00
|
||||
A19 A20 22.00 18.00 16.00 2.90 -9999.00 5.60 5.30
|
||||
A20 A21 33.20 89.00 19.00 2.90 4.00 4.00 5.30
|
||||
A21 A22 10.10 65.00 32.00 4.00 5.00 5.00 9.00
|
||||
A16 A22 14.50 97.00 3.00 -9999.00 2.70 2.70 -9999.00
|
||||
A22 A23 43.40 15.00 3.00 4.00 5.00 5.00 9.00
|
||||
A23 A24 20.60 21.00 0.00 -9999.00 12.00 5.00 -9999.00
|
||||
A24 A25 11.80 28.00 4.00 -9999.00 10.00 2.00 -9999.00
|
||||
A25 A26 10.70 29.00 9.00 3.00 2.00 2.00 2.00
|
||||
A26 A27 17.80 55.00 19.00 3.00 2.00 2.00 2.00
|
||||
A27 A28 21.70 110.00 9.00 3.80 6.00 3.70 3.00
|
||||
A28 A29 11.40 177.00 26.00 0.50 1.30 3.30 5.30
|
||||
A29 A30 12.40 150.00 34.00 3.50 0.00 3.90 2.00
|
||||
A30 A31 15.60 172.00 -48.00 0.00 1.00 2.00 1.80
|
||||
A31 A32 18.60 38.00 -28.00 3.50 5.70 0.00 1.00
|
||||
|
||||
Fulford Cave
|
||||
SURVEY NAME: B
|
||||
SURVEY DATE: 9 5 1987 COMMENT:Stream Gallery
|
||||
SURVEY TEAM:
|
||||
Steve Reames,Paul Burger,Todd Warren, ,
|
||||
DECLINATION: 11.18 FORMAT: DDDDUDLRLADN CORRECTIONS: 0.00 0.00 0.00
|
||||
|
||||
FROM TO LENGTH BEARING INC LEFT UP DOWN RIGHT FLAGS COMMENTS
|
||||
|
||||
B2 A32 46.10 146.50 27.00 14.60 4.00 1.50 11.00
|
||||
B2 B1 14.20 240.00 -31.00 14.60 4.00 1.50 11.00
|
||||
B2 B2A 21.70 352.00 -9.00 14.60 4.00 1.50 11.00
|
||||
A32 B3 57.40 159.50 16.00 11.00 3.50 1.50 -9999.00
|
||||
B3 B4 41.20 131.00 16.00 15.00 5.00 12.00 3.00
|
||||
B4 B5 11.60 26.00 -8.00 12.00 14.00 4.00 8.00
|
||||
B5 B6 30.40 125.00 9.00 10.00 16.00 0.00 10.00
|
||||
B6 B7 38.50 61.00 30.00 4.00 20.00 4.00 1.00
|
||||
B7 B8 30.50 154.00 18.00 5.00 3.00 4.00 -9999.00
|
||||
B8 B9 11.90 148.00 -5.00 0.00 9.00 5.50 6.00
|
||||
B9 B10 21.80 122.50 -5.00 2.00 3.00 4.00 4.00
|
||||
B10 B11 8.40 33.00 0.00 -9999.00 3.00 1.00 6.50
|
||||
B4 B12 25.60 143.00 45.00 4.00 20.00 4.00 1.00
|
||||
B12 B13 90.10 120.50 25.00 23.00 15.00 5.00 8.00
|
||||
B14 B13 27.60 33.00 35.00 0.00 30.00 15.00 24.00
|
||||
B14 B15 61.20 86.00 21.50 22.00 20.00 5.00 2.00
|
||||
B15 B16 45.60 115.00 18.00 4.00 13.00 5.00 0.00
|
||||
B16 B17 36.00 135.50 25.00 3.00 5.00 0.00 5.00
|
||||
B17 B18 11.70 128.00 13.00 4.00 5.00 5.00 4.00
|
||||
B18 B19 16.70 138.00 9.50 5.00 4.00 0.00 3.00
|
||||
B19 B20 8.80 180.00 50.00 3.00 5.50 3.00 1.00
|
||||
B20 B21 15.10 56.00 45.00 4.50 6.50 4.00 0.00
|
||||
B21 B21 0.00 0.00 0.00 6.00 12.00 5.00 7.00
|
||||
|
||||
Fulford Cave
|
||||
SURVEY NAME: C
|
||||
SURVEY DATE: 7 16 1988 COMMENT:Breakdown Room
|
||||
SURVEY TEAM:
|
||||
Steve Reames,Paul Burger, , ,
|
||||
DECLINATION: 11.18 FORMAT: DDDDUDLRLADN CORRECTIONS: 0.00 0.00 0.00
|
||||
|
||||
FROM TO LENGTH BEARING INC LEFT UP DOWN RIGHT FLAGS COMMENTS
|
||||
|
||||
A24 C1 20.85 72.00 26.00 -9999.00 10.00 2.00 -9999.00
|
||||
C1 C2 21.35 76.50 38.00 0.50 7.00 1.00 9.00
|
||||
C2 C3 8.15 67.50 24.00 6.00 0.00 3.00 -9999.00
|
||||
C3 C4 7.00 158.00 8.50 3.00 0.50 2.00 4.00
|
||||
C4 C5 11.55 32.00 61.00 2.00 2.50 1.00 2.50
|
||||
C5A C5 9.55 18.00 56.00 3.00 0.00 5.00 5.00
|
||||
C5A C5B 4.10 0.00 -90.00 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
A30 C5B 4.00 260.00 16.00 0.00 1.10 2.00 1.80
|
||||
C6 C5 16.70 342.00 -39.00 30.00 0.00 5.50 7.00
|
||||
C6 C6A 30.40 304.50 -11.00 30.00 0.00 5.50 7.00
|
||||
C6 C6B 17.00 151.00 31.00 30.00 0.00 5.50 7.00
|
||||
C6 C6C 26.50 80.00 22.00 30.00 0.00 5.50 7.00
|
||||
C6 C7 33.30 270.00 -7.00 30.00 0.00 5.50 7.00
|
||||
C7 C8 46.85 171.00 13.50 30.00 0.00 5.50 7.00
|
||||
C8 C9 25.15 189.00 4.00 15.00 3.00 2.00 20.00
|
||||
C9 C10 39.35 203.00 -12.00 15.00 2.00 0.00 14.00
|
||||
C10 C11 74.65 181.00 -2.00 34.00 1.00 3.00 15.00
|
||||
|
||||
Fulford Cave
|
||||
SURVEY NAME: C+
|
||||
SURVEY DATE: 7 17 1988 COMMENT:Moon Milk Corridor
|
||||
SURVEY TEAM:
|
||||
Steve Reames,Paul Burger , , ,
|
||||
DECLINATION: 11.18 FORMAT: DDDDUDLRLADN CORRECTIONS: 0.00 0.00 0.00
|
||||
|
||||
FROM TO LENGTH BEARING INC LEFT UP DOWN RIGHT FLAGS COMMENTS
|
||||
|
||||
C11 C12 63.60 203.50 2.00 4.00 10.00 6.00 18.00
|
||||
C12 C13 30.35 70.00 -1.50 0.00 8.00 2.00 12.00
|
||||
C13 C14 41.10 42.50 20.50 7.00 10.00 2.00 0.00
|
||||
C14 CA1 13.80 21.00 11.00 10.00 5.00 8.00 5.00
|
||||
CA1 CA2 26.25 357.00 -21.00 4.00 3.50 2.00 10.00
|
||||
CA2 CA3 30.45 4.00 3.00 3.00 4.00 2.00 4.00
|
||||
CA3 CA4 15.55 266.00 0.00 -9999.00 6.00 0.50 -9999.00
|
||||
CA4 C10 34.60 325.00 -13.00 6.00 0.00 5.00 7.00
|
||||
|
||||
Fulford Cave
|
||||
SURVEY NAME: C++
|
||||
SURVEY DATE: 8 27 1988 COMMENT:Stalagmite Room
|
||||
SURVEY TEAM:
|
||||
Steve Reames,Garry Petrie,Paul Burger,Ted Lappin,
|
||||
DECLINATION: 11.18 FORMAT: DDDDUDLRLADN CORRECTIONS: 0.00 0.00 0.00
|
||||
|
||||
FROM TO LENGTH BEARING INC LEFT UP DOWN RIGHT FLAGS COMMENTS
|
||||
|
||||
C14 C15 30.30 43.00 21.00 10.00 5.00 8.00 5.00
|
||||
C15 C15A 21.10 153.00 12.50 3.00 0.50 2.50 12.00
|
||||
C15 C16 16.70 62.00 2.00 3.00 0.50 2.50 12.00
|
||||
C16 C17 3.80 55.50 45.00 2.50 1.00 2.00 1.00
|
||||
C17 C18 9.15 131.00 46.00 3.00 2.00 2.00 2.00
|
||||
C18 C19 8.70 63.00 54.50 0.00 2.00 5.00 3.00
|
||||
C19 C20 16.85 123.00 20.50 -9999.00 8.00 4.00 -9999.00
|
||||
C20 C21 40.50 349.00 2.00 14.00 10.00 2.00 9.00
|
||||
C21 C21A 26.35 303.00 -11.00 13.00 2.00 5.00 11.00
|
||||
C21 C22 27.50 351.50 13.50 13.00 2.00 5.00 11.00
|
||||
C22 C23 6.00 32.00 -25.00 1.00 3.00 1.00 5.00
|
||||
C23 C24 2.50 0.00 -90.00 0.75 1.50 3.00 1.00
|
||||
C25 C24 21.60 183.00 0.00 -9999.00 27.00 2.00 -9999.00
|
||||
C25 C26 15.85 65.00 11.00 -9999.00 27.00 2.00 -9999.00
|
||||
C26 C27 11.45 48.00 -5.00 -9999.00 -9999.00 -9999.00 3.00
|
||||
C28 C27 34.80 86.00 -25.50 18.00 5.00 -9999.00 10.00
|
||||
C28 C29 14.90 193.00 8.50 18.00 5.00 -9999.00 10.00
|
||||
C30 C29 51.40 155.00 30.00 9.00 10.00 3.00 0.00
|
||||
C6 C30 69.10 164.00 38.00 30.00 0.00 5.50 7.00
|
||||
CB1 C29 46.70 131.00 24.00 3.00 3.00 5.00 0.00
|
||||
CB1 CB2 9.25 244.00 1.00 3.00 3.00 5.00 0.00
|
||||
CB2 CB3 9.30 301.00 -6.50 0.00 2.50 5.00 2.50
|
||||
CB3 CB4 15.85 202.00 7.00 3.00 2.50 5.00 0.00
|
||||
CB4 CB5 4.50 5.50 0.00 0.00 4.50 5.50 4.00
|
||||
CB5 CB6 10.10 221.00 6.00 3.00 3.00 3.00 0.00
|
||||
CB6 CB7 15.30 302.00 -1.00 0.00 1.00 9.00 2.00
|
||||
CB7 CB8 19.95 8.00 -6.00 1.00 1.50 7.00 1.00
|
||||
CB8 CB9 13.60 102.00 20.50 0.00 4.00 4.50 3.00
|
||||
CB9 CB10 13.55 346.00 4.00 -9999.00 4.50 4.50 3.00
|
||||
CB10 CB11 18.90 33.00 25.00 0.00 7.50 4.50 1.50
|
||||
CB11 CB12 8.05 12.00 0.00 1.50 6.00 5.00 0.00
|
||||
CB12 CB13 3.05 322.00 9.00 1.50 5.50 6.00 2.00
|
||||
|
||||
Fulford Cave
|
||||
SURVEY NAME: A3
|
||||
SURVEY DATE: 8 28 1988 COMMENT:Upper Entrance Connection
|
||||
SURVEY TEAM:
|
||||
Steve Reames,Garry Petrie,Ted Lappin,Brent Hymel,
|
||||
DECLINATION: 11.18 FORMAT: DDDDUDLRLADN CORRECTIONS: 0.00 0.00 0.00
|
||||
|
||||
FROM TO LENGTH BEARING INC LEFT UP DOWN RIGHT FLAGS COMMENTS
|
||||
|
||||
A3A A3 25.80 303.00 -51.00 0.00 20.00 5.00 4.10
|
||||
A3A AM11 14.80 239.00 47.50 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
|
||||
Fulford Cave
|
||||
SURVEY NAME: AN
|
||||
SURVEY DATE: 8 27 1988 COMMENT:North Entrance
|
||||
SURVEY TEAM:
|
||||
Mike Roberts,Rick Rhinehart, , ,
|
||||
DECLINATION: 11.18 FORMAT: DDDDUDLRLADN CORRECTIONS: 0.00 0.00 0.00
|
||||
|
||||
FROM TO LENGTH BEARING INC LEFT UP DOWN RIGHT FLAGS COMMENTS
|
||||
|
||||
A1 S2 13.00 170.00 35.00 2.60 2.60 2.60 2.60 #|P#
|
||||
S2 AN1 76.71 4.00 11.00 -9999.00 -9999.00 -9999.00 -9999.00 #|P#
|
||||
AN1 AN2 4.92 121.50 -23.00 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
AN2 AN3 11.96 17.50 -26.00 -9999.00 3.50 0.00 1.50
|
||||
AN3 AN4 21.75 301.00 -30.00 4.00 3.00 3.00 0.00
|
||||
AN4 AN5 9.92 340.50 -29.00 0.00 4.00 3.00 5.00
|
||||
AN5 AN6 17.13 24.00 -16.00 0.00 7.00 4.00 2.00
|
||||
AN6 AN7 21.08 330.50 0.00 4.00 3.00 5.00 0.00
|
||||
AN7 AN8 7.13 218.50 -8.00 3.50 2.00 1.50 2.00
|
||||
AN8 AN9 9.21 340.00 0.00 1.00 1.00 2.50 -9999.00
|
||||
|
||||
Fulford Cave
|
||||
SURVEY NAME: AA
|
||||
SURVEY DATE: 8 27 1988 COMMENT:Lower Room
|
||||
SURVEY TEAM:
|
||||
Ken Kreager,Ben Longwell,Tamara Beltran,Brent Hymel,
|
||||
DECLINATION: 11.18 FORMAT: DDDDUDLRLADN CORRECTIONS: 0.00 0.00 0.00
|
||||
|
||||
FROM TO LENGTH BEARING INC LEFT UP DOWN RIGHT FLAGS COMMENTS
|
||||
|
||||
A13 A13A 30.40 203.00 -9.00 6.90 6.00 2.00 4.00
|
||||
A13A A13B 17.00 183.00 12.00 7.00 -9999.00 -9999.00 -9999.00
|
||||
A13B A13C 17.50 205.00 30.50 7.00 -9999.00 -9999.00 -9999.00
|
||||
A13B AA1 14.90 236.00 -6.60 7.00 -9999.00 -9999.00 -9999.00
|
||||
AA1 AA2 6.25 147.00 -3.00 7.00 -9999.00 -9999.00 -9999.00
|
||||
AA2 AA3 12.40 293.00 -21.00 12.00 0.00 3.00 2.00
|
||||
AA3 AA4 8.50 289.00 -38.00 10.00 4.00 3.00 -9999.00
|
||||
AA4 AA5 26.00 314.00 -52.00 2.00 1.00 10.00 10.00
|
||||
AA5 AA6 32.60 298.00 -39.00 9.00 8.00 25.00 20.00
|
||||
AA6 AA7 30.30 283.00 -23.00 15.00 30.00 4.00 20.00
|
||||
AA7 AA7A 25.00 219.00 14.00 20.00 25.00 0.00 20.00
|
||||
AA7 AA8 21.70 336.00 -11.00 20.00 25.00 0.00 20.00
|
||||
AA8 AA9 17.50 324.00 -11.00 4.00 1.00 1.50 4.00
|
||||
|
||||
Fulford Cave
|
||||
SURVEY NAME: AM
|
||||
SURVEY DATE: 8 28 1988 COMMENT:North Entrance To Main Cave
|
||||
SURVEY TEAM:
|
||||
Mike Roberts,Rick Rhinehart, , ,
|
||||
DECLINATION: 11.18 FORMAT: DDDDUDLRLADN CORRECTIONS: 0.00 0.00 0.00
|
||||
|
||||
FROM TO LENGTH BEARING INC LEFT UP DOWN RIGHT FLAGS COMMENTS
|
||||
|
||||
AN1 AM1 17.90 102.50 3.00 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
AM1 AM2 12.20 130.50 12.00 0.00 1.00 3.50 3.50
|
||||
AM2 AM3 8.88 93.00 -24.00 3.00 0.00 4.00 2.00
|
||||
AM3 AM4 4.60 91.00 15.00 0.00 2.50 1.50 2.50
|
||||
AM4 AM5 7.80 39.00 -16.00 3.00 1.00 3.00 0.00
|
||||
AM5 AM6 6.90 135.00 -21.50 0.50 4.00 2.00 -9999.00
|
||||
AM6 AM7 17.60 127.00 11.50 0.00 6.00 1.50 3.00
|
||||
AM7 AM8 14.55 198.50 11.50 1.50 2.50 4.00 -9999.00
|
||||
AM8 AM9 10.90 192.00 9.00 0.00 5.00 5.00 2.00
|
||||
AM9 AM10 8.10 208.50 -25.00 0.00 4.00 4.00 3.00
|
||||
AM10 AM11 17.10 273.00 -16.50 -9999.00 4.00 5.00 4.00
|
||||
AM10 AL1 17.05 122.00 0.00 -9999.00 4.00 5.00 4.00
|
||||
|
||||
Fulford Cave
|
||||
SURVEY NAME: CD
|
||||
SURVEY DATE: 8 28 1988 COMMENT:Upper Level
|
||||
SURVEY TEAM:
|
||||
Steve Reames,Garry Petrie,Ted Lappin,Brent Hymel,
|
||||
DECLINATION: 11.18 FORMAT: DDDDUDLRLADN CORRECTIONS: 0.00 0.00 0.00
|
||||
|
||||
FROM TO LENGTH BEARING INC LEFT UP DOWN RIGHT FLAGS COMMENTS
|
||||
|
||||
AM7 CD1 30.00 15.20 -56.00 1.50 2.50 4.00 -9999.00
|
||||
CD1 AD1 6.75 343.50 -34.00 5.00 12.00 3.00 0.00
|
||||
AD1 AD2 21.40 274.00 -43.00 5.00 14.00 3.00 0.50
|
||||
XA6 AD2 7.75 287.00 17.00 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
CD1 CD2 12.30 107.00 49.00 5.00 12.30 3.00 0.00
|
||||
CD2 CD3 16.85 39.00 38.50 3.00 12.00 4.00 8.00
|
||||
CD3 CD4 22.80 67.00 5.50 8.00 4.00 7.00 6.00
|
||||
XC11 CD4 19.45 276.50 -6.00 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
|
||||
Fulford Cave
|
||||
SURVEY NAME: XS
|
||||
SURVEY DATE: 8 28 1988 COMMENT:Entrance To Upper Entrance Connection
|
||||
SURVEY TEAM:
|
||||
Mike Roberts,Ken Kreager,Rick Rhinehart, ,
|
||||
DECLINATION: 11.18 FORMAT: DDDDUDLRLADN CORRECTIONS: 0.00 0.00 0.00
|
||||
|
||||
FROM TO LENGTH BEARING INC LEFT UP DOWN RIGHT FLAGS COMMENTS
|
||||
|
||||
A1 XS2 18.30 126.00 39.00 -9999.00 -9999.00 -9999.00 -9999.00 #|P#
|
||||
XS2 S4 23.96 60.00 20.00 -9999.00 -9999.00 -9999.00 -9999.00 #|P#
|
||||
S4 AM11 12.46 1.00 -35.00 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
|
||||
Fulford Cave
|
||||
SURVEY NAME: AL
|
||||
SURVEY DATE: 8 28 1988 COMMENT:Upper Level Side Passage
|
||||
SURVEY TEAM:
|
||||
Mike Roberts,Ken Kreager,Rick Rhinehart, ,
|
||||
DECLINATION: 11.18 FORMAT: DDDDUDLRLADN CORRECTIONS: 0.00 0.00 0.00
|
||||
|
||||
FROM TO LENGTH BEARING INC LEFT UP DOWN RIGHT FLAGS COMMENTS
|
||||
|
||||
AL1 AL2 9.85 140.50 -1.50 2.00 6.00 0.00 9.00
|
||||
AL2 AL3 21.85 186.50 3.50 4.00 8.00 3.50 4.00
|
||||
AL3 AL4 13.40 156.00 27.50 3.50 2.50 0.50 2.00
|
||||
AL4 AL4 0.00 0.00 0.00 2.00 1.00 3.00 0.00
|
||||
|
||||
Fulford Cave
|
||||
SURVEY NAME: CC
|
||||
SURVEY DATE: 10 8 1988 COMMENT:Attic, Stove Pipe, Two Level Room
|
||||
SURVEY TEAM:
|
||||
Bethany Jablonsky,Paul Burger,June Miller,Clarence Williams,
|
||||
DECLINATION: 11.18 FORMAT: DDDDUDLRLADN CORRECTIONS: 0.00 0.00 0.00
|
||||
|
||||
FROM TO LENGTH BEARING INC LEFT UP DOWN RIGHT FLAGS COMMENTS
|
||||
|
||||
CC1 C29 28.30 23.00 -2.50 19.60 6.00 2.00 4.00
|
||||
CC1 CC2 39.45 119.00 35.00 19.60 6.00 2.00 4.00
|
||||
CC2 CC3 8.60 151.00 8.00 5.50 4.00 4.00 2.00
|
||||
CC3 CC4 6.00 161.00 22.00 0.20 0.50 0.00 0.00
|
||||
CC4 CC5 5.70 205.00 21.00 0.20 0.50 0.00 0.20
|
||||
CC5 CC6 3.40 142.00 18.00 0.20 2.00 2.00 0.20
|
||||
CC6 CC7 4.90 237.00 -1.00 0.00 1.00 8.50 8.00
|
||||
CC7 CC8 5.70 169.00 9.00 0.80 1.50 1.30 0.00
|
||||
CC8 CC9 16.70 200.00 15.00 0.00 2.70 2.10 1.50
|
||||
CC9 CC10 35.50 124.50 -17.00 0.10 3.00 7.50 1.00
|
||||
CC10 CCCP1 19.70 163.00 24.00 16.00 7.60 0.50 -9999.00
|
||||
CCCP1 CCCP2 9.70 171.00 54.00 3.20 2.80 1.00 1.50
|
||||
CCCP2 CCCP3 11.20 246.00 22.50 0.00 2.50 1.40 2.00
|
||||
CCCP3 ACCP3 12.50 134.00 -8.50 0.00 3.90 0.50 4.50
|
||||
CCCP3 CCCP4 6.10 359.00 -16.00 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
CCCP4 CCCP5 6.70 0.00 -90.00 3.00 0.00 -9999.00 3.00
|
||||
CCCP5 CCCP6 22.90 338.50 -36.00 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
CCCP6 CC10 12.90 69.00 8.50 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
CC10 CC11 16.90 266.00 -10.50 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
CC11 CC12 12.60 0.00 -90.00 -9999.00 11.00 -9999.00 -9999.00
|
||||
CC12 CC13 16.40 186.00 -40.00 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
CC13 CC14 11.80 314.00 -11.00 6.50 7.30 0.50 -9999.00
|
||||
CC14 CC15 23.00 0.00 -2.00 5.00 1.50 1.50 4.00
|
||||
|
||||
Fulford Cave
|
||||
SURVEY NAME: CE
|
||||
SURVEY DATE: 10 8 1988 COMMENT:Cathedral Room
|
||||
SURVEY TEAM:
|
||||
Steve Reames,Garry Petrie,Ted Lappin, ,
|
||||
DECLINATION: 11.18 FORMAT: DDDDUDLRLADN CORRECTIONS: 0.00 0.00 0.00
|
||||
|
||||
FROM TO LENGTH BEARING INC LEFT UP DOWN RIGHT FLAGS COMMENTS
|
||||
|
||||
C25 CE1 25.08 147.00 9.00 -9999.00 27.00 2.00 -9999.00
|
||||
CE1 CE2 16.42 51.00 49.00 -9999.00 3.00 5.00 0.00
|
||||
CE2 CE3 20.54 209.00 47.00 4.00 4.50 4.00 2.00
|
||||
CE3 CE4 26.67 101.00 9.00 -9999.00 4.00 4.00 -9999.00
|
||||
CE4 CE5 18.25 77.00 30.00 10.00 2.00 1.00 5.00
|
||||
CE5 CE6 22.75 108.00 18.00 4.80 1.50 1.60 0.00
|
||||
CE6 CE7 31.00 119.00 -18.00 5.00 15.00 0.00 7.00
|
||||
CE7 CE8 14.67 319.00 -20.00 7.00 21.00 3.00 1.00
|
||||
CE9 CE8 60.10 160.00 87.00 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
B14 CE9 20.80 14.00 12.50 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
|
||||
Fulford Cave
|
||||
SURVEY NAME: BS
|
||||
SURVEY DATE: 2 11 1989 COMMENT:Upper Stream
|
||||
SURVEY TEAM:
|
||||
Steve Reames,Paul Burger,Stan Allison,Ted Lappin,
|
||||
DECLINATION: 11.18 FORMAT: DDDDUDLRLADN CORRECTIONS: 0.00 0.00 0.00
|
||||
|
||||
FROM TO LENGTH BEARING INC LEFT UP DOWN RIGHT FLAGS COMMENTS
|
||||
|
||||
BS1 B5 22.10 0.00 -39.00 -9999.00 8.00 6.00 -9999.00
|
||||
BS2 BS1 15.85 134.00 -31.50 7.00 9.00 3.00 8.00
|
||||
BS2 BS3 10.20 7.50 55.00 7.00 9.00 3.00 8.00
|
||||
BS3 BS4 27.35 110.50 31.00 2.50 1.50 2.50 -9999.00
|
||||
BS4 BSA1 17.30 142.00 -1.50 -9999.00 4.00 2.00 -9999.00
|
||||
BS4 BS5 2.10 91.00 -27.00 -9999.00 4.00 2.00 -9999.00
|
||||
BS5 BS6 7.70 0.00 90.00 -9999.00 9.50 0.00 -9999.00
|
||||
BS7 BS6 9.95 10.00 -52.50 4.00 0.50 3.00 1.00
|
||||
BS7 BS8 19.80 242.50 37.00 4.00 0.50 3.00 1.00
|
||||
BS8 C27 6.25 15.50 -1.00 5.00 3.00 0.00 -9999.00
|
||||
BS7 BSB1 20.90 109.00 -9.50 4.00 0.50 3.00 1.00
|
||||
BSB2 BSB1 21.75 325.00 -29.50 7.00 4.00 7.00 0.00
|
||||
BSB2 XCE8 44.40 134.00 -27.00 7.00 4.00 7.00 0.00
|
||||
BSA1 BSA2 22.05 159.00 -48.00 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
BSA2 BS1 37.85 307.00 -23.00 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
|
||||
Fulford Cave
|
||||
SURVEY NAME: CF
|
||||
SURVEY DATE: 2 11 1989 COMMENT:Hidden Pit
|
||||
SURVEY TEAM:
|
||||
Steve Reames,Stan Allison,Ted Lappin,Paul Burger,
|
||||
DECLINATION: 11.18 FORMAT: DDDDUDLRLADN CORRECTIONS: 0.00 0.00 0.00
|
||||
|
||||
FROM TO LENGTH BEARING INC LEFT UP DOWN RIGHT FLAGS COMMENTS
|
||||
|
||||
C12 CF1 17.00 311.00 -18.00 0.00 8.00 2.00 12.00
|
||||
CF1 CF2 7.10 353.00 -19.00 3.00 1.50 1.00 4.00
|
||||
CF2 CF3 10.60 7.00 2.00 2.00 1.00 2.50 0.00
|
||||
CF3 CF4 15.80 356.00 -66.00 2.00 -9999.00 -9999.00 2.00
|
||||
CF5 CF4 22.50 111.00 54.50 4.00 4.00 1.00 2.00
|
||||
A7 CF5 3.40 270.00 24.00 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
|
||||
Fulford Cave
|
||||
SURVEY NAME: CG
|
||||
SURVEY DATE: 2 11 1989 COMMENT:Moon Milk Side Passage
|
||||
SURVEY TEAM:
|
||||
Steve Reames,Stan Allison,Ted Lappin,Paul Burger,
|
||||
DECLINATION: 11.18 FORMAT: DDDDUDLRLADN CORRECTIONS: 0.00 0.00 0.00
|
||||
|
||||
FROM TO LENGTH BEARING INC LEFT UP DOWN RIGHT FLAGS COMMENTS
|
||||
|
||||
C15 CG1 23.10 169.00 -2.00 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
CG1 CG2 28.00 194.00 -4.00 6.00 6.00 5.00 2.50
|
||||
CG2 CG3 20.90 164.00 2.00 3.00 2.00 1.50 9.00
|
||||
|
||||
Fulford Cave
|
||||
SURVEY NAME: CH
|
||||
SURVEY DATE: 2 12 1989 COMMENT:Devils Washboard Connection
|
||||
SURVEY TEAM:
|
||||
Steve Reames,Stan Allison,Paul Burger,Ted Lappin,
|
||||
DECLINATION: 11.18 FORMAT: DDDDUDLRLADN CORRECTIONS: 0.00 0.00 0.00
|
||||
|
||||
FROM TO LENGTH BEARING INC LEFT UP DOWN RIGHT FLAGS COMMENTS
|
||||
|
||||
C6 CH1 37.50 172.00 32.00 30.00 0.00 5.50 7.00
|
||||
CH1 CH2 21.25 82.00 31.00 -9999.00 8.00 4.00 -9999.00
|
||||
CH2 CH3 25.10 144.00 20.00 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
CH3 CH4 11.30 137.00 49.00 18.00 6.00 4.00 5.00
|
||||
CH4 CH5 12.15 172.00 34.00 4.00 3.00 5.00 2.50
|
||||
CH6 CH5 8.60 9.00 -4.00 -9999.00 19.00 3.00 10.00
|
||||
CH6 C25 21.25 194.00 -16.00 -9999.00 19.00 3.00 10.00
|
||||
|
||||
Fulford Cave
|
||||
SURVEY NAME: AAA
|
||||
SURVEY DATE: 6 10 1989 COMMENT:Lower Room +
|
||||
SURVEY TEAM:
|
||||
Steve Reames,Paul Burger,Stan Allison,Dave Fazzina,
|
||||
DECLINATION: 11.18 FORMAT: DDDDUDLRLADN CORRECTIONS: 0.00 0.00 0.00
|
||||
|
||||
FROM TO LENGTH BEARING INC LEFT UP DOWN RIGHT FLAGS COMMENTS
|
||||
|
||||
AA7 AAA1 29.50 224.00 17.50 20.00 25.00 0.00 20.00
|
||||
AAA1 AAA2 8.50 205.50 1.50 4.50 3.00 4.00 0.50
|
||||
AAA2 AAA3 14.35 205.00 -49.50 2.00 0.00 -9999.00 1.00
|
||||
AAA3 AAA4 25.15 125.00 -71.50 3.50 5.00 -9999.00 0.00
|
||||
|
||||
Fulford Cave
|
||||
SURVEY NAME: AB
|
||||
SURVEY DATE: 6 10 1989 COMMENT:JFK Room
|
||||
SURVEY TEAM:
|
||||
Steve Reames,Paul Burger,Stan Allison,Dave Fazzina,
|
||||
DECLINATION: 11.18 FORMAT: DDDDUDLRLADN CORRECTIONS: 0.00 0.00 0.00
|
||||
|
||||
FROM TO LENGTH BEARING INC LEFT UP DOWN RIGHT FLAGS COMMENTS
|
||||
|
||||
A13 AB1 26.40 164.50 22.50 6.90 6.00 2.00 4.00
|
||||
AB1A AB1 15.60 179.50 -27.00 12.00 5.00 0.00 4.00
|
||||
AB1A AB1B 14.30 11.00 18.00 5.00 8.00 5.00 0.00
|
||||
AB1B AB1C 14.60 60.50 24.50 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
AB1C AB1D 12.95 354.00 21.00 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
AB1 AB2 16.55 121.00 40.00 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
AB2 AB3 17.00 208.00 8.50 0.00 10.00 7.00 5.00
|
||||
AB3 AB4 4.00 253.00 -21.00 0.50 1.00 1.00 2.00
|
||||
AB5 AB4 8.45 16.50 25.50 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
|
||||
Fulford Cave
|
||||
SURVEY NAME: AC
|
||||
SURVEY DATE: 6 10 1989 COMMENT:Big Meander Side Passage
|
||||
SURVEY TEAM:
|
||||
Steve Reames,Paul Burger,Stan Allison,Dave Fazzina,
|
||||
DECLINATION: 11.18 FORMAT: DDDDUDLRLADN CORRECTIONS: 0.00 0.00 0.00
|
||||
|
||||
FROM TO LENGTH BEARING INC LEFT UP DOWN RIGHT FLAGS COMMENTS
|
||||
|
||||
A20 AC1 13.10 126.00 -8.50 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
AC1 AC2 33.70 27.50 5.00 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
AC2 AC3 20.95 342.00 -11.50 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
AC3 AC4 21.60 56.00 25.00 5.00 0.00 1.50 4.00
|
||||
AC4 AC5 29.85 21.50 5.50 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
AC5 AC6 37.45 343.50 -15.50 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
AC6 AC7 40.90 18.00 12.00 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
|
||||
Fulford Cave
|
||||
SURVEY NAME: CJ
|
||||
SURVEY DATE: 6 10 1989 COMMENT:Balconies
|
||||
SURVEY TEAM:
|
||||
Steve Reames,Paul Burger,Stan Allison,Dave Fazzina,
|
||||
DECLINATION: 11.18 FORMAT: DDDDUDLRLADN CORRECTIONS: 0.00 0.00 0.00
|
||||
|
||||
FROM TO LENGTH BEARING INC LEFT UP DOWN RIGHT FLAGS COMMENTS
|
||||
|
||||
C6 CJ1 27.20 110.00 28.50 30.00 0.00 5.50 7.00
|
||||
CJ1 CJ2 41.15 152.50 34.50 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
CJ2 CJ3 14.40 137.00 -42.50 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
CJ3 CJ4 26.75 73.50 -43.50 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
CJ4 CJ5 6.80 268.00 -22.50 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
CJ5 CJ6 36.50 151.00 -10.00 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
B5 CJ6 26.85 124.00 26.00 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
|
||||
Fulford Cave
|
||||
SURVEY NAME: CK
|
||||
SURVEY DATE: 6 10 1989 COMMENT:Hidden Room
|
||||
SURVEY TEAM:
|
||||
Steve Reames,Paul Burger,Stan Allison,Dave Fazzina,
|
||||
DECLINATION: 11.18 FORMAT: DDDDUDLRLADN CORRECTIONS: 0.00 0.00 0.00
|
||||
|
||||
FROM TO LENGTH BEARING INC LEFT UP DOWN RIGHT FLAGS COMMENTS
|
||||
|
||||
C28 CK1 39.80 40.00 20.00 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
CK1 CK2 15.30 334.00 -1.50 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
|
||||
Fulford Cave
|
||||
SURVEY NAME: CL
|
||||
SURVEY DATE: 6 10 1989 COMMENT:Moon Milk Side Passage
|
||||
SURVEY TEAM:
|
||||
Steve Reames,Paul Burger,Stan Allison,Dave Fazzina,
|
||||
DECLINATION: 11.18 FORMAT: DDDDUDLRLADN CORRECTIONS: 0.00 0.00 0.00
|
||||
|
||||
FROM TO LENGTH BEARING INC LEFT UP DOWN RIGHT FLAGS COMMENTS
|
||||
|
||||
CA3 CL1 16.25 93.00 31.50 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
CL1 CL2 12.70 199.00 0.00 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
CL2 CL3 15.45 138.50 0.00 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
CL3 CL4 14.75 163.50 21.50 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
CL4 C15 12.50 217.50 8.00 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,18 @@
|
||||
@357715.717,5627162.426,3048.000,13,1.050;
|
||||
&North American 1983;
|
||||
!gAVotScxpl;
|
||||
|
||||
/
|
||||
$13;
|
||||
&North American 1983;
|
||||
*0.00;
|
||||
#FULSURF.DAT,
|
||||
A1[f,1173607.995,14346579.967,10000.000],
|
||||
SC3[f,1173537.730,14346710.958,9938.648],
|
||||
S4[f,1173638.451,14346578.084,10020.013],
|
||||
SS6[f,1173818.570,14346406.496,10018.701];
|
||||
|
||||
/
|
||||
*0.00;
|
||||
#FULFORD.DAT;
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
Fulford Cave
|
||||
SURVEY NAME: SS
|
||||
SURVEY DATE: 8 28 1988 COMMENT:Surface to shelter
|
||||
SURVEY TEAM:
|
||||
Mike Roberts,Ken Kreager,Rick Rhinehart, ,
|
||||
DECLINATION: 11.18 FORMAT: DDDDUDLRLADN CORRECTIONS: 0.00 0.00 0.00
|
||||
|
||||
FROM TO LENGTH BEARING INC LEFT UP DOWN RIGHT FLAGS COMMENTS
|
||||
|
||||
A1 SS1 62.45 104.00 34.50 -9999.00 -9999.00 -9999.00 -9999.00 #|P#
|
||||
SS1 SS2 35.35 120.50 22.00 -9999.00 -9999.00 -9999.00 -9999.00 #|P#
|
||||
SS2 SS3 25.35 150.50 10.50 -9999.00 -9999.00 -9999.00 -9999.00 #|P#
|
||||
SS3 SS4 67.20 117.00 29.50 -9999.00 -9999.00 -9999.00 -9999.00 #|P#
|
||||
SS4 SS5 60.10 123.50 16.00 -9999.00 -9999.00 -9999.00 -9999.00 #|P#
|
||||
SS5 SS6 54.50 112.00 11.00 -9999.00 -9999.00 -9999.00 -9999.00 #|P#
|
||||
SS6 SS7 36.30 89.00 21.00 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
SS6 SS8 41.70 333.50 -2.50 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
|
||||
Fulford Cave
|
||||
SURVEY NAME: SC
|
||||
SURVEY DATE: 8 28 1988 COMMENT:Surface to Centipede
|
||||
SURVEY TEAM:
|
||||
Paul Burger,Fred Luiszer, , ,
|
||||
DECLINATION: 11.18 FORMAT: DDDDUDLRLADN CORRECTIONS: 0.00 0.00 0.00
|
||||
|
||||
FROM TO LENGTH BEARING INC LEFT UP DOWN RIGHT FLAGS COMMENTS
|
||||
|
||||
SC1 A1 14.63 93.00 1.00 -9999.00 -9999.00 -9999.00 -9999.00 #|P#
|
||||
SC1 SC2 55.94 332.00 -23.00 -9999.00 -9999.00 -9999.00 -9999.00 #|P#
|
||||
SC2 SC3 96.56 321.00 -24.00 -9999.00 -9999.00 -9999.00 -9999.00 #|P#
|
||||
SC3 Z1 13.19 9.00 -37.00 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
Z1 ZZZ1 1.00 0.00 0.00 -9999.00 -9999.00 -9999.00 -9999.00
|
||||
|
||||
CENTIPEDE
|
||||
SURVEY NAME: Z
|
||||
SURVEY DATE: 8 28 1988 COMMENT:Centipede
|
||||
SURVEY TEAM:
|
||||
F.LUISZER,P.BURGER
|
||||
DECLINATION: 11.18 FORMAT: DDDDUDLRLADN CORRECTIONS: 0.00 0.00 0.00
|
||||
|
||||
FROM TO LENGTH BEARING INC LEFT UP DOWN RIGHT FLAGS COMMENTS
|
||||
|
||||
Z1 Z2 2.17 138.00 -43.00 0.00 0.00 2.50 3.00
|
||||
Z2 Z3 7.58 87.00 27.00 2.00 0.00 1.00 1.00
|
||||
Z3 Z3A 4.02 22.00 -4.00 0.00 1.00 4.00 0.00
|
||||
Z3A Z3B 16.50 31.00 0.00 1.00 1.50 2.00 3.00
|
||||
Z3 Z4 9.38 126.00 -53.00 0.00 1.00 4.00 0.00
|
||||
Z4 Z5 9.00 33.00 -44.00 2.00 1.50 0.50 1.50
|
||||
|
||||
CENTIPEDE
|
||||
SURVEY NAME: Z+
|
||||
SURVEY DATE: 8 27 1989 COMMENT:Centiipede +
|
||||
SURVEY TEAM:
|
||||
F.LUISZER,T.LAPPIN,P.BURGER
|
||||
DECLINATION: 11.18 FORMAT: DDDDUDLRLADN CORRECTIONS: 0.00 0.00 0.00
|
||||
|
||||
FROM TO LENGTH BEARING INC LEFT UP DOWN RIGHT FLAGS COMMENTS
|
||||
|
||||
Z5 Z6 9.40 114.00 -40.00 1.00 1.00 1.00 1.00
|
||||
Z6 Z7 6.32 43.00 3.00 1.50 0.50 2.50 0.00
|
||||
Z7 Z8 3.35 9.45 27.00 0.00 3.00 1.00 3.00
|
||||
Z8 Z9 7.90 16.00 20.50 3.50 2.00 5.00 1.00
|
||||
Z6 Z10 11.50 242.00 -28.00 1.50 1.00 0.50 0.50
|
||||
Z10 Z11 5.45 46.00 -31.00 1.50 1.00 2.50 3.00
|
||||
Z11 Z12 10.52 337.00 -37.00 2.50 0.50 2.50 1.50
|
||||
Z12 Z13 6.05 320.00 -2.00 0.50 4.00 0.50 1.50
|
||||
|
||||
|
||||
Binary file not shown.
+507
-143
File diff suppressed because it is too large
Load Diff
@@ -1,993 +0,0 @@
|
||||
|
||||
"""
|
||||
#############################################################################################
|
||||
# #
|
||||
# Script pour automatiser la création des dossiers et fichiers pour un fichier .th #
|
||||
# #
|
||||
# By Alexandre PONT (alexandre_pont@yahoo.fr) #
|
||||
# #
|
||||
# Définir les différentes variables dans fichier config.ini #
|
||||
# Création des dossiers nécessaires d'après dossier 'template' #
|
||||
# Création des fichiers nécessaires : th, th2, -tot.th #
|
||||
# Création des scrap avec stations topo #
|
||||
# #
|
||||
# usage : python pyCreate_th2.py #
|
||||
# #
|
||||
#############################################################################################
|
||||
|
||||
Création Alex the 2024 12 16 :
|
||||
Thank's too
|
||||
- Tanguy Racine for the script https://github.com/tr1813
|
||||
- Xavier Robert for the main principes https://github.com/robertxa
|
||||
- Benoit Urruty https://github.com/BenoitURRUTY
|
||||
|
||||
Version 2025 03 21 : Création mode --update th2
|
||||
|
||||
"""
|
||||
|
||||
Version ="2025.03.21"
|
||||
|
||||
#################################################################################################
|
||||
#################################################################################################
|
||||
|
||||
|
||||
|
||||
import os
|
||||
from os.path import isfile, join, abspath
|
||||
import sys
|
||||
import re
|
||||
import unicodedata
|
||||
import argparse
|
||||
import shutil
|
||||
from datetime import datetime
|
||||
import configparser
|
||||
import tkinter as tk
|
||||
from tkinter import filedialog
|
||||
|
||||
from helpers.survey import SurveyLoader, NoSurveysFoundException
|
||||
from helpers.therion import compile_template, Colors, compile_file
|
||||
|
||||
#################################################################################################
|
||||
|
||||
## [Survey_Data] default values
|
||||
Author = "Created by pyCreate_th2.py"
|
||||
Copyright = "# Copyright (C) pyCreate_th2.py"
|
||||
Copyright_Short = "Licence (C) pyCreate_th2.py"
|
||||
map_comment = "Created by pyCreate_th2.py"
|
||||
cs = "UTM30"
|
||||
club = "Therion"
|
||||
thanksto = "Therion"
|
||||
datat = "https://therion.speleo.sk/"
|
||||
wpage = "https://therion.speleo.sk/"
|
||||
|
||||
## [Application_data] default values
|
||||
template_path = "./template"
|
||||
station_by_scrap = 20
|
||||
final_therion_exe = True
|
||||
therion_path = "C:/Therion/therion.exe"
|
||||
LINES = -1
|
||||
NAMES = -1
|
||||
|
||||
|
||||
|
||||
|
||||
#################################################################################################
|
||||
# # Codes de couleur ANSI
|
||||
# class Colors:
|
||||
# BLACK = '\033[90m'
|
||||
# RED = '\033[91m'
|
||||
# GREEN = '\033[92m'
|
||||
# YELLOW = '\033[93m'
|
||||
# BLUE = '\033[94m'
|
||||
# MAGENTA = '\033[95m'
|
||||
# CYAN = '\033[96m'
|
||||
# WHITE = '\033[97m'
|
||||
|
||||
# ERROR = '\033[91m'
|
||||
# WARNING = '\033[95m'
|
||||
# HEADER = '\033[96m'
|
||||
|
||||
# ENDC = '\033[0m'
|
||||
# BOLD = '\033[1m'
|
||||
# UNDERLINE = '\033[4m'
|
||||
|
||||
|
||||
|
||||
#################################################################################################
|
||||
def sanitize_filename(th_name):
|
||||
"""
|
||||
Cleans a string to make it compatible with filenames on Windows, Linux, and macOS.
|
||||
Replaces special and accented characters with compatible characters.
|
||||
|
||||
Args:
|
||||
th_name (str): The filename to clean.
|
||||
|
||||
Returns:
|
||||
str: The cleaned and compatible string.
|
||||
"""
|
||||
# Unicode normalization to replace accented characters with their non-accented equivalents
|
||||
th_name = unicodedata.normalize('NFKD', th_name).encode('ASCII', 'ignore').decode('ASCII')
|
||||
|
||||
# Replace illegal characters with an underscore (_)
|
||||
th_name = re.sub(r'[<>:"/\\|?*\']', '_', th_name) # Characters not allowed on Windows
|
||||
th_name = re.sub(r'[\s]', '_', th_name) # Replace spaces with underscores
|
||||
th_name = re.sub(r'[^a-zA-Z0-9._-]', '_', th_name) # Keep letters, digits, . _ -
|
||||
|
||||
# Ensure the name is not empty or just underscores
|
||||
return th_name.strip('_') or "default_filename"
|
||||
|
||||
|
||||
|
||||
|
||||
#################################################################################################
|
||||
def colored_help(parser):
|
||||
# Captures the help output
|
||||
help_text = parser.format_help()
|
||||
|
||||
# Coloration des différentes parties
|
||||
colored_help_text = help_text.replace(
|
||||
'usage:', f'{Colors.ERROR}usage:{Colors.ENDC}'
|
||||
).replace(
|
||||
'options:', f'{Colors.GREEN}options:{Colors.ENDC}'
|
||||
).replace('positional arguments:', f'{Colors.BLUE}positional arguments:{Colors.ENDC}')
|
||||
|
||||
# Surligner les arguments
|
||||
for action in parser._actions:
|
||||
if action.option_strings:
|
||||
# Colorer les options (--xyz)
|
||||
for opt in action.option_strings:
|
||||
colored_help_text = colored_help_text.replace(opt, f'{Colors.BLUE}{opt}{Colors.ENDC}')
|
||||
|
||||
# Imprimer le texte coloré
|
||||
print(colored_help_text)
|
||||
sys.exit(0)
|
||||
|
||||
#################################################################################################
|
||||
def read_config(config_file):
|
||||
global Author
|
||||
global Copyright
|
||||
global Copyright_Short
|
||||
global map_comment
|
||||
global club
|
||||
global thanksto
|
||||
global datat
|
||||
global wpage
|
||||
global cs
|
||||
global template_path
|
||||
global station_by_scrap
|
||||
global final_therion_exe
|
||||
global therion_path
|
||||
global LINES
|
||||
global NAMES
|
||||
|
||||
|
||||
# Initialize the configparser to read .ini files
|
||||
config = configparser.ConfigParser()
|
||||
config.read(config_file, encoding="utf-8")
|
||||
|
||||
if 'Survey_Data' in config and 'Author' in config['Survey_Data']:
|
||||
Author = config['Survey_Data']['Author']
|
||||
|
||||
if 'Survey_Data' in config and 'Copyright1' in config['Survey_Data']:
|
||||
Copyright = config['Survey_Data']['Copyright1'] + "\n" + config['Survey_Data']['Copyright2'] + "\n" + config['Survey_Data']['Copyright3'] + "\n"
|
||||
|
||||
if 'Survey_Data' in config and 'Copyright_Short' in config['Survey_Data']:
|
||||
Copyright_Short = config['Survey_Data']['Copyright_Short']
|
||||
|
||||
if 'Survey_Data' in config and 'map_comment' in config['Survey_Data']:
|
||||
map_comment = config['Survey_Data']['map_comment']
|
||||
|
||||
if 'Survey_Data' in config and 'club' in config['Survey_Data']:
|
||||
club = config['Survey_Data']['club']
|
||||
|
||||
if 'Survey_Data' in config and 'thanksto' in config['Survey_Data']:
|
||||
thanksto = config['Survey_Data']['thanksto']
|
||||
|
||||
if 'Survey_Data' in config and 'datat' in config['Survey_Data']:
|
||||
datat = config['Survey_Data']['datat']
|
||||
|
||||
if 'Survey_Data' in config and 'wpage' in config['Survey_Data']:
|
||||
wpage = config['Survey_Data']['wpage']
|
||||
|
||||
if 'Survey_Data' in config and 'cs' in config['Survey_Data']:
|
||||
cs = config['Survey_Data']['cs']
|
||||
|
||||
if 'Application_Data' in config and 'template_path' in config['Application_Data']:
|
||||
template_path = config['Application_Data']['template_path']
|
||||
|
||||
if 'Application_Data' in config and 'station_by_scrap' in config['Application_Data']:
|
||||
station_by_scrap = int(config['Application_Data']['station_by_scrap'])
|
||||
|
||||
if 'Application_Data' in config and 'final_therion_exe' in config['Application_Data']:
|
||||
final_therion_exe = bool(config['Application_Data']['final_therion_exe'])
|
||||
|
||||
if 'Application_Data' in config and 'therion_path' in config['Application_Data']:
|
||||
therion_path = config['Application_Data']['therion_path']
|
||||
|
||||
if LINES == -1 :
|
||||
if 'Application_Data' in config and 'shot_lines_in_th2_files' in config['Application_Data']:
|
||||
LINES = 0 if config['Application_Data']['shot_lines_in_th2_files'] == "False" else 1
|
||||
|
||||
if NAMES == -1 :
|
||||
if 'Application_Data' in config and 'station_name_in_th2_files' in config['Application_Data']:
|
||||
NAMES = 0 if config['Application_Data']['station_name_in_th2_files'] == "False" else 1
|
||||
|
||||
|
||||
|
||||
#################################################################################################
|
||||
def copy_template_if_not_exists(template_path, destination_path):
|
||||
# Check if the destination folder exists
|
||||
try:
|
||||
if not os.path.exists(destination_path):
|
||||
# If the destination folder does not exist, copy the template
|
||||
shutil.copytree(template_path, destination_path)
|
||||
print(f"{Colors.GREEN}The folder '{Colors.GREEN}{template_path}{Colors.ENDC}' has been copied to '{Colors.ENDC}{destination_path}{Colors.GREEN}'{Colors.ENDC}")
|
||||
else:
|
||||
print(f"{Colors.WARNING}Warning: The folder '{Colors.ENDC}{destination_path}{Colors.WARNING}' already exists. No files were copied.{Colors.ENDC}")
|
||||
except Exception as e:
|
||||
print(f"{Colors.ERROR}Copy template error: {Colors.ENDC}{e}")
|
||||
exit(1)
|
||||
|
||||
#################################################################################################
|
||||
def add_copyright_header(file_path, copyright_text):
|
||||
# Lire le contenu du fichier
|
||||
with open(file_path, 'r') as file:
|
||||
content = file.readlines()
|
||||
|
||||
# Vérifier si le copyright est déjà présent
|
||||
if not any("copyright" in line.lower() for line in content):
|
||||
# Ajouter le copyright en en-tête
|
||||
content.insert(0, f"{copyright_text}\n")
|
||||
|
||||
# Réécrire le fichier avec le copyright ajouté
|
||||
with open(file_path, 'w') as file:
|
||||
file.writelines(content)
|
||||
|
||||
|
||||
#################################################################################################
|
||||
def copy_file_with_copyright(th_file, destination_path, copyright_text):
|
||||
# Vérifier si le fichier existe
|
||||
if os.path.exists(th_file):
|
||||
# Créer le dossier de destination s'il n'existe pas
|
||||
os.makedirs(destination_path, exist_ok=True)
|
||||
|
||||
# Copier le fichier vers le dossier de destination
|
||||
dest_file = os.path.join(destination_path, os.path.basename(th_file))
|
||||
shutil.copy(th_file, dest_file)
|
||||
|
||||
# Ajouter le copyright dans l'en-tête si nécessaire
|
||||
add_copyright_header(dest_file, copyright_text)
|
||||
|
||||
# print(f"{Colors.GREEN}File '{Colors.ENDC}{th_file}{Colors.GREEN}' has been copied to '{Colors.ENDC}{destination_path}{Colors.GREEN}' with the copyright header added.{Colors.ENDC}")
|
||||
else:
|
||||
print(f"{Colors.ERROR}Error: The file .th does not exist {Colors.ENDC}{th_file}")
|
||||
|
||||
|
||||
|
||||
#################################################################################################
|
||||
def process_template(template_path, variables, output_path):
|
||||
"""
|
||||
Process a Therion template file by replacing variables.
|
||||
|
||||
Args:
|
||||
template_path (str): Path to the original template file
|
||||
variables (dict): Dictionary of variables to replace
|
||||
output_path (str): Path for the new configuration file
|
||||
"""
|
||||
try:
|
||||
# Read the content of the template file
|
||||
with open(template_path, 'r', encoding='utf-8') as file:
|
||||
content = file.read()
|
||||
|
||||
# Replace variables
|
||||
for var, value in variables.items():
|
||||
# Use regex to replace {variable} with its value
|
||||
pattern = r'\{' + re.escape(var) + r'\}'
|
||||
content = re.sub(pattern, str(value), content)
|
||||
|
||||
# Write the new file
|
||||
with open(output_path, 'w', encoding='utf-8') as file:
|
||||
file.write(content)
|
||||
|
||||
print(f"{Colors.GREEN}Update template successfully: {Colors.ENDC}{output_path}")
|
||||
|
||||
# Delete the original template file
|
||||
os.remove(template_path)
|
||||
|
||||
except FileNotFoundError:
|
||||
print(f"{Colors.WARNING}Warning: Template file {Colors.ENDC}{template_path}{Colors.WARNING} not found.{Colors.ENDC}")
|
||||
except PermissionError:
|
||||
print(f"{Colors.ERROR}Error: Insufficient permissions to write the file.{Colors.ENDC}")
|
||||
except Exception as e:
|
||||
print(f"{Colors.ERROR}An error occurred: {Colors.ENDC}{e}")
|
||||
|
||||
|
||||
#################################################################################################
|
||||
def parse_therion_surveys(file_path):
|
||||
"""
|
||||
Reads a Therion file and extracts survey names.
|
||||
|
||||
Args:
|
||||
file_path (str): Path to the Therion file to parse
|
||||
|
||||
Returns:
|
||||
list: List of survey names
|
||||
"""
|
||||
survey_names = []
|
||||
|
||||
try:
|
||||
with open(file_path, 'r', encoding='utf-8') as file:
|
||||
# Read all lines from the file
|
||||
lines = file.readlines()
|
||||
|
||||
for line in lines:
|
||||
# Look for lines starting with survey
|
||||
line = line.strip()
|
||||
if line.startswith('survey ') and ' -title ' in line:
|
||||
# Split the line and extract the survey name
|
||||
start_index = line.find('survey ') + len('survey ')
|
||||
end_index = line.find(' -title ')
|
||||
|
||||
survey_name = line[start_index:end_index].strip()
|
||||
survey_names.append(survey_name)
|
||||
|
||||
except FileNotFoundError:
|
||||
print(f"{Colors.WARNING}Warning: File {Colors.ENDC}{file_path}{Colors.WARNING} not found.{Colors.ENDC}")
|
||||
except PermissionError:
|
||||
print(f"{Colors.ERROR}Error: Insufficient permissions to read {Colors.ENDC}{file_path}")
|
||||
except Exception as e:
|
||||
print(f"{Colors.ERROR}An error occurred: {Colors.ENDC}{e}")
|
||||
|
||||
return survey_names
|
||||
|
||||
#################################################################################################
|
||||
def str_to_bool(value):
|
||||
"""
|
||||
Function to convert string to boolean
|
||||
"""
|
||||
if isinstance(value, bool):
|
||||
return value
|
||||
if value.lower() in ('true', '1', 'yes', 'y'):
|
||||
return True
|
||||
elif value.lower() in ('false', '0', 'no', 'n'):
|
||||
return False
|
||||
else:
|
||||
raise argparse.ArgumentTypeError(f"{Colors.ERROR}Error: Invalid boolean value: {Colors.ENDC}{value}")
|
||||
|
||||
#################################################################################################
|
||||
def select_file():
|
||||
# Créer une instance de la fenêtre tkinter
|
||||
root = tk.Tk()
|
||||
# Cacher la fenêtre principale
|
||||
root.withdraw()
|
||||
# Afficher la boîte de dialogue de sélection de fichier
|
||||
file_path = filedialog.askopenfilename(title="Sélectionnez un fichier")
|
||||
# Retourner le chemin complet du fichier sélectionné
|
||||
return file_path
|
||||
|
||||
|
||||
|
||||
#################################################################################################
|
||||
# main function #
|
||||
#################################################################################################
|
||||
if __name__ == u'__main__':
|
||||
|
||||
#################################################################################################
|
||||
# Parse arguments #
|
||||
#################################################################################################
|
||||
parser = argparse.ArgumentParser(
|
||||
description=f"{Colors.HEADER}Create a skeleton folder and th2 files with scraps from a .th Therion file\nVersion: {Colors.ENDC}{Version}\n",
|
||||
formatter_class=argparse.RawDescriptionHelpFormatter)
|
||||
parser.print_help = colored_help.__get__(parser)
|
||||
parser.add_argument("--survey_file", help="The survey file (*.th) to perform e.g. './Therion_file.th'", default="")
|
||||
parser.add_argument("--survey_name", help="Scrap name (if different from 'survey_file' name)", default="None")
|
||||
#parser.add_argument("--proj", choices=['plan', 'elevation', 'extended', 'none'], help="The scrap projection to produce", default="plan")
|
||||
#parser.add_argument("--format", choices=['th2', 'plt'], help="Output format. Either th2 for producing skeleton for drawing or plt for visualizing in aven/loch", default="th2")
|
||||
parser.add_argument("--output", default="./", help="Output folder path")
|
||||
# parser.add_argument("--therion-path", help="Path to therion binary", default="therion")
|
||||
parser.add_argument("--scale", help="Scale for the exports", default="500")
|
||||
parser.add_argument("--lines", type=str_to_bool, help="Shot lines in th2 files", default=-1)
|
||||
parser.add_argument("--names", type=str_to_bool, help="Stations names in th2 files", default=-1)
|
||||
parser.add_argument("--update", help="Mode update, option th2", default="")
|
||||
|
||||
parser.epilog = (
|
||||
f"{Colors.GREEN}Please, complete {Colors.RED}config.ini{Colors.GREEN} file for personal configuration{Colors.ENDC}\n"
|
||||
f"{Colors.GREEN}If no argument :{Colors.RED} files selection windows\n{Colors.ENDC}\n"
|
||||
f"{Colors.BLUE}Examples:{Colors.ENDC}\n"
|
||||
f"\t> python pyCreate_th2.py ./test/Entree.th --survey_name Geophysicaya_01_entree --output ./test/ --scale 1000\n"
|
||||
f"\t> python pyCreate_th2.py Entree.th\n"
|
||||
f"\t> python pyCreate_th2.py\n\n")
|
||||
args = parser.parse_args()
|
||||
|
||||
# print("args.survey_file : " + args.survey_file )
|
||||
# print("args.update : " + args.update )
|
||||
|
||||
if args.survey_file == "":
|
||||
args.survey_file = select_file()
|
||||
print(f"Selected file : {args.survey_file}")
|
||||
|
||||
ENTRY_FILE = abspath(args.survey_file)
|
||||
# PROJECTION = args.proj.capitalize()
|
||||
PROJECTION = "Plan"
|
||||
TARGET = args.survey_name
|
||||
OUTPUT = args.output
|
||||
#FORMAT = args.format
|
||||
FORMAT = "th2"
|
||||
SCALE = args.scale
|
||||
LINES = args.lines
|
||||
NAMES = args.names
|
||||
# TH_NAME = args.survey_file.split("/")[-1].strip(".th")
|
||||
TH_NAME = sanitize_filename(os.path.splitext(os.path.basename(args.survey_file))[0])
|
||||
DEST_PATH = os.path.dirname(args.survey_file) + "/" + TH_NAME
|
||||
#DEST_PATH = args.output + TH_NAME.split("/")[-1].strip(".th")
|
||||
#ABS_PATH = ENTRY_FILE.strip(args.survey_file)
|
||||
ABS_PATH = os.path.dirname(ENTRY_FILE)
|
||||
|
||||
# print("args.survey_file : " + args.survey_file )
|
||||
# print("ENTRY_FILE: " + ENTRY_FILE )
|
||||
# print("PROJECTION: " + PROJECTION )
|
||||
# print("TARGET: " + TARGET )
|
||||
# print("OUTPUT: " + OUTPUT )
|
||||
# print("FORMAT: " + FORMAT )
|
||||
# print("SCALE: " + SCALE )
|
||||
# print("TH_NAME: " + TH_NAME )
|
||||
# print("DEST_PATH: " + DEST_PATH )
|
||||
# print("ABS_PATH: " + ABS_PATH )
|
||||
|
||||
#################################################################################################
|
||||
# Reading config.ini #
|
||||
#################################################################################################
|
||||
try:
|
||||
# Load the 'database' section from the configuration file
|
||||
read_config("config.ini")
|
||||
# print("Auteur: " + Author)
|
||||
# print(f"Copyright: \n{Copyright}")
|
||||
|
||||
except ValueError as e:
|
||||
# Handle errors if the section is missing
|
||||
print(f"{Colors.ERROR}Error: read_config:{Colors.ERROR}", e)
|
||||
|
||||
if PROJECTION.lower() != "plan" :
|
||||
print(f"{Colors.ERROR}Error: Sorry, projection '{Colors.ENDC}{PROJECTION}{Colors.ERROR}' not yet implemented{Colors.ENDC}")
|
||||
exit(1)
|
||||
|
||||
if not os.path.isfile(ENTRY_FILE):
|
||||
print(f"{Colors.ERROR}Error: The Therion file didn't exist: {Colors.ENDC} {ENTRY_FILE}")
|
||||
exit(1)
|
||||
|
||||
if FORMAT not in ["th2", "plt"]:
|
||||
print(f"{Colors.ERROR}Error: Please choose a supported format: th2, plt{Colors.ENDC}")
|
||||
exit(1)
|
||||
|
||||
# Normalise name, namespace, key, file path
|
||||
print(f"{Colors.GREEN}Parsing survey entry file:\t{Colors.ENDC} {args.survey_file}")
|
||||
|
||||
survey_list = parse_therion_surveys(ENTRY_FILE)
|
||||
# print(survey_list)
|
||||
|
||||
if TARGET == "None" :
|
||||
if len(survey_list) > 1 :
|
||||
print(f"{Colors.ERROR}Error: Multiple surveys were found, not yet implemented{Colors.ENDC}")
|
||||
exit(1)
|
||||
|
||||
TARGET = sanitize_filename(survey_list[0])
|
||||
|
||||
print(f"{Colors.GREEN}Parsing survey target: \t{Colors.ENDC} {TARGET}")
|
||||
|
||||
loader = SurveyLoader(ENTRY_FILE)
|
||||
survey = loader.get_survey_by_id(survey_list[0])
|
||||
|
||||
# print(survey.name)
|
||||
|
||||
if not survey:
|
||||
raise NoSurveysFoundException(f"{Colors.ERROR}Error: No survey found with that selector{Colors.ENDC}")
|
||||
|
||||
|
||||
if args.update == "th2":
|
||||
print(f"{Colors.GREEN} Update th2 files {Colors.ENDC}")
|
||||
print(f"\t{Colors.BLUE}survey_file : {Colors.ENDC} {args.survey_file}")
|
||||
print(f"\t{Colors.BLUE}ENTRY_FILE: {Colors.ENDC} {ENTRY_FILE}")
|
||||
print(f"\t{Colors.BLUE}PROJECTION: {Colors.ENDC} {PROJECTION}")
|
||||
print(f"\t{Colors.BLUE}TARGET: {Colors.ENDC} {TARGET}")
|
||||
print(f"\t{Colors.BLUE}OUTPUT: {Colors.ENDC} {OUTPUT}")
|
||||
print(f"\t{Colors.BLUE}FORMAT: {Colors.ENDC} {FORMAT}")
|
||||
print(f"\t{Colors.BLUE}SCALE: {Colors.ENDC} {SCALE}")
|
||||
print(f"\t{Colors.BLUE}TH_NAME: {Colors.ENDC} {TH_NAME}")
|
||||
DEST_PATH = os.path.dirname(args.survey_file)
|
||||
print(f"\t{Colors.BLUE}DEST_PATH: {Colors.ENDC} {DEST_PATH}")
|
||||
print(f"\t{Colors.BLUE}ABS_PATH: {Colors.ENDC} {ABS_PATH}")
|
||||
|
||||
|
||||
|
||||
#################################################################################################
|
||||
# Copy template folders #
|
||||
#################################################################################################
|
||||
|
||||
if args.update == "":
|
||||
# print(f"{Colors.GREEN}Copy template folder and adapte it{Colors.ENDC}")
|
||||
copy_template_if_not_exists(template_path, DEST_PATH)
|
||||
copy_file_with_copyright(ENTRY_FILE, DEST_PATH + "/Data", Copyright)
|
||||
|
||||
# Adapte templates
|
||||
config_vars = {
|
||||
'fileName': TH_NAME,
|
||||
'cavename': TH_NAME.replace("_", " "),
|
||||
'Author': Author,
|
||||
'Copyright': Copyright,
|
||||
'Scale' : SCALE,
|
||||
'Target' : TARGET,
|
||||
'map_comment' : map_comment,
|
||||
'club' : club,
|
||||
'thanksto' : thanksto.replace("_", r"\_"),
|
||||
'datat' : datat.replace("_", r"\_"),
|
||||
'wpage' : wpage.replace("_", r"\_"),
|
||||
'cs' : cs,
|
||||
'other_scraps_plan' : "",
|
||||
'file_info' : f'# File generated by pyCreate_th2.py (version {Version}) date: {datetime.now().strftime("%Y.%m.%d %H:%M:%S")}',
|
||||
}
|
||||
|
||||
process_template(DEST_PATH + '/template.thconfig', config_vars, DEST_PATH + '/' + TH_NAME + '.thconfig')
|
||||
process_template(DEST_PATH + '/template-tot.th', config_vars, DEST_PATH + '/' + TH_NAME + '-tot.th')
|
||||
process_template(DEST_PATH + '/template-readme.md', config_vars, DEST_PATH + '/readme.md')
|
||||
|
||||
|
||||
|
||||
#################################################################################################
|
||||
# Produce the parsable XVI file #
|
||||
#################################################################################################
|
||||
|
||||
print(f"{Colors.GREEN}Compiling 2D XVI file: \t{Colors.ENDC} {TH_NAME}")
|
||||
|
||||
template = """source "{th_file}"
|
||||
layout minimal
|
||||
scale 1 {scale}
|
||||
endlayout
|
||||
|
||||
select {selector}
|
||||
|
||||
export model -o "{th_name}.lox"
|
||||
export map -projection plan -o "{th_name}-Plan.xvi" -layout minimal -layout-debug station-names
|
||||
export map -projection extended -o "{th_name}-Extended.xvi" -layout minimal -layout-debug station-names
|
||||
"""
|
||||
|
||||
if args.update == "th2":
|
||||
template_args = {
|
||||
"th_file": DEST_PATH + "/" + TH_NAME + ".th",
|
||||
"selector": survey.therion_id,
|
||||
"th_name": DEST_PATH + "/" + TH_NAME,
|
||||
"scale": SCALE,
|
||||
}
|
||||
|
||||
else :
|
||||
template_args = {
|
||||
"th_file": DEST_PATH + "/Data/" + TH_NAME + ".th",
|
||||
"selector": survey.therion_id,
|
||||
"th_name": DEST_PATH + "/Data/" + TH_NAME,
|
||||
"scale": SCALE,
|
||||
}
|
||||
|
||||
log, tmpdir = compile_template(template, template_args, cleanup=False, therion_path=therion_path)
|
||||
|
||||
#################################################################################################
|
||||
# Parse the Plan XVI file #
|
||||
#################################################################################################
|
||||
|
||||
if args.update == "th2":
|
||||
th_name_xvi = DEST_PATH + "/" + TH_NAME + "-Plan.xvi"
|
||||
else :
|
||||
th_name_xvi = DEST_PATH + "/Data/" + TH_NAME + "-Plan.xvi"
|
||||
|
||||
print(f"{Colors.GREEN}Parsing plan XVI file:\t{Colors.ENDC}{th_name_xvi}")
|
||||
|
||||
stations = {}
|
||||
lines = []
|
||||
|
||||
with open(join(th_name_xvi), "r", encoding="utf-8") as f:
|
||||
xvi_content = f.read()
|
||||
xvi_stations, xvi_shots = xvi_content.split("XVIshots")
|
||||
|
||||
# Extract all the stations
|
||||
for line in xvi_stations.split("\n"):
|
||||
match = re.search(r"{\s*(-?\d+\.\d+)\s*(-?\d+\.\d+)\s([^@]+)(?:@([^\s}]*))?\s*}", line)
|
||||
if match:
|
||||
x = match.groups()[0]
|
||||
y = match.groups()[1]
|
||||
station_number = match.groups()[2]
|
||||
namespace = match.groups()[3]
|
||||
namespace_array = namespace.split(".") if namespace else []
|
||||
station = station_number
|
||||
if len(namespace_array) > 1:
|
||||
station = "{}@{}".format(station_number, ".".join(namespace_array[0:-1]))
|
||||
stations["{}.{}".format(x, y)] = [x, y, station]
|
||||
|
||||
# Extraire les valeurs x et y à partir des listes dans stations
|
||||
x_values = [float(value[0]) for value in stations.values()]
|
||||
y_values = [float(value[1]) for value in stations.values()]
|
||||
|
||||
# Trouver les min et max de x
|
||||
x_min = float(min(x_values))
|
||||
x_max = float(max(x_values))
|
||||
|
||||
# Trouver les min et max de y
|
||||
y_min = float(min(y_values))
|
||||
y_max = float(max(y_values))
|
||||
|
||||
x_ecart = x_max - x_min
|
||||
y_ecart = y_max - y_min
|
||||
|
||||
# Afficher les résultats
|
||||
# print("x_min:", x_min, "x_max:", x_max)
|
||||
# print("y_min:", y_min, "y_max:", y_max)
|
||||
# print("Écart max-min pour x:", x_ecart)
|
||||
# print("Écart max-min pour y:", y_ecart)
|
||||
|
||||
# Extract all the lines
|
||||
for line in xvi_shots.split("\n"):
|
||||
match = re.search(r"^\s*{\s*(-?\d+\.\d+)\s*(-?\d+\.\d+)\s*(-?\d+\.\d+)\s*(-?\d+\.\d+)\s*.*}", line )
|
||||
if match:
|
||||
x1 = match.groups()[0]
|
||||
y1 = match.groups()[1]
|
||||
x2 = match.groups()[2]
|
||||
y2 = match.groups()[3]
|
||||
key1 = "{}.{}".format(x1, y1)
|
||||
key2 = "{}.{}".format(x2, y2)
|
||||
# Splays won't have stations
|
||||
station1 = stations[key1][2] if key1 in stations else None
|
||||
station2 = stations[key2][2] if key2 in stations else None
|
||||
lines.append([x1, y1, x2, y2, station1, station2])
|
||||
# shutil.rmtree(tmpdir)
|
||||
if args.update == "th2":
|
||||
th2_name = DEST_PATH + "/" + TH_NAME
|
||||
else :
|
||||
th2_name = DEST_PATH + "/Data/" + TH_NAME
|
||||
output_path = f'{th2_name}-{PROJECTION}.{FORMAT}'
|
||||
|
||||
scrap_to_add = int(len(stations)/station_by_scrap)-1
|
||||
|
||||
# print(stations)
|
||||
|
||||
print(f"{Colors.GREEN}Writing output to:\t{Colors.ENDC}{output_path}")
|
||||
|
||||
# Write TH2
|
||||
if FORMAT == "th2":
|
||||
th2_file_header = """encoding utf-8"""
|
||||
|
||||
th2_file = """
|
||||
##XTHERION## xth_me_area_adjust {X_Min} {Y_Min} {X_Max} {Y_Max}
|
||||
##XTHERION## xth_me_area_zoom_to 100
|
||||
##XTHERION## xth_me_image_insert {insert_XVI}
|
||||
|
||||
{Copyright}
|
||||
# File generated by pyCreate_th2.py version {version} date: {date}
|
||||
|
||||
# x_min: {X_Min}, x_max: {X_Max} ecart : {X_Max_X_Min}
|
||||
# y_min: {Y_Min}, y_max: {Y_Max} ecart : {Y_Max_Y_Min}
|
||||
|
||||
scrap S{projection_short}-{name}_01 -station-names "" "@{name}" -projection {projection} -author {year} "{author}" -copyright {year} "{Copyright_Short}"
|
||||
|
||||
{points}
|
||||
|
||||
{names}
|
||||
|
||||
{lines}
|
||||
|
||||
endscrap"""
|
||||
|
||||
th2_point = """ point {x} {y} station -name {station}"""
|
||||
th2_name = """ point {x} {y} station-name -align tr -scale xs -text {station}"""
|
||||
|
||||
th2_line = """ line u:Shot_Survey
|
||||
{x1} {y1}
|
||||
{x2} {y2}
|
||||
|
||||
endline"""
|
||||
|
||||
seen = set()
|
||||
th2_lines = []
|
||||
th2_points = []
|
||||
th2_names = []
|
||||
other_scraps_plan = ""
|
||||
|
||||
for line in lines:
|
||||
th2_lines.append(th2_line.format(x1=line[0], y1=line[1], x2=line[2], y2=line[3]))
|
||||
coords1 = "{}.{}".format(line[0], line[1])
|
||||
|
||||
if coords1 not in seen:
|
||||
seen.add(coords1)
|
||||
th2_points.append(th2_point.format(x=line[0], y=line[1], station=line[4]))
|
||||
th2_names.append(th2_name.format(x=line[0], y=line[1], station=line[4]))
|
||||
coords2 = "{}.{}".format(line[2], line[3])
|
||||
|
||||
if "{}.{}".format(line[2], line[3]) not in seen:
|
||||
seen.add(coords2)
|
||||
if line[5] != None:
|
||||
th2_points.append(th2_point.format(x=line[2], y=line[3], station=line[5]))
|
||||
th2_names.append(th2_name.format(x=line[2], y=line[3], station=line[5]))
|
||||
|
||||
|
||||
if isfile(output_path):
|
||||
print(f"{Colors.WARNING}Warning: {Colors.ENDC}{os.path.basename(output_path)}{Colors.WARNING} file already exists - nothing done{Colors.ENDC}")
|
||||
|
||||
else :
|
||||
name = TARGET,
|
||||
# print(f"{Colors.GREEN}Therion output path :\t{Colors.ENDC}{output_path}")
|
||||
|
||||
with open(str(output_path), "w+") as f:
|
||||
f.write(th2_file_header)
|
||||
f.write(th2_file.format(
|
||||
name = name[0],
|
||||
Copyright = Copyright,
|
||||
Copyright_Short = Copyright_Short,
|
||||
points="\n".join(th2_points),
|
||||
lines="\n".join(th2_lines) if LINES else "",
|
||||
names="\n".join(th2_names) if NAMES else "",
|
||||
projection=PROJECTION.lower(),
|
||||
projection_short=PROJECTION[0].upper(),
|
||||
author=Author,
|
||||
year=datetime.now().year,
|
||||
version = Version,
|
||||
date=datetime.now().strftime("%Y.%m.%d-%H:%M:%S"),
|
||||
X_Min=x_min*1.2,
|
||||
X_Max=x_max*1.2,
|
||||
Y_Min=y_min*1.2,
|
||||
Y_Max=y_max*1.2,
|
||||
X_Max_X_Min =x_ecart,
|
||||
Y_Max_Y_Min =y_ecart,
|
||||
insert_XVI = "{" + stations[next(iter(stations))][0] + "1 1.0} {"
|
||||
+ stations[next(iter(stations))][1] + " "
|
||||
+ stations[next(iter(stations))][2] +"} "
|
||||
+ os.path.basename(th_name_xvi) + " 0 {}",
|
||||
)
|
||||
)
|
||||
if scrap_to_add >= 1 :
|
||||
for i in range(scrap_to_add):
|
||||
other_scraps_plan = other_scraps_plan + f"\tbreak\n\tS{PROJECTION[0].upper()}-{name[0]}_{i+2:02}\n"
|
||||
th2_scrap = """
|
||||
|
||||
scrap S{projection_short}-{name}_{num:02} -station-names "" "@{name}" -projection {projection} -author {year} "{author}" -copyright {year} "{Copyright_Short}"
|
||||
|
||||
endscrap
|
||||
|
||||
"""
|
||||
f.write(th2_scrap.format(
|
||||
name=name[0],
|
||||
projection=PROJECTION.lower(),
|
||||
projection_short=PROJECTION[0].upper(),
|
||||
author=Author,
|
||||
year=datetime.now().year,
|
||||
Copyright_Short = Copyright_Short,
|
||||
num=f"{i+2:02}",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
#################################################################################################
|
||||
# Parse the Extended XVI file #
|
||||
#################################################################################################
|
||||
if args.update == "th2":
|
||||
th_name_xvi = DEST_PATH + "/" + TH_NAME + "-Extended.xvi"
|
||||
else :
|
||||
th_name_xvi = DEST_PATH + "/Data/" + TH_NAME + "-Extended.xvi"
|
||||
|
||||
print(f"{Colors.GREEN}Parsing extended XVI file:\t{Colors.ENDC}{th_name_xvi}")
|
||||
|
||||
# Parse the Extended XVI file
|
||||
stations = {}
|
||||
lines = []
|
||||
|
||||
with open(join(th_name_xvi), "r", encoding="utf-8") as f:
|
||||
xvi_content = f.read()
|
||||
xvi_stations, xvi_shots = xvi_content.split("XVIshots")
|
||||
|
||||
# Extract all the stations
|
||||
for line in xvi_stations.split("\n"):
|
||||
match = re.search(r"{\s*(-?\d+\.\d+)\s*(-?\d+\.\d+)\s([^@]+)(?:@([^\s}]*))?\s*}", line)
|
||||
if match:
|
||||
x = match.groups()[0]
|
||||
y = match.groups()[1]
|
||||
station_number = match.groups()[2]
|
||||
namespace = match.groups()[3]
|
||||
namespace_array = namespace.split(".") if namespace else []
|
||||
station = station_number
|
||||
if len(namespace_array) > 1:
|
||||
station = "{}@{}".format(station_number, ".".join(namespace_array[0:-1]))
|
||||
stations["{}.{}".format(x, y)] = [x, y, station]
|
||||
|
||||
# Extraire les valeurs x et y à partir des listes dans stations
|
||||
x_values = [float(value[0]) for value in stations.values()]
|
||||
y_values = [float(value[1]) for value in stations.values()]
|
||||
|
||||
# Trouver les min et max de x
|
||||
x_min = float(min(x_values))
|
||||
x_max = float(max(x_values))
|
||||
|
||||
# Trouver les min et max de y
|
||||
y_min = float(min(y_values))
|
||||
y_max = float(max(y_values))
|
||||
|
||||
x_ecart = x_max - x_min
|
||||
y_ecart = y_max - y_min
|
||||
|
||||
# Afficher les résultats
|
||||
# print("x_min:", x_min, "x_max:", x_max)
|
||||
# print("y_min:", y_min, "y_max:", y_max)
|
||||
# print("Écart max-min pour x:", x_ecart)
|
||||
# print("Écart max-min pour y:", y_ecart)
|
||||
|
||||
# Extract all the lines
|
||||
for line in xvi_shots.split("\n"):
|
||||
match = re.search(r"^\s*{\s*(-?\d+\.\d+)\s*(-?\d+\.\d+)\s*(-?\d+\.\d+)\s*(-?\d+\.\d+)\s*.*}", line )
|
||||
if match:
|
||||
x1 = match.groups()[0]
|
||||
y1 = match.groups()[1]
|
||||
x2 = match.groups()[2]
|
||||
y2 = match.groups()[3]
|
||||
key1 = "{}.{}".format(x1, y1)
|
||||
key2 = "{}.{}".format(x2, y2)
|
||||
# Splays won't have stations
|
||||
station1 = stations[key1][2] if key1 in stations else None
|
||||
station2 = stations[key2][2] if key2 in stations else None
|
||||
lines.append([x1, y1, x2, y2, station1, station2])
|
||||
shutil.rmtree(tmpdir)
|
||||
|
||||
if args.update == "th2":
|
||||
th2_name = DEST_PATH + "/" + TH_NAME
|
||||
else :
|
||||
th2_name = DEST_PATH + "/Data/" + TH_NAME
|
||||
output_path = f'{th2_name}-Extended.{FORMAT}'
|
||||
|
||||
print(f"{Colors.GREEN}Writing output to:\t\t{Colors.ENDC}{output_path}")
|
||||
|
||||
# Write TH2
|
||||
if FORMAT == "th2":
|
||||
th2_file_header = """encoding utf-8"""
|
||||
|
||||
th2_file = """
|
||||
##XTHERION## xth_me_area_adjust {X_Min} {Y_Min} {X_Max} {Y_Max}
|
||||
##XTHERION## xth_me_area_zoom_to 100
|
||||
##XTHERION## xth_me_image_insert {insert_XVI}
|
||||
|
||||
{Copyright}
|
||||
# File generated by pyCreate_th2.py version {version} date: {date}
|
||||
|
||||
# x_min: {X_Min}, x_max: {X_Max} ecart : {X_Max_X_Min}
|
||||
# y_min: {Y_Min}, y_max: {Y_Max} ecart : {Y_Max_Y_Min}
|
||||
|
||||
scrap SC-{name}_01 -station-names "" "@{name}" -projection extended -author {year} "{author}" -copyright {year} "{Copyright_Short}"
|
||||
|
||||
{points}
|
||||
|
||||
{names}
|
||||
|
||||
{lines}
|
||||
|
||||
endscrap"""
|
||||
|
||||
th2_point = """ point {x} {y} station -name {station}"""
|
||||
th2_name = """ point {x} {y} station-name -align tr -scale xs -text {station}"""
|
||||
|
||||
th2_line = """ line u:Shot_Survey
|
||||
{x1} {y1}
|
||||
{x2} {y2}
|
||||
endline
|
||||
"""
|
||||
|
||||
seen = set()
|
||||
th2_lines = []
|
||||
th2_points = []
|
||||
th2_names = []
|
||||
other_scraps_extended = ""
|
||||
|
||||
for line in lines:
|
||||
th2_lines.append(th2_line.format(x1=line[0], y1=line[1], x2=line[2], y2=line[3]))
|
||||
coords1 = "{}.{}".format(line[0], line[1])
|
||||
|
||||
if coords1 not in seen:
|
||||
seen.add(coords1)
|
||||
th2_points.append(th2_point.format(x=line[0], y=line[1], station=line[4]))
|
||||
th2_names.append(th2_name.format(x=line[0], y=line[1], station=line[4]))
|
||||
coords2 = "{}.{}".format(line[2], line[3])
|
||||
|
||||
if "{}.{}".format(line[2], line[3]) not in seen:
|
||||
seen.add(coords2)
|
||||
if line[5] != None:
|
||||
th2_points.append(th2_point.format(x=line[2], y=line[3], station=line[5]))
|
||||
th2_names.append(th2_name.format(x=line[2], y=line[3], station=line[5]))
|
||||
|
||||
|
||||
if isfile(output_path):
|
||||
print(f"{Colors.WARNING}Warning: {Colors.ENDC}{os.path.basename(output_path)}{Colors.WARNING} file already exists - nothing done{Colors.ENDC}")
|
||||
else :
|
||||
name = TARGET,
|
||||
# print(f"{Colors.GREEN}Therion output path :\t{Colors.ENDC}{output_path}")
|
||||
|
||||
with open(str(output_path), "w+") as f:
|
||||
f.write(th2_file_header)
|
||||
f.write(th2_file.format(
|
||||
name = name[0],
|
||||
Copyright = Copyright,
|
||||
Copyright_Short = Copyright_Short,
|
||||
points="\n".join(th2_points),
|
||||
lines="\n".join(th2_lines) if LINES else "",
|
||||
names="\n".join(th2_names) if NAMES else "",
|
||||
projection="extended",
|
||||
projection_short="C",
|
||||
author=Author,
|
||||
year=datetime.now().year,
|
||||
version = Version,
|
||||
date=datetime.now().strftime("%Y.%m.%d-%H:%M:%S"),
|
||||
X_Min=x_min*1.2,
|
||||
X_Max=x_max*1.2,
|
||||
Y_Min=y_min*1.2,
|
||||
Y_Max=y_max*1.2,
|
||||
X_Max_X_Min =x_ecart,
|
||||
Y_Max_Y_Min =y_ecart,
|
||||
insert_XVI = "{" + stations[next(iter(stations))][0] + "1 1.0} {"
|
||||
+ stations[next(iter(stations))][1] + " "
|
||||
+ stations[next(iter(stations))][2] +"} "
|
||||
+ os.path.basename(th_name_xvi) + " 0 {}",
|
||||
)
|
||||
)
|
||||
if scrap_to_add >= 1 :
|
||||
for i in range(scrap_to_add):
|
||||
other_scraps_extended = other_scraps_extended + f"\tbreak\n\tSC-{name[0]}_{i+2:02}\n"
|
||||
th2_scrap = """
|
||||
|
||||
scrap SC-{name}_{num:02} -station-names "" "@{name}" -projection extended -author {year} "{author}" -copyright {year} "{Copyright_Short}"
|
||||
|
||||
endscrap
|
||||
|
||||
"""
|
||||
f.write(th2_scrap.format(
|
||||
name=name[0],
|
||||
author=Author,
|
||||
Copyright_Short = Copyright_Short,
|
||||
year=datetime.now().year,
|
||||
num=f"{i+2:02}",
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
#################################################################################################
|
||||
# Update -maps files #
|
||||
#################################################################################################
|
||||
if args.update == "":
|
||||
config_vars = {
|
||||
'fileName': TH_NAME,
|
||||
'Author': Author,
|
||||
'Copyright': Copyright,
|
||||
'Scale' : SCALE,
|
||||
'Target' : TARGET,
|
||||
'map_comment' : map_comment,
|
||||
'club' : club,
|
||||
'thanksto' : thanksto,
|
||||
'datat' : datat,
|
||||
'wpage' : wpage,
|
||||
'cs' : cs,
|
||||
'other_scraps_plan' : other_scraps_plan,
|
||||
'other_scraps_extended' : other_scraps_extended,
|
||||
'file_info' : f"# File generated by pyCreate_th2.py version {Version} date: {datetime.now().strftime("%Y.%m.%d-%H:%M:%S")}",
|
||||
}
|
||||
|
||||
process_template(DEST_PATH + '/template-maps.th', config_vars, DEST_PATH + '/' + TH_NAME + '-maps.th')
|
||||
|
||||
|
||||
#################################################################################################
|
||||
# Final therion compilation #
|
||||
#################################################################################################
|
||||
|
||||
if args.update == "":
|
||||
if final_therion_exe == True:
|
||||
print(f"{Colors.GREEN}Final therion compilation{Colors.ENDC}")
|
||||
PATH = os.path.dirname(args.survey_file) + "/" + TH_NAME + "/" + TH_NAME + ".thconfig"
|
||||
|
||||
compile_file(PATH, therion_path=therion_path)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user