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
|
#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
from header import * #Importing header file from PythonLib folder
class Attribute: #defining class Attribute
x = 0 #declaring and initialising coordinates
y = 0
orient = '' #declaring and initialising orientation
hjust = '' #declaring and initialising hjust
vjust = '' #declaring and initialising vjust
isHidden = False #declaring and initialising isHidden
name ='' #declaring and initialising component name
value = '' #declaring and initialising value
'''Sample attribute line in a Pspice library:
a 0 s 11 0 10 34 hln 100 PART=EPOLY
a: implies that this line describes an attribute
s: something to do with "isHidden"
10, 34: "x", "y" wrt the origin of the Component of which this is an attribute.
hln: "orient"(h), "hjust"(l), "vjust"(n)
100: text size in % in Pspice. Ignore.
PART: "name" of the attribute.
EPOLY: "value" of the attribute. '''
def __init__(self,line = ''): #defining the _init_ Constructor
a = '' #declaring and initialising a
vis = '' #declaring and initialising vis
temp = '' #declaring and initialising temp
t = 0 #declaring and initialising t
x0 = 0 #declaring and initialising x0
y0 = 0 #declaring and initialising y0
if len(line) != 0:
input_line = line.strip().split() #making a copy of line and spliting it
#print(input_line)
a,t,temp,vis,x0,y0,temp = input_line[:7] #copying input_line
self.orient,self.hjust,self.vjust = list(input_line[7])
t= input_line[8] #setting sizes to 8
temp = ' '.join(map(str,input_line[9:])) #mapping and then joining in temp
temp = temp.split()[0] #spliting the temp
x0 = int(x0) #taking the x coordinate in integer format
y0 = int(y0) #taking the y coordinate in integer format
self.x = x0 * MULT #as size of pspice components is small therefore
#increasing the size 10 times
self.y = y0 * MULT #MULT=10 from header file
t = temp.find('=') #everything in temp occuring before the '=' is the "name",
#and everything after it is the "value".
self.name = temp[0:t] #storing the name
self.value = temp[t+1:] #storing the value
if vis.find('13') == -1: #if '13' is not found returns -1
self.isHidden = True #if yes, storing the isHidden as True
else:
self.isHidden = False #otherwise storing the isHidden as False
#print('attribute name->',self.name,'attribute value->', self.value)
def print(self, output_stream): #defining the print function
#print('Type in attr->',self.value)
output_stream.write(' "'+self.value+'" '+self.orient.upper()+' '+str(self.x)+' ' +str(self.y)+' 30 000'+str(int(self.isHidden))+' '+self.hjust.upper()+' ') #write the values to the output_stream
if self.vjust == 'n': #checking vjust is 'n' (representing hln in pspice schematic)
output_stream.write('C') #if yes, writing 'C' to the output_stream(EESchema Schematic)
else:
output_stream.write(self.vjust.upper()) #if not, writing vjust.upper to the output_stream
output_stream.write('NN\n') #writing 'NN\n'
|