48 lines
1.8 KiB
Python
48 lines
1.8 KiB
Python
|
|
from pydantic import BaseModel, Field, field_validator
|
|
|
|
class Angetriebene_Kurve(BaseModel):
|
|
teileid: str
|
|
x: float
|
|
y:float
|
|
drehung: float = Field(default=0.0,description="Rotation der Kurve")
|
|
hoehe0: float = Field(default=0.0,description="Hoehe Anfang der Kurve")
|
|
hoehe1: float = Field(default=0.0,description="Hoehe Ende der Kurve")
|
|
kurvenrichtung: str = Field(description="Kurvenrichtung der Kurve")
|
|
antriebNebenStrecke: str =Field(description="wo die Angetriebene Strecke ist abhängig von der kurvenrichtung")
|
|
winkel: int = Field(description="Der Winkel der Kurve")
|
|
|
|
@property
|
|
def antrieb(self):
|
|
if self.antriebNebenStrecke == "Aussen":
|
|
self.antriebNebenStrecke = "außen"
|
|
elif self.antriebNebenStrecke == "Innen":
|
|
self.antriebNebenStrecke = "innen"
|
|
return self.antriebNebenStrecke
|
|
@property
|
|
def hight_zwischen(self):
|
|
return ((self.hoehe0 + self.hoehe1) /2)
|
|
@classmethod
|
|
def from_merkmale(cls, teileid: str, x: float, y: float, merkmale: dict) -> 'Angetriebene_Kurve':
|
|
hoehe0 = float(merkmale.get("Höhe Anfang")) * 1000
|
|
hoehe1 = float(merkmale.get("Höhe Ende")) * 1000
|
|
winkel = int(merkmale.get("Kurvenwinkel"))
|
|
kurvenrichtung = merkmale.get("Kurvenrichtung")
|
|
antriebNebenstrecke = merkmale.get("AntriebNebenStrecke")
|
|
try:
|
|
drehung = float(merkmale.get("Drehung"))
|
|
except Exception as e:
|
|
drehung = 0.0
|
|
|
|
return cls(
|
|
teileid = teileid,
|
|
x = x,
|
|
y = y,
|
|
drehung = drehung,
|
|
hoehe0 = hoehe0,
|
|
hoehe1 = hoehe1,
|
|
kurvenrichtung = kurvenrichtung,
|
|
antriebNebenStrecke = antriebNebenstrecke,
|
|
winkel = winkel
|
|
|
|
) |