def _generate_elements(self, elems): # Center of the structure (x0, y0) = self.position elems += i3.Rectangle(layer=self.layer, center=(x0 + 7500, y0 + 4500), box_size=(15000, 1000)) # elems += i3.Rectangle(layer=i3.TECH.PPLAYER.NONE.DOC, center=(x0 + 7500, y0 + 4500), # box_size=(15000, 1000)) elems += i3.Rectangle(layer=self.layer, center=(x0 + 7500, y0 + 500), box_size=(15000, 1000)) elems += i3.Rectangle(layer=self.layer, center=(x0 + 12500+1000, y0 + 2500), #change box_size=(self.length, self.width)) if self.pocket: PO = i3.Rectangle(layer=self.layer_bool, center=(10001+2000, 2500), box_size=(2, 160)) #change elems += PO generated1 = self.layer - self.layer_bool mapping = {generated1: self.layer} elems = i3.get_elements_for_generated_layers(elems, mapping) if self.tilt: # TI = i3.Rectangle(layer=self.layer_bool, center=(10001, 2500), box_size=(2, 160)) # elems += TI TI_shape = i3.Shape(points=[(10000.0+2000, 2470.0), (10010.58+2000, 2530.0), (10000.0+2000, 2530.0)], closed=True) #change TI = i3.Boundary(layer=self.layer_bool, shape=TI_shape) elems += TI generated1 = self.layer - self.layer_bool mapping = {generated1: self.layer} elems = i3.get_elements_for_generated_layers(elems, mapping) return elems
def _generate_elements(self, elems): elems += i3.SRef(reference=PlaceMarkers()) elems += i3.SRef(reference=my_exe2(name="final")) generated1 = i3.TECH.PPLAYER.HFW - i3.TECH.PPLAYER.V12.PILLAR mapping = {generated1: i3.TECH.PPLAYER.M2.LINE} elems += i3.get_elements_for_generated_layers(elems, mapping) generated2 = i3.TECH.PPLAYER.WG.CLADDING - i3.TECH.PPLAYER.WG.CORE mapping = {generated2: i3.TECH.PPLAYER.WG.TEXT} elems += i3.get_elements_for_generated_layers(elems, mapping) # elems += i3.SRef(reference=ImportRik()) return elems
def _generate_elements(self, elems): # Center of the structure (x0, y0) = self.position elems += i3.Rectangle(layer=self.layer, center=(1500 - 20, 2500), box_size=(3000 - 40, 3000 - 40 * 2)) if self.tilt_0: elems += i3.Rectangle(layer=self.layer, center=(x0 + 6500 - 40 + 20 + 7.5, 2500), box_size=(self.length + 40 + 15, self.width - 40 * 2)) else: elems += i3.Rectangle(layer=self.layer, center=(x0 + 6500 - 40 + 20 + 5, 2500), box_size=(self.length + 40 + 10, self.width - 40 * 2)) for i in range(7): elems += i3.Rectangle(layer=self.layer_bool, center=(10000 - 725 - i * 750, 1000 + (3000 - self.width) / 2 + 185), box_size=(130, 130)) elems += i3.Rectangle( layer=self.layer_bool, center=(10000 - 725 - i * 750, 1000 + (3000 - self.width) / 2 + self.width - 185), box_size=(130, 130)) generated1 = self.layer - self.layer_bool mapping = {generated1: self.layer} elems = i3.get_elements_for_generated_layers(elems, mapping) return elems
def _generate_elements(self, elems): # Center of the structure (x0, y0) = self.position # elems += i3.Rectangle(layer=self.layer, center=(x0, y0), # box_size=(self.length + self.release_margin, self.width + self.release_margin)) elems += i3.Rectangle(layer=self.layer, center=(300, 300), box_size=(200, 200)) rec = i3.Rectangle(layer=self.layer, center=(0, 0), box_size=(200, 200)) layer2 = i3.Layer(2) remove = i3.Wedge(layer=layer2, begin_coord=(-100, 0), end_coord=(-50, 0), begin_width=8, end_width=0.001) elems += rec elems += remove generated1 = self.layer - layer2 mapping = {generated1: self.layer} output_elems = i3.get_elements_for_generated_layers(elems, mapping) # # elems = elems | wedge, # haha = rec | remove, # elems += remove, # # elems +=rec, # elems = elems.extend(haha), return output_elems
def _generate_elements(self, elems): # Center of the structure (x0, y0) = self.position elems += i3.Rectangle(layer=self.layer, center=(x0 + 6500 + 2000, y0 + 600 + (1800 - self.width) / 4), box_size=(self.length, (1800 - self.width) / 2)) elems += i3.Rectangle( layer=self.layer, center=(x0 + 6500 + 2000, y0 + 600 + self.width + (1800 - self.width) * 3 / 4), box_size=(self.length, (1800 - self.width) / 2)) elems += i3.SRef( reference=Interface_mmi12(pocket=self.pocket, tilt=self.tilt)) if self.pillar: self.label = "NO" for i in range(7): elems += i3.Rectangle( layer=self.layer, center=(10000 - 725 - i * 750 + 2000, 600 + (1800 - self.width) / 2 + 30), #change box_size=(50, 60)) elems += i3.Rectangle( layer=self.layer, center=(10000 - 725 - i * 750 + 2000, 600 + (1800 - self.width) / 2 + self.width - 30), #change box_size=(50, 60)) if self.width > 330: self.label += "W" if self.pocket: self.label += "_WP" if self.tilt: self.label += "WT" elems += i3.PolygonText( layer=self.layer_bool, text=self.label, coordinate=(8000, 2700), # alignment=(i3.TEXT_ALIGN_LEFT, i3.TEXT_ALIGN_LEFT), font=2, height=700.0) generated1 = self.layer - self.layer_bool mapping = {generated1: self.layer} elems = i3.get_elements_for_generated_layers(elems, mapping) return elems
def _generate_elements(self, elems): # Center of the structure (x0, y0) = self.position if self.horizontal == False: # ADD RELEASE elems += i3.SRef(reference=AlignmentMarker( layer=i3.TECH.PPLAYER.WG.TEXT, layer_text="Release"), transformation=i3.Translation( (x0 + 0.0 * self.h_spacing, y0))) elems += i3.SRef(reference=AlignmentMarker( layer=i3.TECH.PPLAYER.HFW, complement=True), transformation=i3.Translation( (x0 + 0.0 * self.h_spacing, y0))) # # ADD TETHER # elems += i3.SRef(reference=AlignmentMarker(layer=lay_island, layer_text="Tether"), # transformation=i3.Translation((x0 + 1.0 * self.h_spacing, y0))) # elems += i3.SRef(reference=AlignmentMarker(layer=lay_release, protection=True), # transformation=i3.Translation((x0 + 1.0 * self.h_spacing, y0))) # elems += i3.SRef(reference=AlignmentMarker(layer=lay_tether, complement=True), # transformation=i3.Translation((x0 + 1.0 * self.h_spacing, y0))) # # # ADD Dongbomesa # elems += i3.SRef(reference=AlignmentMarker(layer=lay_island, layer_text="Dongbomesa"), # transformation=i3.Translation((x0 + 2.0 * self.h_spacing, y0))) # elems += i3.SRef(reference=AlignmentMarker(layer=lay_release, protection=True), # transformation=i3.Translation((x0 + 2.0 * self.h_spacing, y0))) # elems += i3.SRef(reference=AlignmentMarker(layer=lay_tether, protection=True), # transformation=i3.Translation((x0 + 2.0 * self.h_spacing, y0))) # elems += i3.SRef(reference=AlignmentMarker(layer=lay_mesa, complement=True), # transformation=i3.Translation((x0 + 2.0 * self.h_spacing, y0))) else: # ADD RECESS elems += i3.SRef(reference=AlignmentMarker( layer=i3.TECH.PPLAYER.WG.TEXT, layer_text="RECESS"), transformation=i3.Translation( (x0 + 0.0 * self.h_spacing, y0))) elems += i3.SRef(reference=AlignmentMarker( layer=i3.TECH.PPLAYER.HFW, complement=True), transformation=i3.Translation( (x0 + 0.0 * self.h_spacing, y0))) # ADD AL elems += i3.SRef(reference=AlignmentMarker( layer=i3.TECH.PPLAYER.WG.TEXT, layer_text="AL"), transformation=i3.Translation( (x0, y0 - 1.0 * self.v_spacing))) elems += i3.SRef(reference=AlignmentMarker( layer=i3.TECH.PPLAYER.HFW, protection=True), transformation=i3.Translation( (x0, y0 - 1.0 * self.v_spacing))) elems += i3.SRef(reference=AlignmentMarker( layer=i3.TECH.PPLAYER.CONTACT.PILLAR, complement=True), transformation=i3.Translation( (x0, y0 - 1.0 * self.v_spacing))) # ADD SiN elems += i3.SRef(reference=AlignmentMarker( layer=i3.TECH.PPLAYER.WG.TEXT, layer_text="SiN"), transformation=i3.Translation( (x0, y0 - 2.0 * self.v_spacing))) elems += i3.SRef(reference=AlignmentMarker( layer=i3.TECH.PPLAYER.HFW, protection=True), transformation=i3.Translation( (x0, y0 - 2.0 * self.v_spacing))) elems += i3.SRef(reference=AlignmentMarker( layer=i3.TECH.PPLAYER.SIL.LINE, complement=True), transformation=i3.Translation( (x0, y0 - 2.0 * self.v_spacing))) # ADD BackUp elems += i3.SRef(reference=AlignmentMarker( layer=i3.TECH.PPLAYER.WG.TEXT, layer_text="BackUp"), transformation=i3.Translation( (x0, y0 - 3.0 * self.v_spacing))) elems += i3.SRef(reference=AlignmentMarker( layer=i3.TECH.PPLAYER.HFW, protection=True), transformation=i3.Translation( (x0, y0 - 3.0 * self.v_spacing))) # elems += i3.SRef(reference=AlignmentMarker(layer=lay_tether, complement=True), # transformation=i3.Translation((x0, y0 - 3.0 * self.v_spacing))) # RECESS adjustment according to the mask elems += i3.SRef(reference=AlignmentMarker( layer=i3.TECH.PPLAYER.NONE.DOC, protection=True), transformation=i3.Translation( (x0, y0 - 0.0 * self.v_spacing))) generated1 = i3.TECH.PPLAYER.NONE.DOC - i3.TECH.PPLAYER.HFW mapping = {generated1: i3.TECH.PPLAYER.V12.PILLAR} elems += i3.get_elements_for_generated_layers(elems, mapping) return elems
def _generate_elements(self, elems): # Center of the structure (x0, y0) = self.position elems += i3.Rectangle(layer=self.layer, center=(8750 - 15 - 10 + 5, 1500), box_size=(500 - 40, 1800 - 100)) elems += i3.Rectangle(layer=self.layer, center=(10500 - 15 - 10 + self.tilt / 2, 1500), box_size=(3000 + 50 + self.tilt, 450 - 15 * 2)) elems += i3.Rectangle(layer=self.layer, center=(8750 - 15 - 10 + 5 + 2420 - 150, 1000 - 120), box_size=(2000, 500 - 40)) # extra SiN pad # for i in range(4): # elems += i3.Rectangle(layer=self.layer, # center=( # 10000 - 725 - i * 750 + 2000 + 350, 1316+72.75), # box_size=(145, 77.5)) # elems += i3.Rectangle(layer=self.layer, center=( # 10000 - 725 - i * 750 + 2000 + 350, 1684-72.75), # change # box_size=(145, 77.5)) if self.pillar: for i in range(4): elems += i3.Rectangle( layer=self.layer_bool, center=(10000 - 725 - i * 750 + 2000 + 550, 1316 + self.width / 2 - 11.0 / 2), box_size=(self.length + 30, self.width + 30 + 11)) elems += i3.Rectangle( layer=self.layer_bool, center=(10000 - 725 - i * 750 + 2000 + 550, 1684 - self.width / 2 + 11.0 / 2), # change box_size=(self.length + 30, self.width + 30 + 11)) if self.double: elems += i3.Rectangle( layer=self.layer_bool, center=(10000 - 725 - i * 750 + 2000 + 550 - 400, 1316 + self.width / 2 - 11.0 / 2), box_size=(self.length + 30, self.width + 30 + 11)) elems += i3.Rectangle( layer=self.layer_bool, center=(10000 - 725 - i * 750 + 2000 + 550 - 400, 1684 - self.width / 2 + 11.0 / 2), # change box_size=(self.length + 30, self.width + 30 + 11)) # if self.tilt_0: # elems += i3.Rectangle(layer=self.layer, # center=(x0 + 6500 - 40 + 20 + 7.5, 2500), # box_size=(self.length + 40 + 15, self.width - 40 * 2)) # else: # elems += i3.Rectangle(layer=self.layer, # center=(x0 + 6500 - 40 + 20 + 5, 2500), # box_size=(self.length + 40 + 10, self.width - 40 * 2)) # # if self.pillar: # for i in range(7): # elems += i3.Rectangle(layer=self.layer_bool, # center=(10000 - 725 - i * 750, 1000 + (3000 - self.width) / 2 + 30), # box_size=(130, 140)) # elems += i3.Rectangle(layer=self.layer_bool, center=( # 10000 - 725 - i * 750, 1000 + (3000 - self.width) / 2 + self.width - 30), # box_size=(130, 140)) generated1 = self.layer - self.layer_bool mapping = {generated1: self.layer} elems = i3.get_elements_for_generated_layers(elems, mapping) return elems
def _generate_elements(self, elems): # Center of the structure (x0, y0) = self.position # width2 = 338 + 15 + 15 elems += i3.Rectangle(layer=self.layer, center=(8750 - 15 - 10 + 5, 1500), box_size=(500 - 40, 1800 - 100)) elems += i3.Rectangle(layer=self.layer, center=(10500 - 15 - 10, 1500), box_size=(3000 + 50, 145)) elems += i3.Rectangle(layer=self.layer, center=(8750 - 15 - 10 + 5 + 2420 - 150, 1000 - 120), box_size=(2000, 500 - 40)) #extra pad elems += i3.Rectangle( layer=self.layer_bool, center=(8750 - 15 - 10 + 5 + 2420 - 150 + 998, 1000 - 120 + 620), box_size=(4, 145)) #extra shrink on the interface for i in range(4): elems += i3.Rectangle(layer=self.layer, center=(10000 - 725 - i * 750 + 2000 + 350 + self.offset, 1316 + 72.75), box_size=(145, 77.5)) elems += i3.Rectangle( layer=self.layer, center=(10000 - 725 - i * 750 + 2000 + 350 + self.offset, 1684 - 72.75), # change box_size=(145, 77.5)) # Avoid solder spill on facet elems += i3.Rectangle(layer=self.layer_bool, center=(12000 - 20, 1500), box_size=(40, 50)) elems += i3.Rectangle(layer=self.layer_bool, center=(12000 - 750 * 2, 1500), box_size=(80, 50)) elems += i3.Rectangle(layer=self.layer_bool, center=(12000 - 750 * 3, 1500), box_size=(80, 50)) elems += i3.Rectangle(layer=self.layer_bool, center=(12000 - 750 * 4, 1500), box_size=(80, 50)) # reservoir if self.reservoir: for i in range(3): elems += i3.Rectangle(layer=self.layer, center=(-750 * i + 12000 - 750, 1572.5 + 20), box_size=(149, 40)) elems += i3.Rectangle(layer=self.layer, center=(-750 * i + 12000 - 750, 1427.5 - 20), box_size=(149, 40)) elems += i3.Rectangle(layer=self.layer, center=(-750 * i + 12000 - 750, 1572.5 + 20), box_size=(149, 40)) elems += i3.Rectangle(layer=self.layer, center=(-750 * i + 12000 - 750, 1427.5 - 20), box_size=(149, 40)) elems += i3.Rectangle(layer=self.layer, center=(-750 * i + 12000 - 750, 1572.5 + 20), box_size=(149, 40)) elems += i3.Rectangle(layer=self.layer, center=(-750 * i + 12000 - 750, 1427.5 - 20), box_size=(149, 40)) elems += i3.PolygonText( layer=self.layer, text="RE", coordinate=(12000, 2600), # alignment=(i3.TEXT_ALIGN_LEFT, i3.TEXT_ALIGN_LEFT), font=2, height=400.0) # Markers bigsquare = 16.5 smallsquare = 11.5 for i in range(-3, 0, 2): elems += i3.Rectangle(layer=self.layer_bool, center=(750 * i + 12000 - 78, 1568.75), box_size=(9, 9.5)) elems += i3.Rectangle(layer=self.layer_bool, center=(750 * i + 12000 - 49.5, 1572 - 32), box_size=(9, 9)) elems += i3.Rectangle(layer=self.layer_bool, center=(750 * i + 12000 - 49.5 - 57, 1572 - 32), box_size=(9, 9)) elems += i3.Rectangle(layer=self.layer_bool, center=(750 * i + 12000 - 78, 1568.75 - 57.5), box_size=(9, 9.5)) elems += i3.Rectangle(layer=self.layer_bool, center=(750 * i + 12000 - 58.75, 1572.5 - 13.25), box_size=(smallsquare, smallsquare)) elems += i3.Rectangle(layer=self.layer_bool, center=(750 * i + 12000 - 58.75 - 38.5, 1572.5 - 13.25), box_size=(smallsquare, smallsquare)) elems += i3.Rectangle(layer=self.layer_bool, center=(750 * i + 12000 - 58.75, 1572.5 - 13.25 - 38.5), box_size=(smallsquare, smallsquare)) elems += i3.Rectangle(layer=self.layer_bool, center=(750 * i + 12000 - 58.75 - 38.5, 1572.5 - 13.25 - 38.5), box_size=(smallsquare, smallsquare)) # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 78, 1568.75-80), box_size=(7, 7.5)) # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 49.5, 1572 - 32-80), box_size=(7, 7)) # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 49.5 - 57, 1572 - 32-80), box_size=(7, 7)) # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 78, 1568.75 - 57.5-80), box_size=(7, 7.5)) # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 58.75-2.5, 1572.5 - 13.25-80-2.5), box_size=(bigsquare, bigsquare)) # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 58.75 - 38.5+2.5, 1572.5 - 13.25-80-2.5), # box_size=(bigsquare, bigsquare)) # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 58.75-2.5, 1572.5 - 13.25 - 38.5-80+2.5), # box_size=(bigsquare, bigsquare)) # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 58.75 - 38.5+2.5, 1572.5 - 13.25 - 38.5-80+2.5), # box_size=(bigsquare, bigsquare)) # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 78-594, 1568.75), box_size=(7, 7.5)) # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 49.5-594, 1572 - 32), box_size=(7, 7)) # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 49.5 - 57-594, 1572 - 32), box_size=(7, 7)) # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 78-594, 1568.75 - 57.5), box_size=(7, 7.5)) # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 58.75-594-2.5, 1572.5 - 13.25-2.5), box_size=(bigsquare, bigsquare)) # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 58.75 - 38.5-594+2.5, 1572.5 - 13.25-2.5), # box_size=(bigsquare, bigsquare)) # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 58.75-594-2.5, 1572.5 - 13.25 - 38.5+2.5), # box_size=(bigsquare, bigsquare)) # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 58.75 - 38.5-594+2.5, 1572.5 - 13.25 - 38.5+2.5), # box_size=(bigsquare, bigsquare)) elems += i3.Rectangle(layer=self.layer_bool, center=(750 * i + 12000 - 78 - 594, 1568.75 - 80), box_size=(9, 9.5)) elems += i3.Rectangle(layer=self.layer_bool, center=(750 * i + 12000 - 49.5 - 594, 1572 - 32 - 80), box_size=(9, 9)) elems += i3.Rectangle(layer=self.layer_bool, center=(750 * i + 12000 - 49.5 - 57 - 594, 1572 - 32 - 80), box_size=(9, 9)) elems += i3.Rectangle(layer=self.layer_bool, center=(750 * i + 12000 - 78 - 594, 1568.75 - 57.5 - 80), box_size=(9, 9.5)) elems += i3.Rectangle(layer=self.layer_bool, center=(750 * i + 12000 - 58.75 - 594, 1572.5 - 13.25 - 80), box_size=(smallsquare, smallsquare)) elems += i3.Rectangle(layer=self.layer_bool, center=(750 * i + 12000 - 58.75 - 38.5 - 594, 1572.5 - 13.25 - 80), box_size=(smallsquare, smallsquare)) elems += i3.Rectangle(layer=self.layer_bool, center=(750 * i + 12000 - 58.75 - 594, 1572.5 - 13.25 - 38.5 - 80), box_size=(smallsquare, smallsquare)) elems += i3.Rectangle(layer=self.layer_bool, center=(750 * i + 12000 - 58.75 - 38.5 - 594, 1572.5 - 13.25 - 38.5 - 80), box_size=(smallsquare, smallsquare)) for i in range(-2, 1, 2): # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 78, 1568.75), box_size=(7, 7.5)) # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 49.5, 1572-32), box_size=(7, 7)) # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 49.5-57, 1572-32), box_size=(7, 7)) # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 78, 1568.75-57.5), box_size=(7, 7.5)) # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 58.75, 1572.5-13.25), box_size=(smallsquare, smallsquare)) # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 58.75-38.5, 1572.5 - 13.25), box_size=(smallsquare, smallsquare)) # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 58.75, 1572.5 - 13.25-38.5), box_size=(smallsquare, smallsquare)) # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 58.75-38.5, 1572.5 - 13.25-38.5), box_size=(smallsquare, smallsquare)) elems += i3.Rectangle(layer=self.layer_bool, center=(750 * i + 12000 - 78, 1568.75 - 80), box_size=(9, 9.5)) elems += i3.Rectangle(layer=self.layer_bool, center=(750 * i + 12000 - 49.5, 1572 - 32 - 80), box_size=(9, 9)) elems += i3.Rectangle(layer=self.layer_bool, center=(750 * i + 12000 - 49.5 - 57, 1572 - 32 - 80), box_size=(9, 9)) elems += i3.Rectangle(layer=self.layer_bool, center=(750 * i + 12000 - 78, 1568.75 - 57.5 - 80), box_size=(9, 9.5)) elems += i3.Rectangle(layer=self.layer_bool, center=(750 * i + 12000 - 58.75 - 2.5, 1572.5 - 13.25 - 80 - 2.5), box_size=(bigsquare, bigsquare)) elems += i3.Rectangle(layer=self.layer_bool, center=(750 * i + 12000 - 58.75 - 38.5 + 2.5, 1572.5 - 13.25 - 80 - 2.5), box_size=(bigsquare, bigsquare)) elems += i3.Rectangle( layer=self.layer_bool, center=(750 * i + 12000 - 58.75 - 2.5, 1572.5 - 13.25 - 38.5 - 80 + 2.5), box_size=(bigsquare, bigsquare)) elems += i3.Rectangle( layer=self.layer_bool, center=(750 * i + 12000 - 58.75 - 38.5 + 2.5, 1572.5 - 13.25 - 38.5 - 80 + 2.5), box_size=(bigsquare, bigsquare)) elems += i3.Rectangle(layer=self.layer_bool, center=(750 * i + 12000 - 78 - 594, 1568.75), box_size=(9, 9.5)) elems += i3.Rectangle(layer=self.layer_bool, center=(750 * i + 12000 - 49.5 - 594, 1572 - 32), box_size=(9, 9)) elems += i3.Rectangle(layer=self.layer_bool, center=(750 * i + 12000 - 49.5 - 57 - 594, 1572 - 32), box_size=(9, 9)) elems += i3.Rectangle(layer=self.layer_bool, center=(750 * i + 12000 - 78 - 594, 1568.75 - 57.5), box_size=(9, 9.5)) elems += i3.Rectangle(layer=self.layer_bool, center=(750 * i + 12000 - 58.75 - 594 - 2.5, 1572.5 - 13.25 - 2.5), box_size=(bigsquare, bigsquare)) elems += i3.Rectangle(layer=self.layer_bool, center=(750 * i + 12000 - 58.75 - 38.5 - 594 + 2.5, 1572.5 - 13.25 - 2.5), box_size=(bigsquare, bigsquare)) elems += i3.Rectangle( layer=self.layer_bool, center=(750 * i + 12000 - 58.75 - 594 - 2.5, 1572.5 - 13.25 - 38.5 + 2.5), box_size=(bigsquare, bigsquare)) elems += i3.Rectangle( layer=self.layer_bool, center=(750 * i + 12000 - 58.75 - 38.5 - 594 + 2.5, 1572.5 - 13.25 - 38.5 + 2.5), box_size=(bigsquare, bigsquare)) # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 78-594, 1568.75 - 80), box_size=(7, 7.5)) # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 49.5-594, 1572 - 32 - 80), box_size=(7, 7)) # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 49.5 - 57-594, 1572 - 32 - 80), box_size=(7, 7)) # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 78-594, 1568.75 - 57.5 - 80), box_size=(7, 7.5)) # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 58.75 -594, 1572.5 - 13.25 - 80 ), # box_size=(smallsquare, smallsquare)) # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 58.75 - 38.5 -594, 1572.5 - 13.25 - 80 ), # box_size=(smallsquare, smallsquare)) # elems += i3.Rectangle(layer=self.layer_bool, center=(750*i+12000 - 58.75 -594, 1572.5 - 13.25 - 38.5 - 80 ), # box_size=(smallsquare, smallsquare)) # elems += i3.Rectangle(layer=self.layer_bool, # center=(750*i+12000 - 58.75 - 38.5 -594, 1572.5 - 13.25 - 38.5 - 80 ), # box_size=(smallsquare, smallsquare)) generated1 = self.layer - self.layer_bool mapping = {generated1: self.layer} elems = i3.get_elements_for_generated_layers(elems, mapping) return elems
def _generate_elements(self, elems): # Center of the structure (x0, y0) = self.position width2 = 450.0 elems += i3.Rectangle(layer=self.layer, center=(x0 + 6500 + 2000 + 2000, 600 + (1800 - width2) / 4), box_size=(3000, (1800 - width2) / 2)) elems += i3.Rectangle(layer=self.layer, center=(x0 + 6500 + 2000 + 2000, y0 + 600 + width2 + (1800 - width2) * 3 / 4), box_size=(3000, (1800 - width2) / 2)) elems += i3.SRef( reference=Interface_mmi12(pocket=self.pocket, tilt=self.tilt)) if self.pillar: self.label = "NO" for i in range(4): elems += i3.Rectangle( layer=self.layer, center=(10000 - 725 - i * 750 + 2000 + 550, 1275 + self.width / 2), box_size=(self.length, self.width)) elems += i3.Rectangle( layer=self.layer, center=(10000 - 725 - i * 750 + 2000 + 550, 1725 - self.width / 2), # change box_size=(self.length, self.width)) if self.double: elems += i3.Rectangle( layer=self.layer, center=(10000 - 725 - i * 750 + 2000 + 550 - 400, 1275 + self.width / 2), box_size=(self.length, self.width)) elems += i3.Rectangle( layer=self.layer, center=(10000 - 725 - i * 750 + 2000 + 550 - 400, 1725 - self.width / 2), # change box_size=(self.length, self.width)) if self.width > 120: self.label += "W" if self.pocket: self.label += "_WP" if self.tilt: self.label += "WT" elems += i3.PolygonText( layer=self.layer_bool, text=self.label, coordinate=(10800, 2600), # alignment=(i3.TEXT_ALIGN_LEFT, i3.TEXT_ALIGN_LEFT), font=2, height=400.0) generated1 = self.layer - self.layer_bool mapping = {generated1: self.layer} elems = i3.get_elements_for_generated_layers(elems, mapping) if self.pillar: for i in range(4): elems += i3.Rectangle( layer=self.layer2, center=(10000 - 725 - i * 750 + 2000 + 550, 1275 + self.width / 2), box_size=(self.length + 10, self.width + 10)) elems += i3.Rectangle( layer=self.layer2, center=(10000 - 725 - i * 750 + 2000 + 550, 1725 - self.width / 2), # change box_size=(self.length + 10, self.width + 10)) if self.double: elems += i3.Rectangle( layer=self.layer2, center=(10000 - 725 - i * 750 + 2000 + 550 - 400, 1275 + self.width / 2), box_size=(self.length + 10, self.width + 10)) elems += i3.Rectangle( layer=self.layer2, center=(10000 - 725 - i * 750 + 2000 + 550 - 400, 1725 - self.width / 2), # change box_size=(self.length + 10, self.width + 10)) return elems
circle_path = i3.CirclePath(layer=layer2, center=(9.0, 9.0), radius=6.0, line_width=1.0) layout = i3.LayoutCell(name="original").Layout( elements=[rect, circle, circle_path]) layout.visualize() # specify generated layers and the layer to use in the output generated1 = (layer1 ^ layer2) & layer1 generated2 = ~layer3 mapping = {generated1: i3.Layer(10), generated2: i3.Layer(20)} # generated layout output_elems = i3.get_elements_for_generated_layers(layout.layout, mapping) final_layout = i3.LayoutCell(name="generated").Layout(elements=output_elems) final_layout.visualize() # create and visualize a hierarchical layout simple_layout = i3.LayoutCell(name="circle_and_path").Layout( elements=[circle, circle_path]) top_layout = i3.LayoutCell(name="top_original").Layout(elements=[ i3.SRef(simple_layout, (0.0, 0.0)), i3.SRef(simple_layout, (0.0, 15.0)), # cover the full layout with layer3 i3.Boundary(layer=layer3, shape=[(-10.0, -10.0), (-10.0, 35.0), (20.0, 35.0), (20.0, -10.0)]) ])