@@ -113,6 +113,19 @@ def parse_track(self, shape):
113
113
114
114
return layer , segments_json
115
115
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
+
116
129
def parse_rect (self , shape ):
117
130
shape = self .tilda_split (shape )
118
131
assert len (shape ) >= 9 , 'Invalid rect ' + str (shape )
@@ -387,6 +400,7 @@ def parse_shapes(self, shapes):
387
400
shape = shape_str .split ('~' , 1 )
388
401
parse_func = {
389
402
'TRACK' : self .parse_track ,
403
+ 'VIA' : self .parse_via ,
390
404
'RECT' : self .parse_rect ,
391
405
'CIRCLE' : self .parse_circle ,
392
406
'SOLIDREGION' : self .parse_solid_region ,
@@ -398,6 +412,9 @@ def parse_shapes(self, shapes):
398
412
if parse_func :
399
413
layer , json_list = parse_func (shape [1 ])
400
414
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 )
401
418
if shape [0 ] == 'LIB' :
402
419
layer , component , json , extras = self .parse_lib (shape [1 ])
403
420
for drawing_layer , drawing in extras :
0 commit comments