| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- import mariadb
- import pyodbc
- import math
- e24 = [1.0, 1.1, 1.2, 1.3, 1.5, 1.6, 1.8, 2.0, 2.2, 2.4, 2.7, 3.0, 3.3, 3.6, 3.9, 4.3, 4.7, 5.1, 5.6, 6.2, 6.8, 7.5,
- 8.2, 9.1]
- e96 = [1.00, 1.02, 1.05, 1.07, 1.10, 1.13, 1.15, 1.18, 1.21, 1.24, 1.27, 1.30, 1.33, 1.37, 1.40, 1.43, 1.47, 1.50, 1.54,
- 1.58, 1.62, 1.65, 1.69, 1.74, 1.78, 1.82, 1.87, 1.91, 1.96, 2.00, 2.05, 2.10, 2.15, 2.21, 2.26, 2.32, 2.37, 2.43,
- 2.49, 2.55, 2.61, 2.67, 2.74, 2.80, 2.87, 2.94, 3.01, 3.09, 3.16, 3.24, 3.32, 3.40, 3.48, 3.57, 3.65, 3.74, 3.83,
- 3.92, 4.02, 4.12, 4.22, 4.32, 4.42, 4.53, 4.64, 4.75, 4.87, 4.99, 5.11, 5.23, 5.36, 5.49, 5.62, 5.76, 5.90, 6.04,
- 6.19, 6.34, 6.49, 6.65, 6.81, 6.98, 7.15, 7.32, 7.50, 7.68, 7.87, 8.06, 8.25, 8.45, 8.66, 8.87, 9.09, 9.31, 9.53,
- 9.76]
- def number_to_unit_string(n, unit):
- # print(f"Nunmber: {n} with unit {unit}")
- if n != 0:
- exponent = math.floor(math.log10(n) / 3)
- else:
- exponent = 0
- exponent = min(3, exponent)
- exponent = max(-5, exponent)
- if exponent <= -5:
- suffix = 'f'
- elif exponent == -4:
- suffix = 'p'
- elif exponent == -3:
- suffix = 'n'
- elif exponent == -2:
- suffix = 'u'
- elif exponent == -1:
- suffix = 'm'
- elif exponent == 0:
- suffix = unit
- elif exponent == 1:
- suffix = 'k'
- elif exponent == 2:
- suffix = 'M'
- elif exponent >= 3:
- suffix = 'G'
- adjusted_number = n / (1000 ** exponent)
- adjusted_number_as_string = f"{adjusted_number:g}"
- if '.' not in adjusted_number_as_string:
- string_to_return = adjusted_number_as_string + suffix
- else:
- string_to_return = adjusted_number_as_string.replace(".", suffix)
- return string_to_return
- def number_to_resistance_string(n):
- return number_to_unit_string(n, 'R')
- def number_to_capacitance_string(n):
- return number_to_unit_string(n, 'F')
- def number_to_inductance_string(n):
- return number_to_unit_string(n, 'H')
- def round_to_significant(x, num):
- round_to = -int(math.floor(math.log10(abs(x)))) + num - 1
- result = round(x, round_to)
- # print(f"Rounding {x}, with {round_to}, resulting in {result}")
- return result
- def expand_series(series, lowest=1, highest=10):
- lowest_decade = math.floor(math.log10(lowest))
- highest_decade = math.ceil(math.log10(highest))
- values = []
- for decade in range(lowest_decade, highest_decade + 1):
- values_to_add = [x * 10 ** decade for x in series if x * 10 ** decade >= lowest and x * 10 ** decade <= highest]
- values.extend([round_to_significant(x, 3) for x in values_to_add])
- return values
- resistor_packages = {"01005": {"power": 0.03, "height": 0.15, "length": 0.4, "width": 0.2, "footprint": "R01005",
- "symbol": "resistor_2pin"},
- "0201": {"power": 0.05, "height": 0.3, "length": 0.6, "width": 0.3, "footprint": "R0201",
- "symbol": "resistor_2pin"},
- "0402": {"power": 0.062, "height": 0.4, "length": 1.0, "width": 0.5, "footprint": "R0402",
- "symbol": "resistor_2pin"},
- "0603": {"power": 0.1, "height": 0.5, "length": 1.6, "width": 0.85, "footprint": "R0603",
- "symbol": "resistor_2pin"},
- "0805": {"power": 0.125, "height": 0.5, "length": 2.0, "width": 1.2, "footprint": "R0805",
- "symbol": "resistor_2pin"},
- "1206": {"power": 0.25, "height": 0.6, "length": 3.2, "width": 1.6, "footprint": "R1206",
- "symbol": "resistor_2pin"},
- "1210": {"power": 0.5, "height": 0.6, "length": 3.2, "width": 2.5, "footprint": "R1210",
- "symbol": "resistor_2pin"},
- "1812": {"power": 1.0, "height": 0.6, "length": 3.2, "width": 4.6, "footprint": "R1812",
- "symbol": "resistor_2pin"},
- "2010": {"power": 0.75, "height": 0.6, "length": 5.0, "width": 2.5, "footprint": "R1210",
- "symbol": "resistor_2pin"},
- "2512": {"power": 1.0, "height": 0.6, "length": 6.3, "width": 3.2, "footprint": "R2512",
- "symbol": "resistor_2pin"}
- }
- def add_resistors(db_cursor, values, tolerance, package):
- for value in values:
- description = f"Resistor, {number_to_resistance_string(value)}, {tolerance * 100}%, SMD, {package}, 100ppm"
- # print(f"Adding {description}")
- query_insert_internal_part = f"""
- INSERT INTO internal_parts (part_description, part_group_id)
- VALUES
- ('{description}', 'chip_resistor');"""
- # print(query_insert_internal_part)
- db_cursor.execute(query_insert_internal_part)
- # print(f"Warnings: {cur.warnings}")
- new_part_number = db_cursor.lastrowid
- query_insert_resistor_info = f"""
- INSERT INTO group_details_chip_resistor (internal_pn, resistance, resistance_tolerance_upper,
- resistance_tolerance_lower, `power`, resistor_type, temperature_max, temperature_min,
- temperature_coefficient_upper, temperature_coefficient_lower,
- dimension_height, dimension_length, dimension_width,
- component_package, component_symbol)
- VALUES
- ({new_part_number}, {value}, {tolerance / 100}, -{tolerance / 100}, {resistor_packages[package]["power"]}, 'Thick Film',
- 155, -55, 100, -100,
- {resistor_packages[package]["height"]}, {resistor_packages[package]["length"]}, {resistor_packages[package]["width"]},
- '{resistor_packages[package]["footprint"]}', '{resistor_packages[package]["symbol"]}');"""
- # print(query_insert_resistor_info)
- db_cursor.execute(query_insert_resistor_info)
- # print(f"Warnings: {cur.warnings}")
- return
- def main():
- try:
- conn = mariadb.connect(
- user="jegatroncomponents_admin",
- password="librarian",
- host="localhost",
- port=3306,
- database="jegatroncomponents"
- )
- except mariadb.Error as e:
- print(f"Error connecting to MariaDB Platform: {e}")
- exit(1)
- db_curr = conn.cursor()
- for package in resistor_packages:
- print(f"Adding {package} E24 series")
- add_resistors(db_curr, [0] + expand_series(e24, 0.1, 10000000), 0.05, package)
- print(f"Adding {package} E96 series")
- add_resistors(db_curr, [0] + expand_series(e96, 0.1, 10000000), 0.01, package)
- """
- db_curr.execute("SELECT * from internal_parts;")
- for k in db_curr:
- print("Man!")
- print(k)"""
- conn.commit()
- db_curr.close()
- conn.close()
- return
- try:
- cnxn = pyodbc.connect("Driver={SQL Server Native Client 11.0};"
- "Server=db.altiumlibrary.com;"
- "Database=altium_library;"
- "Trusted_Connection=no;"
- "UID=alib_OOMDUPOV4YG1;"
- "PWD=e071szxdIu6SnrC6")
- except Exception as e:
- print(f"Could not connect to celectial library")
- print(e)
- exit(1)
- print("Dude!")
- SQL_QUERY = """
- SELECT
- TOP 5
- *
- from z_CapacitorsCeramic;
- """
- SQL_QUERY = """
- SELECT *
- FROM "z_ResistorsSurfaceMount"
- WHERE Resistance is null;
- """
- # cur = cnxn.cursor()
- # cur.execute(SQL_QUERY)
- """
- for k in cur:
- print("Man!")
- print(k)
- """
- if __name__ == '__main__':
- main()
|