Weichenknoten zwischen Kreiseln, Track-Mouseover, Parameter in cfg/parameter.ini
TRO-Typen an Kreisel-Beruehrpunkten (lib/kreisel_junctions.py, derive_tros Schritt 3c): jeder Kreisel als Stadion-Form mit Laufrichtung; jeder gleichlaufende Beruehrpunkt ist eine Weiche (exportierte ILS Weiche oder abgeleitet W<a>_<b>), Beruehrpunkte derselben Umlenkung bilden einen Knoten. Ein Separator steuert ihn, wenn er in Laufrichtung unmittelbar davor liegt (keine andere Weiche dazwischen). Typ = Separatoren x Weichen. export.csv: 1Sep1Swi (9/1, 9/8, 8/7), 2Sep1Swi (7/2), 2Sep2Swi (2/3/4), 3Sep2Swi (4/5/6). Neuer Katalogtyp 3Sep2Swi (nicht aus SCL belegt). Gegenlaeufige Beruehrpunkte (Mubea, Dematic) bleiben bei der alten Regel; Mubea/HundM05/Dematic unveraendert, Showroom 0018+0019 jetzt 2Sep1Swi. material_flow --track: Mouseover je Knoten mit Zugehoerigkeit zu Kreisel/VF/GF (Zuordnung, TrackIds-Kette, Lage laut Geometrie), Weiche mit beiden Kreiseln, Be-/Entladung mit ihrem Kreisel; Widersprueche mit "!". Zahlenwerte (Toleranzen, Schwellen, Massstaebe, Groessen) aus allen lib-Modulen nach cfg/parameter.ini (lib/parameter.py, Abschnitt je Modul, Ueberschreiben je Anlage ueber %SKEL_CFG%/parameter.ini). Ausgaben aller Anlagen bytegleich. tro_flow.py: Docstrings mit Parametern/Rueckgabe, fehlende Typangaben. Geprueft: 90 Tests gruen; tro_flow/material_flow/scl_skeleton auf 5 CSVs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
0c69faf3db
commit
550bdeb464
+11
-12
@@ -58,6 +58,8 @@ from pathlib import Path
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field
|
||||
|
||||
from parameter import get_float, get_int
|
||||
|
||||
__all__ = [
|
||||
"Transform",
|
||||
"RegistrationError",
|
||||
@@ -84,18 +86,15 @@ ANCHOR_BLOCKS: dict[str, tuple[str, ...]] = {
|
||||
"Scanner": ("SCAN", "Scanner_*"),
|
||||
}
|
||||
|
||||
# Rastergroesse der Abstimmung in mm
|
||||
VOTE_GRID = 100.0
|
||||
# So viele Kandidaten der Abstimmung werden ausgeglichen und bewertet
|
||||
VOTE_CANDIDATES = 6
|
||||
# Nur Paare bis zu diesem Abstand gehen in den Ausgleich ein (exakte Treffer)
|
||||
FIT_TOL = 50.0
|
||||
# Punkte gelten als zugeordnet, wenn sie nach der Verschiebung so nah liegen
|
||||
DEFAULT_MATCH_TOL = 600.0
|
||||
# So viele exakte Treffer muessen es mindestens sein
|
||||
MIN_INLIERS = 5
|
||||
# Ab dieser Drehung wird gewarnt (Grad)
|
||||
ROTATION_WARN_DEG = 0.05
|
||||
# Zahlenwerte aus cfg/parameter.ini, Abschnitt [dxf_registration] - Bedeutung
|
||||
# und Einheit stehen dort (lib/parameter.py).
|
||||
_P = "dxf_registration"
|
||||
VOTE_GRID = get_float(_P, "vote_grid")
|
||||
VOTE_CANDIDATES = get_int(_P, "vote_candidates")
|
||||
FIT_TOL = get_float(_P, "fit_tol")
|
||||
DEFAULT_MATCH_TOL = get_float(_P, "default_match_tol")
|
||||
MIN_INLIERS = get_int(_P, "min_inliers")
|
||||
ROTATION_WARN_DEG = get_float(_P, "rotation_warn_deg")
|
||||
|
||||
|
||||
class RegistrationError(RuntimeError):
|
||||
|
||||
Reference in New Issue
Block a user