1331 lines
38 KiB
Python
1331 lines
38 KiB
Python
|
|
# librarySymbols.py
|
||
|
|
|
||
|
|
|
||
|
|
def generate_header(name, hide_pin_numbers=True):
|
||
|
|
symbol = f'\t(symbol "{name}"'
|
||
|
|
if hide_pin_numbers == True:
|
||
|
|
symbol += "\n\t\t(pin_numbers hide)"
|
||
|
|
symbol += "\n\t\t(pin_names\n\t\t\t(offset 0)\n\t\t)"
|
||
|
|
symbol += "\n\t\t(exclude_from_sim no)"
|
||
|
|
symbol += "\n\t\t(in_bom yes)"
|
||
|
|
symbol += "\n\t\t(on_board yes)"
|
||
|
|
return symbol
|
||
|
|
|
||
|
|
|
||
|
|
def generate_property(key, value, at, size=1.27, hide=True, autoplace=True, justify_left=False):
|
||
|
|
if autoplace == False:
|
||
|
|
autoplace_str = "(do_not_autoplace)"
|
||
|
|
else:
|
||
|
|
autoplace_str = ""
|
||
|
|
|
||
|
|
if hide == True:
|
||
|
|
hide_str = "\n\t\t\t\t(hide yes)"
|
||
|
|
else:
|
||
|
|
hide_str = ""
|
||
|
|
|
||
|
|
if justify_left == True:
|
||
|
|
justify_str = "\n\t\t\t\t(justify left)"
|
||
|
|
else:
|
||
|
|
justify_str = ""
|
||
|
|
|
||
|
|
return f'\n\t\t(property "{key}" "{value}"\n\t\t\t(at {at}){autoplace_str}\n\t\t\t(effects\n\t\t\t\t(font\n\t\t\t\t\t(size {size} {size})\n\t\t\t\t){hide_str}{justify_str}\n\t\t\t)\n\t\t)'
|
||
|
|
|
||
|
|
|
||
|
|
def generate_rectangle(
|
||
|
|
start,
|
||
|
|
end,
|
||
|
|
name,
|
||
|
|
index,
|
||
|
|
stroke={"width": 0.254, "type": "default"},
|
||
|
|
fill={"type": "none"},
|
||
|
|
):
|
||
|
|
return f'\n\t\t(symbol "{name}_{index}_1"\n\t\t\t(rectangle\n\t\t\t\t(start {start})\n\t\t\t\t(end {end})\n\t\t\t\t(stroke\n\t\t\t\t\t(width {stroke["width"]})\n\t\t\t\t\t(type {stroke["type"]})\n\t\t\t\t)\n\t\t\t\t(fill\n\t\t\t\t\t(type {fill["type"]})\n\t\t\t\t)\n\t\t\t)\n\t\t)'
|
||
|
|
|
||
|
|
|
||
|
|
def generate_polyline(
|
||
|
|
points,
|
||
|
|
name,
|
||
|
|
index,
|
||
|
|
stroke={"width": 0.254, "type": "default"},
|
||
|
|
fill={"type": "none"},
|
||
|
|
):
|
||
|
|
polyline_str = f'\n\t\t(symbol "{name}_{index}_1"\n\t\t\t(polyline\n\t\t\t\t(pts\n'
|
||
|
|
for point in points:
|
||
|
|
polyline_str += f"\t\t\t\t\t(xy {point})\n"
|
||
|
|
polyline_str += f'\t\t\t\t)\n\t\t\t\t(stroke\n\t\t\t\t\t(width {stroke["width"]})\n\t\t\t\t\t(type {stroke["type"]})\n\t\t\t\t)\n\t\t\t\t(fill\n\t\t\t\t\t(type {fill["type"]})\n\t\t\t\t)\n\t\t\t)\n\t\t)'
|
||
|
|
return polyline_str
|
||
|
|
|
||
|
|
|
||
|
|
def generate_pin_pair(pin_type, name, index, pin_length="1.27", pinA=1, pinB=2):
|
||
|
|
symbol = f'\n\t\t(symbol "{name}_{index}_1"\n\t\t\t(pin {pin_type}\n\t\t\t\t(at 0 3.81 270)\n\t\t\t\t(length {pin_length})\n\t\t\t\t(name "~"\n\t\t\t\t\t(effects\n\t\t\t\t\t\t(font\n\t\t\t\t\t\t\t(size 1.27 1.27)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t(number "{pinA}"\n\t\t\t\t\t(effects\n\t\t\t\t\t\t(font\n\t\t\t\t\t\t\t(size 1.27 1.27)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t)'
|
||
|
|
symbol += f'\n\t\t\t(pin {pin_type}\n\t\t\t\t(at 0 -3.81 90)\n\t\t\t\t(length {pin_length})\n\t\t\t\t(name "~"\n\t\t\t\t\t(effects\n\t\t\t\t\t\t(font\n\t\t\t\t\t\t\t(size 1.27 1.27)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t(number "{pinB}"\n\t\t\t\t\t(effects\n\t\t\t\t\t\t(font\n\t\t\t\t\t\t\t(size 1.27 1.27)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t)'
|
||
|
|
symbol += "\n\t\t)"
|
||
|
|
return symbol
|
||
|
|
|
||
|
|
|
||
|
|
def generate_kicad_symbol(
|
||
|
|
mode,
|
||
|
|
secondary_mode,
|
||
|
|
lcsc,
|
||
|
|
datasheet,
|
||
|
|
description,
|
||
|
|
footprint,
|
||
|
|
value,
|
||
|
|
keywords,
|
||
|
|
price,
|
||
|
|
assembly_process,
|
||
|
|
min_order_qty,
|
||
|
|
attrition_qty,
|
||
|
|
component_class,
|
||
|
|
stock,
|
||
|
|
category,
|
||
|
|
manufacturer,
|
||
|
|
manufacturerPartID,
|
||
|
|
attributes,
|
||
|
|
units,
|
||
|
|
footprints_lookup,
|
||
|
|
names_lookup,
|
||
|
|
):
|
||
|
|
|
||
|
|
justify_value_left = True
|
||
|
|
|
||
|
|
if mode == "Resistors":
|
||
|
|
ref_designator = "R"
|
||
|
|
ref_position = "1.778 0 0"
|
||
|
|
value_position = "0 0 90"
|
||
|
|
value_autoplace = False
|
||
|
|
justify_value_left = False
|
||
|
|
name = f"{footprint},{value}"
|
||
|
|
|
||
|
|
elif mode == "Capacitors":
|
||
|
|
ref_designator = "C"
|
||
|
|
ref_position = "2.032 1.668 0"
|
||
|
|
value_position = "2.032 -0.3782 0"
|
||
|
|
value_autoplace = True
|
||
|
|
name = f"{footprint},{value}"
|
||
|
|
|
||
|
|
elif mode == "Diodes":
|
||
|
|
ref_designator = "D"
|
||
|
|
ref_position = "2.032 0.834 0"
|
||
|
|
value_position = "2.032 -1.2122 0"
|
||
|
|
value_autoplace = True
|
||
|
|
if secondary_mode == "LED" or secondary_mode == "LED-Bi-Colour":
|
||
|
|
name = f"{secondary_mode},{footprint},{value}"
|
||
|
|
elif secondary_mode == "Zener13":
|
||
|
|
name = f"Zener,{manufacturerPartID}"
|
||
|
|
value = manufacturerPartID
|
||
|
|
elif secondary_mode == "Schottky13":
|
||
|
|
name = f"Schottky,{manufacturerPartID}"
|
||
|
|
value = manufacturerPartID
|
||
|
|
else:
|
||
|
|
name = f"{value},{manufacturerPartID}"
|
||
|
|
value = manufacturerPartID
|
||
|
|
|
||
|
|
elif mode == "Inductors":
|
||
|
|
if secondary_mode == "Inductor":
|
||
|
|
ref_designator = "L"
|
||
|
|
name = f"{value}"
|
||
|
|
ref_position = "1.2673 0.834 0"
|
||
|
|
value_position = "1.2673 -1.2122 0"
|
||
|
|
elif secondary_mode == "Ferrite":
|
||
|
|
ref_designator = "FB"
|
||
|
|
name = f"Ferrite,{footprint}"
|
||
|
|
ref_position = "3.4036 1.2508 0"
|
||
|
|
value_position = "0 0 0"
|
||
|
|
value_autoplace = True
|
||
|
|
|
||
|
|
elif mode == "Transistors":
|
||
|
|
ref_designator = "Q"
|
||
|
|
ref_position = "4.8514 0.834 0"
|
||
|
|
value_position = "4.8514 -1.2122 0"
|
||
|
|
value_autoplace = True
|
||
|
|
# Remove brackets from manufacturerPartID
|
||
|
|
cleaned_manufacturerPartID = manufacturerPartID.replace("(", "").replace(")", "").replace("RANGE:", " ")
|
||
|
|
name = f"{value},{cleaned_manufacturerPartID}"
|
||
|
|
value = cleaned_manufacturerPartID
|
||
|
|
|
||
|
|
elif mode == "Variable-Resistors":
|
||
|
|
value_autoplace = True
|
||
|
|
if secondary_mode == "NTC":
|
||
|
|
ref_designator = "RT"
|
||
|
|
name = f"NTC,{value},{footprint}"
|
||
|
|
ref_position = "2.667 0.834 0"
|
||
|
|
value_position = "2.667 -1.2122 0"
|
||
|
|
else:
|
||
|
|
if secondary_mode == "MOV":
|
||
|
|
ref_designator = "RV"
|
||
|
|
name = f"MOV,{footprint}"
|
||
|
|
elif secondary_mode == "Fuse":
|
||
|
|
ref_designator = "F"
|
||
|
|
name = f"Fuse,{value}"
|
||
|
|
elif secondary_mode == "Fuse,Resettable":
|
||
|
|
ref_designator = "F"
|
||
|
|
name = f"Fuse,Resettable,{value}"
|
||
|
|
ref_position = "1.778 0.834 0"
|
||
|
|
value_position = "1.778 -1.2122 0"
|
||
|
|
|
||
|
|
else:
|
||
|
|
ref_designator = "NA"
|
||
|
|
ref_position = "0 0 0"
|
||
|
|
value_position = "0 0 0"
|
||
|
|
value_autoplace = True
|
||
|
|
name = f"{footprint},{value}"
|
||
|
|
print(f"Error: Unknown autoLibrarySymbol mode for https://jlcpcb.com/partdetail/C{lcsc} ({mode})")
|
||
|
|
lcsc = f"C{lcsc}"
|
||
|
|
|
||
|
|
if footprint == "SMA(DO-214AC)":
|
||
|
|
footprint = "SMA"
|
||
|
|
if footprint == "SMB(DO-214AA)":
|
||
|
|
footprint = "SMB"
|
||
|
|
if footprint == "SOT-23-3":
|
||
|
|
footprint = "SOT-23"
|
||
|
|
|
||
|
|
if name in names_lookup:
|
||
|
|
if name + ",(2)" not in names_lookup:
|
||
|
|
name = name + ",(2)"
|
||
|
|
elif name + ",(3)" not in names_lookup:
|
||
|
|
name = name + ",(3)"
|
||
|
|
elif name + ",(4)" not in names_lookup:
|
||
|
|
name = name + ",(4)"
|
||
|
|
elif name + ",(5)" not in names_lookup:
|
||
|
|
name = name + ",(5)"
|
||
|
|
elif name + ",(6)" not in names_lookup:
|
||
|
|
name = name + ",(6)"
|
||
|
|
else:
|
||
|
|
print("more than 5 symbols with the same name...")
|
||
|
|
|
||
|
|
names_lookup.append(name)
|
||
|
|
|
||
|
|
footprint = f"PCM_JLCPCB:{ref_designator}_{footprint}"
|
||
|
|
if mode == "Transistors":
|
||
|
|
symbol = generate_header(name, False)
|
||
|
|
else:
|
||
|
|
symbol = generate_header(name, True)
|
||
|
|
|
||
|
|
symbol += generate_property("Reference", ref_designator, ref_position, hide=False, justify_left=True)
|
||
|
|
symbol += generate_property(
|
||
|
|
"Value",
|
||
|
|
value,
|
||
|
|
value_position,
|
||
|
|
size=0.8,
|
||
|
|
hide=False,
|
||
|
|
autoplace=value_autoplace,
|
||
|
|
justify_left=justify_value_left,
|
||
|
|
)
|
||
|
|
symbol += generate_property("Footprint", footprint, "-1.778 0 90")
|
||
|
|
symbol += generate_property("Datasheet", datasheet, "0 0 0")
|
||
|
|
symbol += generate_property("Description", description, "0 0 0")
|
||
|
|
symbol += generate_property("LCSC", lcsc, "0 0 0")
|
||
|
|
symbol += generate_property("Stock", stock, "0 0 0")
|
||
|
|
symbol += generate_property("Price", price, "0 0 0")
|
||
|
|
symbol += generate_property("Process", assembly_process, "0 0 0")
|
||
|
|
symbol += generate_property("Minimum Qty", min_order_qty, "0 0 0")
|
||
|
|
symbol += generate_property("Attrition Qty", attrition_qty, "0 0 0")
|
||
|
|
symbol += generate_property("Class", component_class, "0 0 0")
|
||
|
|
symbol += generate_property("Category", category, "0 0 0")
|
||
|
|
symbol += generate_property("Manufacturer", manufacturer, "0 0 0")
|
||
|
|
symbol += generate_property("Part", manufacturerPartID, "0 0 0")
|
||
|
|
|
||
|
|
if type(attributes) == dict:
|
||
|
|
for key, value in attributes.items():
|
||
|
|
if mode == "Capacitors" and (key == "Voltage Rated" or key == "Rated Voltage"):
|
||
|
|
symbol += generate_property(
|
||
|
|
f"{key}",
|
||
|
|
f"{value}",
|
||
|
|
"2.032 -2.0462 0",
|
||
|
|
size=0.8,
|
||
|
|
hide=False,
|
||
|
|
justify_left=True,
|
||
|
|
)
|
||
|
|
elif secondary_mode == "Ferrite" and key == "Current Rating":
|
||
|
|
symbol += generate_property(
|
||
|
|
f"{key}",
|
||
|
|
f"{value}",
|
||
|
|
"3.4036 -1.5274 0",
|
||
|
|
size=0.8,
|
||
|
|
hide=False,
|
||
|
|
justify_left=True,
|
||
|
|
)
|
||
|
|
else:
|
||
|
|
symbol += generate_property(f"{key}", f"{value}", "0 0 0")
|
||
|
|
|
||
|
|
symbol += generate_property("ki_keywords", keywords, at="0 0 0")
|
||
|
|
symbol += generate_property("ki_fp_filters", f"{ref_designator}_*", "0 0 0")
|
||
|
|
|
||
|
|
if mode == "Resistors":
|
||
|
|
symbol += generate_rectangle("-1.016 2.54", "1.016 -2.54", name=name, index=0)
|
||
|
|
for i in range(1, units + 1):
|
||
|
|
symbol += generate_pin_pair("passive line", name, i, "1.27", i, (units * 2) - (i - 1))
|
||
|
|
|
||
|
|
elif mode == "Capacitors":
|
||
|
|
symbol += generate_polyline(["-1.27 0.635", "1.27 0.635"], name=name, index=0)
|
||
|
|
symbol += generate_polyline(["-1.27 -0.635", "1.27 -0.635"], name=name, index=0)
|
||
|
|
polarized_footprints = [
|
||
|
|
"C_CASE-A-3216-18(mm)",
|
||
|
|
"C_CASE-B-3528-21(mm)",
|
||
|
|
"C_Plugin,D5xL11mm",
|
||
|
|
"C_Plugin,D6.3xL8mm",
|
||
|
|
"C_Plugin,D6.3xL11.5mm",
|
||
|
|
"C_Plugin,D8xL12mm",
|
||
|
|
"C_Plugin,D8xL16mm",
|
||
|
|
"C_Plugin,D10xL12mm",
|
||
|
|
"C_Plugin,D10xL14mm",
|
||
|
|
"C_Plugin,D10xL16mm",
|
||
|
|
"C_Plugin,D10xL20mm",
|
||
|
|
"C_Plugin,D13xL21mm",
|
||
|
|
"C_Plugin,D18xL20mm",
|
||
|
|
"C_Plugin,D18xL30mm",
|
||
|
|
"C_Plugin,D18xL36mm",
|
||
|
|
"C_SMD,D8xL10.5mm",
|
||
|
|
]
|
||
|
|
if any(s in footprint for s in polarized_footprints):
|
||
|
|
symbol += generate_polyline(
|
||
|
|
["-1.27 1.27", "-0.635 1.27"],
|
||
|
|
name=name,
|
||
|
|
index=0,
|
||
|
|
stroke={"width": 0.127, "type": "default"},
|
||
|
|
)
|
||
|
|
symbol += generate_polyline(
|
||
|
|
["-0.9525 1.5875", "-0.9525 0.9525"],
|
||
|
|
name=name,
|
||
|
|
index=0,
|
||
|
|
stroke={"width": 0.127, "type": "default"},
|
||
|
|
)
|
||
|
|
for i in range(1, units + 1):
|
||
|
|
symbol += generate_pin_pair("passive line", name, i, "3.175", i, (units * 2) - (i - 1))
|
||
|
|
|
||
|
|
elif mode == "Diodes":
|
||
|
|
if secondary_mode == "TVS-Bi":
|
||
|
|
symbol += generate_polyline(["-1.27 2.54", "0 0", "1.27 2.54", "-1.27 2.54"], name=name, index=0)
|
||
|
|
symbol += generate_polyline(["1.27 -2.54", "0 0", "-1.27 -2.54", "1.27 -2.54"], name=name, index=0)
|
||
|
|
symbol += generate_polyline(
|
||
|
|
["-1.905 -0.635", "-1.27 0", "1.27 0", "1.905 0.635"],
|
||
|
|
name=name,
|
||
|
|
index=0,
|
||
|
|
)
|
||
|
|
for i in range(1, units + 1):
|
||
|
|
symbol += generate_pin_pair("passive line", name, i, "3.81", (units * 2) - (i - 1), i)
|
||
|
|
elif secondary_mode == "Zener13":
|
||
|
|
symbol += generate_polyline(
|
||
|
|
["-1.27 1.27", "0.00 -1.27", "1.27 1.27", "-1.27 1.27"],
|
||
|
|
name=name,
|
||
|
|
index=0,
|
||
|
|
)
|
||
|
|
symbol += generate_polyline(["-1.27 -1.27", "1.27 -1.27", "1.27 -0.762"], name=name, index=0)
|
||
|
|
symbol += generate_pin_pair("passive line", name, 1, "3.81", 1, 3)
|
||
|
|
elif secondary_mode == "Schottky13":
|
||
|
|
symbol += generate_polyline(
|
||
|
|
["-1.27 1.27", "0.00 -1.27", "1.27 1.27", "-1.27 1.27"],
|
||
|
|
name=name,
|
||
|
|
index=0,
|
||
|
|
)
|
||
|
|
symbol += generate_polyline(
|
||
|
|
[
|
||
|
|
"0.635 -1.905",
|
||
|
|
"1.27 -1.905",
|
||
|
|
"1.27 -1.27",
|
||
|
|
"-1.27 -1.27",
|
||
|
|
"-1.27 -0.635",
|
||
|
|
"-0.635 -0.635",
|
||
|
|
],
|
||
|
|
name=name,
|
||
|
|
index=0,
|
||
|
|
)
|
||
|
|
symbol += generate_pin_pair("passive line", name, 1, "3.81", 1, 3)
|
||
|
|
else:
|
||
|
|
symbol += generate_polyline(
|
||
|
|
["-1.27 1.27", "0.00 -1.27", "1.27 1.27", "-1.27 1.27"],
|
||
|
|
name=name,
|
||
|
|
index=0,
|
||
|
|
)
|
||
|
|
if secondary_mode == "Schottky":
|
||
|
|
symbol += generate_polyline(
|
||
|
|
[
|
||
|
|
"0.635 -1.905",
|
||
|
|
"1.27 -1.905",
|
||
|
|
"1.27 -1.27",
|
||
|
|
"-1.27 -1.27",
|
||
|
|
"-1.27 -0.635",
|
||
|
|
"-0.635 -0.635",
|
||
|
|
],
|
||
|
|
name=name,
|
||
|
|
index=0,
|
||
|
|
)
|
||
|
|
elif secondary_mode == "Zener":
|
||
|
|
symbol += generate_polyline(["-1.27 -1.27", "1.27 -1.27", "1.27 -0.762"], name=name, index=0)
|
||
|
|
|
||
|
|
elif secondary_mode == "TVS-Uni":
|
||
|
|
symbol += generate_polyline(
|
||
|
|
["-1.905 -1.905", "-1.27 -1.27", "1.27 -1.27", "1.905 -0.635"],
|
||
|
|
name=name,
|
||
|
|
index=0,
|
||
|
|
)
|
||
|
|
elif secondary_mode == "LED":
|
||
|
|
symbol += generate_polyline(["-1.27 -1.27", "1.27 -1.27"], name=name, index=0)
|
||
|
|
symbol += generate_polyline(
|
||
|
|
[
|
||
|
|
"-1.905 -1.27",
|
||
|
|
"-3.429 0.254",
|
||
|
|
"-3.429 -0.254",
|
||
|
|
"-3.429 0.254",
|
||
|
|
"-2.921 0.254",
|
||
|
|
],
|
||
|
|
name=name,
|
||
|
|
index=0,
|
||
|
|
stroke={"width": 0.127, "type": "default"},
|
||
|
|
)
|
||
|
|
symbol += generate_polyline(
|
||
|
|
[
|
||
|
|
"-1.905 0",
|
||
|
|
"-3.429 1.524",
|
||
|
|
"-3.429 1.016",
|
||
|
|
"-3.429 1.524",
|
||
|
|
"-2.921 1.524",
|
||
|
|
],
|
||
|
|
name=name,
|
||
|
|
index=0,
|
||
|
|
stroke={"width": 0.127, "type": "default"},
|
||
|
|
)
|
||
|
|
else:
|
||
|
|
symbol += generate_polyline(["-1.27 -1.27", "1.27 -1.27"], name=name, index=0)
|
||
|
|
|
||
|
|
for i in range(1, units + 1):
|
||
|
|
symbol += generate_pin_pair("passive line", name, i, "3.81", (units * 2) - (i - 1), i)
|
||
|
|
|
||
|
|
elif mode == "Transistors":
|
||
|
|
if secondary_mode == "NPN" or secondary_mode == "NPNC2":
|
||
|
|
if secondary_mode == "NPNC2":
|
||
|
|
collector_pin = 2
|
||
|
|
emitter_pin = 3
|
||
|
|
else:
|
||
|
|
collector_pin = 3
|
||
|
|
emitter_pin = 2
|
||
|
|
npn = f""" (symbol "{name}_0_1"
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy -2.54 0) (xy 0.635 0)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0.1524)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 0.635 0.635) (xy 2.54 2.54)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 2.794 -1.27) (xy 2.794 -1.27)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0.1524)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 2.794 -1.27) (xy 2.794 -1.27)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0.1524)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 0.635 -0.635) (xy 2.54 -2.54) (xy 2.54 -2.54)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 0.635 1.905) (xy 0.635 -1.905) (xy 0.635 -1.905)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0.508)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 1.27 -1.778) (xy 1.778 -1.27) (xy 2.286 -2.286) (xy 1.27 -1.778) (xy 1.27 -1.778)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type outline)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(circle
|
||
|
|
(center 1.27 0)
|
||
|
|
(radius 2.8194)
|
||
|
|
(stroke
|
||
|
|
(width 0.254)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(symbol "{name}_1_1"
|
||
|
|
(pin open_collector line
|
||
|
|
(at 2.54 5.08 270)
|
||
|
|
(length 2.54)
|
||
|
|
(name "C"
|
||
|
|
(effects
|
||
|
|
(font
|
||
|
|
(size 1.27 1.27)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(number "{collector_pin}"
|
||
|
|
(effects
|
||
|
|
(font
|
||
|
|
(size 1.27 1.27)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(pin input line
|
||
|
|
(at -5.08 0 0)
|
||
|
|
(length 2.54)
|
||
|
|
(name "B"
|
||
|
|
(effects
|
||
|
|
(font
|
||
|
|
(size 1.27 1.27)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(number "1"
|
||
|
|
(effects
|
||
|
|
(font
|
||
|
|
(size 1.27 1.27)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(pin open_emitter line
|
||
|
|
(at 2.54 -5.08 90)
|
||
|
|
(length 2.54)
|
||
|
|
(name "E"
|
||
|
|
(effects
|
||
|
|
(font
|
||
|
|
(size 1.27 1.27)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(number "{emitter_pin}"
|
||
|
|
(effects
|
||
|
|
(font
|
||
|
|
(size 1.27 1.27)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)"""
|
||
|
|
symbol += npn
|
||
|
|
elif secondary_mode == "PNP" or secondary_mode == "PNPC2":
|
||
|
|
if secondary_mode == "PNPC2":
|
||
|
|
collector_pin = 2
|
||
|
|
emitter_pin = 3
|
||
|
|
else:
|
||
|
|
collector_pin = 3
|
||
|
|
emitter_pin = 2
|
||
|
|
pnp = f""" (symbol "{name}_0_1"
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy -2.54 0) (xy 0.635 0)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0.1524)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 0.635 0.635) (xy 2.54 2.54)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 0.635 -0.635) (xy 2.54 -2.54) (xy 2.54 -2.54)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 0.635 1.905) (xy 0.635 -1.905) (xy 0.635 -1.905)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0.508)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 2.286 -1.778) (xy 1.778 -2.286) (xy 1.27 -1.27) (xy 2.286 -1.778) (xy 2.286 -1.778)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type outline)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(circle
|
||
|
|
(center 1.27 0)
|
||
|
|
(radius 2.8194)
|
||
|
|
(stroke
|
||
|
|
(width 0.254)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(symbol "{name}_1_1"
|
||
|
|
(pin open_collector line
|
||
|
|
(at 2.54 5.08 270)
|
||
|
|
(length 2.54)
|
||
|
|
(name "C"
|
||
|
|
(effects
|
||
|
|
(font
|
||
|
|
(size 1.27 1.27)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(number "{collector_pin}"
|
||
|
|
(effects
|
||
|
|
(font
|
||
|
|
(size 1.27 1.27)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(pin input line
|
||
|
|
(at -5.08 0 0)
|
||
|
|
(length 2.54)
|
||
|
|
(name "B"
|
||
|
|
(effects
|
||
|
|
(font
|
||
|
|
(size 1.27 1.27)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(number "1"
|
||
|
|
(effects
|
||
|
|
(font
|
||
|
|
(size 1.27 1.27)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(pin open_emitter line
|
||
|
|
(at 2.54 -5.08 90)
|
||
|
|
(length 2.54)
|
||
|
|
(name "E"
|
||
|
|
(effects
|
||
|
|
(font
|
||
|
|
(size 1.27 1.27)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(number "{emitter_pin}"
|
||
|
|
(effects
|
||
|
|
(font
|
||
|
|
(size 1.27 1.27)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)"""
|
||
|
|
symbol += pnp
|
||
|
|
elif secondary_mode == "NMOS":
|
||
|
|
nmos = f""" (symbol "{name}_0_1"
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 0.254 0) (xy -2.54 0)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 0.254 1.905) (xy 0.254 -1.905)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0.254)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 0.762 -1.27) (xy 0.762 -2.286)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0.254)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 0.762 0.508) (xy 0.762 -0.508)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0.254)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 0.762 2.286) (xy 0.762 1.27)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0.254)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 2.54 2.54) (xy 2.54 1.778)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 2.54 -2.54) (xy 2.54 0) (xy 0.762 0)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 0.762 -1.778) (xy 3.302 -1.778) (xy 3.302 1.778) (xy 0.762 1.778)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 1.016 0) (xy 2.032 0.381) (xy 2.032 -0.381) (xy 1.016 0)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type outline)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 2.794 0.508) (xy 2.921 0.381) (xy 3.683 0.381) (xy 3.81 0.254)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 3.302 0.381) (xy 2.921 -0.254) (xy 3.683 -0.254) (xy 3.302 0.381)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(circle
|
||
|
|
(center 1.651 0)
|
||
|
|
(radius 2.794)
|
||
|
|
(stroke
|
||
|
|
(width 0.254)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(circle
|
||
|
|
(center 2.54 -1.778)
|
||
|
|
(radius 0.254)
|
||
|
|
(stroke
|
||
|
|
(width 0)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type outline)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(circle
|
||
|
|
(center 2.54 1.778)
|
||
|
|
(radius 0.254)
|
||
|
|
(stroke
|
||
|
|
(width 0)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type outline)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(symbol "{name}_1_1"
|
||
|
|
(pin passive line
|
||
|
|
(at 2.54 5.08 270)
|
||
|
|
(length 2.54)
|
||
|
|
(name "D"
|
||
|
|
(effects
|
||
|
|
(font
|
||
|
|
(size 1.27 1.27)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(number "3"
|
||
|
|
(effects
|
||
|
|
(font
|
||
|
|
(size 1.27 1.27)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(pin input line
|
||
|
|
(at -5.08 0 0)
|
||
|
|
(length 2.54)
|
||
|
|
(name "G"
|
||
|
|
(effects
|
||
|
|
(font
|
||
|
|
(size 1.27 1.27)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(number "1"
|
||
|
|
(effects
|
||
|
|
(font
|
||
|
|
(size 1.27 1.27)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(pin passive line
|
||
|
|
(at 2.54 -5.08 90)
|
||
|
|
(length 2.54)
|
||
|
|
(name "S"
|
||
|
|
(effects
|
||
|
|
(font
|
||
|
|
(size 1.27 1.27)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(number "2"
|
||
|
|
(effects
|
||
|
|
(font
|
||
|
|
(size 1.27 1.27)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)"""
|
||
|
|
symbol += nmos
|
||
|
|
elif secondary_mode == "PMOS":
|
||
|
|
pmos = f""" (symbol "{name}_0_1"
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 0.254 0) (xy -2.54 0)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 0.254 1.905) (xy 0.254 -1.905)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0.254)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 0.762 -1.27) (xy 0.762 -2.286)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0.254)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 0.762 0.508) (xy 0.762 -0.508)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0.254)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 0.762 2.286) (xy 0.762 1.27)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0.254)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 2.54 2.54) (xy 2.54 1.778)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 2.54 -2.54) (xy 2.54 0) (xy 0.762 0)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 0.762 1.778) (xy 3.302 1.778) (xy 3.302 -1.778) (xy 0.762 -1.778)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 2.286 0) (xy 1.27 0.381) (xy 1.27 -0.381) (xy 2.286 0)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type outline)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 2.794 -0.508) (xy 2.921 -0.381) (xy 3.683 -0.381) (xy 3.81 -0.254)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 3.302 -0.381) (xy 2.921 0.254) (xy 3.683 0.254) (xy 3.302 -0.381)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(circle
|
||
|
|
(center 1.651 0)
|
||
|
|
(radius 2.794)
|
||
|
|
(stroke
|
||
|
|
(width 0.254)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(circle
|
||
|
|
(center 2.54 -1.778)
|
||
|
|
(radius 0.254)
|
||
|
|
(stroke
|
||
|
|
(width 0)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type outline)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(circle
|
||
|
|
(center 2.54 1.778)
|
||
|
|
(radius 0.254)
|
||
|
|
(stroke
|
||
|
|
(width 0)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type outline)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(symbol "{name}_1_1"
|
||
|
|
(pin passive line
|
||
|
|
(at 2.54 5.08 270)
|
||
|
|
(length 2.54)
|
||
|
|
(name "D"
|
||
|
|
(effects
|
||
|
|
(font
|
||
|
|
(size 1.27 1.27)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(number "3"
|
||
|
|
(effects
|
||
|
|
(font
|
||
|
|
(size 1.27 1.27)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(pin input line
|
||
|
|
(at -5.08 0 0)
|
||
|
|
(length 2.54)
|
||
|
|
(name "G"
|
||
|
|
(effects
|
||
|
|
(font
|
||
|
|
(size 1.27 1.27)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(number "1"
|
||
|
|
(effects
|
||
|
|
(font
|
||
|
|
(size 1.27 1.27)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(pin passive line
|
||
|
|
(at 2.54 -5.08 90)
|
||
|
|
(length 2.54)
|
||
|
|
(name "S"
|
||
|
|
(effects
|
||
|
|
(font
|
||
|
|
(size 1.27 1.27)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(number "2"
|
||
|
|
(effects
|
||
|
|
(font
|
||
|
|
(size 1.27 1.27)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)"""
|
||
|
|
symbol += pmos
|
||
|
|
else:
|
||
|
|
symbol += generate_rectangle("-2.54 2.54", "2.54 -2.54", name=name, index=0)
|
||
|
|
|
||
|
|
elif mode == "Inductors":
|
||
|
|
if secondary_mode == "Ferrite":
|
||
|
|
ferrite = f""" (symbol "{name}_0_1"
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 0 -1.27) (xy 0 -1.2192)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy 0 1.27) (xy 0 1.2954)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(polyline
|
||
|
|
(pts
|
||
|
|
(xy -2.7686 0.4064) (xy -1.7018 2.2606) (xy 2.7686 -0.3048) (xy 1.6764 -2.159) (xy -2.7686 0.4064)
|
||
|
|
)
|
||
|
|
(stroke
|
||
|
|
(width 0)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(symbol "{name}_1_1"
|
||
|
|
(pin passive line
|
||
|
|
(at 0 3.81 270)
|
||
|
|
(length 2.54)
|
||
|
|
(name "~"
|
||
|
|
(effects
|
||
|
|
(font
|
||
|
|
(size 1.27 1.27)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(number "1"
|
||
|
|
(effects
|
||
|
|
(font
|
||
|
|
(size 1.27 1.27)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(pin passive line
|
||
|
|
(at 0 -3.81 90)
|
||
|
|
(length 2.54)
|
||
|
|
(name "~"
|
||
|
|
(effects
|
||
|
|
(font
|
||
|
|
(size 1.27 1.27)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(number "2"
|
||
|
|
(effects
|
||
|
|
(font
|
||
|
|
(size 1.27 1.27)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)"""
|
||
|
|
symbol += ferrite
|
||
|
|
|
||
|
|
elif secondary_mode == "Inductor":
|
||
|
|
inductor = f""" (symbol "{name}_0_1"
|
||
|
|
(arc
|
||
|
|
(start 0 -2.54)
|
||
|
|
(mid 0.6323 -1.905)
|
||
|
|
(end 0 -1.27)
|
||
|
|
(stroke
|
||
|
|
(width 0)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(arc
|
||
|
|
(start 0 -1.27)
|
||
|
|
(mid 0.6323 -0.635)
|
||
|
|
(end 0 0)
|
||
|
|
(stroke
|
||
|
|
(width 0)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(arc
|
||
|
|
(start 0 0)
|
||
|
|
(mid 0.6323 0.635)
|
||
|
|
(end 0 1.27)
|
||
|
|
(stroke
|
||
|
|
(width 0)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(arc
|
||
|
|
(start 0 1.27)
|
||
|
|
(mid 0.6323 1.905)
|
||
|
|
(end 0 2.54)
|
||
|
|
(stroke
|
||
|
|
(width 0)
|
||
|
|
(type default)
|
||
|
|
)
|
||
|
|
(fill
|
||
|
|
(type none)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(symbol "{name}_1_1"
|
||
|
|
(pin passive line
|
||
|
|
(at 0 3.81 270)
|
||
|
|
(length 1.27)
|
||
|
|
(name "~"
|
||
|
|
(effects
|
||
|
|
(font
|
||
|
|
(size 1.27 1.27)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(number "1"
|
||
|
|
(effects
|
||
|
|
(font
|
||
|
|
(size 1.27 1.27)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(pin passive line
|
||
|
|
(at 0 -3.81 90)
|
||
|
|
(length 1.27)
|
||
|
|
(name "~"
|
||
|
|
(effects
|
||
|
|
(font
|
||
|
|
(size 1.27 1.27)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
(number "2"
|
||
|
|
(effects
|
||
|
|
(font
|
||
|
|
(size 1.27 1.27)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)"""
|
||
|
|
symbol += inductor
|
||
|
|
|
||
|
|
elif mode == "Variable-Resistors":
|
||
|
|
if secondary_mode == "Fuse" or secondary_mode == "Fuse,Resettable":
|
||
|
|
symbol += generate_rectangle("-1.016 2.54", "1.016 -2.54", name=name, index=0)
|
||
|
|
for i in range(1, units + 1):
|
||
|
|
symbol += generate_pin_pair("passive line", name, i, "3.81", i, (units * 2) - (i - 1))
|
||
|
|
else:
|
||
|
|
symbol += generate_rectangle("-1.016 2.54", "1.016 -2.54", name=name, index=0)
|
||
|
|
symbol += generate_polyline(["-1.905 2.54", "-1.905 1.27", "1.905 -1.27"], name=name, index=0)
|
||
|
|
for i in range(1, units + 1):
|
||
|
|
symbol += generate_pin_pair("passive line", name, i, "1.27", i, (units * 2) - (i - 1))
|
||
|
|
|
||
|
|
symbol += "\n\t)"
|
||
|
|
return symbol
|