Kreisgenerator mit optional veränderbaren Parametern fertig

This commit is contained in:
Mika 2023-11-01 15:16:23 +01:00
parent f29e72e3ae
commit 828936269f

View File

@ -1,21 +1,65 @@
import drawsvg as draw import drawsvg as draw
import os
import math import math
import random
class Circle: class Circle:
def __init__(self, length=1000, height=1000, radius=10, distance=60, offset=30): def __init__(self, name: str, filepath: str, length=1234, height=1234, radius=10, distance=60, offset=50):
# run validations # run validations
assert length >= 0, "length can not be negative" assert length >= 0, "length can not be negative"
assert radius >= 0, "radius can not be negative" assert radius >= 0, "radius can not be negative"
assert distance >= 2*radius, "distance must be grater den two times the radius" assert distance >= 2*radius, "distance must be grater den two times the radius"
assert offset >= 0, "offset can only be 0 - 100 %"
assert offset <= 100, "offset can only be 0 - 100 %"
# Assign to self object # Assign to self object
self.__length = length self.__length = length
self.__height = height self.__height = height
self.__radius = radius self.__radius = radius
self.__distance = distance self.__distance = distance
self.__offset = offset self.__offset = (distance / 100) * offset
self.__name = name
self.__filepath = filepath
@property
def length(self):
return self.__length
@length.setter
def length(self, val):
self.__length = val
@property
def height(self):
return self.__height
@height.setter
def height(self, val):
self.__height = val
@property
def radius(self):
return self.__radius
@radius.setter
def radius(self, val):
self.__radius = val
@property
def distance(self):
return self.__distance
@distance.setter
def distance(self, val):
self.__distance = val
@property
def offset(self):
return self.__offset
@offset.setter
def offset(self, val):
self.__offset = (self.__distance / 100) * val
def circle_generation(self): def circle_generation(self):
@ -30,17 +74,54 @@ class Circle:
while y <= self.__height: while y <= self.__height:
x = x1 + self.__offset * v x = x1 + self.__offset * v
while x <= self.__length: while x <= self.__length:
canvas.append(draw.Circle(x, y, self.__radius, canvas.append(draw.Circle(x, y, self.__radius, fill='none', stroke_width=1, stroke='black'))
fill='none', stroke_width=1, stroke='black'))
x = x + self.__distance x = x + self.__distance
y = y + self.__distance y = y + self.__distance
v = -((1 - g) / 2) v = -((1 - g) / 2)
g = -g g = -g
canvas.save_svg('example.svg') canvas.save_svg(f'{self.__filepath}/{self.__name}.svg')
if __name__ == '__main__': if __name__ == '__main__':
circle = Circle() name = input("Dateinamen:")
circle.circle_generation()
path = input("Dateipfad (0 für aktuelles Verzeichnis):")
if path == "0":
path = os.getcwd()
shape = int(input("Form (1: Kreis, 2: Hexagon, 3: Dreieck)"))
if shape == 1:
circle = Circle(name, path)
selection_flag = True
while selection_flag:
parameter_selection = int(input("Parameter wählen (0: keinen Parameter ändern, 1: Höhe, 2: Länge, 3: Radius, 4: Abstand, 5: Offste):"))
if parameter_selection == 0:
selection_flag = False
elif parameter_selection == 1:
height = int(input("Höhe in Pixeln eingeben:"))
circle.height = height
elif parameter_selection == 2:
length = int(input("Länge in Pixeln:"))
circle.length = length
elif parameter_selection == 3:
radius = int(input("Radius in Pixeln:"))
circle.radius = radius
elif parameter_selection == 4:
distance = int(input("Abstand in Pixeln:"))
circle.distance = distance
elif parameter_selection == 5:
offset = int(input("Offset in %:"))
circle.offset = offset
else:
print("ungültiger Wert")
circle.circle_generation()
elif shape == 2:
print("noch nicht implementiert")
elif shape == 3:
print("noch nicht implementiert")
else:
print("ungültiger Wert")