예제 #1
0
    def __init__(self, center, theta, side, side_layer_oracle, side1_pins,
                 side2_pins, side3_pins, side4_pins, dim_1_body,
                 dim_1_pincenter, dim_2_body, dim_2_pincenter,
                 pin_contact_length, pin_contact_width, pin_spacing):

        Component.__init__(self,
                           center,
                           theta,
                           side,
                           side_layer_oracle=side_layer_oracle)
        self.side_pins = [side1_pins, side2_pins, side3_pins, side4_pins]

        # Y Dimensions (along pin 1 edge
        self.dim_1_body = dim_1_body
        self.dim_1_pincenter = dim_1_pincenter

        # X dimensions
        self.dim_2_body = dim_2_body
        self.dim_2_pincenter = dim_2_pincenter

        self.pin_contact_length = pin_contact_length
        self.pin_contact_width = pin_contact_width
        self.pin_spacing = pin_spacing

        self.__pins_cache = []

        self._project = None
예제 #2
0
    def __init__(self,
                 center, theta, side, side_layer_oracle,
                 side1_pins, side2_pins, side3_pins, side4_pins,
                 dim_1_body, dim_1_pincenter, dim_2_body, dim_2_pincenter,
                 pin_contact_length, pin_contact_width, pin_spacing):

        Component.__init__(self, center, theta, side, side_layer_oracle=side_layer_oracle)
        self.side_pins = [side1_pins, side2_pins, side3_pins, side4_pins]

        # Y Dimensions (along pin 1 edge
        self.dim_1_body = dim_1_body
        self.dim_1_pincenter = dim_1_pincenter

        # X dimensions
        self.dim_2_body = dim_2_body
        self.dim_2_pincenter = dim_2_pincenter

        self.pin_contact_length = pin_contact_length
        self.pin_contact_width = pin_contact_width
        self.pin_spacing = pin_spacing


        self.__pins_cache = []

        self._project = None
예제 #3
0
파일: dipcomponent.py 프로젝트: pcbre/pcbre
    def __init__(self, 
        project: 'Project', center: 'Vec2', theta: float,
        side: SIDE, side_layer_oracle: 'Project', pin_count: int, 
        pin_space: float, pin_width:float, pad_size: float=units.MM):

        Component.__init__(self, project, center, theta, side, side_layer_oracle=side_layer_oracle)
        self.__my_init(pin_count, pin_space, pin_width, pad_size, side_layer_oracle)
예제 #4
0
    def __init__(self, 
            project: 'Project',
            center: Vec2, 
            theta: float, side: 'SIDE', 
            side_layer_oracle: 'Project',
            side1_pins: int, side2_pins: int,
            side3_pins: int, side4_pins: int,
            dim_1_body: float, dim_1_pincenter: float,
            dim_2_body: float, dim_2_pincenter: float,
            pin_contact_length: float, pin_contact_width: float,
            pin_spacing: float) -> None:

        Component.__init__(self, project, center, theta,
                           side, side_layer_oracle=side_layer_oracle)
        self.side_pins = [side1_pins, side2_pins, side3_pins, side4_pins]

        # Y Dimensions (along pin 1 edge
        self.dim_1_body = dim_1_body
        self.dim_1_pincenter = dim_1_pincenter

        # X dimensions
        self.dim_2_body = dim_2_body
        self.dim_2_pincenter = dim_2_pincenter

        self.pin_contact_length = pin_contact_length
        self.pin_contact_width = pin_contact_width
        self.pin_spacing = pin_spacing

        self.__pins_cache : List[Pad] = []
예제 #5
0
    def deserialize(project, msg):
        t = msg.smd4
        cmp = SMD4Component(None, None, None, project,
                t.side1Pins, t.side2Pins, t.side3Pins, t.side4Pins,
                t.dim1Body, t.dim1PinEdge, t.dim2Body, t.dim2PinEdge,
                t.pinContactLength, t.pinContactWidth, t.pinSpacing)

        Component.deserializeTo(project, msg.common, cmp)
        return cmp
예제 #6
0
파일: dipcomponent.py 프로젝트: pcbre/pcbre
    def __init__(self, project: 'Project',
                 center: Vec2, theta: float, side: SIDE, 
                 side_layer_oracle: 'Project',
                 pin_count: int, 
                 pin_space: float, pad_size: float) -> None:

        Component.__init__(self, project, center, theta, side,
                           side_layer_oracle=side_layer_oracle)
        self.__my_init(pin_count, pin_space, pad_size)
예제 #7
0
    def deserialize(project, msg):
        t = msg.smd4
        cmp = SMD4Component(None, None, None, project, t.side1Pins,
                            t.side2Pins, t.side3Pins, t.side4Pins, t.dim1Body,
                            t.dim1PinEdge, t.dim2Body, t.dim2PinEdge,
                            t.pinContactLength, t.pinContactWidth,
                            t.pinSpacing)

        Component.deserializeTo(project, msg.common, cmp)
        return cmp
예제 #8
0
    def deserialize(project: 'Project', msg: ser.Component.Reader) -> Component:
        t = msg.smd4
        cmp = SMD4Component(
                project,
                Vec2(0,0), 0,  SIDE.Top,   # Placeholder values
                project,
                t.side1Pins, t.side2Pins, t.side3Pins, t.side4Pins,
                t.dim1Body, t.dim1PinEdge, t.dim2Body, t.dim2PinEdge,
                t.pinContactLength, t.pinContactWidth, t.pinSpacing)

        Component.deserializeTo(project, msg.common, cmp)
        return cmp
예제 #9
0
    def add_component(self, cmp: Component) -> None:
        """
        :param cmp:
        :return:
        """
        self.__components.add(cmp)
        cmp._project = self.__project

        self.__index.insert(cmp)
        for pad in cmp.get_pads():
            self.__index.insert(pad)

        self.components_generation += 1
예제 #10
0
 def __init__(self,
              center,
              theta,
              side,
              side_layer_oracle,
              pin_count,
              pin_space,
              pin_width,
              pad_size=units.MM):
     Component.__init__(self,
                        center,
                        theta,
                        side,
                        side_layer_oracle=side_layer_oracle)
     self.__my_init(pin_count, pin_space, pin_width, pad_size,
                    side_layer_oracle)
예제 #11
0
    def remove_component(self, cmp: Component) -> None:
        for pad in cmp.get_pads():
            self.remove_aw_nets(pad, suppress_presence_error=False)
            self.__index.remove(pad)

        self.__index.remove(cmp)
        self.__components.remove(cmp)

        self.components_generation += 1
예제 #12
0
    def serializeTo(self, cmp_msg):
        Component.serializeTo(self, cmp_msg.common)
        cmp_msg.init("smd4")
        t = cmp_msg.smd4
        t.dim1Body = int(self.dim_1_body)
        t.dim1PinEdge = int(self.dim_1_pincenter)

        t.dim2Body = int(self.dim_2_body)
        t.dim2PinEdge = int(self.dim_2_pincenter)

        t.pinContactLength = int(self.pin_contact_length)
        t.pinContactWidth = int(self.pin_contact_width)
        t.pinSpacing = int(self.pin_spacing)

        t.side1Pins = self.side_pins[0]
        t.side2Pins = self.side_pins[1]
        t.side3Pins = self.side_pins[2]
        t.side4Pins = self.side_pins[3]
예제 #13
0
    def serializeTo(self, cmp_msg):
        Component.serializeTo(self, cmp_msg.common)
        cmp_msg.init("smd4")
        t = cmp_msg.smd4
        t.dim1Body = int(self.dim_1_body)
        t.dim1PinEdge = int(self.dim_1_pincenter)

        t.dim2Body = int(self.dim_2_body)
        t.dim2PinEdge = int(self.dim_2_pincenter)

        t.pinContactLength = int(self.pin_contact_length)
        t.pinContactWidth = int(self.pin_contact_width)
        t.pinSpacing = int(self.pin_spacing)

        t.side1Pins = self.side_pins[0]
        t.side2Pins = self.side_pins[1]
        t.side3Pins = self.side_pins[2]
        t.side4Pins = self.side_pins[3]
예제 #14
0
    def merge_component(self, cmp: Component) -> None:
        """
        :return:
        """

        for pad in cmp.get_pads():
            self.merge_aw_nets(pad)

        self.add_component(cmp)
예제 #15
0
 def __init__(self, center, theta, side, side_layer_oracle, pin_count, pin_space, pin_width, pad_size=units.MM):
     Component.__init__(self, center, theta, side, side_layer_oracle=side_layer_oracle)
     self.__my_init(pin_count, pin_space, pin_width, pad_size, side_layer_oracle)
예제 #16
0
 def deserialize(project, dip_msg):
     m = dip_msg.dip
     cmp = DIPComponent.__new__(DIPComponent)
     Component.deserializeTo(project, dip_msg.common, cmp)
     cmp.__my_init(m.pinCount, m.pinSpace, m.pinWidth, m.padSize, project)
     return cmp
예제 #17
0
파일: dipcomponent.py 프로젝트: pcbre/pcbre
 def deserialize(project: 'Project', dip_msg: 'ser.Component.Reader') -> Component:
     m = dip_msg.dip
     cmp : DIPComponent = DIPComponent.__new__(DIPComponent)
     Component.deserializeTo(project, dip_msg.common, cmp)
     cmp.__my_init(m.pinCount, m.pinSpace, m.pinWidth, m.padSize, project)
     return cmp
예제 #18
0
파일: dipcomponent.py 프로젝트: pcbre/pcbre
 def deserialize(project: 'Project', sip_msg: 'ser.Component.Reader') -> Component:
     m = sip_msg.sip
     cmp : SIPComponent = SIPComponent.__new__(SIPComponent)
     Component.deserializeTo(project, sip_msg.common, cmp)
     cmp.__my_init(m.pinCount, m.pinSpace, m.padSize)
     return cmp
예제 #19
0
 def deserialize(project, dip_msg):
     m = dip_msg.dip
     cmp = DIPComponent.__new__(DIPComponent)
     Component.deserializeTo(project, dip_msg.common, cmp)
     cmp.__my_init(m.pinCount, m.pinSpace, m.pinWidth, m.padSize, project)
     return cmp