| 1215 | |
| 1216 | |
| 1217 | class Pad( KicadFatObj ): |
| 1218 | |
| 1219 | def __init__( self, name ): |
| 1220 | KicadFatObj.__init__( self, name, ( |
| 1221 | VectorAngle( "at" ), |
| 1222 | Vector( "size" ), |
| 1223 | Vector( "rect_delta" ), |
| 1224 | Drill( "drill" ), |
| 1225 | List( "layers" ), |
| 1226 | Float( "solder_mask_margin" ), |
| 1227 | Float( "clearance" ), |
| 1228 | Net( "net" ), |
| 1229 | Int( "zone_connect" ), |
| 1230 | ) ) |
| 1231 | self.nr = None |
| 1232 | self.kind = None |
| 1233 | self.shape = None |
| 1234 | |
| 1235 | def tag_value( self, factory, value ): |
| 1236 | if self.nr == None: |
| 1237 | self.nr = value |
| 1238 | elif self.kind == None: |
| 1239 | self.kind = value |
| 1240 | elif self.shape == None: |
| 1241 | self.shape = value |
| 1242 | else: |
| 1243 | factory.parse_error( "too many values for '%s'" % self.obj_name ) |
| 1244 | |
| 1245 | def write( self, writer ): |
| 1246 | writer.begin( self ) |
| 1247 | writer.write_text( self.nr ) |
| 1248 | writer.write_text( self.kind ) |
| 1249 | writer.write_text( self.shape ) |
| 1250 | self.write_objects( writer, ( |
| 1251 | "at", |
| 1252 | "size", |
| 1253 | "drill", |
| 1254 | "layers", |
| 1255 | ), False ) |
| 1256 | if self.rect_delta.is_set(): |
| 1257 | self.write_objects( writer, ("rect_delta",), False ) |
| 1258 | # +++++ if net.is_set() or zone_connect.is_set() |
| 1259 | #if self.get_obj( "net" ).is_set() or self.get_obj( "zone_connect" ).is_set() |
| 1260 | #if self.obj_is_set( "net" ) or self.obj_is_set( "zone_connect" ): |
| 1261 | if self.clearance.is_set() or self.net.is_set() or self.zone_connect.is_set(): |
| 1262 | writer.newline() |
| 1263 | self.write_objects( writer, ( |
| 1264 | "solder_mask_margin", |
| 1265 | "clearance", |
| 1266 | "net", |
| 1267 | "zone_connect", |
| 1268 | ), False ) |
| 1269 | writer.end() |
| 1270 | |
| 1271 | def copy( self, trans ): |
| 1272 | obj = Pad( self.obj_name ) |
| 1273 | obj.set( "nr", self.nr ) |
| 1274 | obj.set( "kind", self.kind ) |