@@ -113,6 +113,19 @@ def parse_track(self, shape):
113113
114114 return layer , segments_json
115115
116+ def parse_via (self , shape ):
117+ print ('Parsing via' , shape )
118+ shape = self .tilda_split (shape )
119+ assert len (shape ) >= 5 , 'Invalid via ' + str (shape )
120+ x , y = self .normalize (shape [0 ]), self .normalize (shape [1 ])
121+ width = self .normalize (shape [2 ])
122+ return self .TOP_COPPER_LAYER , [{
123+ "type" : "segment" ,
124+ "start" : [x , y ],
125+ "end" : [x , y ],
126+ "width" : width
127+ }]
128+
116129 def parse_rect (self , shape ):
117130 shape = self .tilda_split (shape )
118131 assert len (shape ) >= 9 , 'Invalid rect ' + str (shape )
@@ -387,6 +400,7 @@ def parse_shapes(self, shapes):
387400 shape = shape_str .split ('~' , 1 )
388401 parse_func = {
389402 'TRACK' : self .parse_track ,
403+ 'VIA' : self .parse_via ,
390404 'RECT' : self .parse_rect ,
391405 'CIRCLE' : self .parse_circle ,
392406 'SOLIDREGION' : self .parse_solid_region ,
@@ -398,6 +412,9 @@ def parse_shapes(self, shapes):
398412 if parse_func :
399413 layer , json_list = parse_func (shape [1 ])
400414 drawings .setdefault (layer , []).extend (json_list )
415+ print (shape [0 ], layer , json_list )
416+ if shape [0 ] == 'VIA' :
417+ drawings .setdefault (self .BOT_COPPER_LAYER , []).extend (json_list )
401418 if shape [0 ] == 'LIB' :
402419 layer , component , json , extras = self .parse_lib (shape [1 ])
403420 for drawing_layer , drawing in extras :
0 commit comments