Ordner aufgeräumt.
This commit is contained in:
@@ -0,0 +1,259 @@
|
||||
import json
|
||||
import sys
|
||||
import os
|
||||
from datetime import datetime
|
||||
|
||||
def convert_to_float(value):
|
||||
"""Convert value to float safely, return original if conversion fails"""
|
||||
try:
|
||||
return float(value)
|
||||
except (ValueError, TypeError):
|
||||
return value
|
||||
|
||||
def process_json_file(input_filename, output_filename=None):
|
||||
"""
|
||||
Process JSON file and generate output
|
||||
|
||||
Args:
|
||||
input_filename: Input file path (can be relative or absolute)
|
||||
output_filename: Optional output file path. Auto-generated if not provided
|
||||
"""
|
||||
# Get base path from environment variable
|
||||
json_base_path = os.environ.get("JSON_PATH","JSON")
|
||||
if not json_base_path:
|
||||
print("Error: JSON_PATH environment variable not set")
|
||||
print("Please set JSON_PATH in your .bat file")
|
||||
sys.exit(1)
|
||||
|
||||
# Normalize path (handle path separator issues)
|
||||
json_base_path = os.path.normpath(json_base_path)
|
||||
|
||||
# Build full input path
|
||||
if os.path.isabs(input_filename):
|
||||
input_path = input_filename
|
||||
else:
|
||||
input_path = os.path.join(json_base_path, input_filename)
|
||||
|
||||
# Convert to absolute path and normalize
|
||||
input_path = os.path.abspath(os.path.normpath(input_path))
|
||||
|
||||
# Validate input file
|
||||
if not os.path.isfile(input_path):
|
||||
print(f"Error: Input file not found - {input_path}")
|
||||
print(f"Current working directory: {os.getcwd()}")
|
||||
sys.exit(1)
|
||||
|
||||
print(f"\nReading file: {input_path}")
|
||||
|
||||
# Read JSON file
|
||||
try:
|
||||
with open(input_path, 'r', encoding='utf-8') as f:
|
||||
data = json.load(f)
|
||||
except json.JSONDecodeError as e:
|
||||
print(f"Error: Invalid JSON format in {input_path}")
|
||||
print(f"Details: {str(e)}")
|
||||
sys.exit(1)
|
||||
except Exception as e:
|
||||
print(f"Error reading file {input_path}: {str(e)}")
|
||||
sys.exit(1)
|
||||
|
||||
# Print found item count
|
||||
total_items = len(data)
|
||||
processed_items = 0
|
||||
print(f"\nFound {total_items} JSON records")
|
||||
print("="*50) # Separator line
|
||||
|
||||
|
||||
# 处理JSON数据 (保持原有处理逻辑不变)
|
||||
for i, item in enumerate(data):
|
||||
print(f"\nProcessing item {i+1}: {item.get('Sivasnr', 'Unknown')}")
|
||||
|
||||
try:
|
||||
# 转换数值为float
|
||||
for key in item:
|
||||
if isinstance(item[key], (int, float, str)) and any(x in key.lower() for x in ['mm', 'width', 'height', 'radius', 'winkel']):
|
||||
item[key] = convert_to_float(item[key])
|
||||
|
||||
# 1. 添加四个新属性并计算它们的值
|
||||
print("\nStep 1: Adding four new attributes with calculations")
|
||||
|
||||
# OFBogen_CP2_x_mm
|
||||
of_cp2_x = float(item["OFBogen_CP1_x_mm"]) + float(item["OFBogen_center_line_width_mm"])
|
||||
item["OFBogen_CP2_x_mm"] = round(of_cp2_x, 3)
|
||||
print(f"Added OFBogen_CP2_x_mm: {item['OFBogen_CP2_x_mm']}")
|
||||
|
||||
# TEFBogen_CP2_x_mm
|
||||
tef_cp2_x = float(item["TEFBogen_CP1_x_mm"]) + float(item["TEFBogen_center_line_width_mm"])
|
||||
item["TEFBogen_CP2_x_mm"] = round(tef_cp2_x, 3)
|
||||
print(f"Added TEFBogen_CP2_x_mm: {item['TEFBogen_CP2_x_mm']}")
|
||||
|
||||
# OFBogen_CP2_y_mm
|
||||
of_cp2_y = float(item["OFBogen_CP1_y_mm"]) + float(item["OFBogen_center_line_height_mm"])
|
||||
item["OFBogen_CP2_y_mm"] = round(of_cp2_y, 3)
|
||||
print(f"Added OFBogen_CP2_y_mm: {item['OFBogen_CP2_y_mm']}")
|
||||
|
||||
# TEFBogen_CP2_y_mm
|
||||
tef_cp2_y = float(item["TEFBogen_CP1_y_mm"]) + float(item["TEFBogen_center_line_height_mm"])
|
||||
item["TEFBogen_CP2_y_mm"] = round(tef_cp2_y, 3)
|
||||
print(f"Added TEFBogen_CP2_y_mm: {item['TEFBogen_CP2_y_mm']}")
|
||||
|
||||
# 2. 计算像素尺寸和SVG尺寸
|
||||
print("\nStep 2: Calculating pixel and SVG dimensions")
|
||||
|
||||
# 计算 Gruppe_width_px 和 Gruppe_height_px
|
||||
item["Gruppe_width_px"] = round(float(item["Gruppe_width_mm"]) * 3.7795, 3)
|
||||
item["Gruppe_height_px"] = round(float(item["Gruppe_height_mm"]) * 3.7795, 3)
|
||||
print(f"Calculated Gruppe_width_px: {item['Gruppe_width_px']}")
|
||||
print(f"Calculated Gruppe_height_px: {item['Gruppe_height_px']}")
|
||||
|
||||
# 比较宽度和高度以确定缩放比例
|
||||
if float(item["Gruppe_width_mm"]) > float(item["Gruppe_height_mm"]):
|
||||
print("Width is larger, setting calculated_SVG_width to 1000px")
|
||||
scale = round(1000 / float(item["Gruppe_width_mm"]), 6)
|
||||
item["calculated_SVG_width_px"] = 1000
|
||||
item["calculated_SVG_height_px"] = round(float(item["Gruppe_height_mm"]) * scale+3.7795/2, 3)
|
||||
scale_RD_H = round(1000 / float(item["calculated_SVG_height_px"]), 6)
|
||||
scale_RD_W = 1
|
||||
elif float(item["Gruppe_width_mm"]) == float(item["Gruppe_height_mm"]):
|
||||
print("Width = Height")
|
||||
scale = round(1000 / float(item["Gruppe_width_mm"]), 6)
|
||||
item["calculated_SVG_width_px"] = 1000
|
||||
item["calculated_SVG_height_px"] = round(float(item["Gruppe_height_mm"]) * scale, 3)
|
||||
scale_RD_H = round(1000 / float(item["calculated_SVG_height_px"]), 6)
|
||||
scale_RD_W = 1
|
||||
else:
|
||||
print("Height is larger, setting calculated_SVG_height to 1000px")
|
||||
scale = round(1000 / float(item["Gruppe_height_mm"]), 6)
|
||||
item["calculated_SVG_height_px"] = 1000
|
||||
item["calculated_SVG_width_px"] = round(float(item["Gruppe_width_mm"]) * scale+3.7795/2, 3)
|
||||
scale_RD_W = round(1000 / float(item["calculated_SVG_width_px"]), 6)
|
||||
scale_RD_H = 1
|
||||
|
||||
print(f"Calculated scale: {scale}")
|
||||
print(f"Calculated calculated_SVG_width_px: {item['calculated_SVG_width_px']}")
|
||||
print(f"Calculated calculated_SVG_height_px: {item['calculated_SVG_height_px']}")
|
||||
print(f"Calculated scale_RD_W: {scale_RD_W}")
|
||||
print(f"Calculated scale_RD_H: {scale_RD_H}")
|
||||
|
||||
# 3. 创建connectionPoints数组
|
||||
print("\nStep 3: Creating connectionPoints array")
|
||||
|
||||
connection_points = []
|
||||
|
||||
# CP1
|
||||
cp1_x = round(float(item["OFBogen_CP1_x_mm"]) * scale * scale_RD_W, 3)
|
||||
cp1_y = round(float(item["OFBogen_CP1_y_mm"]) * scale * scale_RD_H, 3)
|
||||
cp1 = {
|
||||
"id": "cp1",
|
||||
"x": cp1_x,
|
||||
"y": cp1_y,
|
||||
"direction": 270.0,
|
||||
"linkClass": "Omniflo"
|
||||
}
|
||||
connection_points.append(cp1)
|
||||
print(f"Created CP1: x={cp1_x}, y={cp1_y}, direction=270.0, linkClass=Omniflo")
|
||||
|
||||
# CP2
|
||||
cp2_x = round(float(item["OFBogen_CP2_x_mm"]) * scale * scale_RD_W, 3)
|
||||
cp2_y = round(float(item["OFBogen_CP2_y_mm"]) * scale * scale_RD_H, 3)
|
||||
cp2_direction = round(90 + float(item["KurvenWinkel"]), 1)
|
||||
cp2 = {
|
||||
"id": "cp2",
|
||||
"x": cp2_x,
|
||||
"y": cp2_y,
|
||||
"direction": cp2_direction,
|
||||
"linkClass": "Omniflo"
|
||||
}
|
||||
connection_points.append(cp2)
|
||||
print(f"Created CP2: x={cp2_x}, y={cp2_y}, direction={cp2_direction}, linkClass=Omniflo")
|
||||
|
||||
# CP3
|
||||
cp3_x = round(float(item["TEFBogen_CP1_x_mm"]) * scale * scale_RD_W, 3)
|
||||
cp3_y = round(float(item["TEFBogen_CP1_y_mm"]) * scale * scale_RD_H, 3)
|
||||
cp3 = {
|
||||
"id": "cp3",
|
||||
"x": cp3_x,
|
||||
"y": cp3_y,
|
||||
"direction": 270.0,
|
||||
"linkClass": "OmnifloTEF"
|
||||
}
|
||||
connection_points.append(cp3)
|
||||
print(f"Created CP3: x={cp3_x}, y={cp3_y}, direction=270.0, linkClass=OmnifloTEF")
|
||||
|
||||
# CP4
|
||||
cp4_x = round(float(item["TEFBogen_CP2_x_mm"]) * scale * scale_RD_W, 3)
|
||||
cp4_y = round(float(item["TEFBogen_CP2_y_mm"]) * scale * scale_RD_H, 3)
|
||||
cp4_direction = round(90 + float(item["KurvenWinkel"]), 1)
|
||||
cp4 = {
|
||||
"id": "cp4",
|
||||
"x": cp4_x,
|
||||
"y": cp4_y,
|
||||
"direction": cp4_direction,
|
||||
"linkClass": "OmnifloTEF"
|
||||
}
|
||||
connection_points.append(cp4)
|
||||
print(f"Created CP4: x={cp4_x}, y={cp4_y}, direction={cp4_direction}, linkClass=OmnifloTEF")
|
||||
|
||||
item["connectionPoints"] = connection_points
|
||||
# Increment success counter
|
||||
processed_items += 1
|
||||
print(f"Item {i} processed successfully")
|
||||
|
||||
except Exception as e:
|
||||
print(f"Error processing item {i}: {str(e)}")
|
||||
continue
|
||||
|
||||
# Print processing statistics
|
||||
print("\n" + "="*50)
|
||||
print("Processing Statistics:")
|
||||
print(f"Total records found: {total_items}")
|
||||
print(f"Successfully processed: {processed_items}")
|
||||
if total_items > 0:
|
||||
success_rate = (processed_items / total_items) * 100
|
||||
print(f"Success rate: {success_rate:.2f}%")
|
||||
print("="*50 + "\n")
|
||||
|
||||
# Handle output file path
|
||||
if output_filename is None:
|
||||
base_name = os.path.splitext(os.path.basename(input_path))[0]
|
||||
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
||||
output_filename = f"{base_name}_processed_{timestamp}.json"
|
||||
|
||||
# Build output path
|
||||
if os.path.isabs(output_filename):
|
||||
output_path = output_filename
|
||||
else:
|
||||
output_path = os.path.join(json_base_path, output_filename)
|
||||
|
||||
# Ensure output directory exists
|
||||
os.makedirs(os.path.dirname(output_path) or '.', exist_ok=True)
|
||||
|
||||
# Save processed JSON file
|
||||
try:
|
||||
with open(output_path, 'w', encoding='utf-8') as f:
|
||||
json.dump(data, f, indent=2, ensure_ascii=False)
|
||||
print(f"Processing complete! Results saved to: {output_path}")
|
||||
print(f"Original file remains unchanged: {input_path}")
|
||||
except Exception as e:
|
||||
print(f"\nError saving processed file: {str(e)}")
|
||||
sys.exit(1)
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
# Get JSON_PATH from environment
|
||||
json_path = os.environ.get("JSON_PATH","JSON")
|
||||
|
||||
# Default filenames
|
||||
input_filename = "1_TEF_Boegen_input.json"
|
||||
output_filename = "1_TEF_Boegen_output.json"
|
||||
|
||||
# Use command line arguments if provided
|
||||
if len(sys.argv) > 1:
|
||||
input_filename = sys.argv[1]
|
||||
if len(sys.argv) > 2:
|
||||
output_filename = sys.argv[2]
|
||||
|
||||
process_json_file(input_filename, output_filename)
|
||||
except Exception as e:
|
||||
print(f"Error: {str(e)}", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
@@ -0,0 +1,152 @@
|
||||
import json
|
||||
import os
|
||||
import glob
|
||||
from datetime import datetime
|
||||
|
||||
def process_files(json_file_path, txt_files_dir):
|
||||
# Create a log file with timestamp
|
||||
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
||||
log_file_path = os.path.join(txt_files_dir, f"modification_report_TEFBogen_{timestamp}.txt")
|
||||
|
||||
# Read JSON file
|
||||
with open(json_file_path, 'r', encoding='utf-8') as f:
|
||||
json_data = json.load(f)
|
||||
|
||||
# Create Sivasnr to JSON data mapping
|
||||
sivasnr_mapping = {item["Sivasnr"]: item for item in json_data}
|
||||
|
||||
# Initialize counters
|
||||
total_files = 0
|
||||
processed_files = 0
|
||||
skipped_files = 0
|
||||
|
||||
# Prepare report content
|
||||
report_content = []
|
||||
report_content.append(f"Modification Report - {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
|
||||
report_content.append(f"JSON Reference File: {json_file_path}")
|
||||
report_content.append(f"TXT Files Directory: {txt_files_dir}")
|
||||
report_content.append("="*50 + "\n")
|
||||
|
||||
# Process all TXT files
|
||||
for txt_file_path in glob.glob(os.path.join(txt_files_dir, '*.txt')):
|
||||
total_files += 1
|
||||
# Extract Sivasnr from filename
|
||||
sivasnr = os.path.splitext(os.path.basename(txt_file_path))[0]
|
||||
|
||||
# Check if corresponding JSON data exists
|
||||
if sivasnr in sivasnr_mapping:
|
||||
json_item = sivasnr_mapping[sivasnr]
|
||||
|
||||
# Read TXT file content (using utf-8-sig to handle BOM)
|
||||
with open(txt_file_path, 'r', encoding='utf-8-sig') as f:
|
||||
txt_content = json.load(f)
|
||||
|
||||
# Prepare entry for this file
|
||||
file_entry = []
|
||||
file_entry.append(f"\nProcessing file: {os.path.basename(txt_file_path)}")
|
||||
file_entry.append("="*50)
|
||||
|
||||
# Record old values
|
||||
old_width = txt_content["width"]
|
||||
old_height = txt_content["height"]
|
||||
old_cps = {cp["id"]: {"x": cp["x"], "y": cp["y"], "direction": cp["direction"],"linkClass": cp["linkClass"]}
|
||||
for cp in txt_content["connectionPoints"]}
|
||||
|
||||
# Update width and height
|
||||
new_width = round(json_item["Gruppe_width_px"], 3)
|
||||
new_height = round(json_item["Gruppe_height_px"], 3)
|
||||
txt_content["width"] = new_width
|
||||
txt_content["height"] = new_height
|
||||
|
||||
# Update connectionPoints
|
||||
cp_changes = []
|
||||
for cp in txt_content["connectionPoints"]:
|
||||
cp_id = cp["id"]
|
||||
# Find corresponding connection point in JSON data
|
||||
json_cp = next((item for item in json_item["connectionPoints"] if item["id"] == cp_id), None)
|
||||
if json_cp:
|
||||
# Record old values
|
||||
old_x = cp["x"]
|
||||
old_y = cp["y"]
|
||||
old_dir = cp["direction"]
|
||||
old_linkClass = cp["linkClass"]
|
||||
# Update values
|
||||
cp["x"] = json_cp["x"]
|
||||
cp["y"] = json_cp["y"]
|
||||
cp["direction"] = json_cp["direction"]
|
||||
cp["linkClass"] = json_cp["linkClass"]
|
||||
# Record changes
|
||||
cp_changes.append({
|
||||
"id": cp_id,
|
||||
"x": (old_x, cp["x"]),
|
||||
"y": (old_y, cp["y"]),
|
||||
"direction": (old_dir, cp["direction"]),
|
||||
"linkClass": (old_linkClass, cp["linkClass"])
|
||||
})
|
||||
|
||||
# Write back to TXT file
|
||||
with open(txt_file_path, 'w', encoding='utf-8') as f:
|
||||
json.dump(txt_content, f, indent=2, ensure_ascii=False)
|
||||
|
||||
# Add to report
|
||||
file_entry.append("[Dimension Changes]")
|
||||
file_entry.append(f"width: {old_width} → {new_width}")
|
||||
file_entry.append(f"height: {old_height} → {new_height}")
|
||||
|
||||
if cp_changes:
|
||||
file_entry.append("\n[Connection Point Changes]")
|
||||
for change in cp_changes:
|
||||
file_entry.append(f"Connection point {change['id']}:")
|
||||
file_entry.append(f" x: {change['x'][0]} → {change['x'][1]}")
|
||||
file_entry.append(f" y: {change['y'][0]} → {change['y'][1]}")
|
||||
file_entry.append(f" direction: {change['direction'][0]} → {change['direction'][1]}")
|
||||
file_entry.append(f" linkClass: {change['linkClass'][0]} → {change['linkClass'][1]}")
|
||||
|
||||
processed_files += 1
|
||||
file_entry.append(f"\nFile processed successfully")
|
||||
file_entry.append("="*50)
|
||||
|
||||
# Add this file's entry to main report
|
||||
report_content.extend(file_entry)
|
||||
|
||||
# Also print to console
|
||||
print("\n" + "\n".join(file_entry))
|
||||
else:
|
||||
skipped_files += 1
|
||||
|
||||
# Add processing statistics to report
|
||||
report_content.append("\n" + "="*50)
|
||||
report_content.append("Processing Statistics:")
|
||||
report_content.append(f"Total TXT files found: {total_files}")
|
||||
report_content.append(f"Total JSON records available: {len(json_data)}")
|
||||
report_content.append(f"Successfully processed: {processed_files}")
|
||||
report_content.append(f"Skipped files: {skipped_files}")
|
||||
if total_files > 0:
|
||||
success_rate = (processed_files / len(json_data)) * 100
|
||||
report_content.append(f"Success rate: {success_rate:.2f}%")
|
||||
report_content.append("="*50)
|
||||
|
||||
# Print statistics to console
|
||||
print("\n" + "="*50)
|
||||
print("Processing Statistics:")
|
||||
print(f"Total TXT files found: {total_files}")
|
||||
print(f"Total JSON records available: {len(json_data)}")
|
||||
print(f"Successfully processed: {processed_files}")
|
||||
print(f"Skipped files: {skipped_files}")
|
||||
if total_files > 0:
|
||||
success_rate = (processed_files / len(json_data)) * 100
|
||||
print(f"Success rate: {success_rate:.2f}%")
|
||||
print("="*50 + "\n")
|
||||
|
||||
# Write the report file
|
||||
with open(log_file_path, 'w', encoding='utf-8') as f:
|
||||
f.write("\n".join(report_content))
|
||||
print(f"Modification report saved to: {log_file_path}")
|
||||
|
||||
# Example usage
|
||||
if __name__ == "__main__":
|
||||
json_path = os.environ.get("JSON_PATH", "JSON")
|
||||
json_file_path = os.path.join(json_path, "1_TEF_Boegen_output.json")
|
||||
txt_files_dir = os.environ.get("PROPS_PATH", "props")
|
||||
process_files(json_file_path, txt_files_dir)
|
||||
print("\nProcessing complete!")
|
||||
@@ -0,0 +1,174 @@
|
||||
"""
|
||||
SVG XML Batch Modifier Script
|
||||
|
||||
This script:
|
||||
1. Reads a JSON array of items
|
||||
2. For each item, extracts the "Sivasnr" value
|
||||
3. Locates and modifies the corresponding XML file
|
||||
4. Provides comprehensive reporting
|
||||
"""
|
||||
|
||||
import json
|
||||
import os
|
||||
import xml.etree.ElementTree as ET
|
||||
from xml.etree.ElementTree import Element, SubElement, tostring
|
||||
|
||||
def process_xml_file(xml_path):
|
||||
"""
|
||||
Process a single XML file with enhanced style handling
|
||||
Returns modification statistics
|
||||
"""
|
||||
try:
|
||||
tree = ET.parse(xml_path)
|
||||
root = tree.getroot()
|
||||
|
||||
# Register and handle SVG namespace
|
||||
ET.register_namespace('', 'http://www.w3.org/2000/svg')
|
||||
namespaces = {'svg': 'http://www.w3.org/2000/svg'}
|
||||
|
||||
stats = {
|
||||
'ffe31b_groups': 0,
|
||||
'ec2525_groups': 0,
|
||||
'other_groups_processed': 0,
|
||||
'elements_modified': 0,
|
||||
'modified': False
|
||||
}
|
||||
|
||||
# Process all group elements
|
||||
for g in root.findall('.//svg:g', namespaces):
|
||||
stroke = g.get('stroke')
|
||||
|
||||
if stroke == "#ffe31b":
|
||||
stats['ffe31b_groups'] += 1
|
||||
|
||||
# Remove group attributes
|
||||
for attr in ['stroke-width', 'stroke-miterlimit']:
|
||||
if attr in g.attrib:
|
||||
del g.attrib[attr]
|
||||
stats['modified'] = True
|
||||
|
||||
# Set stroke-width for all path children
|
||||
for child in g.findall('.//svg:path', namespaces):
|
||||
child.set('stroke-width', '1px')
|
||||
stats['elements_modified'] += 1
|
||||
stats['modified'] = True
|
||||
|
||||
elif stroke == "#ec2525":
|
||||
stats['ec2525_groups'] += 1
|
||||
|
||||
# Remove group attributes
|
||||
for attr in ['stroke', 'stroke-width', 'stroke-linejoin']:
|
||||
if attr in g.attrib:
|
||||
del g.attrib[attr]
|
||||
stats['modified'] = True
|
||||
|
||||
# Modify path children
|
||||
for child in g.findall('.//svg:path[@stroke-width="1px"]', namespaces):
|
||||
del child.attrib['stroke-width']
|
||||
child.set('style', 'stroke:#ec2525;stroke-width:2px')
|
||||
stats['elements_modified'] += 1
|
||||
stats['modified'] = True
|
||||
|
||||
else:
|
||||
# Handle groups without specific stroke color
|
||||
stats['other_groups_processed'] += 1
|
||||
|
||||
# Process elements with style="stroke:#ec2525;"
|
||||
for child in g.findall('.//svg:*[@style]', namespaces):
|
||||
style = child.get('style', '')
|
||||
if 'stroke:#ec2525;' in style:
|
||||
# Remove stroke-width if exists
|
||||
if 'stroke-width' in child.attrib:
|
||||
del child.attrib['stroke-width']
|
||||
stats['modified'] = True
|
||||
|
||||
# Update the style attribute
|
||||
|
||||
child.set('style', 'stroke:#ec2525;stroke-width:2px;')
|
||||
stats['elements_modified'] += 1
|
||||
stats['modified'] = True
|
||||
|
||||
# Save changes if modified
|
||||
if stats['modified']:
|
||||
xml_str = ET.tostring(root, encoding='unicode')
|
||||
xml_str = xml_str.replace('><', '>\n<').replace('</svg>', '\n</svg>')
|
||||
|
||||
with open(xml_path, 'w', encoding='utf-8') as f:
|
||||
f.write(xml_str)
|
||||
|
||||
return stats
|
||||
|
||||
except Exception as e:
|
||||
print(f" Error processing file: {str(e)}")
|
||||
return None
|
||||
|
||||
def main():
|
||||
"""
|
||||
Main processing function
|
||||
"""
|
||||
# Configure paths
|
||||
json_path=os.environ.get("JSON_PATH","JSON")
|
||||
json_file_path = os.path.join(json_path,"1_TEF_Boegen_input.json")
|
||||
svg_folder_path = os.environ.get("XML_PATH","svg")
|
||||
|
||||
|
||||
try:
|
||||
# Read and parse JSON file
|
||||
with open(json_file_path, 'r', encoding='utf-8') as f:
|
||||
data = json.load(f)
|
||||
|
||||
# Verify we have a list of items
|
||||
if not isinstance(data, list):
|
||||
print("Error: JSON data should be an array of items")
|
||||
return
|
||||
|
||||
print(f"\nFound {len(data)} items in JSON file")
|
||||
|
||||
# Process each item in the JSON array
|
||||
for index, item in enumerate(data, 1):
|
||||
if not isinstance(item, dict):
|
||||
print(f"\nItem {index}: Not a dictionary, skipping")
|
||||
continue
|
||||
|
||||
sivasnr = item.get("Sivasnr")
|
||||
if not sivasnr:
|
||||
print(f"\nItem {index}: Missing 'Sivasnr' value, skipping")
|
||||
continue
|
||||
|
||||
print(f"\nProcessing item {index}: Sivasnr = {sivasnr}")
|
||||
|
||||
# Build XML filename and path
|
||||
xml_filename = f"{sivasnr}.xml"
|
||||
xml_path = os.path.join(svg_folder_path, xml_filename)
|
||||
|
||||
if not os.path.exists(xml_path):
|
||||
print(f" XML file not found: {xml_path}")
|
||||
continue
|
||||
|
||||
print(f" Found XML file: {xml_path}")
|
||||
|
||||
# Process the XML file
|
||||
stats = process_xml_file(xml_path)
|
||||
|
||||
if stats is None:
|
||||
print(" Processing failed")
|
||||
elif stats['modified']:
|
||||
print(" File successfully modified")
|
||||
print(f" - #ffe31b groups: {stats['ffe31b_groups']}")
|
||||
print(f" - #ec2525 groups: {stats['ec2525_groups']}")
|
||||
print(f" - Elements modified: {stats['elements_modified']}")
|
||||
else:
|
||||
print(" No modifications needed")
|
||||
|
||||
print("\nProcessing complete")
|
||||
|
||||
except FileNotFoundError:
|
||||
print("\nError: JSON file not found")
|
||||
except json.JSONDecodeError:
|
||||
print("\nError: Invalid JSON format")
|
||||
except Exception as e:
|
||||
print(f"\nUnexpected error: {str(e)}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("SVG XML Batch Modifier - Starting execution")
|
||||
main()
|
||||
@@ -0,0 +1,166 @@
|
||||
|
||||
|
||||
[{
|
||||
"Sivasnr": "821104033+0_B10040",
|
||||
"ProfilTyp": "APB 110 R 630/90° – 800/800 mit TEF Aussen",
|
||||
"Radius": 630,
|
||||
"KurvenWinkel": 90,
|
||||
"Gruppe_width_mm":931.30,
|
||||
"Gruppe_height_mm":931.30,
|
||||
"OFBogen_center_line_width_mm": 800,
|
||||
"OFBogen_center_line_height_mm": 800,
|
||||
"TEFBogen_center_line_width_mm": 900,
|
||||
"TEFBogen_center_line_height_mm": 900,
|
||||
"OFBogen_CP1_x_mm":0,
|
||||
"TEFBogen_CP1_x_mm":0,
|
||||
"OFBogen_CP1_y_mm":131.30,
|
||||
"TEFBogen_CP1_y_mm":31.30,
|
||||
"SivasnrTEF": "0_B10040",
|
||||
"Antriebsart":1
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104033+0_B10050",
|
||||
"ProfilTyp": "APB 110 R 630/90° – 800/800 mit TEF Innen",
|
||||
"Radius": 630,
|
||||
"KurvenWinkel": 90,
|
||||
"Gruppe_width_mm":821.040,
|
||||
"Gruppe_height_mm":821.040,
|
||||
"OFBogen_center_line_width_mm": 800,
|
||||
"OFBogen_center_line_height_mm": 800,
|
||||
"TEFBogen_center_line_width_mm": 700,
|
||||
"TEFBogen_center_line_height_mm": 700,
|
||||
"OFBogen_CP1_x_mm":0,
|
||||
"TEFBogen_CP1_x_mm":0,
|
||||
"OFBogen_CP1_y_mm":21.040,
|
||||
"TEFBogen_CP1_y_mm":121.040,
|
||||
"SivasnrTEF": "0_B10050",
|
||||
"Antriebsart":1
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104025+0_B10090",
|
||||
"ProfilTyp": "APB 110 R 550/22,5° – 84/522 mit TEF Innen",
|
||||
"Radius": 550,
|
||||
"KurvenWinkel": 22.5,
|
||||
"Gruppe_width_mm":537.544,
|
||||
"Gruppe_height_mm":232.057,
|
||||
"OFBogen_center_line_width_mm": 514.491,
|
||||
"OFBogen_center_line_height_mm": 122.230,
|
||||
"TEFBogen_center_line_width_mm": 412.692,
|
||||
"TEFBogen_center_line_height_mm": 82.090,
|
||||
"OFBogen_CP1_x_mm":15.002,
|
||||
"TEFBogen_CP1_x_mm":0,
|
||||
"OFBogen_CP1_y_mm":21.040,
|
||||
"TEFBogen_CP1_y_mm":121.049,
|
||||
"SivasnrTEF": "0_B10090",
|
||||
"Antriebsart":1
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104025+0_B10091",
|
||||
"ProfilTyp": "APB 110 R 550/22,5° – 84/522 mit TEF Aussen",
|
||||
"Radius": 550,
|
||||
"KurvenWinkel": 22.5,
|
||||
"Gruppe_width_mm":655.564,
|
||||
"Gruppe_height_mm":272.978,
|
||||
"OFBogen_center_line_width_mm": 514.491,
|
||||
"OFBogen_center_line_height_mm": 122.230,
|
||||
"TEFBogen_center_line_width_mm": 643.589,
|
||||
"TEFBogen_center_line_height_mm": 125.683,
|
||||
"OFBogen_CP1_x_mm":100.867,
|
||||
"TEFBogen_CP1_x_mm":0,
|
||||
"OFBogen_CP1_y_mm":131.310,
|
||||
"TEFBogen_CP1_y_mm":31.300,
|
||||
"SivasnrTEF": "0_B10091",
|
||||
"Antriebsart":2
|
||||
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104026+0_B10071",
|
||||
"ProfilTyp": "APB 110 R 550/45° – 232/610 mit TEF Innen",
|
||||
"Radius": 550,
|
||||
"KurvenWinkel": 45,
|
||||
"Gruppe_width_mm":610.142,
|
||||
"Gruppe_height_mm":308.217,
|
||||
"OFBogen_center_line_width_mm": 595.265,
|
||||
"OFBogen_center_line_height_mm": 265.998,
|
||||
"TEFBogen_center_line_width_mm": 398.432,
|
||||
"TEFBogen_center_line_height_mm": 165.036,
|
||||
"OFBogen_CP1_x_mm":0,
|
||||
"TEFBogen_CP1_x_mm":54.446,
|
||||
"OFBogen_CP1_y_mm":21.040,
|
||||
"TEFBogen_CP1_y_mm":121.049,
|
||||
"SivasnrTEF": "0_B10071",
|
||||
"Antriebsart":1
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104031+0_B10060",
|
||||
"ProfilTyp": "APB 110 R 630/45° – 400/825 mit TEF Aussen",
|
||||
"Radius": 630,
|
||||
"KurvenWinkel": 45,
|
||||
"Gruppe_width_mm":958.874,
|
||||
"Gruppe_height_mm":446.746,
|
||||
"OFBogen_center_line_width_mm": 865.614,
|
||||
"OFBogen_center_line_height_mm": 300.559,
|
||||
"TEFBogen_center_line_width_mm": 936.741,
|
||||
"TEFBogen_center_line_height_mm":329.985,
|
||||
"OFBogen_CP1_x_mm":0.276,
|
||||
"TEFBogen_CP1_x_mm":0,
|
||||
"OFBogen_CP1_y_mm":131.310,
|
||||
"TEFBogen_CP1_y_mm":31.30,
|
||||
"SivasnrTEF": "0_B10060",
|
||||
"Antriebsart":2
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104031+0_B10070",
|
||||
"ProfilTyp": "APB 110 R 630/45° – 400/825 mit TEF Innen",
|
||||
"Radius": 630,
|
||||
"KurvenWinkel": 45,
|
||||
"Gruppe_width_mm":880.942,
|
||||
"Gruppe_height_mm":414.496,
|
||||
"OFBogen_center_line_width_mm": 865.614,
|
||||
"OFBogen_center_line_height_mm": 300.559,
|
||||
"TEFBogen_center_line_width_mm": 759.396,
|
||||
"TEFBogen_center_line_height_mm": 271.313,
|
||||
"OFBogen_CP1_x_mm":0.453,
|
||||
"TEFBogen_CP1_x_mm":0,
|
||||
"OFBogen_CP1_y_mm":21.04,
|
||||
"TEFBogen_CP1_y_mm":121.049,
|
||||
"SivasnrTEF": "0_B10070",
|
||||
"Antriebsart":1
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104024+0_B10081",
|
||||
"ProfilTyp": "APB 110 R 400/67,5° – 339/508 mit TEF Innen",
|
||||
"Radius": 400,
|
||||
"KurvenWinkel": 67.5,
|
||||
"Gruppe_width_mm":527.258,
|
||||
"Gruppe_height_mm":368.405,
|
||||
"OFBogen_center_line_width_mm": 507.820,
|
||||
"OFBogen_center_line_height_mm": 339.315,
|
||||
"TEFBogen_center_line_width_mm": 306.339,
|
||||
"TEFBogen_center_line_height_mm": 198.675,
|
||||
"OFBogen_CP1_x_mm":0,
|
||||
"TEFBogen_CP1_x_mm":76.402,
|
||||
"OFBogen_CP1_y_mm":21.040,
|
||||
"TEFBogen_CP1_y_mm":121.049,
|
||||
"SivasnrTEF": "0_B10081",
|
||||
"Antriebsart":1
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104027+0_B10080",
|
||||
"ProfilTyp": "APB 110 R 550/67,5° – 488/778 mit TEF Innen",
|
||||
"Radius": 550,
|
||||
"KurvenWinkel": 67.5,
|
||||
"Gruppe_width_mm":768.095,
|
||||
"Gruppe_height_mm":559.396,
|
||||
"OFBogen_center_line_width_mm": 748.658,
|
||||
"OFBogen_center_line_height_mm": 530.305,
|
||||
"TEFBogen_center_line_width_mm": 469.752,
|
||||
"TEFBogen_center_line_height_mm": 353.635,
|
||||
"OFBogen_CP1_x_mm":0,
|
||||
"TEFBogen_CP1_x_mm":138.902,
|
||||
"OFBogen_CP1_y_mm":21.040,
|
||||
"TEFBogen_CP1_y_mm":121.050,
|
||||
"SivasnrTEF": "0_B10080",
|
||||
"Antriebsart":1
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,506 @@
|
||||
[
|
||||
{
|
||||
"Sivasnr": "821104033+0_B10040",
|
||||
"ProfilTyp": "APB 110 R 630/90° – 800/800 mit TEF Aussen",
|
||||
"Radius": 630.0,
|
||||
"KurvenWinkel": 90.0,
|
||||
"Gruppe_width_mm": 931.3,
|
||||
"Gruppe_height_mm": 931.3,
|
||||
"OFBogen_center_line_width_mm": 800.0,
|
||||
"OFBogen_center_line_height_mm": 800.0,
|
||||
"TEFBogen_center_line_width_mm": 900.0,
|
||||
"TEFBogen_center_line_height_mm": 900.0,
|
||||
"OFBogen_CP1_x_mm": 0.0,
|
||||
"TEFBogen_CP1_x_mm": 0.0,
|
||||
"OFBogen_CP1_y_mm": 131.3,
|
||||
"TEFBogen_CP1_y_mm": 31.3,
|
||||
"SivasnrTEF": "0_B10040",
|
||||
"Antriebsart": 1,
|
||||
"OFBogen_CP2_x_mm": 800.0,
|
||||
"TEFBogen_CP2_x_mm": 900.0,
|
||||
"OFBogen_CP2_y_mm": 931.3,
|
||||
"TEFBogen_CP2_y_mm": 931.3,
|
||||
"Gruppe_width_px": 3519.848,
|
||||
"Gruppe_height_px": 3519.848,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 1000.0,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0.0,
|
||||
"y": 140.986,
|
||||
"direction": 270.0,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 859.014,
|
||||
"y": 1000.0,
|
||||
"direction": 180.0,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp3",
|
||||
"x": 0.0,
|
||||
"y": 33.609,
|
||||
"direction": 270.0,
|
||||
"linkClass": "OmnifloTEF"
|
||||
},
|
||||
{
|
||||
"id": "cp4",
|
||||
"x": 966.391,
|
||||
"y": 1000.0,
|
||||
"direction": 180.0,
|
||||
"linkClass": "OmnifloTEF"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104033+0_B10050",
|
||||
"ProfilTyp": "APB 110 R 630/90° – 800/800 mit TEF Innen",
|
||||
"Radius": 630.0,
|
||||
"KurvenWinkel": 90.0,
|
||||
"Gruppe_width_mm": 821.04,
|
||||
"Gruppe_height_mm": 821.04,
|
||||
"OFBogen_center_line_width_mm": 800.0,
|
||||
"OFBogen_center_line_height_mm": 800.0,
|
||||
"TEFBogen_center_line_width_mm": 700.0,
|
||||
"TEFBogen_center_line_height_mm": 700.0,
|
||||
"OFBogen_CP1_x_mm": 0.0,
|
||||
"TEFBogen_CP1_x_mm": 0.0,
|
||||
"OFBogen_CP1_y_mm": 21.04,
|
||||
"TEFBogen_CP1_y_mm": 121.04,
|
||||
"SivasnrTEF": "0_B10050",
|
||||
"Antriebsart": 1,
|
||||
"OFBogen_CP2_x_mm": 800.0,
|
||||
"TEFBogen_CP2_x_mm": 700.0,
|
||||
"OFBogen_CP2_y_mm": 821.04,
|
||||
"TEFBogen_CP2_y_mm": 821.04,
|
||||
"Gruppe_width_px": 3103.121,
|
||||
"Gruppe_height_px": 3103.121,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 1000.0,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0.0,
|
||||
"y": 25.626,
|
||||
"direction": 270.0,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 974.374,
|
||||
"y": 1000.0,
|
||||
"direction": 180.0,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp3",
|
||||
"x": 0.0,
|
||||
"y": 147.423,
|
||||
"direction": 270.0,
|
||||
"linkClass": "OmnifloTEF"
|
||||
},
|
||||
{
|
||||
"id": "cp4",
|
||||
"x": 852.577,
|
||||
"y": 1000.0,
|
||||
"direction": 180.0,
|
||||
"linkClass": "OmnifloTEF"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104025+0_B10090",
|
||||
"ProfilTyp": "APB 110 R 550/22,5° – 84/522 mit TEF Innen",
|
||||
"Radius": 550.0,
|
||||
"KurvenWinkel": 22.5,
|
||||
"Gruppe_width_mm": 537.544,
|
||||
"Gruppe_height_mm": 232.057,
|
||||
"OFBogen_center_line_width_mm": 514.491,
|
||||
"OFBogen_center_line_height_mm": 122.23,
|
||||
"TEFBogen_center_line_width_mm": 412.692,
|
||||
"TEFBogen_center_line_height_mm": 82.09,
|
||||
"OFBogen_CP1_x_mm": 15.002,
|
||||
"TEFBogen_CP1_x_mm": 0.0,
|
||||
"OFBogen_CP1_y_mm": 21.04,
|
||||
"TEFBogen_CP1_y_mm": 121.049,
|
||||
"SivasnrTEF": "0_B10090",
|
||||
"Antriebsart": 1,
|
||||
"OFBogen_CP2_x_mm": 529.493,
|
||||
"TEFBogen_CP2_x_mm": 412.692,
|
||||
"OFBogen_CP2_y_mm": 143.27,
|
||||
"TEFBogen_CP2_y_mm": 203.139,
|
||||
"Gruppe_width_px": 2031.648,
|
||||
"Gruppe_height_px": 877.059,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 433.588,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 27.908,
|
||||
"y": 90.272,
|
||||
"direction": 270.0,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 985.023,
|
||||
"y": 614.701,
|
||||
"direction": 112.5,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp3",
|
||||
"x": 0.0,
|
||||
"y": 519.362,
|
||||
"direction": 270.0,
|
||||
"linkClass": "OmnifloTEF"
|
||||
},
|
||||
{
|
||||
"id": "cp4",
|
||||
"x": 767.736,
|
||||
"y": 871.57,
|
||||
"direction": 112.5,
|
||||
"linkClass": "OmnifloTEF"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104025+0_B10091",
|
||||
"ProfilTyp": "APB 110 R 550/22,5° – 84/522 mit TEF Aussen",
|
||||
"Radius": 550.0,
|
||||
"KurvenWinkel": 22.5,
|
||||
"Gruppe_width_mm": 655.564,
|
||||
"Gruppe_height_mm": 272.978,
|
||||
"OFBogen_center_line_width_mm": 514.491,
|
||||
"OFBogen_center_line_height_mm": 122.23,
|
||||
"TEFBogen_center_line_width_mm": 643.589,
|
||||
"TEFBogen_center_line_height_mm": 125.683,
|
||||
"OFBogen_CP1_x_mm": 100.867,
|
||||
"TEFBogen_CP1_x_mm": 0.0,
|
||||
"OFBogen_CP1_y_mm": 131.31,
|
||||
"TEFBogen_CP1_y_mm": 31.3,
|
||||
"SivasnrTEF": "0_B10091",
|
||||
"Antriebsart": 2,
|
||||
"OFBogen_CP2_x_mm": 615.358,
|
||||
"TEFBogen_CP2_x_mm": 643.589,
|
||||
"OFBogen_CP2_y_mm": 253.54,
|
||||
"TEFBogen_CP2_y_mm": 156.983,
|
||||
"Gruppe_width_px": 2477.704,
|
||||
"Gruppe_height_px": 1031.72,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 418.291,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 153.863,
|
||||
"y": 478.855,
|
||||
"direction": 270.0,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 938.67,
|
||||
"y": 924.598,
|
||||
"direction": 112.5,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp3",
|
||||
"x": 0.0,
|
||||
"y": 114.143,
|
||||
"direction": 270.0,
|
||||
"linkClass": "OmnifloTEF"
|
||||
},
|
||||
{
|
||||
"id": "cp4",
|
||||
"x": 981.733,
|
||||
"y": 572.478,
|
||||
"direction": 112.5,
|
||||
"linkClass": "OmnifloTEF"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104026+0_B10071",
|
||||
"ProfilTyp": "APB 110 R 550/45° – 232/610 mit TEF Innen",
|
||||
"Radius": 550.0,
|
||||
"KurvenWinkel": 45.0,
|
||||
"Gruppe_width_mm": 610.142,
|
||||
"Gruppe_height_mm": 308.217,
|
||||
"OFBogen_center_line_width_mm": 595.265,
|
||||
"OFBogen_center_line_height_mm": 265.998,
|
||||
"TEFBogen_center_line_width_mm": 398.432,
|
||||
"TEFBogen_center_line_height_mm": 165.036,
|
||||
"OFBogen_CP1_x_mm": 0.0,
|
||||
"TEFBogen_CP1_x_mm": 54.446,
|
||||
"OFBogen_CP1_y_mm": 21.04,
|
||||
"TEFBogen_CP1_y_mm": 121.049,
|
||||
"SivasnrTEF": "0_B10071",
|
||||
"Antriebsart": 1,
|
||||
"OFBogen_CP2_x_mm": 595.265,
|
||||
"TEFBogen_CP2_x_mm": 452.878,
|
||||
"OFBogen_CP2_y_mm": 287.038,
|
||||
"TEFBogen_CP2_y_mm": 286.085,
|
||||
"Gruppe_width_px": 2306.032,
|
||||
"Gruppe_height_px": 1164.906,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 507.046,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0.0,
|
||||
"y": 68.009,
|
||||
"direction": 270.0,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 975.617,
|
||||
"y": 927.815,
|
||||
"direction": 135.0,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp3",
|
||||
"x": 89.235,
|
||||
"y": 391.276,
|
||||
"direction": 270.0,
|
||||
"linkClass": "OmnifloTEF"
|
||||
},
|
||||
{
|
||||
"id": "cp4",
|
||||
"x": 742.25,
|
||||
"y": 924.734,
|
||||
"direction": 135.0,
|
||||
"linkClass": "OmnifloTEF"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104031+0_B10060",
|
||||
"ProfilTyp": "APB 110 R 630/45° – 400/825 mit TEF Aussen",
|
||||
"Radius": 630.0,
|
||||
"KurvenWinkel": 45.0,
|
||||
"Gruppe_width_mm": 958.874,
|
||||
"Gruppe_height_mm": 446.746,
|
||||
"OFBogen_center_line_width_mm": 865.614,
|
||||
"OFBogen_center_line_height_mm": 300.559,
|
||||
"TEFBogen_center_line_width_mm": 936.741,
|
||||
"TEFBogen_center_line_height_mm": 329.985,
|
||||
"OFBogen_CP1_x_mm": 0.276,
|
||||
"TEFBogen_CP1_x_mm": 0.0,
|
||||
"OFBogen_CP1_y_mm": 131.31,
|
||||
"TEFBogen_CP1_y_mm": 31.3,
|
||||
"SivasnrTEF": "0_B10060",
|
||||
"Antriebsart": 2,
|
||||
"OFBogen_CP2_x_mm": 865.89,
|
||||
"TEFBogen_CP2_x_mm": 936.741,
|
||||
"OFBogen_CP2_y_mm": 431.869,
|
||||
"TEFBogen_CP2_y_mm": 361.285,
|
||||
"Gruppe_width_px": 3624.064,
|
||||
"Gruppe_height_px": 1688.477,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 467.797,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0.288,
|
||||
"y": 292.738,
|
||||
"direction": 270.0,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 903.028,
|
||||
"y": 962.793,
|
||||
"direction": 135.0,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp3",
|
||||
"x": 0.0,
|
||||
"y": 69.779,
|
||||
"direction": 270.0,
|
||||
"linkClass": "OmnifloTEF"
|
||||
},
|
||||
{
|
||||
"id": "cp4",
|
||||
"x": 976.918,
|
||||
"y": 805.436,
|
||||
"direction": 135.0,
|
||||
"linkClass": "OmnifloTEF"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104031+0_B10070",
|
||||
"ProfilTyp": "APB 110 R 630/45° – 400/825 mit TEF Innen",
|
||||
"Radius": 630.0,
|
||||
"KurvenWinkel": 45.0,
|
||||
"Gruppe_width_mm": 880.942,
|
||||
"Gruppe_height_mm": 414.496,
|
||||
"OFBogen_center_line_width_mm": 865.614,
|
||||
"OFBogen_center_line_height_mm": 300.559,
|
||||
"TEFBogen_center_line_width_mm": 759.396,
|
||||
"TEFBogen_center_line_height_mm": 271.313,
|
||||
"OFBogen_CP1_x_mm": 0.453,
|
||||
"TEFBogen_CP1_x_mm": 0.0,
|
||||
"OFBogen_CP1_y_mm": 21.04,
|
||||
"TEFBogen_CP1_y_mm": 121.049,
|
||||
"SivasnrTEF": "0_B10070",
|
||||
"Antriebsart": 1,
|
||||
"OFBogen_CP2_x_mm": 866.067,
|
||||
"TEFBogen_CP2_x_mm": 759.396,
|
||||
"OFBogen_CP2_y_mm": 321.599,
|
||||
"TEFBogen_CP2_y_mm": 392.362,
|
||||
"Gruppe_width_px": 3329.52,
|
||||
"Gruppe_height_px": 1566.588,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 472.404,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0.514,
|
||||
"y": 50.557,
|
||||
"direction": 270.0,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 983.115,
|
||||
"y": 772.777,
|
||||
"direction": 135.0,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp3",
|
||||
"x": 0.0,
|
||||
"y": 290.871,
|
||||
"direction": 270.0,
|
||||
"linkClass": "OmnifloTEF"
|
||||
},
|
||||
{
|
||||
"id": "cp4",
|
||||
"x": 862.028,
|
||||
"y": 942.814,
|
||||
"direction": 135.0,
|
||||
"linkClass": "OmnifloTEF"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104024+0_B10081",
|
||||
"ProfilTyp": "APB 110 R 400/67,5° – 339/508 mit TEF Innen",
|
||||
"Radius": 400.0,
|
||||
"KurvenWinkel": 67.5,
|
||||
"Gruppe_width_mm": 527.258,
|
||||
"Gruppe_height_mm": 368.405,
|
||||
"OFBogen_center_line_width_mm": 507.82,
|
||||
"OFBogen_center_line_height_mm": 339.315,
|
||||
"TEFBogen_center_line_width_mm": 306.339,
|
||||
"TEFBogen_center_line_height_mm": 198.675,
|
||||
"OFBogen_CP1_x_mm": 0.0,
|
||||
"TEFBogen_CP1_x_mm": 76.402,
|
||||
"OFBogen_CP1_y_mm": 21.04,
|
||||
"TEFBogen_CP1_y_mm": 121.049,
|
||||
"SivasnrTEF": "0_B10081",
|
||||
"Antriebsart": 1,
|
||||
"OFBogen_CP2_x_mm": 507.82,
|
||||
"TEFBogen_CP2_x_mm": 382.741,
|
||||
"OFBogen_CP2_y_mm": 360.355,
|
||||
"TEFBogen_CP2_y_mm": 319.724,
|
||||
"Gruppe_width_px": 1992.772,
|
||||
"Gruppe_height_px": 1392.387,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 700.609,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0.0,
|
||||
"y": 56.957,
|
||||
"direction": 270.0,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 963.134,
|
||||
"y": 975.51,
|
||||
"direction": 157.5,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp3",
|
||||
"x": 144.904,
|
||||
"y": 327.689,
|
||||
"direction": 270.0,
|
||||
"linkClass": "OmnifloTEF"
|
||||
},
|
||||
{
|
||||
"id": "cp4",
|
||||
"x": 725.908,
|
||||
"y": 865.519,
|
||||
"direction": 157.5,
|
||||
"linkClass": "OmnifloTEF"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104027+0_B10080",
|
||||
"ProfilTyp": "APB 110 R 550/67,5° – 488/778 mit TEF Innen",
|
||||
"Radius": 550.0,
|
||||
"KurvenWinkel": 67.5,
|
||||
"Gruppe_width_mm": 768.095,
|
||||
"Gruppe_height_mm": 559.396,
|
||||
"OFBogen_center_line_width_mm": 748.658,
|
||||
"OFBogen_center_line_height_mm": 530.305,
|
||||
"TEFBogen_center_line_width_mm": 469.752,
|
||||
"TEFBogen_center_line_height_mm": 353.635,
|
||||
"OFBogen_CP1_x_mm": 0.0,
|
||||
"TEFBogen_CP1_x_mm": 138.902,
|
||||
"OFBogen_CP1_y_mm": 21.04,
|
||||
"TEFBogen_CP1_y_mm": 121.05,
|
||||
"SivasnrTEF": "0_B10080",
|
||||
"Antriebsart": 1,
|
||||
"OFBogen_CP2_x_mm": 748.658,
|
||||
"TEFBogen_CP2_x_mm": 608.654,
|
||||
"OFBogen_CP2_y_mm": 551.345,
|
||||
"TEFBogen_CP2_y_mm": 474.685,
|
||||
"Gruppe_width_px": 2903.015,
|
||||
"Gruppe_height_px": 2114.237,
|
||||
"calculated_SVG_width_px": 1000,
|
||||
"calculated_SVG_height_px": 730.18,
|
||||
"connectionPoints": [
|
||||
{
|
||||
"id": "cp1",
|
||||
"x": 0.0,
|
||||
"y": 37.515,
|
||||
"direction": 270.0,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp2",
|
||||
"x": 974.694,
|
||||
"y": 983.056,
|
||||
"direction": 157.5,
|
||||
"linkClass": "Omniflo"
|
||||
},
|
||||
{
|
||||
"id": "cp3",
|
||||
"x": 180.84,
|
||||
"y": 215.834,
|
||||
"direction": 270.0,
|
||||
"linkClass": "OmnifloTEF"
|
||||
},
|
||||
{
|
||||
"id": "cp4",
|
||||
"x": 792.42,
|
||||
"y": 846.37,
|
||||
"direction": 157.5,
|
||||
"linkClass": "OmnifloTEF"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,12 @@
|
||||
@echo off
|
||||
|
||||
set TEFBogen_PATH=%~dp0
|
||||
|
||||
set XML_PATH=C:\Program Files\RuleDesigner\RDConfigurator Fusion\WebApi\Editor2D\SSG\shapes\svg
|
||||
|
||||
set JSON_PATH=%TEFBogen_PATH%JSON
|
||||
|
||||
python 4_TEFBogen_SVG_XML_Modifier_Script.py
|
||||
|
||||
|
||||
pause
|
||||
@@ -0,0 +1,12 @@
|
||||
@echo off
|
||||
|
||||
set TEFBogen_PATH=%~dp0
|
||||
set PROPS_PATH=C:\Program Files\RuleDesigner\RDConfigurator Fusion\WebApi\Editor2D\SSG\shapes\props
|
||||
|
||||
set JSON_PATH=%TEFBogen_PATH%JSON
|
||||
|
||||
python 1_process_TEFBogen_json_1.py
|
||||
python 2_update_props_TEF_Boegen_from_json_1.py
|
||||
|
||||
|
||||
pause
|
||||
Reference in New Issue
Block a user