# Importing the technology and IPKISS
from si_fab import all as pdk
from ipkiss3 import all as i3
class N_side_polygon(i3.PCell):
_name_prefix = "N_side_polygon"
trace_template = i3.TraceTemplateProperty(doc="Trace template of the access waveguide")
center = i3.Coord2Property(default=(0.0, 0.0), doc="Center of the polygon")
radius = i3.PositiveNumberProperty(default=1.0, doc="Radius of the polygon")
n_o_sides = i3.IntProperty(default=8, restriction=i3.RestrictRange(lower=3), doc="Number of sides fo the polygon")
def _default_trace_template(self):
return pdk.SiWireWaveguideTemplate()
class Layout(i3.LayoutView):
def _generate_elements(self, elems):
elems += i3.RegularPolygon(
layer=self.trace_template.core_layer,
center=self.center,
radius=self.radius,
n_o_sides=self.n_o_sides,
)
return elems
if __name__ == '__main__':
polygon = N_side_polygon(
center=(0,0),
radius=100,
n_o_sides=10,
)
demo = polygon.Layout()
demo.visualize(annotate=True)
如何在 IPKISS 中画一个多边形?
直接利用 IPKISS 的 i3.RegularPolygon 画多边形
2023-06-21