Beispiel #1
0
    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
Beispiel #2
0
    def deserialize(project, msg):
        worldpos = deserialize_point2(msg.worldPosition)
        obj = KeyPoint(worldpos)

        project.scontext.set_sid(msg.sid, obj)
        obj._project = project
        return obj
Beispiel #3
0
    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
Beispiel #4
0
    def deserialize(project, msg):
        worldpos = deserialize_point2(msg.worldPosition)
        obj = KeyPoint(worldpos)

        project.scontext.set_sid(msg.sid, obj)
        obj._project = project
        return obj
Beispiel #5
0
    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()
Beispiel #6
0
    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))
Beispiel #7
0
    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)
Beispiel #8
0
    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)
Beispiel #9
0
    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)
Beispiel #10
0
    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)
Beispiel #11
0
    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)