def deserialize(project: 'Project', pasv_msg: 'ser.Component.Reader') -> 'Passive2Component': m = pasv_msg.passive2 cmp: Passive2Component = Passive2Component.__new__(Passive2Component) Component.deserializeTo(project, pasv_msg.common, cmp) cmp.sym_type = PassiveSymType(m.symType.raw) cmp.body_type = Passive2BodyType(m.bodyType.raw) # Distance from center to pin cmp.pin_d = m.pinD cmp.body_corner_vec = deserialize_point2(m.bodyCornerVec) cmp.pin_corner_vec = deserialize_point2(m.pinCornerVec) cmp.__pads = [] return cmp
def deserialize(project, msg): worldpos = deserialize_point2(msg.worldPosition) obj = KeyPoint(worldpos) project.scontext.set_sid(msg.sid, obj) obj._project = project return obj
def deserialize(project: 'Project', msg: ser.Keypoint) -> "KeyPoint": worldpos = deserialize_point2(msg.worldPosition) obj = KeyPoint(project, worldpos) project.scontext.set_sid(msg.sid, obj) obj._project = project return obj
def deserializeTo(project: 'Project', msg: 'ser.Component.Reader', target: 'Component') -> None: if msg.side == "top": target.side = SIDE.Top elif msg.side == "bottom": target.side = SIDE.Bottom else: raise NotImplementedError() target.theta = msg.theta target.center = deserialize_point2(msg.center) target.refdes = msg.refdes target.partno = msg.partno project.scontext.set_sid(msg.sid, target) target.name_mapping = {} target.net_mapping = defaultdict(lambda: None) for i in msg.pininfo: ident = i.identifier target.name_mapping[ident] = i.name assert i.net is not None try: target.net_mapping[ident] = project.scontext.get(i.net) except KeyError: print("Warning: No net for SID %d during component load" % i.net) target.net_mapping[ident] = project.nets.new()
def test_point2(self): # Point2 class is floating (for now), but serialized form is integral units pt = Point2(54.3, 72.9) msg = serialize_point2(pt) pt2 = deserialize_point2(msg) self.assertAlmostEqual(pt2.x, round(pt.x)) self.assertAlmostEqual(pt2.y, round(pt.y))
def deserialize(self, msg): for i in msg.vias: v = Via(deserialize_point2(i.point), self.__project.scontext.get(i.viapairSid), i.r, self.__project.scontext.get(i.netSid) ) self.add_artwork(v) for i in msg.traces: t = Trace( deserialize_point2(i.p0), deserialize_point2(i.p1), i.thickness, self.__project.scontext.get(i.layerSid), self.__project.scontext.get(i.netSid) ) self.add_artwork(t) for i in msg.polygons: exterior = [deserialize_point2(j) for j in i.exterior] interiors = [[deserialize_point2(k) for k in j] for j in i.interiors] p = Polygon( self.__project.scontext.get(i.layerSid), exterior, interiors, self.__project.scontext.get(i.netSid) ) self.add_artwork(p) for i in msg.airwires: aw = Airwire( deserialize_point2(i.p0), deserialize_point2(i.p1), self.__project.scontext.get(i.p0LayerSid), self.__project.scontext.get(i.p1LayerSid), self.__project.scontext.get(i.netSid) ) self.add_artwork(aw) for i in msg.components: if i.which() == "dip": cmp = DIPComponent.deserialize(self.__project, i) elif i.which() == "smd4": cmp = SMD4Component.deserialize(self.__project, i) else: raise NotImplementedError() self.add_component(cmp)
def deserialize(self, msg: ser.Artwork) -> None: for i_via in msg.vias: v = Via(deserialize_point2(i_via.point), self.__project.scontext.get(i_via.viapairSid), i_via.r, self.__lookup_net_helper(i_via.netSid)) self.add_artwork(v) for i_trace in msg.traces: t = Trace(deserialize_point2(i_trace.p0), deserialize_point2(i_trace.p1), i_trace.thickness, self.__project.scontext.get(i_trace.layerSid), self.__lookup_net_helper(i_trace.netSid)) self.add_artwork(t) for i_poly in msg.polygons: exterior = [deserialize_point2(j) for j in i_poly.exterior] interiors = [[deserialize_point2(k) for k in j] for j in i_poly.interiors] p = Polygon(self.__project.scontext.get(i_poly.layerSid), exterior, interiors, self.__lookup_net_helper(i_poly.netSid)) self.add_artwork(p) for i_airwire in msg.airwires: aw = Airwire(deserialize_point2(i_airwire.p0), deserialize_point2(i_airwire.p1), self.__project.scontext.get(i_airwire.p0LayerSid), self.__project.scontext.get(i_airwire.p1LayerSid), self.__project.scontext.get(i_airwire.netSid)) self.add_artwork(aw) for i_cmp in msg.components: if i_cmp.which() == "dip": cmp = DIPComponent.deserialize(self.__project, i_cmp) elif i_cmp.which() == "sip": cmp = SIPComponent.deserialize(self.__project, i_cmp) elif i_cmp.which() == "smd4": cmp = SMD4Component.deserialize(self.__project, i_cmp) elif i_cmp.which() == "passive2": cmp = Passive2Component.deserialize(self.__project, i_cmp) else: raise NotImplementedError() self.add_component(cmp)
def deserialize(self, msg): for i in msg.vias: v = Via(deserialize_point2(i.point), self.__project.scontext.get(i.viapairSid), i.r, self.__project.scontext.get(i.netSid)) self.add_artwork(v) for i in msg.traces: t = Trace(deserialize_point2(i.p0), deserialize_point2(i.p1), i.thickness, self.__project.scontext.get(i.layerSid), self.__project.scontext.get(i.netSid)) self.add_artwork(t) for i in msg.polygons: exterior = [deserialize_point2(j) for j in i.exterior] interiors = [[deserialize_point2(k) for k in j] for j in i.interiors] p = Polygon(self.__project.scontext.get(i.layerSid), exterior, interiors, self.__project.scontext.get(i.netSid)) self.add_artwork(p) for i in msg.airwires: aw = Airwire(deserialize_point2(i.p0), deserialize_point2(i.p1), self.__project.scontext.get(i.p0LayerSid), self.__project.scontext.get(i.p1LayerSid), self.__project.scontext.get(i.netSid)) self.add_artwork(aw) for i in msg.components: if i.which() == "dip": cmp = DIPComponent.deserialize(self.__project, i) elif i.which() == "smd4": cmp = SMD4Component.deserialize(self.__project, i) else: raise NotImplementedError() self.add_component(cmp)
def deserializeTo(project, msg, target): if msg.side == "top": target.side = SIDE.Top elif msg.side == "bottom": target.side = SIDE.Bottom else: raise NotImplementedError() target.theta = msg.theta target.center = deserialize_point2(msg.center) target.refdes = msg.refdes target.partno = msg.partno; project.scontext.set_sid(msg.sid, target) target.name_mapping = {} target.net_mapping = defaultdict(lambda x: None) for i in msg.pininfo: ident = i.identifier target.name_mapping[ident] = i.name assert i.net is not None target.net_mapping[ident] = project.scontext.get(i.net)
def deserializeTo(project, msg, target): if msg.side == "top": target.side = SIDE.Top elif msg.side == "bottom": target.side = SIDE.Bottom else: raise NotImplementedError() target.theta = msg.theta target.center = deserialize_point2(msg.center) target.refdes = msg.refdes target.partno = msg.partno project.scontext.set_sid(msg.sid, target) target.name_mapping = {} target.net_mapping = defaultdict(lambda x: None) for i in msg.pininfo: ident = i.identifier target.name_mapping[ident] = i.name assert i.net is not None target.net_mapping[ident] = project.scontext.get(i.net)