#main_script import fmeobjects import numpy as np from fmeobjects import FMELine, FMEPoint, FMEPolygon from math import sqrt, sin, cos, pi, degrees width = 360 N = 10 d = width / N ll = d ww = d/2 col=ll *1.4 row=ww*1.4 class FeatureProcessor(object): def __init__(self): pass def rect(self, tx, ty, r, h, w): # notice i switched w and h parameters of the rect coordinates = [ (tx, ty), (tx + w, ty), (tx + w, ty + h), (tx, ty + h), (tx, ty) ] _center_point = FMEPoint() _center_point.setXYZ(float(tx)+w/2, float(ty+h/2), 0) _fmepoints = [] for i in coordinates: pt = FMEPoint() pt.setXYZ(i[0], i[1], 0) _fmepoints.append(pt) line = FMELine() for i in _fmepoints: line.appendPoint(i) # tweak rotation parameters _rotation_center = _fmepoints[-2] if r0: _rotation_center = _fmepoints[-1] line.rotate2D(_center_point, float(r)) return line def pattern(self, size): l = size / sqrt(4) polygons = [] for x in np.arange(0, width, col): for y in np.arange(0, width, row): pos = [x, y] r = 45 poly_poly = self.rect(pos[0], pos[1], r, ww, ll) polygons.append(poly_poly) pos = [x + col / 2, y + row / 2] r = -45 poly_poly = self.rect(pos[0], pos[1], r, ww, ll) polygons.append(poly_poly) for i in polygons: newFeature = fmeobjects.FMEFeature() newFeature.setGeometry(i) self.pyoutput(newFeature) def input(self, feature: fmeobjects.FMEFeature): # svg_body = create_svg_no_deps(datastructure,'foo') pass def close(self): points = self.pattern(d)