summaryrefslogtreecommitdiff
path: root/src/converter/schematic_converters/lib/PythonLib/attribute.py
blob: e584a2ec5912493688a0d67181590977eb37cec7 (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
#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'