diff --git a/data/excel/medium-voltage-KM 170126.xlsx b/data/excel/medium-voltage-KM 170126.xlsx index 53d850a5..87974d5f 100644 Binary files a/data/excel/medium-voltage-KM 170126.xlsx and b/data/excel/medium-voltage-KM 170126.xlsx differ diff --git a/data/excel/medium-voltage-KM.xlsx b/data/excel/medium-voltage-KM.xlsx index 427ec552..b60385be 100644 Binary files a/data/excel/medium-voltage-KM.xlsx and b/data/excel/medium-voltage-KM.xlsx differ diff --git a/data/products/de/na2xsf2y.mdx b/data/products/de/na2xsf2y.mdx index cb3d6c4f..3950e518 100644 --- a/data/products/de/na2xsf2y.mdx +++ b/data/products/de/na2xsf2y.mdx @@ -398,6 +398,24 @@ locale: de "55", "4195" ] + }, + { + "configuration": "1x1200/35", + "cells": [ + "Al", + "RM", + "0,95", + "48,5", + "0,0247", + "3,4", + "Auf Anfrage", + "Auf Anfrage", + "113", + "2,4", + "885", + "59", + "4800" + ] } ] }, @@ -737,6 +755,24 @@ locale: de "60", "4634" ] + }, + { + "configuration": "1x1200/35", + "cells": [ + "Al", + "RM", + "1,05", + "52,3", + "0,0247", + "5,5", + "Auf Anfrage", + "Auf Anfrage", + "113", + "2,4", + "990", + "66", + "5200" + ] } ] }, @@ -1076,6 +1112,24 @@ locale: de "65", "5093" ] + }, + { + "configuration": "1x1200/35", + "cells": [ + "Al", + "RM", + "1,15", + "57,5", + "0,0247", + "8,0", + "Auf Anfrage", + "Auf Anfrage", + "113", + "2,4", + "1065", + "71", + "5900" + ] } ] } diff --git a/data/products/en/na2xsf2y.mdx b/data/products/en/na2xsf2y.mdx index ba14fb96..c62f3b73 100644 --- a/data/products/en/na2xsf2y.mdx +++ b/data/products/en/na2xsf2y.mdx @@ -398,6 +398,24 @@ locale: en "55", "4195" ] + }, + { + "configuration": "1x1200/35", + "cells": [ + "Al", + "RM", + "0.95", + "48.5", + "0.0247", + "3.4", + "On Request", + "On Request", + "113", + "2.4", + "885", + "59", + "4800" + ] } ] }, @@ -737,6 +755,24 @@ locale: en "60", "4634" ] + }, + { + "configuration": "1x1200/35", + "cells": [ + "Al", + "RM", + "1.05", + "52.3", + "0.0247", + "5.5", + "On Request", + "On Request", + "113", + "2.4", + "990", + "66", + "5200" + ] } ] }, @@ -1076,6 +1112,24 @@ locale: en "65", "5093" ] + }, + { + "configuration": "1x1200/35", + "cells": [ + "Al", + "RM", + "1.15", + "57.5", + "0.0247", + "8", + "On Request", + "On Request", + "113", + "2.4", + "1065", + "71", + "5900" + ] } ] } diff --git a/public/datasheets/medium-voltage/na2xsf2y-de.pdf b/public/datasheets/medium-voltage/na2xsf2y-de.pdf index d51a275a..29b303c9 100644 Binary files a/public/datasheets/medium-voltage/na2xsf2y-de.pdf and b/public/datasheets/medium-voltage/na2xsf2y-de.pdf differ diff --git a/public/datasheets/medium-voltage/na2xsf2y-en.pdf b/public/datasheets/medium-voltage/na2xsf2y-en.pdf index d5a79431..29ff6f21 100644 Binary files a/public/datasheets/medium-voltage/na2xsf2y-en.pdf and b/public/datasheets/medium-voltage/na2xsf2y-en.pdf differ diff --git a/scripts/update_ampacity.py b/scripts/update_ampacity.py new file mode 100644 index 00000000..104794e9 --- /dev/null +++ b/scripts/update_ampacity.py @@ -0,0 +1,59 @@ +import openpyxl + +def update_excel_ampacity(file_path, headers_row_idx, ampacity_cols_identifiers, target_cross_section="1x1200/35"): + print(f"Updating {file_path}...") + wb = openpyxl.load_workbook(file_path) + ws = wb.active + + # openpyxl is 1-indexed for rows and columns + headers = [cell.value for cell in ws[headers_row_idx]] + + # Identify column indices for ampacity (0-indexed locally for easier row access) + col_indices = [] + for identifier in ampacity_cols_identifiers: + if isinstance(identifier, int): + col_indices.append(identifier) + else: + try: + # list.index returns 0-indexed position + col_indices.append(headers.index(identifier)) + except ValueError: + print(f"Warning: Could not find column '{identifier}' in {file_path}") + + # Find row index for "Number of cores and cross-section" or use index 8 + cs_col_idx = 8 + try: + cs_col_idx = headers.index("Number of cores and cross-section") + except ValueError: + pass + + rows_updated = 0 + # ws.iter_rows returns 1-indexed rows + for row in ws.iter_rows(min_row=headers_row_idx + 1): + # row is a tuple of cells, so row[cs_col_idx] is 0-indexed access to the tuple + if str(row[cs_col_idx].value).strip() == target_cross_section: + for col_idx in col_indices: + row[col_idx].value = "On Request" + rows_updated += 1 + + wb.save(file_path) + print(f"Updated {rows_updated} rows in {file_path}") + +# File 1: medium-voltage-KM.xlsx +update_excel_ampacity( + 'data/excel/medium-voltage-KM.xlsx', + 1, # Headers are in first row (1-indexed) + [ + 'Current ratings in air, trefoil*', + 'Current ratings in air, flat*', + 'Current ratings in ground, trefoil*', + 'Current ratings in ground, flat*' + ] +) + +# File 2: medium-voltage-KM 170126.xlsx +update_excel_ampacity( + 'data/excel/medium-voltage-KM 170126.xlsx', + 1, # Indices 39 and 41 were from a 0-indexed JSON representation + [39, 41] +) diff --git a/scripts/update_excel.py b/scripts/update_excel.py new file mode 100644 index 00000000..e7999ec7 --- /dev/null +++ b/scripts/update_excel.py @@ -0,0 +1,87 @@ +import openpyxl + +excel_path = 'data/excel/medium-voltage-KM.xlsx' +wb = openpyxl.load_workbook(excel_path) +ws = wb.active + +# Technical data for 1x1200RM/35 +new_rows_data = [ + { + "Rated voltage": "6/10", + "Test voltage": 21, + "Nominal insulation thickness": 3.4, + "Diameter over insulation (approx.)": 48.5, + "Minimum sheath thickness": 2.1, + "Outer diameter (approx.)": 59, + "Bending radius (min.)": 885, + "Weight (approx.)": 4800, + "Capacitance (approx.)": 0.95, + "Inductance, trefoil (approx.)": 0.24, + "Inductance in air, flat (approx.) 1": 0.40, + "Inductance in ground, flat (approx.) 1": 0.42, + }, + { + "Rated voltage": "12/20", + "Test voltage": 42, + "Nominal insulation thickness": 5.5, + "Diameter over insulation (approx.)": 52.3, + "Minimum sheath thickness": 2.1, + "Outer diameter (approx.)": 66, + "Bending radius (min.)": 990, + "Weight (approx.)": 5200, + "Capacitance (approx.)": 1.05, + "Inductance, trefoil (approx.)": 0.23, + "Inductance in air, flat (approx.) 1": 0.43, + "Inductance in ground, flat (approx.) 1": 0.45, + }, + { + "Rated voltage": "18/30", + "Test voltage": 63, + "Nominal insulation thickness": 8.0, + "Diameter over insulation (approx.)": 57.5, + "Minimum sheath thickness": 2.4, + "Outer diameter (approx.)": 71, + "Bending radius (min.)": 1065, + "Weight (approx.)": 5900, + "Capacitance (approx.)": 1.15, + "Inductance, trefoil (approx.)": 0.22, + "Inductance in air, flat (approx.) 1": 0.45, + "Inductance in ground, flat (approx.) 1": 0.47, + } +] + +# Find a template row for NA2XS(F)2Y +template_row = None +headers = [cell.value for cell in ws[1]] + +for row in ws.iter_rows(min_row=3, values_only=True): + if row[0] == 'NA2XS(F)2Y': + template_row = list(row) + break + +if not template_row: + print("Error: Could not find template row for NA2XS(F)2Y") + exit(1) + +# Function to update template with new values +def create_row(template, updates, headers): + new_row = template[:] + # Change "Number of cores and cross-section" + cs_idx = headers.index("Number of cores and cross-section") + new_row[cs_idx] = "1x1200/35" + + # Apply specific updates + for key, value in updates.items(): + if key in headers: + idx = headers.index(key) + new_row[idx] = value + return new_row + +# Append new rows +for data in new_rows_data: + new_row_values = create_row(template_row, data, headers) + ws.append(new_row_values) + print(f"Added row for {data['Rated voltage']} kV") + +wb.save(excel_path) +print("Excel file updated successfully.") diff --git a/scripts/update_excel_v2.py b/scripts/update_excel_v2.py new file mode 100644 index 00000000..e5a605c6 --- /dev/null +++ b/scripts/update_excel_v2.py @@ -0,0 +1,120 @@ +import openpyxl + +excel_path = 'data/excel/medium-voltage-KM 170126.xlsx' +wb = openpyxl.load_workbook(excel_path) +ws = wb.active + +# Technical data for 1x1200RM/35 +# Indices based on Row 2 (Units) and Row 1 +# Index 0: Part Number +# Index 8: Querschnitt +# Index 9: Rated voltage +# Index 10: Test voltage +# Index 23: LD mm +# Index 24: ID mm +# Index 25: DI mm +# Index 26: MWD mm +# Index 27: AD mm +# Index 28: BR +# Index 29: G kg +# Index 30: RI Ohm +# Index 31: Cap +# Index 32: Inductance trefoil +# Index 35: BK +# Index 39: SBL 30 +# Index 41: SBE 20 + +new_rows_data = [ + { + "voltage": "6/10", + "test_v": 21, + "ld": 41.5, + "id": 3.4, + "di": 48.5, + "mwd": 2.1, + "ad": 59, + "br": 885, + "g": 4800, + "ri": 0.0247, + "cap": 0.95, + "ind": 0.24, + "bk": 113, + "sbl": 1300, + "sbe": 933 + }, + { + "voltage": "12/20", + "test_v": 42, + "ld": 41.5, + "id": 5.5, + "di": 52.3, + "mwd": 2.1, + "ad": 66, + "br": 990, + "g": 5200, + "ri": 0.0247, + "cap": 1.05, + "ind": 0.23, + "bk": 113, + "sbl": 1200, + "sbe": 900 + }, + { + "voltage": "18/30", + "test_v": 63, + "ld": 41.5, + "id": 8.0, + "di": 57.5, + "mwd": 2.4, + "ad": 71, + "br": 1065, + "g": 5900, + "ri": 0.0247, + "cap": 1.15, + "ind": 0.22, + "bk": 113, + "sbl": 1300, + "sbe": 950 + } +] + +# Find a template row for NA2XS(F)2Y +template_row = None +for row in ws.iter_rows(min_row=3, values_only=True): + if row[0] == 'NA2XS(F)2Y' and row[9] == '6/10': + template_row = list(row) + break + +if not template_row: + print("Error: Could not find template row for NA2XS(F)2Y") + exit(1) + +# Function to update template with new values +def create_row(template, data): + new_row = template[:] + new_row[8] = "1x1200/35" + new_row[9] = data["voltage"] + new_row[10] = data["test_v"] + new_row[23] = data["ld"] + new_row[24] = data["id"] + new_row[25] = data["di"] + new_row[26] = data["mwd"] + new_row[27] = data["ad"] + new_row[28] = data["br"] + new_row[29] = data["g"] + new_row[30] = data["ri"] + new_row[31] = data["cap"] + new_row[32] = data["ind"] + new_row[35] = data["bk"] + new_row[39] = data["sbl"] + new_row[41] = data["sbe"] + return new_row + +# Append new rows +for data in new_rows_data: + new_row_values = create_row(template_row, data) + ws.append(new_row_values) + print(f"Added row for {data['voltage']} kV") + +wb.save(excel_path) +print("Excel file updated successfully.")