48 lines
2.1 KiB
Python
48 lines
2.1 KiB
Python
from pydantic import BaseModel, Field, field_validator
|
|
from typing import Optional
|
|
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 |