summaryrefslogtreecommitdiff
path: root/src/converter/schematic_converters/lib/PythonLib/libParser.py
blob: 364ecedc32530920c883390b57ae6249de25daa2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#The MIT License (MIT)

#PSpice to Oscad Schematic Converter
#This code is written by Suryavamshi Tenneti, FOSSEE, IIT Bombay
#The code is modified by Sumanto Kar and Gloria Nandihal, FOSSEE, IIT Bombay


import sys
import os
from attribute import *
from component_instance import *
from component import *
from design import *
from wire import *
from header import *
from misc import *


libDescr  = 'EESchema-LIBRARY Version 4.7  Date: \n#encoding utf-8\n'

nameAppend  = '_PSPICE'
REMOVEDCOMPONENTS = ['TITLEBLK', 'PARAM', 'readme', 'VIEWPOINT', 'LIB', 'copyright', 'WATCH1', 'VECTOR', 'NODESET1']

input_file_path = sys.argv[1]
output_dir = sys.argv[2]

# Prepare input/output
input_file = open(input_file_path, 'r')
fbasename = os.path.basename(input_file_path)
flname = fbasename[:fbasename.find('.')] + '.lib'
flpath = os.path.join(output_dir, flname)
os.makedirs(output_dir, exist_ok=True)

flib = open(flpath, 'w+')  # Output .lib file

print('Library file name: ', flname)


line = skipTo(input_file,'*symbol')
print('Parser',line)
'''
while(line != '' and '*symbol' not in line):
	line = input_file.readline().strip()
	print(line)
'''

while(line != '__ERROR__'):
	#print(input_file.tell())
	#print('Compo line',line)
	d = line.find(' ')
	cnametmp = line[d+1:]
	#print('cnametmp',cnametmp)
	d = cnametmp.find(' ')
	if d == -1:
		cname = cnametmp
	else:
		cname = cnametmp[0:d]

	#print('cname->',cname)

	fileTMP	= open(input_file_path)
	c = Component(fileTMP, cname)
	#print(c.ref)
	fixComp(c)
	#print('After fixComp',cname, 'ref=', c.ref)

	write = True

	for i in range(len(REMOVEDCOMPONENTS)):			#Don't let these components be saved.
		if cname == REMOVEDCOMPONENTS[i]:
			write = False
			break
	#print('write->', write)
	#print('line->', line)
	if write:
		c.type_ = c.type_ + nameAppend
		c.print(flib)

	'''line = input_file.readline().strip()
	while(line != '' and '*symbol' not in line):
		line = input_file.readline().strip()
		print(line)
	'''
	line = skipTo(input_file, '*symbol')
flib.write('#\n#End Library\n')
flib.close()