Example #1
0
    def test_save_pin_names_nets(self):
        p = Project()
        l = Layer("test", [1,1,1])
        p.stackup.add_layer(l)
        d = DIPComponent(Point2(64, 54), 33.5, SIDE.Top, p, 12, 512, 640, 1111)
        d.refdes = "UFOO"
        d.partno = "BLAH"


        pads = d.get_pads()
        pads[0].pad_name = "NAME1"
        pads[1].pad_name = "NAME2"
        p.artwork.merge_component(d)

        p_new = self.__saverestore(p)


        self.assertEqual(len(p_new.artwork.components), 1)
        c = next(iter(p_new.artwork.components))

        self.assertEqual(d.refdes, c.refdes)
        self.assertEqual(d.partno, c.partno)

        pads_new = c.get_pads()

        for p_old, p_new in zip(pads, pads_new):
            self.assertEqual(p_old.net.name, p_new.net.name)

        self.assertEqual(pads_new[0].pad_name, "NAME1")
        self.assertEqual(pads_new[1].pad_name, "NAME2")
Example #2
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)
Example #3
0
    def test_save_dip(self):
        p = Project()
        l = Layer("test", [1,1,1])
        p.stackup.add_layer(l)
        d = DIPComponent(Point2(64, 54), 33.5, SIDE.Top, p, 12, 512, 640, 1111)
        d.refdes = "UFOO"

        p.artwork.merge_component(d)

        p_new = self.__saverestore(p)

        self.assertEqual(len(p_new.artwork.components), 1)
        c = next(iter(p_new.artwork.components))
        
        self.assertIsInstance(c, DIPComponent)
        self.assertEqual(d.body_length(), c.body_length())
        self.assertEqual(d.body_width(), c.body_width())
        self.assertEqual(d.pin_count, c.pin_count)
        self.assertEqual(d.pin_space, c.pin_space)
        self.assertEqual(d.pin_width, c.pin_width)
        self.assertEqual(d.pad_size, c.pad_size)
        self.assertEqual(d.theta, c.theta)
        self.assertEqual(d.refdes, c.refdes)
Example #4
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)
Example #5
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)
Example #6
0
File: dip.py Project: pcbre/pcbre
def DIP_getComponent(mdl, ctrl, flow):
    ctrl.flow.update_matrix()
    return DIPComponent(flow.center, flow.theta, ctrl.view.current_side(),
                        ctrl.project, mdl.pin_count, mdl.pin_space,
                        mdl.pin_width, mdl.pad_diameter)
Example #7
0
File: dip.py Project: balr0g/pcbre
def DIP_getComponent(mdl, ctrl, flow):
    return DIPComponent(flow.center, flow.theta, flow.side, ctrl.project,
                        mdl.pin_count, mdl.pin_space, mdl.pin_width,
                        mdl.pad_diameter)