# -*- coding: utf-8 -*- from pydantic import BaseModel, Field, field_validator from typing import Optional from lib import block_methoden RADIUS = 400 class Eckrad(BaseModel): teileid: str drehung: Optional[float] = Field(default=0.0, description="Rotation des Elements") hoehe: Optional[float] = Field(default=0.0, description="Hoehe des Elements") drehrichtung: Optional[str] = Field( default=None, description="Richtung des Eckrads" ) @classmethod def from_merkmale( cls, teileid: str, x: float, y: float, merkmale: dict ) -> "Eckrad": try: hoehe = float(merkmale.get("Höhe in Meter")) * 1000 except Exception as e: hoehe = 0.0 try: drehung = float(merkmale.get("Drehung")) except Exception as e: drehung = 0.0 try: drehrichtung = merkmale.get("Drehrichtung") except Exception as e: drehrichtung = None return cls(teileid=teileid, x=x, y=y, hoehe=hoehe, drehrichtung=drehrichtung) def erstellung_eckrad_richtung(merkmale, doc, lib_doc): block_methoden.import_block("AN8", lib_doc, doc) block_methoden.import_block("Richtungspfeil", lib_doc, doc) eckrad_rechts = "eckrad_UZS" eckrad_links = "eckrad_GUZS" hight = float(merkmale.get("Höhe in m")) * 1000 # Erstellung der Richtungung Blöcke der Eckrads if eckrad_rechts not in doc.blocks: block_rechts = doc.blocks.new(name=eckrad_rechts, base_point=(0, 0, 0)) block_links = doc.blocks.new(name=eckrad_links, base_point=(0, 0, 0)) block_rechts.add_blockref("AN8", (0, 0, 0)) block_links.add_blockref("AN8", (0, 0, 0)) block_rechts.add_blockref("Richtungspfeil", (0 + 200, 0 + RADIUS, 0)) block_rechts.add_blockref( "Richtungspfeil", (0 - 200, 0 - RADIUS, 0), dxfattribs={"rotation": 180} ) block_links.add_blockref("Richtungspfeil", (0 + 200, 0 - RADIUS, 0)) block_links.add_blockref( "Richtungspfeil", (0 - 200, 0 + RADIUS, 0), dxfattribs={"rotation": 180} ) return eckrad_rechts, eckrad_links, hight