#main_script import fme import fmeobjects import random import numpy as np from fmeobjects import FMELine,FMEPoint, FMEGeometryTools from math import sqrt, cos, sin, pi, radians width = 360 N = 1 d=width/N class FeatureProcessor(object): def __init__(self): pass def draw_uptriangle(self, tx, ty): corner = 3 _center_point = FMEPoint() _center_point.setXYZ(float(tx), float(ty), 0) _points = [] _lines = [] angle_offset = pi / 3 for i in range(corner): angle = 2 * pi * i / corner + angle_offset next_point = FMEPoint() x2 = float(tx) + sin(angle) * 30 y2 = float(ty) + cos(angle) * 30 next_point.setXYZ(x2, y2, 0) _points.append(next_point) line = FMELine() line.appendPoint(next_point) _line =FMELine() for i in _points: _line.appendPoint(i) _line.appendPoint(_points[0]) _lines.append(_line) return _points,_lines def pattern(self, x, y, size): l = size / sqrt(4) points = [] lines = [] for j in range(10): for i in range(10): if j % 2 == 0: dx = 0 else: dx = sqrt(3) * 15 up_triangle_points, uplines = self.draw_uptriangle(i * sqrt(3) * 30 - dx, j * 45) down_triangle_points, downlines = self.draw_uptriangle( 15 * sqrt(3) + i * sqrt(3) * 30 - dx, -sqrt(3) * 10 + j * 45) points.extend(up_triangle_points) points.extend(down_triangle_points) lines.extend(uplines) lines.extend(downlines) for i in points: newFeature = fmeobjects.FMEFeature() newFeature.setGeometry(i) self.pyoutput(newFeature) for i in lines: newFeature = fmeobjects.FMEFeature() newFeature.setGeometry(i) self.pyoutput(newFeature) return points def input(self, feature: fmeobjects.FMEFeature): pass def close(self): x = d * 1 / 2 dy = d * sqrt(3) / 2 if 1 % 2 == 1 else 0 y = d * 1 * sqrt(3) points = self.pattern(0, 0, d)